From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=ALL_TRUSTED,DKIM_ADSP_NXDOMAIN, NO_DNS_FOR_FROM autolearn=no autolearn_force=no version=3.4.4 Received: from inbox.vuxu.org (inbox.vuxu.org [IPv6:::1]) by inbox.vuxu.org (Postfix) with ESMTP id 48E2F2150A for ; Wed, 22 May 2024 03:31:49 +0200 (CEST) Content-Type: multipart/mixed; boundary="===============8190934210154580470==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_LuaJIT=3A_update_to_2=2E1=2E1713773202=2C_cleanup=2C_adopt=2E?= To: ml@inbox.vuxu.org From: Calandracas606 Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Wed, 22 May 2024 03:31:48 +0200 List-Id: Message-Id: <20240522013149.48E2F2150A@inbox.vuxu.org> GitHub notification mails are now in MIME to allow UTF8. --===============8190934210154580470== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgQ2FsYW5kcmFjYXM2MDYgYWdhaW5z dCBtYXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIu Y29tL0NhbGFuZHJhY2FzNjA2L3ZvaWQtcGFja2FnZXMgbHVhaml0LTIuMS1yb2xsaW5nCmh0dHBz Oi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC81MDM3NQoKTHVhSklU OiB1cGRhdGUgdG8gMi4xLjE3MTM3NzMyMDIsIGNsZWFudXAsIGFkb3B0Lgo8IS0tIFVuY29tbWVu dCByZWxldmFudCBzZWN0aW9ucyBhbmQgZGVsZXRlIG9wdGlvbnMgd2hpY2ggYXJlIG5vdCBhcHBs aWNhYmxlIC0tPg0KDQojIyMjIFRlc3RpbmcgdGhlIGNoYW5nZXMNCi0gSSB0ZXN0ZWQgdGhlIGNo YW5nZXMgaW4gdGhpcyBQUjogKipZRVMqKg0KDQo8IS0tDQojIyMjIE5ldyBwYWNrYWdlDQotIFRo aXMgbmV3IHBhY2thZ2UgY29uZm9ybXMgdG8gdGhlIFtwYWNrYWdlIHJlcXVpcmVtZW50c10oaHR0 cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9ibG9iL21hc3Rlci9DT05U UklCVVRJTkcubWQjcGFja2FnZS1yZXF1aXJlbWVudHMpOiAqKllFUyoqfCoqTk8qKg0KLS0+DQoN CjwhLS0gTm90ZTogSWYgdGhlIGJ1aWxkIGlzIGxpa2VseSB0byB0YWtlIG1vcmUgdGhhbiAyIGhv dXJzLCBwbGVhc2UgYWRkIGNpIHNraXAgdGFnIGFzIGRlc2NyaWJlZCBpbg0KaHR0cHM6Ly9naXRo dWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcu bWQjY29udGludW91cy1pbnRlZ3JhdGlvbg0KYW5kIHRlc3QgYXQgbGVhc3Qgb25lIG5hdGl2ZSBi dWlsZCBhbmQsIGlmIHN1cHBvcnRlZCwgYXQgbGVhc3Qgb25lIGNyb3NzIGJ1aWxkLg0KSWdub3Jl IHRoaXMgc2VjdGlvbiBpZiB0aGlzIFBSIGlzIG5vdCBza2lwcGluZyBDSS4NCi0tPg0KDQojIyMj IExvY2FsIGJ1aWxkIHRlc3RpbmcNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5h dGl2ZSBhcmNoaXRlY3R1cmUsIHg4Nl82NC1nbGliYw0KLSBJIGJ1aWx0IHRoaXMgUFIgbG9jYWxs eSBmb3IgdGhlc2UgYXJjaGl0ZWN0dXJlcyAoaWYgc3VwcG9ydGVkLiBtYXJrIGNyb3NzYnVpbGRz KToNCiAgLSB4ODZfNjQtbXVzbA0KICAtIGk2ODYNCiAgLSBhYXJjaDY0IChjcm9zcykNCiAgLSBh YXJjaDY0LW11c2wgKGNyb3NzKQ0KICAtIGFybXY3bCAoY3Jvc3MpDQogIC0gYXJtdjdsLW11c2wg KGNyb3NzKQ0KICAtIGFybXY2bCAoY3Jvc3MpDQogIC0gYXJtdjZsLW11c2wgKGNyb3NzKQ0KDQoK CkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFj a2FnZXMvcHVsbC81MDM3NS5wYXRjaCBpcyBhdHRhY2hlZA== --===============8190934210154580470== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-luajit-2.1-rolling-50375.patch" RnJvbSBjZDZkY2NkZTg5M2JkZmY5Njc5MGI2MGJiNjQ0NDM2YTI5NGM1NTViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgTWFydGluZXogPGRhbmllbG1hcnRpbmV6QGNvY2su bGk+CkRhdGU6IFdlZCwgMzEgSmFuIDIwMjQgMDI6NTQ6MDkgLTA1MDAKU3ViamVjdDogW1BBVENI XSBMdWFKSVQ6IHVwZGF0ZSB0byAyLjEuMTcxMzc3MzIwMiwgY2xlYW51cCwgYWRvcHQuCgotLS0K IC4uLi9wYXRjaGVzL3BwYy9tdXNsLXBwYy1zZWN1cmVwbHQucGF0Y2ggICAgICB8ICAgOTMgLQog Li4uL3BhdGNoZXMvcHBjNjQvYWRkLXBwYzY0LXN1cHBvcnQucGF0Y2ggICAgIHwgMzUyMSAtLS0t LS0tLS0tLS0tLS0tLQogLi4uL3BhdGNoZXMvcHBjNjQvZml4LXZtLWppdC1wcGM2NC5wYXRjaCAg ICAgIHwgICAxMSAtCiAuLi4vYWFyY2g2NC1GaXgtZXhpdC1zdHViLXBhdGNoaW5nLnBhdGNoICAg ICAgfCAgMjMxIC0tCiAuLi4vYWFyY2g2NC1yZWdpc3Rlci1hbGxvY2F0aW9uLWJ1Zy1maXgucGF0 Y2ggfCAgIDI5IC0KIC4uLjFhYmVjNTQyZTZmOTg1MWZmMjM2OGU3ZjE5NmI2MzgyYTQ0Yy5wYXRj aCB8ICA1NjIgLS0tCiAuLi4vTHVhSklUL3BhdGNoZXMvZW5hYmxlLWRlYnVnLXN5bWJvbHMucGF0 Y2ggfCAgIDI0IC0KIHNyY3BrZ3MvTHVhSklUL3BhdGNoZXMvZml4LWJjc2F2ZS1wcGM2NC5wYXRj aCB8ICAgMzMgLQogLi4uL2dldC1yaWQtb2YtbHVhaml0LXZlcnNpb24tc3ltLnBhdGNoICAgICAg IHwgICA1MSAtCiAuLi4vcGF0Y2hlcy91bnBvbGx1dGUtZ2xvYmFsLW5hbWVzcGFjZS5wYXRjaCAg fCAgIDIxIC0KIHNyY3BrZ3MvTHVhSklUL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICB8 ICAgODAgKy0KIHNyY3BrZ3MvTHVhSklUL3VwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDIgKy0KIDEyIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDQ2MjUgZGVsZXRp b25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9MdWFKSVQvZmlsZXMvcGF0Y2hlcy9w cGMvbXVzbC1wcGMtc2VjdXJlcGx0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9M dWFKSVQvZmlsZXMvcGF0Y2hlcy9wcGM2NC9hZGQtcHBjNjQtc3VwcG9ydC5wYXRjaAogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvTHVhSklUL2ZpbGVzL3BhdGNoZXMvcHBjNjQvZml4LXZtLWpp dC1wcGM2NC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvTHVhSklUL3BhdGNoZXMv YWFyY2g2NC1GaXgtZXhpdC1zdHViLXBhdGNoaW5nLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9hYXJjaDY0LXJlZ2lzdGVyLWFsbG9jYXRpb24tYnVnLWZp eC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvTHVhSklUL3BhdGNoZXMvZTlhZjFh YmVjNTQyZTZmOTg1MWZmMjM2OGU3ZjE5NmI2MzgyYTQ0Yy5wYXRjaAogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvTHVhSklUL3BhdGNoZXMvZW5hYmxlLWRlYnVnLXN5bWJvbHMucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2ZpeC1iY3NhdmUtcHBjNjQu cGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2dldC1yaWQt b2YtbHVhaml0LXZlcnNpb24tc3ltLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9M dWFKSVQvcGF0Y2hlcy91bnBvbGx1dGUtZ2xvYmFsLW5hbWVzcGFjZS5wYXRjaAoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvTHVhSklUL2ZpbGVzL3BhdGNoZXMvcHBjL211c2wtcHBjLXNlY3VyZXBsdC5w YXRjaCBiL3NyY3BrZ3MvTHVhSklUL2ZpbGVzL3BhdGNoZXMvcHBjL211c2wtcHBjLXNlY3VyZXBs dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAwMGNhMGVkM2Q1MzIuLjAw MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvTHVhSklUL2ZpbGVzL3BhdGNoZXMvcHBjL211c2wt cHBjLXNlY3VyZXBsdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLUltcG9y dGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL0x1YUpJVC9MdWFKSVQvcHVsbC80ODYuCi0KLVRo aXMgZml4ZXMgY3Jhc2hlcyBvbiBwcGMtbXVzbCwgYXMgbXVzbCBvbmx5IHN1cHBvcnRzIHNlY3Vy ZXBsdC4KLQotLS0tIGEvc3JjL2xqX2Rpc3BhdGNoLmMKLSsrKyBiL3NyYy9sal9kaXNwYXRjaC5j Ci1AQCAtNTYsNiArNTYsMTggQEAgc3RhdGljIGNvbnN0IEFTTUZ1bmN0aW9uIGRpc3BhdGNoX2dv dFtdID0gewotICN1bmRlZiBHT1RGVU5DCi0gI2VuZGlmCi0gCi0rI2lmIExKX1RBUkdFVF9QUEMg JiYgKExKX0FSQ0hfQklUUyA9PSAzMikKLSsjaW5jbHVkZSA8bWF0aC5oPgotK0xKX0ZVTkNBX05P UkVUIHZvaWQgTEpfRkFTVENBTEwgbGpfZmZoX2Nvcm91dGluZV93cmFwX2VycihsdWFfU3RhdGUg KkwsCi0rCQkJCQkJCSAgbHVhX1N0YXRlICpjbyk7Ci0rCi0rI2RlZmluZSBHT1RGVU5DKG5hbWUp CShBU01GdW5jdGlvbiluYW1lLAotK3N0YXRpYyBjb25zdCBBU01GdW5jdGlvbiBkaXNwYXRjaF9n b3RbXSA9IHsKLSsgIEdPVERFRihHT1RGVU5DKQotK307Ci0rI3VuZGVmIEdPVEZVTkMKLSsjZW5k aWYKLSsKLSAvKiBJbml0aWFsaXplIGluc3RydWN0aW9uIGRpc3BhdGNoIHRhYmxlIGFuZCBob3Qg Y291bnRlcnMuICovCi0gdm9pZCBsal9kaXNwYXRjaF9pbml0KEdHX1N0YXRlICpHRykKLSB7Ci1A QCAtNzcsNiArODksOSBAQCB2b2lkIGxqX2Rpc3BhdGNoX2luaXQoR0dfU3RhdGUgKkdHKQotICNp ZiBMSl9UQVJHRVRfTUlQUwotICAgbWVtY3B5KEdHLT5nb3QsIGRpc3BhdGNoX2dvdCwgTEpfR09U X19NQVgqc2l6ZW9mKEFTTUZ1bmN0aW9uICopKTsKLSAjZW5kaWYKLSsjaWYgTEpfVEFSR0VUX1BQ QyAmJiAoTEpfQVJDSF9CSVRTID09IDMyKQotKyAgbWVtY3B5KEdHLT5nb3QsIGRpc3BhdGNoX2dv dCwgTEpfR09UX19NQVgqNCk7Ci0rI2VuZGlmCi0gfQotIAotICNpZiBMSl9IQVNKSVQKLS0tLSBh L3NyYy9sal9kaXNwYXRjaC5oCi0rKysgYi9zcmMvbGpfZGlzcGF0Y2guaAotQEAgLTY2LDYgKzY2 LDIxIEBAIEdPVERFRihHT1RFTlVNKQotIH07Ci0gI2VuZGlmCi0gCi0rI2lmIExKX1RBUkdFVF9Q UEMgJiYgKExKX0FSQ0hfQklUUyA9PSAzMikKLSsvKiBOZWVkIG91ciBvd24gZ2xvYmFsIG9mZnNl dCB0YWJsZSBmb3IgdGhlIGRyZWFkZWQgTUlQUyBjYWxsaW5nIGNvbnZlbnRpb25zLiAqLwotKyNk ZWZpbmUgR09UREVGKF8pIFwKLSsgIF8oZmxvb3IpIF8oY2VpbCkgXyh0cnVuYykgXyhsb2cpIF8o bG9nMTApIF8oZXhwKSBfKHNpbikgXyhjb3MpIF8odGFuKSBcCi0rICBfKGFzaW4pIF8oYWNvcykg XyhhdGFuKSBfKHNpbmgpIF8oY29zaCkgXyh0YW5oKSBfKGZyZXhwKSBfKG1vZGYpIF8oYXRhbjIp IFwKLSsgIF8ocG93KSBfKGZtb2QpIF8obGRleHApIF8oc3FydCkKLSsKLStlbnVtIHsKLSsjZGVm aW5lIEdPVEVOVU0obmFtZSkgTEpfR09UXyMjbmFtZSwKLStHT1RERUYoR09URU5VTSkKLSsjdW5k ZWYgR09URU5VTQotKyAgTEpfR09UX19NQVgKLSt9OwotKyNlbmRpZgotKwotIC8qIFR5cGUgb2Yg aG90IGNvdW50ZXIuIE11c3QgbWF0Y2ggdGhlIGNvZGUgaW4gdGhlIGFzc2VtYmxlciBWTS4gKi8K LSAvKiAxNiBiaXRzIGFyZSBzdWZmaWNpZW50LiBPbmx5IDAuMDAxNSUgb3ZlcmhlYWQgd2l0aCBt YXhpbXVtIHNsb3QgcGVuYWx0eS4gKi8KLSB0eXBlZGVmIHVpbnQxNl90IEhvdENvdW50OwotQEAg LTg5LDcgKzEwNCw3IEBAIHR5cGVkZWYgdWludDE2X3QgSG90Q291bnQ7Ci0gdHlwZWRlZiBzdHJ1 Y3QgR0dfU3RhdGUgewotICAgbHVhX1N0YXRlIEw7CQkJCS8qIE1haW4gdGhyZWFkLiAqLwotICAg Z2xvYmFsX1N0YXRlIGc7CQkJLyogR2xvYmFsIHN0YXRlLiAqLwotLSNpZiBMSl9UQVJHRVRfTUlQ UwotKyNpZiBMSl9UQVJHRVRfTUlQUyB8fCAoTEpfVEFSR0VUX1BQQyAmJiAoTEpfQVJDSF9CSVRT ID09IDMyKSkKLSAgIEFTTUZ1bmN0aW9uIGdvdFtMSl9HT1RfX01BWF07CQkvKiBHbG9iYWwgb2Zm c2V0IHRhYmxlLiAqLwotICNlbmRpZgotICNpZiBMSl9IQVNKSVQKLS0tLSBhL3NyYy92bV9wcGMu ZGFzYwotKysrIGIvc3JjL3ZtX3BwYy5kYXNjCi1AQCAtNTksNyArNTksMTIgQEAKLSB8LmRlZmlu ZSBFTlZfT0ZTLAk4Ci0gfC5lbmRpZgotIHwuZWxzZSAgLy8gTm8gVE9DLgotLXwubWFjcm8gYmxl eCwgdGFyZ2V0OyBibCBleHRlcm4gdGFyZ2V0QHBsdDsgLmVuZG1hY3JvCi0rfC5tYWNybyBibGV4 LCB0YXJnZXQKLSt8ICBsd3ogVE1QMCwgRElTUEFUQ0hfR09UKHRhcmdldCkoRElTUEFUQ0gpCi0r fCAgbXRjdHIgVE1QMAotK3wgIGJjdHJsCi0rfCAgLy9ibCBleHRlcm4gdGFyZ2V0QHBsdAotK3wu ZW5kbWFjcm8KLSB8Lm1hY3JvIC50b2MsIGEsIGI7IC5lbmRtYWNybwotIHwuZW5kaWYKLSB8Lm1h Y3JvIC50b2NlbnYsIGEsIGI7IC5pZiBUT0NFTlY7IGEsIGI7IC5lbmRpZjsgLmVuZG1hY3JvCi1A QCAtNDQ4LDYgKzQ1Myw4IEBACi0gfC8vIEFzc3VtZXMgRElTUEFUQ0ggaXMgcmVsYXRpdmUgdG8g R0wuCi0gI2RlZmluZSBESVNQQVRDSF9HTChmaWVsZCkJKEdHX0RJU1AyRyArIChpbnQpb2Zmc2V0 b2YoZ2xvYmFsX1N0YXRlLCBmaWVsZCkpCi0gI2RlZmluZSBESVNQQVRDSF9KKGZpZWxkKQkoR0df RElTUDJKICsgKGludClvZmZzZXRvZihqaXRfU3RhdGUsIGZpZWxkKSkKLSsjZGVmaW5lIEdHX0RJ U1AyR09UCQkoR0dfT0ZTKGdvdCkgLSBHR19PRlMoZGlzcGF0Y2gpKQotKyNkZWZpbmUgRElTUEFU Q0hfR09UKG5hbWUpCShHR19ESVNQMkdPVCArIDQqTEpfR09UXyMjbmFtZSkKLSB8Ci0gI2RlZmlu ZSBQQzJQUk9UTyhmaWVsZCkgICgoaW50KW9mZnNldG9mKEdDcHJvdG8sIGZpZWxkKS0oaW50KXNp emVvZihHQ3Byb3RvKSkKLSB8CmRpZmYgLS1naXQgYS9zcmNwa2dzL0x1YUpJVC9maWxlcy9wYXRj aGVzL3BwYzY0L2FkZC1wcGM2NC1zdXBwb3J0LnBhdGNoIGIvc3JjcGtncy9MdWFKSVQvZmlsZXMv cGF0Y2hlcy9wcGM2NC9hZGQtcHBjNjQtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggN2M4NjU4NTlkYTkyMzMuLjAwMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv THVhSklUL2ZpbGVzL3BhdGNoZXMvcHBjNjQvYWRkLXBwYzY0LXN1cHBvcnQucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwzNTIxICswLDAgQEAKLUZyb206ICJSb2RyaWdvIFIuIEdhbHZhbyIgPHJv c2F0dGlnQGJyLmlibS5jb20+Ci1EYXRlOiBXZWQsIDExIE9jdCAyMDE3IDA4OjQxOjQ3ICswMDAw Ci1TdWJqZWN0OiBOZXcgcGF0Y2ggcHJvcG9zYWwgZm9yIFBQQzY0IHN1cHBvcnQKLQotIENyZWF0 ZSBhIHBhdGNoIGZvciBQUEM2NCBzdXBwb3J0IGJhc2VkIG9uIAotaHR0cHM6Ly9naXRodWIuY29t L0x1YUpJVC9MdWFKSVQvcHVsbC8xNDAuCi0gSXQgcmVwbGFjZXMgdGhlIG9sZCBwYXRjaCBzaW5j ZSB0aGlzIG5ldyBvbmUgaXMgbW9yZSBsaWtlbHkgdG8gYmUgbWVyZ2VkIAotd2l0aCBsdWFqaXQg dXBzdHJlYW0uCi0KLQotQXV0aG9yOiBSb2RyaWdvIFIuIEdhbHZhbyA8cm9zYXR0aWdAYnIuaWJt LmNvbT4KLS0tLQotIGR5bmFzbS9kYXNtX3BwYy5sdWEgICAgfCAgICA1ICsKLSBzcmMvTWFrZWZp bGUgICAgICAgICAgIHwgICAxMSArLQotIHNyYy9ob3N0L2J1aWxkdm1fYXNtLmMgfCAgIDE2ICst Ci0gc3JjL2xqX2FyY2guaCAgICAgICAgICB8ICAgMTggKy0KLSBzcmMvbGpfY2NhbGwuYyAgICAg ICAgIHwgIDE2NiArKysrKystCi0gc3JjL2xqX2NjYWxsLmggICAgICAgICB8ICAgMTMgKwotIHNy Yy9sal9jY2FsbGJhY2suYyAgICAgfCAgIDY4ICsrLQotIHNyYy9sal9jdHlwZS5oICAgICAgICAg fCAgICAyICstCi0gc3JjL2xqX2RlZi5oICAgICAgICAgICB8ICAgIDQgKwotIHNyYy9sal9mcmFt ZS5oICAgICAgICAgfCAgICA5ICsKLSBzcmMvbGpfdGFyZ2V0X3BwYy5oICAgIHwgICAxNCArCi0g c3JjL3ZtX3BwYy5kYXNjICAgICAgICB8IDEyOTAgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tCi0gMTIgZmlsZXMgY2hhbmdlZCwgMTE2MiBpbnNlcnRpb25z KCspLCA0NTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgZHluYXNtL2Rhc21fcHBjLmx1YSBk eW5hc20vZGFzbV9wcGMubHVhCi1pbmRleCBmNzM5NzRkLi5hNGFkNzBiIDEwMDY0NAotLS0tIGEv ZHluYXNtL2Rhc21fcHBjLmx1YQotKysrIGIvZHluYXNtL2Rhc21fcHBjLmx1YQotQEAgLTI1Nyw5 ICsyNTcsMTEgQEAgbWFwX29wID0gewotICAgYWRkaWNfMyA9CSIzMDAwMDAwMFJSSSIsCi0gICBb ImFkZGljLl8zIl0gPSAiMzQwMDAwMDBSUkkiLAotICAgYWRkaV8zID0JIjM4MDAwMDAwUlIwSSIs Ci0rICBhZGRpbF8zID0JIjM4MDAwMDAwUlIwSiIsCi0gICBsaV8yID0JIjM4MDAwMDAwUkkiLAot ICAgbGFfMiA9CSIzODAwMDAwMFJEIiwKLSAgIGFkZGlzXzMgPQkiM2MwMDAwMDBSUjBJIiwKLSsg IGFkZGlzbF8zID0JIjNjMDAwMDAwUlIwSiIsCi0gICBsaXNfMiA9CSIzYzAwMDAwMFJJIiwKLSAg IGx1c18yID0JIjNjMDAwMDAwUlUiLAotICAgYmNfMyA9CSI0MDAwMDAwMEFBSyIsCi1AQCAtODQy LDYgKzg0NCw5IEBAIG1hcF9vcCA9IHsKLSAgIHNyZGlfMyA9CW9wX2FsaWFzKCJybGRpY2xfNCIs IGZ1bmN0aW9uKHApCi0gICAgIHBbNF0gPSBwWzNdOyBwWzNdID0gIjY0LSgiLi5wWzNdLi4iKSIK LSAgIGVuZCksCi0rICBbInNyZGkuXzMiXSA9CW9wX2FsaWFzKCJybGRpY2wuXzQiLCBmdW5jdGlv bihwKQotKyAgICBwWzRdID0gcFszXTsgcFszXSA9ICI2NC0oIi4ucFszXS4uIikiCi0rICBlbmQp LAotICAgY2xybGRpXzMgPQlvcF9hbGlhcygicmxkaWNsXzQiLCBmdW5jdGlvbihwKQotICAgICBw WzRdID0gcFszXTsgcFszXSA9ICIwIgotICAgZW5kKSwKLWRpZmYgLS1naXQgc3JjL01ha2VmaWxl IHNyYy9NYWtlZmlsZQotaW5kZXggNmI3M2E4OS4uY2M1MGJhZSAxMDA2NDQKLS0tLSBhL3NyYy9N YWtlZmlsZQotKysrIGIvc3JjL01ha2VmaWxlCi1AQCAtNDUzLDcgKzQ1MywxNiBAQCBpZmVxIChw cGMsJChUQVJHRVRfTEpBUkNIKSkKLSAgICAgREFTTV9BRkxBR1MrPSAtRCBHUFI2NAotICAgZW5k aWYKLSAgIGlmZXEgKFBTMywkKFRBUkdFVF9TWVMpKQotLSAgICBEQVNNX0FGTEFHUys9IC1EIFBQ RSAtRCBUT0MKLSsgICAgREFTTV9BRkxBR1MrPSAtRCBQUEUKLSsgIGVuZGlmCi0rICBpZm5lcSAo LCQoZmluZHN0cmluZyBMSl9BUkNIX1BQQ19PUEQgMSwkKFRBUkdFVF9URVNUQVJDSCkpKQotKyAg ICBEQVNNX0FGTEFHUys9IC1EIE9QRAotKyAgZW5kaWYKLSsgIGlmbmVxICgsJChmaW5kc3RyaW5n IExKX0FSQ0hfUFBDX09QREVOViAxLCQoVEFSR0VUX1RFU1RBUkNIKSkpCi0rICAgIERBU01fQUZM QUdTKz0gLUQgT1BERU5WCi0rICBlbmRpZgotKyAgaWZuZXEgKCwkKGZpbmRzdHJpbmcgTEpfQVJD SF9QUENfRUxGVjIgMSwkKFRBUkdFVF9URVNUQVJDSCkpKQotKyAgICBEQVNNX0FGTEFHUys9IC1E IEVMRlYyCi0gICBlbmRpZgotICAgaWZuZXEgKCwkKGZpbmRzdHJpbmcgTEpfQVJDSF9QUEM2NCAs JChUQVJHRVRfVEVTVEFSQ0gpKSkKLSAgICAgREFTTV9BUkNIPSBwcGM2NAotZGlmZiAtLWdpdCBz cmMvaG9zdC9idWlsZHZtX2FzbS5jIHNyYy9ob3N0L2J1aWxkdm1fYXNtLmMKLWluZGV4IGZmZDE0 OTAuLjZiYjk5NWUgMTAwNjQ0Ci0tLS0gYS9zcmMvaG9zdC9idWlsZHZtX2FzbS5jCi0rKysgYi9z cmMvaG9zdC9idWlsZHZtX2FzbS5jCi1AQCAtMTQwLDE4ICsxNDAsMTQgQEAgc3RhdGljIHZvaWQg ZW1pdF9hc21fd29yZHJlbG9jKEJ1aWxkQ3R4ICpjdHgsIHVpbnQ4X3QgKnAsIGludCBuLAotICNl bHNlCi0gI2RlZmluZSBUT0NQUkVGSVggIiIKLSAjZW5kaWYKLS0gIGlmICgoaW5zID4+IDI2KSA9 PSAxNikgewotKyAgaWYgKChpbnMgPj4gMjYpID09IDE0KSB7Ci0rICAgIGZwcmludGYoY3R4LT5m cCwgIlx0YWRkaSAlZCwlZCwlc1xuIiwgKGlucyA+PiAyMSkgJiAzMSwgKGlucyA+PiAxNikgJiAz MSwgc3ltKTsKLSsgIH0gZWxzZSBpZiAoKGlucyA+PiAyNikgPT0gMTUpIHsKLSsgICAgZnByaW50 ZihjdHgtPmZwLCAiXHRhZGRpcyAlZCwlZCwlc1xuIiwgKGlucyA+PiAyMSkgJiAzMSwgKGlucyA+ PiAxNikgJiAzMSwgc3ltKTsKLSsgIH0gZWxzZSBpZiAoKGlucyA+PiAyNikgPT0gMTYpIHsKLSAg ICAgZnByaW50ZihjdHgtPmZwLCAiXHQlcyAlZCwgJWQsICIgVE9DUFJFRklYICIlc1xuIiwKLSAJ ICAgIChpbnMgJiAxKSA/ICJiY2wiIDogImJjIiwgKGlucyA+PiAyMSkgJiAzMSwgKGlucyA+PiAx NikgJiAzMSwgc3ltKTsKLSAgIH0gZWxzZSBpZiAoKGlucyA+PiAyNikgPT0gMTgpIHsKLS0jaWYg TEpfQVJDSF9QUEM2NAotLSAgICBjb25zdCBjaGFyICpzdWZmaXggPSBzdHJjaHIoc3ltLCAnQCcp OwotLSAgICBpZiAoc3VmZml4ICYmIHN1ZmZpeFsxXSA9PSAnaCcpIHsKLS0gICAgICBmcHJpbnRm KGN0eC0+ZnAsICJcdGFkZGlzIDExLCAyLCAlc1xuIiwgc3ltKTsKLS0gICAgfSBlbHNlIGlmIChz dWZmaXggJiYgc3VmZml4WzFdID09ICdsJykgewotLSAgICAgIGZwcmludGYoY3R4LT5mcCwgIlx0 bGQgMTIsICVzXG4iLCBzeW0pOwotLSAgICB9IGVsc2UKLS0jZW5kaWYKLSAgICAgZnByaW50Zihj dHgtPmZwLCAiXHQlcyAiIFRPQ1BSRUZJWCAiJXNcbiIsIChpbnMgJiAxKSA/ICJibCIgOiAiYiIs IHN5bSk7Ci0gICB9IGVsc2UgewotICAgICBmcHJpbnRmKHN0ZGVyciwKLUBAIC0yNTAsNyArMjQ2 LDcgQEAgdm9pZCBlbWl0X2FzbShCdWlsZEN0eCAqY3R4KQotICAgaW50IGksIHJlbDsKLSAKLSAg IGZwcmludGYoY3R4LT5mcCwgIlx0LmZpbGUgXCJidWlsZHZtXyVzLmRhc2NcIlxuIiwgY3R4LT5k YXNtX2FyY2gpOwotLSNpZiBMSl9BUkNIX1BQQzY0Ci0rI2lmIExKX0FSQ0hfUFBDX0VMRlYyCi0g ICBmcHJpbnRmKGN0eC0+ZnAsICJcdC5hYml2ZXJzaW9uIDJcbiIpOwotICNlbmRpZgotICAgZnBy aW50ZihjdHgtPmZwLCAiXHQudGV4dFxuIik7Ci1kaWZmIC0tZ2l0IHNyYy9sal9hcmNoLmggc3Jj L2xqX2FyY2guaAotaW5kZXggZDYwOWIzNy4uNTNiYzY1MSAxMDA2NDQKLS0tLSBhL3NyYy9sal9h cmNoLmgKLSsrKyBiL3NyYy9sal9hcmNoLmgKLUBAIC0yNjksMTAgKzI2OSwxOCBAQAotICNpZiBM Sl9UQVJHRVRfQ09OU09MRQotICNkZWZpbmUgTEpfQVJDSF9QUEMzMk9ONjQJMQotICNkZWZpbmUg TEpfQVJDSF9OT0ZGSQkJMQotKyNpZiBMSl9UQVJHRVRfUFMzCi0rI2RlZmluZSBMSl9BUkNIX1BQ Q19PUEQJCTEKLSsjZW5kaWYKLSAjZWxpZiBMSl9BUkNIX0JJVFMgPT0gNjQKLS0jZGVmaW5lIExK X0FSQ0hfUFBDNjQJCTEKLS0jZGVmaW5lIExKX1RBUkdFVF9HQzY0CQkxCi0rI2RlZmluZSBMSl9B UkNIX1BQQzMyT042NAkxCi0gI2RlZmluZSBMSl9BUkNIX05PSklUCQkxCS8qIE5ZSSAqLwotKyNp ZiBfQ0FMTF9FTEYgPT0gMgotKyNkZWZpbmUgTEpfQVJDSF9QUENfRUxGVjIJMQotKyNlbHNlCi0r I2RlZmluZSBMSl9BUkNIX1BQQ19PUEQJCTEKLSsjZGVmaW5lIExKX0FSQ0hfUFBDX09QREVOVgkx Ci0rI2VuZGlmCi0gI2VuZGlmCi0gCi0gI2lmIF9BUkNIX1BXUjcKLUBAIC00MjMsMTIgKzQzMSw2 IEBACi0gI2lmIGRlZmluZWQoX1NPRlRfRkxPQVQpIHx8IGRlZmluZWQoX1NPRlRfRE9VQkxFKQot ICNlcnJvciAiTm8gc3VwcG9ydCBmb3IgUG93ZXJQQyBDUFVzIHdpdGhvdXQgZG91YmxlLXByZWNp c2lvbiBGUFUiCi0gI2VuZGlmCi0tI2lmICFMSl9BUkNIX1BQQzY0ICYmIExKX0FSQ0hfRU5ESUFO ID09IExVQUpJVF9MRQotLSNlcnJvciAiTm8gc3VwcG9ydCBmb3IgbGl0dGxlLWVuZGlhbiBQUEMz MiIKLS0jZW5kaWYKLS0jaWYgTEpfQVJDSF9QUEM2NAotLSNlcnJvciAiTm8gc3VwcG9ydCBmb3Ig UG93ZXJQQyA2NCBiaXQgbW9kZSAoeWV0KSIKLS0jZW5kaWYKLSAjaWZkZWYgX19OT19GUFJTX18K LSAjZXJyb3IgIk5vIHN1cHBvcnQgZm9yIFBQQy9lNTAwIGFueW1vcmUgKHVzZSBMdWFKSVQgMi4w KSIKLSAjZW5kaWYKLWRpZmYgLS1naXQgc3JjL2xqX2NjYWxsLmMgc3JjL2xqX2NjYWxsLmMKLWlu ZGV4IDVjMjUyZTUuLmI4OTE1OTEgMTAwNjQ0Ci0tLS0gYS9zcmMvbGpfY2NhbGwuYwotKysrIGIv c3JjL2xqX2NjYWxsLmMKLUBAIC0zNjksMjEgKzM2OSw5NyBAQAotICNlbGlmIExKX1RBUkdFVF9Q UEMKLSAvKiAtLSBQUEMgY2FsbGluZyBjb252ZW50aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLSAKLSsjaWYgTEpfQVJDSF9CSVRTID09IDY0Ci0r Ci0rI2lmIExKX0FSQ0hfUFBDX0VMRlYyCi0rCi0rI2RlZmluZSBDQ0FMTF9IQU5ETEVfU1RSVUNU UkVUIFwKLSsgIGlmIChzeiA+IDE2ICYmIGNjYWxsX2NsYXNzaWZ5X2ZwKGN0cywgY3RyKSA8PSAw KSB7IFwKLSsgICAgY2MtPnJldHJlZiA9IDE7ICAvKiBSZXR1cm4gYnkgcmVmZXJlbmNlLiAqLyBc Ci0rICAgIGNjLT5ncHJbbmdwcisrXSA9IChHUFJBcmcpZHA7IFwKLSsgIH0KLSsKLSsjZGVmaW5l IENDQUxMX0hBTkRMRV9TVFJVQ1RSRVQyIFwKLSsgIGludCBpc2ZwID0gY2NhbGxfY2xhc3NpZnlf ZnAoY3RzLCBjdHIpOyBcCi0rICBpbnQgaTsgXAotKyAgaWYgKGlzZnAgPT0gRlRZUEVfRkxPQVQp IHsgXAotKyAgICBmb3IgKGkgPSAwOyBpIDwgY3RyLT5zaXplIC8gNDsgaSsrKSBcCi0rICAgICAg KChmbG9hdCAqKWRwKVtpXSA9IGNjLT5mcHJbaV07IFwKLSsgIH0gZWxzZSBpZiAoaXNmcCA9PSBG VFlQRV9ET1VCTEUpIHsgXAotKyAgICBmb3IgKGkgPSAwOyBpIDwgY3RyLT5zaXplIC8gODsgaSsr KSBcCi0rICAgICAgKChkb3VibGUgKilkcClbaV0gPSBjYy0+ZnByW2ldOyBcCi0rICB9IGVsc2Ug eyBcCi0rICAgIGlmIChjdHItPnNpemUgPCA4ICYmIExKX0JFKSB7IFwKLSsgICAgICBzcCArPSA4 IC0gY3RyLT5zaXplOyBcCi0rICAgIH0gXAotKyAgICBtZW1jcHkoZHAsIHNwLCBjdHItPnNpemUp OyBcCi0rICB9Ci0rCi0rI2Vsc2UKLSsKLSAjZGVmaW5lIENDQUxMX0hBTkRMRV9TVFJVQ1RSRVQg XAotICAgY2MtPnJldHJlZiA9IDE7ICAvKiBSZXR1cm4gYWxsIHN0cnVjdHMgYnkgcmVmZXJlbmNl LiAqLyBcCi0gICBjYy0+Z3ByW25ncHIrK10gPSAoR1BSQXJnKWRwOwotIAotKyNlbmRpZgotKwot ICNkZWZpbmUgQ0NBTExfSEFORExFX0NPTVBMRVhSRVQgXAotICAgLyogQ29tcGxleCB2YWx1ZXMg YXJlIHJldHVybmVkIGluIDIgb3IgNCBHUFJzLiAqLyBcCi0gICBjYy0+cmV0cmVmID0gMDsKLSAK LSsjZGVmaW5lIENDQUxMX0hBTkRMRV9TVFJVQ1RBUkcKLSsKLSAjZGVmaW5lIENDQUxMX0hBTkRM RV9DT01QTEVYUkVUMiBcCi0tICBtZW1jcHkoZHAsIHNwLCBjdHItPnNpemUpOyAgLyogQ29weSBj b21wbGV4IGZyb20gR1BScy4gKi8KLSsgIGlmIChjdHItPnNpemUgPT0gMipzaXplb2YoZmxvYXQp KSB7ICAvKiBDb3B5IGNvbXBsZXggZmxvYXQgZnJvbSBGUFJzLiAqLyBcCi0rICAgICgoZmxvYXQg KilkcClbMF0gPSBjYy0+ZnByWzBdOyBcCi0rICAgICgoZmxvYXQgKilkcClbMV0gPSBjYy0+ZnBy WzFdOyBcCi0rICB9IGVsc2UgeyAgLyogQ29weSBjb21wbGV4IGRvdWJsZSBmcm9tIEZQUnMuICov IFwKLSsgICAgKChkb3VibGUgKilkcClbMF0gPSBjYy0+ZnByWzBdOyBcCi0rICAgICgoZG91Ymxl ICopZHApWzFdID0gY2MtPmZwclsxXTsgXAotKyAgfQotKwotKyNkZWZpbmUgQ0NBTExfSEFORExF X0NPTVBMRVhBUkcgXAotKyAgaXNmcCA9IDE7IFwKLSsgIGlmIChkLT5zaXplID09IHNpemVvZihm bG9hdCkgKiAyKSB7IFwKLSsgICAgZCA9IGN0eXBlX2dldChjdHMsIENUSURfQ09NUExFWF9ET1VC TEUpOyBcCi0rICAgIGlzZjMyID0gMTsgXAotKyAgfQotKwotKyNkZWZpbmUgQ0NBTExfSEFORExF X1JFR0FSRyBcCi0rICBpZiAoaXNmcCAmJiBkLT5zaXplID09IHNpemVvZihmbG9hdCkpIHsgXAot KyAgICBkID0gY3R5cGVfZ2V0KGN0cywgQ1RJRF9ET1VCTEUpOyBcCi0rICAgIGlzZjMyID0gMTsg XAotKyAgfSBcCi0rICBpZiAobmdwciA8IG1heGdwcikgeyBcCi0rICAgZHAgPSAmY2MtPmdwcltu Z3ByXTsgXAotKyAgIG5ncHIgKz0gbjsgXAotKyAgIGlmIChuZ3ByID4gbWF4Z3ByKSB7IFwKLSsg ICAgIG5zcCArPSBuZ3ByIC0gODsgXAotKyAgICAgbmdwciA9IDg7IFwKLSsgICAgIGlmIChuc3Ag PiBDQ0FMTF9NQVhTVEFDSykgeyBcCi0rICAgICAgIGdvdG8gZXJyX255aTsgXAotKyAgICAgfSBc Ci0rICAgfSBcCi0rICAgZ290byBkb25lOyBcCi0rICB9Ci0rCi0rI2Vsc2UKLSsKLSsjZGVmaW5l IENDQUxMX0hBTkRMRV9TVFJVQ1RSRVQgXAotKyAgY2MtPnJldHJlZiA9IDE7ICAvKiBSZXR1cm4g YWxsIHN0cnVjdHMgYnkgcmVmZXJlbmNlLiAqLyBcCi0rICBjYy0+Z3ByW25ncHIrK10gPSAoR1BS QXJnKWRwOwotKwotKyNkZWZpbmUgQ0NBTExfSEFORExFX0NPTVBMRVhSRVQgXAotKyAgLyogQ29t cGxleCB2YWx1ZXMgYXJlIHJldHVybmVkIGluIDIgb3IgNCBHUFJzLiAqLyBcCi0rICBjYy0+cmV0 cmVmID0gMDsKLSAKLSAjZGVmaW5lIENDQUxMX0hBTkRMRV9TVFJVQ1RBUkcgXAotICAgcnAgPSBj ZGF0YXB0cihsal9jZGF0YV9uZXcoY3RzLCBkaWQsIHN6KSk7IFwKLSAgIHN6ID0gQ1RTSVpFX1BU UjsgIC8qIFBhc3MgYWxsIHN0cnVjdHMgYnkgcmVmZXJlbmNlLiAqLwotIAotKyNkZWZpbmUgQ0NB TExfSEFORExFX0NPTVBMRVhSRVQyIFwKLSsgIG1lbWNweShkcCwgc3AsIGN0ci0+c2l6ZSk7ICAv KiBDb3B5IGNvbXBsZXggZnJvbSBHUFJzLiAqLwotKwotICNkZWZpbmUgQ0NBTExfSEFORExFX0NP TVBMRVhBUkcgXAotICAgLyogUGFzcyBjb21wbGV4IGJ5IHZhbHVlIGluIDIgb3IgNCBHUFJzLiAq LwotIAotQEAgLTQxMCw2ICs0ODYsOCBAQAotICAgICB9IFwKLSAgIH0KLSAKLSsjZW5kaWYKLSsK LSAjZGVmaW5lIENDQUxMX0hBTkRMRV9SRVQgXAotICAgaWYgKGN0eXBlX2lzZnAoY3RyLT5pbmZv KSAmJiBjdHItPnNpemUgPT0gc2l6ZW9mKGZsb2F0KSkgXAotICAgICBjdHIgPSBjdHlwZV9nZXQo Y3RzLCBDVElEX0RPVUJMRSk7ICAvKiBGUFJzIGFsd2F5cyBob2xkIGRvdWJsZXMuICovCi1AQCAt ODAxLDYgKzg3OSw1MCBAQCBub3RoOiAgLyogTm90IGEgaG9tb2dlbmVvdXMgZmxvYXQvZG91Ymxl IGFnZ3JlZ2F0ZS4gKi8KLSAKLSAjZW5kaWYKLSAKLSsvKiAtLSBQb3dlclBDNjQgRUxGdjIgQUJJ IHN0cnVjdCBjbGFzc2lmaWNhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tICovCi0rCi0rI2lmIExK X0FSQ0hfUFBDX0VMRlYyCi0rCi0rI2RlZmluZSBGVFlQRV9GTE9BVAkxCi0rI2RlZmluZSBGVFlQ RV9ET1VCTEUJMgotKwotK3N0YXRpYyB1bnNpZ25lZCBpbnQgY2NhbGxfY2xhc3NpZnlfZnAoQ1RT dGF0ZSAqY3RzLCBDVHlwZSAqY3QpIHsKLSsgIGlmIChjdHlwZV9pc2ZwKGN0LT5pbmZvKSkgewot KyAgICBpZiAoY3QtPnNpemUgPT0gc2l6ZW9mKGZsb2F0KSkKLSsgICAgICByZXR1cm4gRlRZUEVf RkxPQVQ7Ci0rICAgIGVsc2UKLSsgICAgICByZXR1cm4gRlRZUEVfRE9VQkxFOwotKyAgfSBlbHNl IGlmIChjdHlwZV9pc2NvbXBsZXgoY3QtPmluZm8pKSB7Ci0rICAgIGlmIChjdC0+c2l6ZSA9PSBz aXplb2YoZmxvYXQpICogMikKLSsgICAgICByZXR1cm4gRlRZUEVfRkxPQVQ7Ci0rICAgIGVsc2UK LSsgICAgICByZXR1cm4gRlRZUEVfRE9VQkxFOwotKyAgfSBlbHNlIGlmIChjdHlwZV9pc3N0cnVj dChjdC0+aW5mbykpIHsKLSsgICAgaW50IHJlcyA9IC0xOwotKyAgICBpbnQgc3ogPSBjdC0+c2l6 ZTsKLSsgICAgd2hpbGUgKGN0LT5zaWIpIHsKLSsgICAgICBjdCA9IGN0eXBlX2dldChjdHMsIGN0 LT5zaWIpOwotKyAgICAgIGlmIChjdHlwZV9pc2ZpZWxkKGN0LT5pbmZvKSkgewotKyAgICAgICAg aW50IHN1YiA9IGNjYWxsX2NsYXNzaWZ5X2ZwKGN0cywgY3R5cGVfcmF3Y2hpbGQoY3RzLCBjdCkp OwotKyAgICAgICAgaWYgKHJlcyA9PSAtMSkKLSsgICAgICAgICAgcmVzID0gc3ViOwotKyAgICAg ICAgaWYgKHN1YiAhPSAtMSAmJiBzdWIgIT0gcmVzKQotKyAgICAgICAgICByZXR1cm4gMDsKLSsg ICAgICB9IGVsc2UgaWYgKGN0eXBlX2lzYml0ZmllbGQoY3QtPmluZm8pIHx8Ci0rICAgICAgICBj dHlwZV9pc3hhdHRyaWIoY3QtPmluZm8sIENUQV9TVUJUWVBFKSkgewotKyAgICAgICAgcmV0dXJu IDA7Ci0rICAgICAgfQotKyAgICB9Ci0rICAgIGlmIChyZXMgPiAwICYmIHN6ID4gcmVzICogNCAq IDgpCi0rICAgICAgcmV0dXJuIDA7Ci0rICAgIHJldHVybiByZXM7Ci0rICB9IGVsc2UgewotKyAg ICByZXR1cm4gMDsKLSsgIH0KLSt9Ci0rCi0rI2VuZGlmCi0rCi0gLyogLS0gTUlQUzY0IEFCSSBz dHJ1Y3QgY2xhc3NpZmljYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotIAot ICNpZiBMSl9UQVJHRVRfTUlQUzY0Ci1AQCAtOTc0LDYgKzEwOTYsOSBAQCBzdGF0aWMgaW50IGNj YWxsX3NldF9hcmdzKGx1YV9TdGF0ZSAqTCwgQ1RTdGF0ZSAqY3RzLCBDVHlwZSAqY3QsCi0gICAg IENUU2l6ZSBzejsKLSAgICAgTVNpemUgbiwgaXNmcCA9IDAsIGlzdmEgPSAwOwotICAgICB2b2lk ICpkcCwgKnJwID0gTlVMTDsKLSsjaWYgTEpfVEFSR0VUX1BQQyAmJiBMSl9BUkNIX0JJVFMgPT0g NjQKLSsgICAgaW50IGlzZjMyID0gMDsKLSsjZW5kaWYKLSAKLSAgICAgaWYgKGZpZCkgeyAgLyog R2V0IGFyZ3VtZW50IHR5cGUgZnJvbSBmaWVsZC4gKi8KLSAgICAgICBDVHlwZSAqY3RmID0gY3R5 cGVfZ2V0KGN0cywgZmlkKTsKLUBAIC0xMDMwLDcgKzExNTUsMzcgQEAgc3RhdGljIGludCBjY2Fs bF9zZXRfYXJncyhsdWFfU3RhdGUgKkwsIENUU3RhdGUgKmN0cywgQ1R5cGUgKmN0LAotICAgICAg ICoodm9pZCAqKilkcCA9IHJwOwotICAgICAgIGRwID0gcnA7Ci0gICAgIH0KLSsjaWYgTEpfVEFS R0VUX1BQQyAmJiBMSl9BUkNIX0JJVFMgPT0gNjQgJiYgTEpfQkUKLSsgICAgaWYgKGN0eXBlX2lz c3RydWN0KGQtPmluZm8pICYmIHN6IDwgQ1RTSVpFX1BUUikgewotKyAgICAgIGRwID0gKGNoYXIg KilkcCArIChDVFNJWkVfUFRSIC0gc3opOwotKyAgICB9Ci0rI2VuZGlmCi0gICAgIGxqX2Njb252 X2N0X3R2KGN0cywgZCwgKHVpbnQ4X3QgKilkcCwgbywgQ0NGX0FSRyhuYXJnKSk7Ci0rI2lmIExK X1RBUkdFVF9QUEMgJiYgTEpfQVJDSF9CSVRTID09IDY0Ci0rICAgIGlmIChpc2ZwKSB7Ci0rICAg ICAgaW50IGk7Ci0rICAgICAgZm9yIChpID0gMDsgaSA8IGQtPnNpemUgLyA4ICYmIG5mcHIgPCBD Q0FMTF9OQVJHX0ZQUjsgaSsrKQotKyAgICAgICAgY2MtPmZwcltuZnByKytdID0gKChkb3VibGUg KilkcClbaV07Ci0rICAgIH0KLSsgICAgaWYgKGlzZjMyKSB7Ci0rICAgICAgaW50IGk7Ci0rICAg ICAgZm9yIChpID0gMDsgaSA8IGQtPnNpemUgLyA4OyBpKyspCi0rICAgICAgICAoKGZsb2F0ICop ZHApW2kqMl0gPSAoKGRvdWJsZSAqKWRwKVtpXTsKLSsgICAgfQotKyNlbmRpZgotKyNpZiBMSl9B UkNIX1BQQ19FTEZWMgotKyAgICBpZiAoY3R5cGVfaXNzdHJ1Y3QoZC0+aW5mbykpIHsKLSsgICAg ICBpc2ZwID0gY2NhbGxfY2xhc3NpZnlfZnAoY3RzLCBkKTsKLSsgICAgICBpbnQgaTsKLSsgICAg ICBpZiAoaXNmcCA9PSBGVFlQRV9GTE9BVCkgewotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGQt PnNpemUgLyA0ICYmIG5mcHIgPCBDQ0FMTF9OQVJHX0ZQUjsgaSsrKQotKyAgICAgICAgICBjYy0+ ZnByW25mcHIrK10gPSAoKGZsb2F0ICopZHApW2ldOwotKyAgICAgIH0gZWxzZSBpZiAoaXNmcCA9 PSBGVFlQRV9ET1VCTEUpIHsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkLT5zaXplIC8gOCAm JiBuZnByIDwgQ0NBTExfTkFSR19GUFI7IGkrKykKLSsgICAgICAgICAgY2MtPmZwcltuZnByKytd ID0gKChkb3VibGUgKilkcClbaV07Ci0rICAgICAgfQotKyAgICB9Ci0rI2VuZGlmCi0gICAgIC8q IEV4dGVuZCBwYXNzZWQgaW50ZWdlcnMgdG8gMzIgYml0cyBhdCBsZWFzdC4gKi8KLSAgICAgaWYg KGN0eXBlX2lzaW50ZWdlcl9vcl9ib29sKGQtPmluZm8pICYmIGQtPnNpemUgPCA0KSB7Ci0gICAg ICAgaWYgKGQtPmluZm8gJiBDVEZfVU5TSUdORUQpCi1AQCAtMTA0NCw2ICsxMTk5LDE1IEBAIHN0 YXRpYyBpbnQgY2NhbGxfc2V0X2FyZ3MobHVhX1N0YXRlICpMLCBDVFN0YXRlICpjdHMsIENUeXBl ICpjdCwKLSAgICAgaWYgKGlzZnAgJiYgZC0+c2l6ZSA9PSBzaXplb2YoZmxvYXQpKQotICAgICAg ICgoZmxvYXQgKilkcClbMV0gPSAoKGZsb2F0ICopZHApWzBdOyAgLyogRmxvYXRzIG9jY3VweSBo aWdoIHNsb3QuICovCi0gI2VuZGlmCi0rI2lmIExKX1RBUkdFVF9QUEMgJiYgTEpfQVJDSF9CSVRT ID09IDY0Ci0rICAgIGlmICgoY3R5cGVfaXNpbnRlZ2VyX29yX2Jvb2woZC0+aW5mbykgfHwgY3R5 cGVfaXNlbnVtKGQtPmluZm8pKQotKwkmJiBkLT5zaXplIDw9IDQpIHsKLSsgICAgICBpZiAoZC0+ aW5mbyAmIENURl9VTlNJR05FRCkKLSsJKih1aW50NjRfdCAqKWRwID0gKHVpbnQ2NF90KSoodWlu dDMyX3QgKilkcDsKLSsgICAgICBlbHNlCi0rICAgICAgICAqKGludDY0X3QgKilkcCA9IChpbnQ2 NF90KSooaW50MzJfdCAqKWRwOwotKyAgICB9Ci0rI2VuZGlmCi0gI2lmIExKX1RBUkdFVF9NSVBT NjQgfHwgKExKX1RBUkdFVF9BUk02NCAmJiBMSl9CRSkKLSAgICAgaWYgKChjdHlwZV9pc2ludGVn ZXJfb3JfYm9vbChkLT5pbmZvKSB8fCBjdHlwZV9pc2VudW0oZC0+aW5mbykKLSAjaWYgTEpfVEFS R0VUX01JUFM2NAotZGlmZiAtLWdpdCBzcmMvbGpfY2NhbGwuaCBzcmMvbGpfY2NhbGwuaAotaW5k ZXggNTlmNjY0OC4uYmJmMzA5ZiAxMDA2NDQKLS0tLSBhL3NyYy9sal9jY2FsbC5oCi0rKysgYi9z cmMvbGpfY2NhbGwuaAotQEAgLTg2LDEwICs4NiwyMyBAQCB0eXBlZGVmIHVuaW9uIEZQUkFyZyB7 Ci0gI2VsaWYgTEpfVEFSR0VUX1BQQwotIAotICNkZWZpbmUgQ0NBTExfTkFSR19HUFIJCTgKLSsj aWYgTEpfQVJDSF9CSVRTID09IDY0Ci0rI2RlZmluZSBDQ0FMTF9OQVJHX0ZQUgkJMTMKLSsjaWYg TEpfQVJDSF9QUENfRUxGVjIKLSsjZGVmaW5lIENDQUxMX05SRVRfR1BSCQkyCi0rI2RlZmluZSBD Q0FMTF9OUkVUX0ZQUgkJOAotKyNkZWZpbmUgQ0NBTExfU1BTX0VYVFJBCQkxNAotKyNlbHNlCi0r I2RlZmluZSBDQ0FMTF9OUkVUX0dQUgkJMQotKyNkZWZpbmUgQ0NBTExfTlJFVF9GUFIJCTIKLSsj ZGVmaW5lIENDQUxMX1NQU19FWFRSQQkJMTYKLSsjZW5kaWYKLSsjZWxzZQotICNkZWZpbmUgQ0NB TExfTkFSR19GUFIJCTgKLSAjZGVmaW5lIENDQUxMX05SRVRfR1BSCQk0CS8qIEZvciBjb21wbGV4 IGRvdWJsZS4gKi8KLSAjZGVmaW5lIENDQUxMX05SRVRfRlBSCQkxCi0gI2RlZmluZSBDQ0FMTF9T UFNfRVhUUkEJCTQKLSsjZW5kaWYKLSAjZGVmaW5lIENDQUxMX1NQU19GUkVFCQkwCi0gCi0gdHlw ZWRlZiBpbnRwdHJfdCBHUFJBcmc7Ci1kaWZmIC0tZ2l0IHNyYy9sal9jY2FsbGJhY2suYyBzcmMv bGpfY2NhbGxiYWNrLmMKLWluZGV4IDg0NjgyN2IuLmViN2Y0NDUgMTAwNjQ0Ci0tLS0gYS9zcmMv bGpfY2NhbGxiYWNrLmMKLSsrKyBiL3NyYy9sal9jY2FsbGJhY2suYwotQEAgLTYxLDggKzYxLDI0 IEBAIHN0YXRpYyBNU2l6ZSBDQUxMQkFDS19PRlMyU0xPVChNU2l6ZSBvZnMpCi0gCi0gI2VsaWYg TEpfVEFSR0VUX1BQQwotIAotKyNpZiBMSl9BUkNIX1BQQ19PUEQKLSsKLSsjZGVmaW5lIENBTExC QUNLX1NMT1QyT0ZTKHNsb3QpCQkoMjQqKHNsb3QpKQotKyNkZWZpbmUgQ0FMTEJBQ0tfT0ZTMlNM T1Qob2ZzKQkJKChvZnMpLzI0KQotKyNkZWZpbmUgQ0FMTEJBQ0tfTUFYX1NMT1QJCShDQUxMQkFD S19PRlMyU0xPVChDQUxMQkFDS19NQ09ERV9TSVpFKSkKLSsKLSsjZWxpZiBMSl9BUkNIX1BQQ19F TEZWMgotKwotKyNkZWZpbmUgQ0FMTEJBQ0tfU0xPVDJPRlMoc2xvdCkJCSg0KihzbG90KSkKLSsj ZGVmaW5lIENBTExCQUNLX09GUzJTTE9UKG9mcykJCSgob2ZzKS80KQotKyNkZWZpbmUgQ0FMTEJB Q0tfTUFYX1NMT1QJCShDQUxMQkFDS19NQ09ERV9TSVpFLzQgLSAxMCkKLSsKLSsjZWxzZQotKwot ICNkZWZpbmUgQ0FMTEJBQ0tfTUNPREVfSEVBRAkJMjQKLSAKLSsjZW5kaWYKLSsKLSAjZWxpZiBM Sl9UQVJHRVRfTUlQUzMyCi0gCi0gI2RlZmluZSBDQUxMQkFDS19NQ09ERV9IRUFECQkyMAotQEAg LTE4OCwyNCArMjA0LDU5IEBAIHN0YXRpYyB2b2lkIGNhbGxiYWNrX21jb2RlX2luaXQoZ2xvYmFs X1N0YXRlICpnLCB1aW50MzJfdCAqcGFnZSkKLSAgIGx1YV9hc3NlcnQocCAtIHBhZ2UgPD0gQ0FM TEJBQ0tfTUNPREVfU0laRSk7Ci0gfQotICNlbGlmIExKX1RBUkdFVF9QUEMKLSsjaWYgTEpfQVJD SF9QUENfT1BECi0rcmVnaXN0ZXIgdm9pZCAqdm1fdG9jIF9fYXNtX18oInIyIik7Ci0rc3RhdGlj IHZvaWQgY2FsbGJhY2tfbWNvZGVfaW5pdChnbG9iYWxfU3RhdGUgKmcsIHVpbnQ2NF90ICpwYWdl KQotK3sKLSsgIHVpbnQ2NF90ICpwID0gcGFnZTsKLSsgIHZvaWQgKnRhcmdldCA9ICh2b2lkICop bGpfdm1fZmZpX2NhbGxiYWNrOwotKyAgTVNpemUgc2xvdDsKLSsgIGZvciAoc2xvdCA9IDA7IHNs b3QgPCBDQUxMQkFDS19NQVhfU0xPVDsgc2xvdCsrKSB7Ci0rICAgICpwKysgPSAodWludDY0X3Qp dGFyZ2V0OwotKyAgICAqcCsrID0gKHVpbnQ2NF90KXZtX3RvYzsKLSsgICAgKnArKyA9ICh1aW50 NjRfdClnIHwgKCh1aW50NjRfdClzbG90IDw8IDQ3KTsKLSsgIH0KLSsgIGx1YV9hc3NlcnQocCAt IHBhZ2UgPD0gQ0FMTEJBQ0tfTUNPREVfU0laRSAvIDgpOwotK30KLSsjZWxzZQotIHN0YXRpYyB2 b2lkIGNhbGxiYWNrX21jb2RlX2luaXQoZ2xvYmFsX1N0YXRlICpnLCB1aW50MzJfdCAqcGFnZSkK LSB7Ci0gICB1aW50MzJfdCAqcCA9IHBhZ2U7Ci0gICB2b2lkICp0YXJnZXQgPSAodm9pZCAqKWxq X3ZtX2ZmaV9jYWxsYmFjazsKLSAgIE1TaXplIHNsb3Q7Ci0rI2lmIExKX0FSQ0hfUFBDX0VMRlYy Ci0rICAvLyBOZWVkcyB0byBiZSBpbiBzeW5jIHdpdGggbGpfdm1fZmZpX2NhbGxiYWNrLgotKyAg bHVhX2Fzc2VydChDQUxMQkFDS19NQ09ERV9TSVpFID09IDQwOTYpOwotKyAgZm9yIChzbG90ID0g MDsgc2xvdCA8IENBTExCQUNLX01BWF9TTE9UOyBzbG90KyspIHsKLSsgICAgKnAgPSBQUENJX0Ig fCAoKChwYWdlK0NBTExCQUNLX01BWF9TTE9ULXApICYgMHgwMGZmZmZmZnUpIDw8IDIpOwotKyAg ICBwKys7Ci0rICB9Ci0rICAqcCsrID0gUFBDSV9MSSB8IFBQQ0ZfVChSSURfU1lTMSkgfCAoKCgo aW50cHRyX3QpdGFyZ2V0KSA+PiAzMikgJiAweGZmZmYpOwotKyAgKnArKyA9IFBQQ0lfTEkgfCBQ UENGX1QoUklEX1IxMSkgfCAoKCgoaW50cHRyX3QpZykgPj4gMzIpICYgMHhmZmZmKTsKLSsgICpw KysgPSBQUENJX1JMRElDUiB8IFBQQ0ZfVChSSURfU1lTMSkgfCBQUENGX0EoUklEX1NZUzEpIHwg UFBDRl9TSCgzMikgfCBQUENGX002KDYzLTMyKTsgIC8qIHNsZGkgKi8KLSsgICpwKysgPSBQUENJ X1JMRElDUiB8IFBQQ0ZfVChSSURfUjExKSB8IFBQQ0ZfQShSSURfUjExKSB8IFBQQ0ZfU0goMzIp IHwgUFBDRl9NNig2My0zMik7ICAvKiBzbGRpICovCi0rICAqcCsrID0gUFBDSV9PUklTIHwgUFBD Rl9BKFJJRF9TWVMxKSB8IFBQQ0ZfVChSSURfU1lTMSkgfCAoKCgoaW50cHRyX3QpdGFyZ2V0KSA+ PiAxNikgJiAweGZmZmYpOwotKyAgKnArKyA9IFBQQ0lfT1JJUyB8IFBQQ0ZfQShSSURfUjExKSB8 IFBQQ0ZfVChSSURfUjExKSB8ICgoKChpbnRwdHJfdClnKSA+PiAxNikgJiAweGZmZmYpOwotKyAg KnArKyA9IFBQQ0lfT1JJIHwgUFBDRl9BKFJJRF9TWVMxKSB8IFBQQ0ZfVChSSURfU1lTMSkgfCAo KChpbnRwdHJfdCl0YXJnZXQpICYgMHhmZmZmKTsKLSsgICpwKysgPSBQUENJX09SSSB8IFBQQ0Zf QShSSURfUjExKSB8IFBQQ0ZfVChSSURfUjExKSB8ICgoKGludHB0cl90KWcpICYgMHhmZmZmKTsK LSsgICpwKysgPSBQUENJX01UQ1RSIHwgUFBDRl9UKFJJRF9TWVMxKTsKLSsgICpwKysgPSBQUENJ X0JDVFI7Ci0rI2Vsc2UKLSAgICpwKysgPSBQUENJX0xJUyB8IFBQQ0ZfVChSSURfVE1QKSB8ICh1 MzJwdHIodGFyZ2V0KSA+PiAxNik7Ci0tICAqcCsrID0gUFBDSV9MSVMgfCBQUENGX1QoUklEX1Ix MikgfCAodTMycHRyKGcpID4+IDE2KTsKLSsgICpwKysgPSBQUENJX0xJUyB8IFBQQ0ZfVChSSURf UjExKSB8ICh1MzJwdHIoZykgPj4gMTYpOwotICAgKnArKyA9IFBQQ0lfT1JJIHwgUFBDRl9BKFJJ RF9UTVApfFBQQ0ZfVChSSURfVE1QKSB8ICh1MzJwdHIodGFyZ2V0KSAmIDB4ZmZmZik7Ci0tICAq cCsrID0gUFBDSV9PUkkgfCBQUENGX0EoUklEX1IxMil8UFBDRl9UKFJJRF9SMTIpIHwgKHUzMnB0 cihnKSAmIDB4ZmZmZik7Ci0rICAqcCsrID0gUFBDSV9PUkkgfCBQUENGX0EoUklEX1IxMSl8UFBD Rl9UKFJJRF9SMTEpIHwgKHUzMnB0cihnKSAmIDB4ZmZmZik7Ci0gICAqcCsrID0gUFBDSV9NVENU UiB8IFBQQ0ZfVChSSURfVE1QKTsKLSAgICpwKysgPSBQUENJX0JDVFI7Ci0gICBmb3IgKHNsb3Qg PSAwOyBzbG90IDwgQ0FMTEJBQ0tfTUFYX1NMT1Q7IHNsb3QrKykgewotLSAgICAqcCsrID0gUFBD SV9MSSB8IFBQQ0ZfVChSSURfUjExKSB8IHNsb3Q7Ci0rICAgICpwKysgPSBQUENJX0xJIHwgUFBD Rl9UKFJJRF9SMTIpIHwgc2xvdDsKLSAgICAgKnAgPSBQUENJX0IgfCAoKChwYWdlLXApICYgMHgw MGZmZmZmZnUpIDw8IDIpOwotICAgICBwKys7Ci0gICB9Ci0tICBsdWFfYXNzZXJ0KHAgLSBwYWdl IDw9IENBTExCQUNLX01DT0RFX1NJWkUpOwotKyNlbmRpZgotKyAgbHVhX2Fzc2VydChwIC0gcGFn ZSA8PSBDQUxMQkFDS19NQ09ERV9TSVpFIC8gNCk7Ci0gfQotKyNlbmRpZgotICNlbGlmIExKX1RB UkdFVF9NSVBTCi0gc3RhdGljIHZvaWQgY2FsbGJhY2tfbWNvZGVfaW5pdChnbG9iYWxfU3RhdGUg KmcsIHVpbnQzMl90ICpwYWdlKQotIHsKLUBAIC02NDEsNiArNjkyLDE1IEBAIHN0YXRpYyB2b2lk IGNhbGxiYWNrX2NvbnZfcmVzdWx0KENUU3RhdGUgKmN0cywgbHVhX1N0YXRlICpMLCBUVmFsdWUg Km8pCi0gCSooaW50MzJfdCAqKWRwID0gY3RyLT5zaXplID09IDEgPyAoaW50MzJfdCkqKGludDhf dCAqKWRwIDoKLSAJCQkJCSAgKGludDMyX3QpKihpbnQxNl90ICopZHA7Ci0gICAgIH0KLSsjaWYg TEpfVEFSR0VUX1BQQyAmJiBMSl9BUkNIX0JJVFMgPT0gNjQKLSsgICAgaWYgKGN0ci0+c2l6ZSA8 PSA0ICYmCi0rICAgICAgIChjdHlwZV9pc2ludGVnZXJfb3JfYm9vbChjdHItPmluZm8pIHx8IGN0 eXBlX2lzZW51bShjdHItPmluZm8pKSkgewotKyAgICAgIGlmIChjdHItPmluZm8gJiBDVEZfVU5T SUdORUQpCi0rICAgICAgICAqKHVpbnQ2NF90ICopZHAgPSAodWludDY0X3QpKih1aW50MzJfdCAq KWRwOwotKyAgICAgIGVsc2UKLSsgICAgICAgICooaW50NjRfdCAqKWRwID0gKGludDY0X3QpKihp bnQzMl90ICopZHA7Ci0rICAgIH0KLSsjZW5kaWYKLSAjaWYgTEpfVEFSR0VUX01JUFM2NCB8fCAo TEpfVEFSR0VUX0FSTTY0ICYmIExKX0JFKQotICAgICAvKiBBbHdheXMgc2lnbi1leHRlbmQgcmVz dWx0cyB0byA2NCBiaXRzLiBFdmVuIGEgc29mdC1mcCAnZmxvYXQnLiAqLwotICAgICBpZiAoY3Ry LT5zaXplIDw9IDQgJiYKLWRpZmYgLS1naXQgc3JjL2xqX2N0eXBlLmggc3JjL2xqX2N0eXBlLmgK LWluZGV4IDBjMjIwYTguLjEwNTg2NWIgMTAwNjQ0Ci0tLS0gYS9zcmMvbGpfY3R5cGUuaAotKysr IGIvc3JjL2xqX2N0eXBlLmgKLUBAIC0xNTMsNyArMTUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ1R5 cGUgewotIAotIC8qIFNpbXBsaWZ5IHRhcmdldC1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiBDaGVj a2VkIGluIGxqX2NjYWxsLmguICovCi0gI2RlZmluZSBDQ0FMTF9NQVhfR1BSCQk4Ci0tI2RlZmlu ZSBDQ0FMTF9NQVhfRlBSCQk4Ci0rI2RlZmluZSBDQ0FMTF9NQVhfRlBSCQkxNAotIAotIHR5cGVk ZWYgTEpfQUxJR04oOCkgdW5pb24gRlBSQ0JBcmcgeyBkb3VibGUgZDsgZmxvYXQgZlsyXTsgfSBG UFJDQkFyZzsKLSAKLWRpZmYgLS1naXQgc3JjL2xqX2RlZi5oIHNyYy9sal9kZWYuaAotaW5kZXgg MmQ4ZmZmNi4uMzgxZDZmNSAxMDA2NDQKLS0tLSBhL3NyYy9sal9kZWYuaAotKysrIGIvc3JjL2xq X2RlZi5oCi1AQCAtNzEsNyArNzEsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludHB0cl90 OwotICNkZWZpbmUgTEpfTUFYX0lEWENIQUlOCTEwMAkJLyogX19pbmRleC9fX25ld2luZGV4IGNo YWluIGxpbWl0LiAqLwotICNkZWZpbmUgTEpfU1RBQ0tfRVhUUkEJKDUrMipMSl9GUjIpCS8qIEV4 dHJhIHN0YWNrIHNwYWNlIChtZXRhbWV0aG9kcykuICovCi0gCi0rI2lmIGRlZmluZWQoX19wb3dl cnBjNjRfXykgJiYgX0NBTExfRUxGICE9IDIKLSsjZGVmaW5lIExKX05VTV9DQlBBR0UJNAkJLyog TnVtYmVyIG9mIEZGSSBjYWxsYmFjayBwYWdlcy4gKi8KLSsjZWxzZQotICNkZWZpbmUgTEpfTlVN X0NCUEFHRQkxCQkvKiBOdW1iZXIgb2YgRkZJIGNhbGxiYWNrIHBhZ2VzLiAqLwotKyNlbmRpZgot IAotIC8qIE1pbmltdW0gdGFibGUvYnVmZmVyIHNpemVzLiAqLwotICNkZWZpbmUgTEpfTUlOX0dM T0JBTAk2CQkvKiBNaW4uIGdsb2JhbCB0YWJsZSBzaXplIChoYml0cykuICovCi1kaWZmIC0tZ2l0 IHNyYy9sal9mcmFtZS5oIHNyYy9sal9mcmFtZS5oCi1pbmRleCAxOWM0OWE0Li5jNjY2NDE4IDEw MDY0NAotLS0tIGEvc3JjL2xqX2ZyYW1lLmgKLSsrKyBiL3NyYy9sal9mcmFtZS5oCi1AQCAtMjEw LDYgKzIxMCwxNSBAQCBlbnVtIHsgTEpfQ09OVF9UQUlMQ0FMTCwgTEpfQ09OVF9GRklfQ0FMTEJB Q0sgfTsgIC8qIFNwZWNpYWwgY29udGludWF0aW9ucy4gKi8KLSAjZGVmaW5lIENGUkFNRV9PRlNf TVVMVFJFUwk0MDgKLSAjZGVmaW5lIENGUkFNRV9TSVpFCQkzODQKLSAjZGVmaW5lIENGUkFNRV9T SElGVF9NVUxUUkVTCTMKLSsjZWxpZiBMSl9BUkNIX1BQQ19FTEZWMgotKyNkZWZpbmUgQ0ZSQU1F X09GU19FUlJGCQkzNjAKLSsjZGVmaW5lIENGUkFNRV9PRlNfTlJFUwkJMzU2Ci0rI2RlZmluZSBD RlJBTUVfT0ZTX1BSRVYJCTMzNgotKyNkZWZpbmUgQ0ZSQU1FX09GU19MCQkzNTIKLSsjZGVmaW5l IENGUkFNRV9PRlNfUEMJCTM0OAotKyNkZWZpbmUgQ0ZSQU1FX09GU19NVUxUUkVTCTM0NAotKyNk ZWZpbmUgQ0ZSQU1FX1NJWkUJCTM2OAotKyNkZWZpbmUgQ0ZSQU1FX1NISUZUX01VTFRSRVMJMwot ICNlbGlmIExKX0FSQ0hfUFBDMzJPTjY0Ci0gI2RlZmluZSBDRlJBTUVfT0ZTX0VSUkYJCTQ3Mgot ICNkZWZpbmUgQ0ZSQU1FX09GU19OUkVTCQk0NjgKLWRpZmYgLS1naXQgc3JjL2xqX3RhcmdldF9w cGMuaCBzcmMvbGpfdGFyZ2V0X3BwYy5oCi1pbmRleCBjNWM5OTFhLi5mMGM4Yzk0IDEwMDY0NAot LS0tIGEvc3JjL2xqX3RhcmdldF9wcGMuaAotKysrIGIvc3JjL2xqX3RhcmdldF9wcGMuaAotQEAg LTMwLDggKzMwLDEzIEBAIGVudW0gewotIAotICAgLyogQ2FsbGluZyBjb252ZW50aW9ucy4gKi8K LSAgIFJJRF9SRVQgPSBSSURfUjMsCi0rI2lmIExKX0xFCi0rICBSSURfUkVUSEkgPSBSSURfUjQs Ci0rICBSSURfUkVUTE8gPSBSSURfUjMsCi0rI2Vsc2UKLSAgIFJJRF9SRVRISSA9IFJJRF9SMywK LSAgIFJJRF9SRVRMTyA9IFJJRF9SNCwKLSsjZW5kaWYKLSAgIFJJRF9GUFJFVCA9IFJJRF9GMSwK LSAKLSAgIC8qIFRoZXNlIGRlZmluaXRpb25zIG11c3QgbWF0Y2ggd2l0aCB0aGUgKi5kYXNjIGZp bGUocyk6ICovCi1AQCAtMTMxLDYgKzEzNiw4IEBAIHN0YXRpYyBMSl9BSU5MSU5FIHVpbnQzMl90 ICpleGl0c3R1Yl90cmFjZV9hZGRyXyh1aW50MzJfdCAqcCwgdWludDMyX3QgZXhpdG5vKQotICNk ZWZpbmUgUFBDRl9DKHIpCSgocikgPDwgNikKLSAjZGVmaW5lIFBQQ0ZfTUIobikJKChuKSA8PCA2 KQotICNkZWZpbmUgUFBDRl9NRShuKQkoKG4pIDw8IDEpCi0rI2RlZmluZSBQUENGX1NIKG4pCSgo KChuKSAmIDMxKSA8PCAoMTErMSkpIHwgKCgobikgJiAzMikgPj4gKDUtMSkpKQotKyNkZWZpbmUg UFBDRl9NNihuKQkoKCgobikgJiAzMSkgPDwgKDUrMSkpIHwgKCgobikgJiAzMikgPDwgKDExLTUp KSkKLSAjZGVmaW5lIFBQQ0ZfWQkJMHgwMDIwMDAwMAotICNkZWZpbmUgUFBDRl9ET1QJMHgwMDAw MDAwMQotIAotQEAgLTIwMCw2ICsyMDcsMTMgQEAgdHlwZWRlZiBlbnVtIFBQQ0lucyB7Ci0gICBQ UENJX1JMV0lOTSA9IDB4NTQwMDAwMDAsCi0gICBQUENJX1JMV0lNSSA9IDB4NTAwMDAwMDAsCi0g Ci0rICBQUENJX1JMRElDTCA9IDB4NzgwMDAwMDAsCi0rICBQUENJX1JMRElDUiA9IDB4NzgwMDAw MDQsCi0rICBQUENJX1JMRElDID0gMHg3ODAwMDAwOCwKLSsgIFBQQ0lfUkxESU1JID0gMHg3ODAw MDAwYywKLSsgIFBQQ0lfUkxEQ0wgPSAweDc4MDAwMDEwLAotKyAgUFBDSV9STERDUiA9IDB4Nzgw MDAwMTIsCi0rCi0gICBQUENJX0IgPSAweDQ4MDAwMDAwLAotICAgUFBDSV9CTCA9IDB4NDgwMDAw MDEsCi0gICBQUENJX0JDID0gMHg0MDgwMDAwMCwKLWRpZmYgLS1naXQgc3JjL3ZtX3BwYy5kYXNj IHNyYy92bV9wcGMuZGFzYwotaW5kZXggYjQyNjBlYi4uYWJiMzgxZSAxMDA2NDQKLS0tLSBhL3Ny Yy92bV9wcGMuZGFzYwotKysrIGIvc3JjL3ZtX3BwYy5kYXNjCi1AQCAtMjIsMzUgKzIyLDQwIEBA Ci0gfC8vIEdQUjY0ICAgNjQgYml0IHJlZ2lzdGVycyAoYnV0IHBvc3NpYmx5IDMyIGJpdCBwb2lu dGVycywgZS5nLiBQUzMpLgotIHwvLyAgICAgICAgIEFmZmVjdHMgcmVnIHNhdmVzLCBzdGFjayBs YXlvdXQsIGNhcnJ5L292ZXJmbG93L2RvdCBmbGFncyBldGMuCi0gfC8vIEZSQU1FMzIgVXNlIDMy IGJpdCBmcmFtZSBsYXlvdXQsIGV2ZW4gd2l0aCBHUFI2NCAoWGJveCAzNjApLgotLXwvLyBUT0Mg ICAgIE5lZWQgdGFibGUgb2YgY29udGVudHMgKDY0IGJpdCBvciAzMiBiaXQgdmFyaWFudCwgZS5n LiBQUzMpLgotK3wvLyBPUEQgICAgIE5lZWQgZnVuY3Rpb24gZGVzY3JpcHRvcnMgKDY0IGJpdCBv ciAzMiBiaXQgdmFyaWFudCwgZS5nLiBQUzMpLgotIHwvLyAgICAgICAgIEZ1bmN0aW9uIHBvaW50 ZXJzIGFyZSByZWFsbHkgYSBzdHJ1Y3Q6IGNvZGUsIFRPQywgZW52IChvcHRpb25hbCkuCi0tfC8v IFRPQ0VOViAgRnVuY3Rpb24gcG9pbnRlcnMgaGF2ZSBhbiBlbnZpcm9ubWVudCBwb2ludGVyLCB0 b28gKG5vdCBvbiBQUzMpLgotK3wvLyBPUERFTlYgIEZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYW4g ZW52aXJvbm1lbnQgcG9pbnRlciwgdG9vIChub3Qgb24gUFMzKS4KLSt8Ly8gRUxGVjIgICBUaGUg NjQtYml0IEVMRiBWMiBBQkkgaXMgaW4gdXNlLgotIHwvLyBQUEUgICAgIFBvd2VyIFByb2Nlc3Nv ciBFbGVtZW50IG9mIENlbGwgKFBTMykgb3IgWGVub24gKFhib3ggMzYwKS4KLSB8Ly8gICAgICAg ICBNdXN0IGF2b2lkIChzbG93KSBtaWNyby1jb2RlZCBpbnN0cnVjdGlvbnMuCi0gfAotIHwuaWYg UDY0Ci0tfC5kZWZpbmUgVE9DLCAxCi0tfC5kZWZpbmUgVE9DRU5WLCAxCi0gfC5tYWNybyBscHgs IGEsIGIsIGM7IGxkeCBhLCBiLCBjOyAuZW5kbWFjcm8KLSB8Lm1hY3JvIGxwLCBhLCBiOyBsZCBh LCBiOyAuZW5kbWFjcm8KLSB8Lm1hY3JvIHN0cCwgYSwgYjsgc3RkIGEsIGI7IC5lbmRtYWNybwot K3wubWFjcm8gc3RweCwgYSwgYiwgYzsgc3RkeCBhLCBiLCBjOyAuZW5kbWFjcm8KLSB8LmRlZmlu ZSBkZWNvZGVfT1BQLCBkZWNvZGVfT1A4Ci0tfC5pZiBGRkkKLS18Ly8gTWlzc2luZzogQ2FsbGlu ZyBjb252ZW50aW9ucywgNjQgYml0IHJlZ3MsIFRPQy4KLS18LmVycm9yIGxpYl9mZmkgbm90IHll dCBpbXBsZW1lbnRlZCBmb3IgUFBDNjQKLS18LmVuZGlmCi0rfC5kZWZpbmUgUFNJWkUsIDgKLSB8 LmVsc2UKLSB8Lm1hY3JvIGxweCwgYSwgYiwgYzsgbHd6eCBhLCBiLCBjOyAuZW5kbWFjcm8KLSB8 Lm1hY3JvIGxwLCBhLCBiOyBsd3ogYSwgYjsgLmVuZG1hY3JvCi0gfC5tYWNybyBzdHAsIGEsIGI7 IHN0dyBhLCBiOyAuZW5kbWFjcm8KLSt8Lm1hY3JvIHN0cHgsIGEsIGIsIGM7IHN0d3ggYSwgYiwg YzsgLmVuZG1hY3JvCi0gfC5kZWZpbmUgZGVjb2RlX09QUCwgZGVjb2RlX09QNAotK3wuZGVmaW5l IFBTSVpFLCA0Ci0gfC5lbmRpZgotIHwKLSB8Ly8gQ29udmVuaWVuY2UgbWFjcm9zIGZvciBUT0Mg aGFuZGxpbmcuCi0tfC5pZiBUT0MKLSt8LmlmIE9QRCBvciBFTEZWMgotIHwvLyBMaW5rZXIgbmVl ZHMgYSBUT0MgcGF0Y2ggYXJlYSBmb3IgZXZlcnkgZXh0ZXJuYWwgY2FsbCByZWxvY2F0aW9uLgot LXwubWFjcm8gYmxleCwgdGFyZ2V0OyBibCBleHRlcm4gdGFyZ2V0QHBsdDsgbm9wOyAuZW5kbWFj cm8KLSt8Lm1hY3JvIGJsZXgsIHRhcmdldDsgYmwgZXh0ZXJuIHRhcmdldDsgbm9wOyAuZW5kbWFj cm8KLSB8Lm1hY3JvIC50b2MsIGEsIGI7IGEsIGI7IC5lbmRtYWNybwotK3wuZWxzZQotK3wubWFj cm8gYmxleCwgdGFyZ2V0OyBibCBleHRlcm4gdGFyZ2V0QHBsdDsgLmVuZG1hY3JvCi0rfC5tYWNy byAudG9jLCBhLCBiOyAuZW5kbWFjcm8KLSt8LmVuZGlmCi0rfC5pZiBPUEQKLSt8Lm1hY3JvIC5v cGQsIGEsIGI7IGEsIGI7IC5lbmRtYWNybwotIHwuaWYgUDY0Ci0gfC5kZWZpbmUgVE9DX09GUywJ IDgKLSB8LmRlZmluZSBFTlZfT0ZTLAkxNgotQEAgLTU4LDEzICs2MywxMyBAQAotIHwuZGVmaW5l IFRPQ19PRlMsCTQKLSB8LmRlZmluZSBFTlZfT0ZTLAk4Ci0gfC5lbmRpZgotLXwuZWxzZSAgLy8g Tm8gVE9DLgotLXwubWFjcm8gYmxleCwgdGFyZ2V0OyBibCBleHRlcm4gdGFyZ2V0QHBsdDsgLmVu ZG1hY3JvCi0tfC5tYWNybyAudG9jLCBhLCBiOyAuZW5kbWFjcm8KLSt8LmVsc2UgIC8vIE5vIE9Q RC4KLSt8Lm1hY3JvIC5vcGQsIGEsIGI7IC5lbmRtYWNybwotIHwuZW5kaWYKLS18Lm1hY3JvIC50 b2NlbnYsIGEsIGI7IC5pZiBUT0NFTlY7IGEsIGI7IC5lbmRpZjsgLmVuZG1hY3JvCi0rfC5tYWNy byAub3BkZW52LCBhLCBiOyAuaWYgT1BERU5WOyBhLCBiOyAuZW5kaWY7IC5lbmRtYWNybwotIHwK LSB8Lm1hY3JvIC5ncHI2NCwgYSwgYjsgLmlmIEdQUjY0OyBhLCBiOyAuZW5kaWY7IC5lbmRtYWNy bwotK3wubWFjcm8gLmVsZnYyLCBhLCBiOyAuaWYgRUxGVjI7IGEsIGI7IC5lbmRpZjsgLmVuZG1h Y3JvCi0gfAotIHwubWFjcm8gYW5kaXguLCB5LCBhLCBpCi0gfC5pZiBQUEUKLUBAIC03NSwyOSAr ODAsNiBAQAotIHwuZW5kaWYKLSB8LmVuZG1hY3JvCi0gfAotLXwubWFjcm8gY2xyc28sIHJlZwot LXwuaWYgUFBFCi0tfCAgbGkgcmVnLCAwCi0tfCAgbXR4ZXIgcmVnCi0tfC5lbHNlCi0tfCAgbWNy eHIgY3IwCi0tfC5lbmRpZgotLXwuZW5kbWFjcm8KLS18Ci0tfC5tYWNybyBjaGVja292LCByZWcs IG5vb3YKLS18LmlmIFBQRQotLXwgIG1meGVyIHJlZwotLXwgIGFkZCByZWcsIHJlZywgcmVnCi0t fCAgY21wd2kgcmVnLCAwCi0tfCAgIGxpIHJlZywgMAotLXwgICBtdHhlciByZWcKLS18ICBiZ2V5 IG5vb3YKLS18LmVsc2UKLS18ICBtY3J4ciBjcjAKLS18ICBibGV5IG5vb3YKLS18LmVuZGlmCi0t fC5lbmRtYWNybwotLXwKLSB8Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHwKLSB8Ly8gRml4ZWQgcmVnaXN0 ZXIgYXNzaWdubWVudHMgZm9yIHRoZSBpbnRlcnByZXRlci4KLUBAIC0xMTEsNiArOTMsNyBAQAot IHwuZGVmaW5lIExSRUcsCQlyMTgJLy8gUmVnaXN0ZXIgaG9sZGluZyBsdWFfU3RhdGUgKGFsc28g aW4gU0FWRV9MKS4KLSB8LmRlZmluZSBNVUxUUkVTLAlyMTkJLy8gU2l6ZSBvZiBtdWx0aS1yZXN1 bHQ6IChucmVzdWx0cysxKSo4LgotIHwuZGVmaW5lIEpHTCwJCXIzMQkvLyBPbi10cmFjZTogZ2xv YmFsX1N0YXRlICsgMzI3NjguCi0rfC5kZWZpbmUgQkFTRVA0LAlyMjUJLy8gRXF1YWwgdG8gQkFT RSArIDQKLSB8Ci0gfC8vIENvbnN0YW50cyBmb3IgdHlwZS1jb21wYXJpc29ucywgc3RvcmVzIGFu ZCBjb252ZXJzaW9ucy4gQyBjYWxsZWUtc2F2ZS4KLSB8LmRlZmluZSBUSVNOVU0sCXIyMgotQEAg LTE0MywxMiArMTI2LDE5IEBACi0gfAotIHwuZGVmaW5lIEZBUkcxLAkJZjEKLSB8LmRlZmluZSBG QVJHMiwJCWYyCi0rfC5kZWZpbmUgRkFSRzMsCQlmMwotK3wuZGVmaW5lIEZBUkc0LAkJZjQKLSt8 LmRlZmluZSBGQVJHNSwJCWY1Ci0rfC5kZWZpbmUgRkFSRzYsCQlmNgotK3wuZGVmaW5lIEZBUkc3 LAkJZjcKLSt8LmRlZmluZSBGQVJHOCwJCWY4Ci0gfAotIHwuZGVmaW5lIENSRVQxLAkJcjMKLSB8 LmRlZmluZSBDUkVUMiwJCXI0Ci0gfAotIHwuZGVmaW5lIFRPQ1JFRywJcjIJLy8gVE9DIHJlZ2lz dGVyIChvbmx5IHVzZWQgYnkgQyBjb2RlKS4KLSB8LmRlZmluZSBFTlZSRUcsCXIxMQkvLyBFbnZp cm9ubWVudCBwb2ludGVyIChuZXN0ZWQgQyBmdW5jdGlvbnMpLgotK3wuZGVmaW5lIEZVTkNSRUcs CXIxMgkvLyBFTEZ2MiBmdW5jdGlvbiBwb2ludGVyIChvdmVybGFwcyBSRCkKLSB8Ci0gfC8vIFN0 YWNrIGxheW91dCB3aGlsZSBpbiBpbnRlcnByZXRlci4gTXVzdCBtYXRjaCB3aXRoIGxqX2ZyYW1l LmguCi0gfC5pZiBHUFI2NAotQEAgLTE4Miw2ICsxNzIsNDkgQEAKLSB8LmRlZmluZSBUTVBELAkJ VE1QRF9ISQotIHwuZGVmaW5lIFRPTlVNX0QsCVRPTlVNX0hJCi0gfAotK3wuZWxpZiBFTEZWMgot K3wKLSt8Ly8JCQkzOTIoc3ApIC8vIFwgMzIgYml0IEMgZnJhbWUgaW5mby4KLSt8LmRlZmluZSBT QVZFX0xSLAkzODQoc3ApCi0rfC5kZWZpbmUgU0FWRV9DUiwJMzc2KHNwKSAvLyA2NCBiaXQgQ1Ig c2F2ZS4KLSt8LmRlZmluZSBDRlJBTUVfU1BBQ0UsCTM2OCAgICAgLy8gRGVsdGEgZm9yIHNwLgot K3wvLyBCYWNrIGNoYWluIGZvciBzcDoJMzY4KHNwKSA8LS0gc3AgZW50ZXJpbmcgaW50ZXJwcmV0 ZXIKLSt8LmRlZmluZSBTQVZFX0VSUkYsCTM2MChzcCkgLy8gfAotK3wuZGVmaW5lIFNBVkVfTlJF UywJMzU2KHNwKSAvLyB8Ci0rfC5kZWZpbmUgU0FWRV9MLAkzNTIoc3ApIC8vICA+IFBhcmFtZXRl ciBzYXZlIGFyZWEuCi0rfC5kZWZpbmUgU0FWRV9QQywJMzQ4KHNwKSAvLyB8Ci0rfC5kZWZpbmUg U0FWRV9NVUxUUkVTLAkzNDQoc3ApIC8vIHwKLSt8LmRlZmluZSBTQVZFX0NGUkFNRSwJMzM2KHNw KSAvLyAvIDY0IGJpdCBDIGZyYW1lIGNoYWluLgotK3wuZGVmaW5lIFNBVkVfRlBSXywJMTkyICAg ICAvLyAuLiAxOTIrMTgqODogNjQgYml0IEZQUiBzYXZlcy4KLSt8LmRlZmluZSBTQVZFX0dQUl8s CTQ4ICAgICAgLy8gLi4gNDgrMTgqODogNjQgYml0IEdQUiBzYXZlcy4KLSt8LmlmIEVORElBTl9M RQotK3wuZGVmaW5lIFRNUERfSEksCTQ0KHNwKQotK3wuZGVmaW5lIFRNUERfTE8sCTQwKHNwKQot K3wuZGVmaW5lIFRPTlVNX0hJLAkzNihzcCkKLSt8LmRlZmluZSBUT05VTV9MTywJMzIoc3ApCi0r fC5lbHNlCi0rfC5kZWZpbmUgVE1QRF9MTywJNDQoc3ApCi0rfC5kZWZpbmUgVE1QRF9ISSwJNDAo c3ApCi0rfC5kZWZpbmUgVE9OVU1fTE8sCTM2KHNwKQotK3wuZGVmaW5lIFRPTlVNX0hJLAkzMihz cCkKLSt8LmVuZGlmCi0rfC5kZWZpbmUgU0FWRV9UT0MsCTI0KHNwKSAgLy8gVE9DIHNhdmUgYXJl YS4KLSt8Ly8gTmV4dCBmcmFtZSBscjoJMTYoc3ApCi0rfC8vIE5leHQgZnJhbWUgY3I6CTgoc3Ap Ci0rfC8vIEJhY2sgY2hhaW4gZm9yIHNwOgkwKHNwKQk8LS0gc3Agd2hpbGUgaW4gaW50ZXJwcmV0 ZXIKLSt8Ci0rfC5pZiBFTkRJQU5fTEUKLSt8LmRlZmluZSBUTVBEX0JMTywJMzIoc3ApCi0rfC5k ZWZpbmUgVE1QRCwJCVRNUERfTE8KLSt8LmRlZmluZSBUT05VTV9ELAlUT05VTV9MTwotK3wuZWxz ZQotK3wuZGVmaW5lIFRNUERfQkxPLAkzOShzcCkKLSt8LmRlZmluZSBUTVBELAkJVE1QRF9ISQot K3wuZGVmaW5lIFRPTlVNX0QsCVRPTlVNX0hJCi0rfC5lbmRpZgotK3wKLSt8LmRlZmluZSBFWElU X09GRlNFVCwJMzIKLSt8Ci0gfC5lbHNlCi0gfAotIHwvLwkJCTUwOChzcCkgLy8gXCAzMiBiaXQg QyBmcmFtZSBpbmZvLgotQEAgLTE5MiwyMyArMjI1LDM5IEBACi0gfC5kZWZpbmUgU0FWRV9NVUxU UkVTLAk0NTYoc3ApIC8vIHwKLSB8LmRlZmluZSBTQVZFX0NGUkFNRSwJNDQ4KHNwKSAvLyAvIDY0 IGJpdCBDIGZyYW1lIGNoYWluLgotIHwuZGVmaW5lIFNBVkVfTFIsCTQxNihzcCkKLSt8LmRlZmlu ZSBTQVZFX0NSLAk0MDgoc3ApICAvLyA2NCBiaXQgQ1Igc2F2ZS4KLSB8LmRlZmluZSBDRlJBTUVf U1BBQ0UsCTQwMCAgICAgLy8gRGVsdGEgZm9yIHNwLgotIHwvLyBCYWNrIGNoYWluIGZvciBzcDoJ NDAwKHNwKSA8LS0gc3AgZW50ZXJpbmcgaW50ZXJwcmV0ZXIKLSB8LmRlZmluZSBTQVZFX0ZQUl8s CTI1NiAgICAgLy8gLi4gMjU2KzE4Kjg6IDY0IGJpdCBGUFIgc2F2ZXMuCi0gfC5kZWZpbmUgU0FW RV9HUFJfLAkxMTIgICAgIC8vIC4uIDExMisxOCo4OiA2NCBiaXQgR1BSIHNhdmVzLgotIHwvLwkJ CTQ4KHNwKSAgLy8gQ2FsbGVlIHBhcmFtZXRlciBzYXZlIGFyZWEgKEFCSSBtYW5kYXRlZCkuCi0g fC5kZWZpbmUgU0FWRV9UT0MsCTQwKHNwKSAgLy8gVE9DIHNhdmUgYXJlYS4KLSt8LmlmIEVORElB Tl9MRQotK3wuZGVmaW5lIFRNUERfSEksCTM2KHNwKSAgLy8gXCBMaW5rIGVkaXRvciB0ZW1wIChB QkkgbWFuZGF0ZWQpLgotK3wuZGVmaW5lIFRNUERfTE8sCTMyKHNwKSAgLy8gLwotK3wuZGVmaW5l IFRPTlVNX0hJLAkyOChzcCkgIC8vIFwgQ29tcGlsZXIgdGVtcCAoQUJJIG1hbmRhdGVkKS4KLSt8 LmRlZmluZSBUT05VTV9MTywJMjQoc3ApICAvLyAvCi0rfC5lbHNlCi0gfC5kZWZpbmUgVE1QRF9M TywJMzYoc3ApICAvLyBcIExpbmsgZWRpdG9yIHRlbXAgKEFCSSBtYW5kYXRlZCkuCi0gfC5kZWZp bmUgVE1QRF9ISSwJMzIoc3ApICAvLyAvCi0gfC5kZWZpbmUgVE9OVU1fTE8sCTI4KHNwKSAgLy8g XCBDb21waWxlciB0ZW1wIChBQkkgbWFuZGF0ZWQpLgotIHwuZGVmaW5lIFRPTlVNX0hJLAkyNChz cCkgIC8vIC8KLSt8LmVuZGlmCi0gfC8vIE5leHQgZnJhbWUgbHI6CTE2KHNwKQotLXwuZGVmaW5l IFNBVkVfQ1IsCTgoc3ApICAvLyA2NCBiaXQgQ1Igc2F2ZS4KLSt8Ly8gTmV4dCBmcmFtZSBjcjoJ OChzcCkKLSB8Ly8gQmFjayBjaGFpbiBmb3Igc3A6CTAoc3ApCTwtLSBzcCB3aGlsZSBpbiBpbnRl cnByZXRlcgotIHwKLSt8LmlmIEVORElBTl9MRQotK3wuZGVmaW5lIFRNUERfQkxPLAkzMihzcCkK LSt8LmRlZmluZSBUTVBELAkJVE1QRF9MTwotK3wuZGVmaW5lIFRPTlVNX0QsCVRPTlVNX0xPCi0r fC5lbHNlCi0gfC5kZWZpbmUgVE1QRF9CTE8sCTM5KHNwKQotIHwuZGVmaW5lIFRNUEQsCQlUTVBE X0hJCi0gfC5kZWZpbmUgVE9OVU1fRCwJVE9OVU1fSEkKLSt8LmVuZGlmCi0rfAotK3wuZGVmaW5l IEVYSVRfT0ZGU0VULAkxMTIKLSB8Ci0gfC5lbmRpZgotIHwuZWxzZQotQEAgLTIyNiwxNiArMjc1 LDMxIEBACi0gfC5kZWZpbmUgU0FWRV9QQywJMzIoc3ApCi0gfC5kZWZpbmUgU0FWRV9NVUxUUkVT LAkyOChzcCkKLSB8LmRlZmluZSBVTlVTRUQxLAkyNChzcCkKLSt8LmlmIEVORElBTl9MRQotK3wu ZGVmaW5lIFRNUERfSEksCTIwKHNwKQotK3wuZGVmaW5lIFRNUERfTE8sCTE2KHNwKQotK3wuZGVm aW5lIFRPTlVNX0hJLAkxMihzcCkKLSt8LmRlZmluZSBUT05VTV9MTywJOChzcCkKLSt8LmVsc2UK LSB8LmRlZmluZSBUTVBEX0xPLAkyMChzcCkKLSB8LmRlZmluZSBUTVBEX0hJLAkxNihzcCkKLSB8 LmRlZmluZSBUT05VTV9MTywJMTIoc3ApCi0gfC5kZWZpbmUgVE9OVU1fSEksCTgoc3ApCi0rfC5l bmRpZgotIHwvLyBOZXh0IGZyYW1lIGxyOgk0KHNwKQotIHwvLyBCYWNrIGNoYWluIGZvciBzcDoJ MChzcCkJPC0tIHNwIHdoaWxlIGluIGludGVycHJldGVyCi0gfAotK3wuaWYgRU5ESUFOX0xFCi0r fC5kZWZpbmUgVE1QRF9CTE8sCTE2KHNwKQotK3wuZGVmaW5lIFRNUEQsCQlUTVBEX0xPCi0rfC5k ZWZpbmUgVE9OVU1fRCwJVE9OVU1fTE8KLSt8LmVsc2UKLSB8LmRlZmluZSBUTVBEX0JMTywJMjMo c3ApCi0gfC5kZWZpbmUgVE1QRCwJCVRNUERfSEkKLSB8LmRlZmluZSBUT05VTV9ELAlUT05VTV9I SQotK3wuZW5kaWYKLSt8Ci0rfC5kZWZpbmUgRVhJVF9PRkZTRVQsCTE2Ci0gfAotIHwuZW5kaWYK LSB8Ci1AQCAtMzUwLDggKzQxNCwzNSBAQAotIHwvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gfAotIHwvLyBB Y2Nlc3MgdG8gZnJhbWUgcmVsYXRpdmUgdG8gQkFTRS4KLSt8LmlmIEVORElBTl9MRQotK3wuZGVm aW5lIEZSQU1FX1BDLAktNAotK3wuZGVmaW5lIEZSQU1FX0ZVTkMsCS04Ci0rfC5kZWZpbmUgRlJB TUVfQ09OVFBDLAktMTIKLSt8LmRlZmluZSBGUkFNRV9DT05UUkVULAktMTYKLSt8LmRlZmluZSBX T1JEX0xPLAkwCi0rfC5kZWZpbmUgV09SRF9ISSwJNAotK3wuZGVmaW5lIFdPUkRfQkxPLAkwCi0r fC5kZWZpbmUgQkFTRV9MTywJQkFTRQotK3wuZGVmaW5lIEJBU0VfSEksCUJBU0VQNAotK3wubWFj cm8gbHd6dXgyLCBoaSwgbG8sIGJhc2UsIGlkeAotK3wgIGx3enV4IGxvLCBiYXNlLCBpZHgKLSt8 ICBsd3ogaGksIDQoYmFzZSkKLSt8LmVuZG1hY3JvCi0rfC5lbHNlCi0gfC5kZWZpbmUgRlJBTUVf UEMsCS04Ci0gfC5kZWZpbmUgRlJBTUVfRlVOQywJLTQKLSt8LmRlZmluZSBGUkFNRV9DT05UUEMs CS0xNgotK3wuZGVmaW5lIEZSQU1FX0NPTlRSRVQsCS0xMgotK3wuZGVmaW5lIFdPUkRfTE8sCTQK LSt8LmRlZmluZSBXT1JEX0hJLAkwCi0rfC5kZWZpbmUgV09SRF9CTE8sCTcKLSt8LmRlZmluZSBC QVNFX0xPLAlCQVNFUDQKLSt8LmRlZmluZSBCQVNFX0hJLAlCQVNFCi0rfC5tYWNybyBsd3p1eDIs IGhpLCBsbywgYmFzZSwgaWR4Ci0rfCAgbHd6dXggaGksIGJhc2UsIGlkeAotK3wgIGx3eiBsbywg NChiYXNlKQotK3wuZW5kbWFjcm8KLSt8LmVuZGlmCi0gfAotIHwvLyBJbnN0cnVjdGlvbiBkZWNv ZGUuCi0gfC5tYWNybyBkZWNvZGVfT1A0LCBkc3QsIGluczsgcmx3aW5tIGRzdCwgaW5zLCAyLCAy MiwgMjk7IC5lbmRtYWNybwotQEAgLTQxMiw2ICs1MDMsNyBAQAotIHwvLyBDYWxsIGRlY29kZSBh bmQgZGlzcGF0Y2guCi0gfC5tYWNybyBpbnNfY2FsbHQKLSB8ICAvLyBCQVNFID0gbmV3IGJhc2Us IFJCID0gTEZVTkMvQ0ZVTkMsIFJDID0gbmFyZ3MqOCwgRlJBTUVfUEMoQkFTRSkgPSBQQwotK3wg IGFkZGkgQkFTRVA0LCBCQVNFLCA0Ci0gfCAgbHd6IFBDLCBMRlVOQzpSQi0+cGMKLSB8ICBsd3og SU5TLCAwKFBDKQotIHwgICBhZGRpIFBDLCBQQywgNAotQEAgLTUwNCw3ICs1OTYsMTIgQEAgc3Rh dGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIGx3eiBQQywg RlJBTUVfUEMoVE1QMikJCS8vIEZldGNoIFBDIG9mIHByZXZpb3VzIGZyYW1lLgotICAgfCAgbXIg QkFTRSwgVE1QMgkJCS8vIFJlc3RvcmUgY2FsbGVyIGJhc2UuCi0gICB8ICAvLyBQcmVwZW5kaW5n IG1heSBvdmVyd3JpdGUgdGhlIHBjYWxsIGZyYW1lLCBzbyBkbyBpdCBhdCB0aGUgZW5kLgotLSAg fCAgIHN0d3UgVE1QMSwgRlJBTUVfUEMoUkEpCQkvLyBQcmVwZW5kIHRydWUgdG8gcmVzdWx0cy4K LSsgIHwgIC5pZiBFTkRJQU5fTEUKLSsgIHwgICAgYWRkaSBSQSwgUkEsIC04Ci0rICB8ICAgIHN0 dyBUTVAxLCBXT1JEX0hJKFJBKQkJLy8gUHJlcGVuZCB0cnVlIHRvIHJlc3VsdHMuCi0rICB8ICAu ZWxzZQotKyAgfCAgICBzdHd1IFRNUDEsIC04KFJBKQkJLy8gUHJlcGVuZCB0cnVlIHRvIHJlc3Vs dHMuCi0rICB8ICAuZW5kaWYKLSAgIHwKLSAgIHwtPnZtX3JldHVybmM6Ci0gICB8ICBhZGRpIFJE LCBSRCwgOAkJCS8vIFJEID0gKG5yZXN1bHRzKzEpKjguCi1AQCAtNTYwLDcgKzY1Nyw3IEBAIHN0 YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICBsd3ogVE1Q MSwgTC0+bWF4c3RhY2sKLSAgIHwgIGNtcGx3IEJBU0UsIFRNUDEKLSAgIHwgIGJnZSA+OAotLSAg fCAgc3R3IFRJU05JTCwgMChCQVNFKQotKyAgfCAgc3R3IFRJU05JTCwgV09SRF9ISShCQVNFKQot ICAgfCAgYWRkaSBSRCwgUkQsIDgKLSAgIHwgIGFkZGkgQkFTRSwgQkFTRSwgOAotICAgfCAgYiA8 MgotQEAgLTYxMSw3ICs3MDgsMTIgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVp bGRDdHggKmN0eCkKLSAgIHwtPnZtX3Vud2luZF9mZl9laDoJCQkvLyBMYW5kaW5nIHBhZCBmb3Ig ZXh0ZXJuYWwgdW53aW5kZXIuCi0gICB8ICBsd3ogTCwgU0FWRV9MCi0gICB8ICAudG9jIGxkIFRP Q1JFRywgU0FWRV9UT0MKLSsgIHwuaWYgUDY0Ci0rICB8ICAgICBsdXMgVElTTlVNLCBMSl9USVNO VU0gPj4gMTYJLy8gU2V0dXAgdHlwZSBjb21wYXJpc29uIGNvbnN0YW50cy4KLSsgIHwgICAgIG9y aSBUSVNOVU0sIFRJU05VTSwgTEpfVElTTlVNICYgMHhmZmZmCi0rICB8LmVsc2UKLSAgIHwgICAg IGxpIFRJU05VTSwgTEpfVElTTlVNCQkvLyBTZXR1cCB0eXBlIGNvbXBhcmlzb24gY29uc3RhbnRz LgotKyAgfC5lbmRpZgotICAgfCAgbHAgQkFTRSwgTC0+YmFzZQotICAgfCAgICAgbHVzIFRNUDMs IDB4NTljMAkJLy8gVE9CSVQgPSAyXjUyICsgMl41MSAoZmxvYXQpLgotICAgfCAgIGx3eiBESVNQ QVRDSCwgTC0+Z2xyZWYJCS8vIFNldHVwIHBvaW50ZXIgdG8gZGlzcGF0Y2ggdGFibGUuCi1AQCAt NjI2LDcgKzcyOCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpj dHgpCi0gICB8ICBsYSBSQSwgLTgoQkFTRSkJCQkvLyBSZXN1bHRzIHN0YXJ0IGF0IEJBU0UtOC4K LSAgIHwgICAgIHN0dyBUTVAzLCBUTVBECi0gICB8ICAgYWRkaSBESVNQQVRDSCwgRElTUEFUQ0gs IEdHX0cyRElTUAotLSAgfCAgc3R3IFRNUDEsIDAoUkEpCQkJLy8gUHJlcGVuZCBmYWxzZSB0byBl cnJvciBtZXNzYWdlLgotKyAgfCAgc3R3IFRNUDEsIFdPUkRfSEkoUkEpCQkvLyBQcmVwZW5kIGZh bHNlIHRvIGVycm9yIG1lc3NhZ2UuCi0gICB8ICBsaSBSRCwgMTYJCQkJLy8gMiByZXN1bHRzOiBm YWxzZSArIGVycm9yIG1lc3NhZ2UuCi0gICB8ICAgIHN0X3Ztc3RhdGUKLSAgIHwgICAgIGxmcyBU T05VTSwgVE1QRAotQEAgLTY4Nyw3ICs3ODksMTIgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91 dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIHN0dyBMLCBESVNQQVRDSF9HTChjdXJfTCkoRElT UEFUQ0gpCi0gICB8ICBtciBSQSwgQkFTRQotICAgfCAgIGxwIEJBU0UsIEwtPmJhc2UKLSsgIHwu aWYgUDY0Ci0rICB8ICAgICBsdXMgVElTTlVNLCBMSl9USVNOVU0gPj4gMTYJLy8gU2V0dXAgdHlw ZSBjb21wYXJpc29uIGNvbnN0YW50cy4KLSsgIHwgICAgIG9yaSBUSVNOVU0sIFRJU05VTSwgTEpf VElTTlVNICYgMHhmZmZmCi0rICB8LmVsc2UKLSAgIHwgICAgIGxpIFRJU05VTSwgTEpfVElTTlVN CQkvLyBTZXR1cCB0eXBlIGNvbXBhcmlzb24gY29uc3RhbnRzLgotKyAgfC5lbmRpZgotICAgfCAg IGxwIFRNUDEsIEwtPnRvcAotICAgfCAgbHd6IFBDLCBGUkFNRV9QQyhCQVNFKQotICAgfCAgICAg bHVzIFRNUDMsIDB4NTljMAkJLy8gVE9CSVQgPSAyXjUyICsgMl41MSAoZmxvYXQpLgotQEAgLTcz Nyw3ICs4NDQsMTIgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0 eCkKLSAgIHwzOiAgLy8gRW50cnkgcG9pbnQgZm9yIHZtX2NwY2FsbC92bV9yZXN1bWUgKEJBU0Ug PSBiYXNlLCBQQyA9IGZ0eXBlKS4KLSAgIHwgIHN0dyBMLCBESVNQQVRDSF9HTChjdXJfTCkoRElT UEFUQ0gpCi0gICB8ICBscCBUTVAyLCBMLT5iYXNlCQkJLy8gVE1QMiA9IG9sZCBiYXNlICh1c2Vk IGluIHZtZXRhX2NhbGwpLgotKyAgfC5pZiBQNjQKLSsgIHwgICAgIGx1cyBUSVNOVU0sIExKX1RJ U05VTSA+PiAxNgkvLyBTZXR1cCB0eXBlIGNvbXBhcmlzb24gY29uc3RhbnRzLgotKyAgfCAgICAg b3JpIFRJU05VTSwgVElTTlVNLCBMSl9USVNOVU0gJiAweGZmZmYKLSsgIHwuZWxzZQotICAgfCAg ICAgbGkgVElTTlVNLCBMSl9USVNOVU0JCS8vIFNldHVwIHR5cGUgY29tcGFyaXNvbiBjb25zdGFu dHMuCi0rICB8LmVuZGlmCi0gICB8ICAgbHAgVE1QMSwgTC0+dG9wCi0gICB8ICAgICBsdXMgVE1Q MywgMHg1OWMwCQkvLyBUT0JJVCA9IDJeNTIgKyAyXjUxIChmbG9hdCkuCi0gICB8ICBhZGQgUEMs IFBDLCBCQVNFCi1AQCAtNzU3LDggKzg2OSw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRp bmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8Ci0gICB8LT52bV9jYWxsX2Rpc3BhdGNoOgotICAgfCAg Ly8gVE1QMiA9IG9sZCBiYXNlLCBCQVNFID0gbmV3IGJhc2UsIFJDID0gbmFyZ3MqOCwgUEMgPSBj YWxsZXIgUEMKLS0gIHwgIGx3eiBUTVAwLCBGUkFNRV9QQyhCQVNFKQotLSAgfCAgIGx3eiBMRlVO QzpSQiwgRlJBTUVfRlVOQyhCQVNFKQotKyAgfCAgbHd6IFRNUDAsIFdPUkRfSEktOChCQVNFKQot KyAgfCAgIGx3eiBMRlVOQzpSQiwgV09SRF9MTy04KEJBU0UpCi0gICB8ICBjaGVja2Z1bmMgVE1Q MDsgYm5lIC0+dm1ldGFfY2FsbAotICAgfAotICAgfC0+dm1fY2FsbF9kaXNwYXRjaF9mOgotQEAg LTc3Nyw3ICs4ODksOSBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAq Y3R4KQotICAgfCAgIHN1YiBUTVAwLCBUTVAwLCBUTVAxCQkvLyBDb21wdXRlIC1zYXZlc3RhY2so TCwgTC0+dG9wKS4KLSAgIHwgICAgbHAgVE1QMSwgTC0+Y2ZyYW1lCi0gICB8ICAgICBhZGRpIERJ U1BBVENILCBESVNQQVRDSCwgR0dfRzJESVNQCi0tICB8ICAudG9jIGxwIENBUkc0LCAwKENBUkc0 KQotKyAgfCAgLm9wZCBscCBUT0NSRUcsIFRPQ19PRlMoQ0FSRzQpCi0rICB8ICAub3BkZW52IGxw IEVOVlJFRywgRU5WX09GUyhDQVJHNCkKLSsgIHwgIC5vcGQgbHAgQ0FSRzQsIDAoQ0FSRzQpCi0g ICB8ICBsaSBUTVAyLCAwCi0gICB8ICAgc3R3IFRNUDAsIFNBVkVfTlJFUwkJLy8gTmVnLiBkZWx0 YSBtZWFucyBjZnJhbWUgdy9vIGZyYW1lLgotICAgfCAgc3R3IFRNUDIsIFNBVkVfRVJSRgkJLy8g Tm8gZXJyb3IgZnVuY3Rpb24uCi1AQCAtNzg1LDcgKzg5OSw5IEBAIHN0YXRpYyB2b2lkIGJ1aWxk X3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICAgIHN0cCBzcCwgTC0+Y2ZyYW1lCQkv LyBBZGQgb3VyIEMgZnJhbWUgdG8gY2ZyYW1lIGNoYWluLgotICAgfCAgICAgc3R3IEwsIERJU1BB VENIX0dMKGN1cl9MKShESVNQQVRDSCkKLSAgIHwgIG10Y3RyIENBUkc0Ci0rICB8ICAuZWxmdjIg bXIgRlVOQ1JFRywgQ0FSRzQKLSAgIHwgIGJjdHJsCQkJLy8gKGx1YV9TdGF0ZSAqTCwgbHVhX0NG dW5jdGlvbiBmdW5jLCB2b2lkICp1ZCkKLSsgIHwgIC50b2MgbHAgVE9DUkVHLCBTQVZFX1RPQwot ICAgfC5pZiBQUEUKLSAgIHwgIG1yIEJBU0UsIENSRVQxCi0gICB8ICBjbXB3aSBDUkVUMSwgMAot QEAgLTgwNywyMCArOTIzLDI3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxk Q3R4ICpjdHgpCi0gICB8Ci0gICB8LT5jb250X2Rpc3BhdGNoOgotICAgfCAgLy8gQkFTRSA9IG1l dGEgYmFzZSwgUkEgPSByZXN1bHRwdHIsIFJEID0gKG5yZXN1bHRzKzEpKjgKLS0gIHwgIGx3eiBU TVAwLCAtMTIoQkFTRSkJCS8vIENvbnRpbnVhdGlvbi4KLSsgIHwgIGx3eiBUTVAwLCBGUkFNRV9D T05UUkVUKEJBU0UpCS8vIENvbnRpbnVhdGlvbi4KLSAgIHwgICBtciBSQiwgQkFTRQotICAgfCAg IG1yIEJBU0UsIFRNUDIJCQkvLyBSZXN0b3JlIGNhbGxlciBCQVNFLgotICAgfCAgICBsd3ogTEZV TkM6VE1QMSwgRlJBTUVfRlVOQyhUTVAyKQotICAgfC5pZiBGRkkKLSAgIHwgIGNtcGx3aSBUTVAw LCAxCi0gICB8LmVuZGlmCi0tICB8ICAgICBsd3ogUEMsIC0xNihSQikJCQkvLyBSZXN0b3JlIFBD IGZyb20gW2NvbnR8UENdLgotLSAgfCAgIHN1YmkgVE1QMiwgUkQsIDgKLSsgIHwgICAgIGx3eiBQ QywgRlJBTUVfQ09OVFBDKFJCKQkvLyBSZXN0b3JlIFBDIGZyb20gW2NvbnR8UENdLgotKyAgfCAg YWRkaSBCQVNFUDQsIEJBU0UsIDQKLSsgIHwgICBhZGRpIFRNUDIsIFJELCBXT1JEX0hJLTgKLSAg IHwgICAgbHd6IFRNUDEsIExGVU5DOlRNUDEtPnBjCi0gICB8ICAgc3R3eCBUSVNOSUwsIFJBLCBU TVAyCQkvLyBFbnN1cmUgb25lIHZhbGlkIGFyZy4KLSsgIHwuaWYgUDY0Ci0rICB8ICAgbGQgVE1Q MywgMChESVNQQVRDSCkKLSsgIHwuZW5kaWYKLSAgIHwuaWYgRkZJCi0gICB8ICBibGUgPjEKLSAg IHwuZW5kaWYKLSsgIHwuaWYgUDY0Ci0rICB8ICBhZGQgVE1QMCwgVE1QMCwgVE1QMwotKyAgfC5l bmRpZgotICAgfCAgICBsd3ogS0JBU0UsIFBDMlBST1RPKGspKFRNUDEpCi0gICB8ICAvLyBCQVNF ID0gYmFzZSwgUkEgPSByZXN1bHRwdHIsIFJCID0gbWV0YSBiYXNlCi0gICB8ICBtdGN0ciBUTVAw Ci1AQCAtODU2LDIwICs5NzksMjAgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVp bGRDdHggKmN0eCkKLSAgIHwgIGxhIENBUkczLCBESVNQQVRDSF9HTCh0bXB0dikoRElTUEFUQ0gp Ci0gICB8ICBsaSBUTVAwLCBMSl9UU1RSCi0gICB8ICAgZGVjb2RlX1JCOCBSQiwgSU5TCi0tICB8 ICBzdHcgU1RSOlJDLCA0KENBUkczKQotKyAgfCAgc3R3IFNUUjpSQywgV09SRF9MTyhDQVJHMykK LSAgIHwgICBhZGQgQ0FSRzIsIEJBU0UsIFJCCi0tICB8ICBzdHcgVE1QMCwgMChDQVJHMykKLSsg IHwgIHN0dyBUTVAwLCBXT1JEX0hJKENBUkczKQotICAgfCAgYiA+MQotICAgfAotICAgfC0+dm1l dGFfdGdldHM6Ci0gICB8ICBsYSBDQVJHMiwgRElTUEFUQ0hfR0wodG1wdHYpKERJU1BBVENIKQot ICAgfCAgbGkgVE1QMCwgTEpfVFRBQgotLSAgfCAgc3R3IFRBQjpSQiwgNChDQVJHMikKLSsgIHwg IHN0dyBUQUI6UkIsIFdPUkRfTE8oQ0FSRzIpCi0gICB8ICAgbGEgQ0FSRzMsIERJU1BBVENIX0dM KHRtcHR2MikoRElTUEFUQ0gpCi0tICB8ICBzdHcgVE1QMCwgMChDQVJHMikKLSsgIHwgIHN0dyBU TVAwLCBXT1JEX0hJKENBUkcyKQotICAgfCAgIGxpIFRNUDEsIExKX1RTVFIKLS0gIHwgICBzdHcg U1RSOlJDLCA0KENBUkczKQotLSAgfCAgIHN0dyBUTVAxLCAwKENBUkczKQotKyAgfCAgIHN0dyBT VFI6UkMsIFdPUkRfTE8oQ0FSRzMpCi0rICB8ICAgc3R3IFRNUDEsIFdPUkRfSEkoQ0FSRzMpCi0g ICB8ICBiID4xCi0gICB8Ci0gICB8LT52bWV0YV90Z2V0YjoJCQkvLyBUTVAwID0gaW5kZXgKLUBA IC04ODAsOCArMTAwMyw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4 ICpjdHgpCi0gICB8ICBsYSBDQVJHMywgRElTUEFUQ0hfR0wodG1wdHYpKERJU1BBVENIKQotICAg fCAgIGFkZCBDQVJHMiwgQkFTRSwgUkIKLSAgIHwuaWYgRFVBTE5VTQotLSAgfCAgc3R3IFRJU05V TSwgMChDQVJHMykKLS0gIHwgIHN0dyBUTVAwLCA0KENBUkczKQotKyAgfCAgc3R3IFRJU05VTSwg V09SRF9ISShDQVJHMykKLSsgIHwgIHN0dyBUTVAwLCBXT1JEX0xPKENBUkczKQotICAgfC5lbHNl Ci0gICB8ICBzdGZkIGYwLCAwKENBUkczKQotICAgfC5lbmRpZgotQEAgLTkwOSw3ICsxMDMyLDcg QEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIC8v IEJBU0UgPSBiYXNlLCBMLT50b3AgPSBuZXcgYmFzZSwgc3RhY2sgPSBjb250L2Z1bmMvdC9rCi0g ICB8ICBzdWJmaWMgVE1QMSwgQkFTRSwgRlJBTUVfQ09OVAotICAgfCAgbHAgQkFTRSwgTC0+dG9w Ci0tICB8ICBzdHcgUEMsIC0xNihCQVNFKQkJCS8vIFtjb250fFBDXQotKyAgfCAgc3R3IFBDLCBG UkFNRV9DT05UUEMoQkFTRSkJCS8vIFtjb250fFBDXQotICAgfCAgIGFkZCBQQywgVE1QMSwgQkFT RQotICAgfCAgbHd6IExGVU5DOlJCLCBGUkFNRV9GVU5DKEJBU0UpCS8vIEd1YXJhbnRlZWQgdG8g YmUgYSBmdW5jdGlvbiBoZXJlLgotICAgfCAgIGxpIE5BUkdTODpSQywgMTYJCQkvLyAyIGFyZ3Mg Zm9yIGZ1bmModCwgaykuCi1AQCAtOTIzLDcgKzEwNDYsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9z dWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgbGZkIGYxNCwgMChDUkVUMSkKLSAgIHwg IGIgLT5CQ19UR0VUUl9aCi0gICB8MToKLS0gIHwgIHN0d3ggVElTTklMLCBCQVNFLCBSQQotKyAg fCAgc3R3eCBUSVNOSUwsIEJBU0VfSEksIFJBCi0gICB8ICBiIC0+Y29udF9ub3AKLSAgIHwKLSAg IHwvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi1AQCAtOTMyLDIwICsxMDU1LDIwIEBAIHN0YXRpYyB2b2lkIGJ1 aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICBsYSBDQVJHMywgRElTUEFUQ0hf R0wodG1wdHYpKERJU1BBVENIKQotICAgfCAgbGkgVE1QMCwgTEpfVFNUUgotICAgfCAgIGRlY29k ZV9SQjggUkIsIElOUwotLSAgfCAgc3R3IFNUUjpSQywgNChDQVJHMykKLSsgIHwgIHN0dyBTVFI6 UkMsIFdPUkRfTE8oQ0FSRzMpCi0gICB8ICAgYWRkIENBUkcyLCBCQVNFLCBSQgotLSAgfCAgc3R3 IFRNUDAsIDAoQ0FSRzMpCi0rICB8ICBzdHcgVE1QMCwgV09SRF9ISShDQVJHMykKLSAgIHwgIGIg PjEKLSAgIHwKLSAgIHwtPnZtZXRhX3RzZXRzOgotICAgfCAgbGEgQ0FSRzIsIERJU1BBVENIX0dM KHRtcHR2KShESVNQQVRDSCkKLSAgIHwgIGxpIFRNUDAsIExKX1RUQUIKLS0gIHwgIHN0dyBUQUI6 UkIsIDQoQ0FSRzIpCi0rICB8ICBzdHcgVEFCOlJCLCBXT1JEX0xPKENBUkcyKQotICAgfCAgIGxh IENBUkczLCBESVNQQVRDSF9HTCh0bXB0djIpKERJU1BBVENIKQotLSAgfCAgc3R3IFRNUDAsIDAo Q0FSRzIpCi0rICB8ICBzdHcgVE1QMCwgV09SRF9ISShDQVJHMikKLSAgIHwgICBsaSBUTVAxLCBM Sl9UU1RSCi0tICB8ICAgc3R3IFNUUjpSQywgNChDQVJHMykKLS0gIHwgICBzdHcgVE1QMSwgMChD QVJHMykKLSsgIHwgICBzdHcgU1RSOlJDLCBXT1JEX0xPKENBUkczKQotKyAgfCAgIHN0dyBUTVAx LCBXT1JEX0hJKENBUkczKQotICAgfCAgYiA+MQotICAgfAotICAgfC0+dm1ldGFfdHNldGI6CQkJ Ly8gVE1QMCA9IGluZGV4Ci1AQCAtOTU2LDggKzEwNzksOCBAQCBzdGF0aWMgdm9pZCBidWlsZF9z dWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgbGEgQ0FSRzMsIERJU1BBVENIX0dMKHRt cHR2KShESVNQQVRDSCkKLSAgIHwgICBhZGQgQ0FSRzIsIEJBU0UsIFJCCi0gICB8LmlmIERVQUxO VU0KLS0gIHwgIHN0dyBUSVNOVU0sIDAoQ0FSRzMpCi0tICB8ICBzdHcgVE1QMCwgNChDQVJHMykK LSsgIHwgIHN0dyBUSVNOVU0sIFdPUkRfSEkoQ0FSRzMpCi0rICB8ICBzdHcgVE1QMCwgV09SRF9M TyhDQVJHMykKLSAgIHwuZWxzZQotICAgfCAgc3RmZCBmMCwgMChDQVJHMykKLSAgIHwuZW5kaWYK LUBAIC05ODYsNyArMTEwOSw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxk Q3R4ICpjdHgpCi0gICB8ICAvLyBCQVNFID0gYmFzZSwgTC0+dG9wID0gbmV3IGJhc2UsIHN0YWNr ID0gY29udC9mdW5jL3Qvay8odikKLSAgIHwgIHN1YmZpYyBUTVAxLCBCQVNFLCBGUkFNRV9DT05U Ci0gICB8ICBscCBCQVNFLCBMLT50b3AKLS0gIHwgIHN0dyBQQywgLTE2KEJBU0UpCQkJLy8gW2Nv bnR8UENdCi0rICB8ICBzdHcgUEMsIEZSQU1FX0NPTlRQQyhCQVNFKQkJLy8gW2NvbnR8UENdCi0g ICB8ICAgYWRkIFBDLCBUTVAxLCBCQVNFCi0gICB8ICBsd3ogTEZVTkM6UkIsIEZSQU1FX0ZVTkMo QkFTRSkJLy8gR3VhcmFudGVlZCB0byBiZSBhIGZ1bmN0aW9uIGhlcmUuCi0gICB8ICAgbGkgTkFS R1M4OlJDLCAyNAkJCS8vIDMgYXJncyBmb3IgZnVuYyh0LCBrLCB2KQotQEAgLTEwMDYsMTcgKzEx MjksOSBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAg fC0+dm1ldGFfY29tcDoKLSAgIHwgIG1yIENBUkcxLCBMCi0gICB8ICAgc3ViaSBQQywgUEMsIDQK LS0gIHwuaWYgRFVBTE5VTQotLSAgfCAgbXIgQ0FSRzIsIFJBCi0tICB8LmVsc2UKLSAgIHwgIGFk ZCBDQVJHMiwgQkFTRSwgUkEKLS0gIHwuZW5kaWYKLSAgIHwgICBzdHcgUEMsIFNBVkVfUEMKLS0g IHwuaWYgRFVBTE5VTQotLSAgfCAgbXIgQ0FSRzMsIFJECi0tICB8LmVsc2UKLSAgIHwgIGFkZCBD QVJHMywgQkFTRSwgUkQKLS0gIHwuZW5kaWYKLSAgIHwgICBzdHAgQkFTRSwgTC0+YmFzZQotICAg fCAgZGVjb2RlX09QMSBDQVJHNCwgSU5TCi0gICB8ICBibCBleHRlcm4gbGpfbWV0YV9jb21wICAv LyAobHVhX1N0YXRlICpMLCBUVmFsdWUgKm8xLCAqbzIsIGludCBvcCkKLUBAIC0xMDQzLDcgKzEx NTgsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAg fCAgYiAtPmNvbnRfbm9wCi0gICB8Ci0gICB8LT5jb250X2NvbmR0OgkJCS8vIFJBID0gcmVzdWx0 cHRyCi0tICB8ICBsd3ogVE1QMCwgMChSQSkKLSsgIHwgIGx3eiBUTVAwLCBXT1JEX0hJKFJBKQot ICAgfCAgLmdwcjY0IGV4dHN3IFRNUDAsIFRNUDAKLSAgIHwgIHN1YmZpYyBUTVAwLCBUTVAwLCBM Sl9UVFJVRQkvLyBCcmFuY2ggaWYgcmVzdWx0IGlzIHRydWUuCi0gICB8ICBzdWJmZSBDUkVUMSwg Q1JFVDEsIENSRVQxCi1AQCAtMTA1MSw3ICsxMTY2LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vi cm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIGIgPDQKLSAgIHwKLSAgIHwtPmNvbnRfY29u ZGY6CQkJLy8gUkEgPSByZXN1bHRwdHIKLS0gIHwgIGx3eiBUTVAwLCAwKFJBKQotKyAgfCAgbHd6 IFRNUDAsIFdPUkRfSEkoUkEpCi0gICB8ICAuZ3ByNjQgZXh0c3cgVE1QMCwgVE1QMAotICAgfCAg c3ViZmljIFRNUDAsIFRNUDAsIExKX1RUUlVFCS8vIEJyYW5jaCBpZiByZXN1bHQgaXMgZmFsc2Uu Ci0gICB8ICBzdWJmZSBDUkVUMSwgQ1JFVDEsIENSRVQxCi1AQCAtMTEwMyw4ICsxMjE4LDggQEAg c3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwuZW5kaWYK LSAgIHwKLSAgIHwtPnZtZXRhX3VubToKLS0gIHwgIG1yIENBUkczLCBSRAotLSAgfCAgbXIgQ0FS RzQsIFJECi0rICB8ICBhZGQgQ0FSRzMsIEJBU0UsIFJECi0rICB8ICBhZGQgQ0FSRzQsIEJBU0Us IFJECi0gICB8ICBiID4xCi0gICB8Ci0gICB8LT52bWV0YV9hcml0aF92bjoKLUBAIC0xMTM5LDcg KzEyNTQsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQot ICAgfC0+dm1ldGFfYmlub3A6Ci0gICB8ICAvLyBCQVNFID0gb2xkIGJhc2UsIENSRVQxID0gbmV3 IGJhc2UsIHN0YWNrID0gY29udC9mdW5jL28xL28yCi0gICB8ICBzdWIgVE1QMSwgQ1JFVDEsIEJB U0UKLS0gIHwgICBzdHcgUEMsIC0xNihDUkVUMSkJCS8vIFtjb250fFBDXQotKyAgfCAgIHN0dyBQ QywgRlJBTUVfQ09OVFBDKENSRVQxKQkvLyBbY29udHxQQ10KLSAgIHwgICBtciBUTVAyLCBCQVNF Ci0gICB8ICBhZGRpIFBDLCBUTVAxLCBGUkFNRV9DT05UCi0gICB8ICAgbXIgQkFTRSwgQ1JFVDEK LUBAIC0xMTUwLDcgKzEyNjUsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWls ZEN0eCAqY3R4KQotICNpZiBMSl81MgotICAgfCAgbXIgU0FWRTAsIENBUkcxCi0gI2VuZGlmCi0t ICB8ICBtciBDQVJHMiwgUkQKLSsgIHwgIGFkZCBDQVJHMiwgQkFTRSwgUkQKLSAgIHwgICBzdHAg QkFTRSwgTC0+YmFzZQotICAgfCAgbXIgQ0FSRzEsIEwKLSAgIHwgICBzdHcgUEMsIFNBVkVfUEMK LUBAIC0xMjI3LDI1ICsxMzQyLDI1IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1 aWxkQ3R4ICpjdHgpCi0gICB8Lm1hY3JvIC5mZnVuY18xLCBuYW1lCi0gICB8LT5mZl8gLi4gbmFt ZToKLSAgIHwgIGNtcGx3aSBOQVJHUzg6UkMsIDgKLS0gIHwgICBsd3ogQ0FSRzMsIDAoQkFTRSkK LS0gIHwgICAgbHd6IENBUkcxLCA0KEJBU0UpCi0rICB8ICAgbHd6IENBUkczLCBXT1JEX0hJKEJB U0UpCi0rICB8ICAgIGx3eiBDQVJHMSwgV09SRF9MTyhCQVNFKQotICAgfCAgYmx0IC0+ZmZmX2Zh bGxiYWNrCi0gICB8LmVuZG1hY3JvCi0gICB8Ci0gICB8Lm1hY3JvIC5mZnVuY18yLCBuYW1lCi0g ICB8LT5mZl8gLi4gbmFtZToKLSAgIHwgIGNtcGx3aSBOQVJHUzg6UkMsIDE2Ci0tICB8ICAgbHd6 IENBUkczLCAwKEJBU0UpCi0tICB8ICAgIGx3eiBDQVJHNCwgOChCQVNFKQotLSAgfCAgIGx3eiBD QVJHMSwgNChCQVNFKQotLSAgfCAgICBsd3ogQ0FSRzIsIDEyKEJBU0UpCi0rICB8ICAgbHd6IENB UkczLCBXT1JEX0hJKEJBU0UpCi0rICB8ICAgIGx3eiBDQVJHNCwgV09SRF9ISSs4KEJBU0UpCi0r ICB8ICAgbHd6IENBUkcxLCBXT1JEX0xPKEJBU0UpCi0rICB8ICAgIGx3eiBDQVJHMiwgV09SRF9M Tys4KEJBU0UpCi0gICB8ICBibHQgLT5mZmZfZmFsbGJhY2sKLSAgIHwuZW5kbWFjcm8KLSAgIHwK LSAgIHwubWFjcm8gLmZmdW5jX24sIG5hbWUKLSAgIHwtPmZmXyAuLiBuYW1lOgotICAgfCAgY21w bHdpIE5BUkdTODpSQywgOAotLSAgfCAgIGx3eiBDQVJHMywgMChCQVNFKQotKyAgfCAgIGx3eiBD QVJHMywgV09SRF9ISShCQVNFKQotICAgfCAgICBsZmQgRkFSRzEsIDAoQkFTRSkKLSAgIHwgIGJs dCAtPmZmZl9mYWxsYmFjawotICAgfCAgY2hlY2tudW0gQ0FSRzM7IGJnZSAtPmZmZl9mYWxsYmFj awotQEAgLTEyNTQsOSArMTM2OSw5IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1 aWxkQ3R4ICpjdHgpCi0gICB8Lm1hY3JvIC5mZnVuY19ubiwgbmFtZQotICAgfC0+ZmZfIC4uIG5h bWU6Ci0gICB8ICBjbXBsd2kgTkFSR1M4OlJDLCAxNgotLSAgfCAgIGx3eiBDQVJHMywgMChCQVNF KQotKyAgfCAgIGx3eiBDQVJHMywgV09SRF9ISShCQVNFKQotICAgfCAgICBsZmQgRkFSRzEsIDAo QkFTRSkKLS0gIHwgICBsd3ogQ0FSRzQsIDgoQkFTRSkKLSsgIHwgICBsd3ogQ0FSRzQsIFdPUkRf SEkrOChCQVNFKQotICAgfCAgICBsZmQgRkFSRzIsIDgoQkFTRSkKLSAgIHwgIGJsdCAtPmZmZl9m YWxsYmFjawotICAgfCAgY2hlY2tudW0gQ0FSRzM7IGJnZSAtPmZmZl9mYWxsYmFjawotQEAgLTEy NzksOSArMTM5NCw5IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpj dHgpCi0gICB8ICBjbXBsdyBjcjEsIENBUkczLCBUTVAxCi0gICB8ICAgIGx3eiBQQywgRlJBTUVf UEMoQkFTRSkKLSAgIHwgIGJnZSBjcjEsIC0+ZmZmX2ZhbGxiYWNrCi0tICB8ICAgc3R3IENBUkcz LCAwKFJBKQotKyAgfCAgIHN0dyBDQVJHMywgV09SRF9ISShSQSkKLSAgIHwgIGFkZGkgUkQsIE5B UkdTODpSQywgOAkJLy8gQ29tcHV0ZSAobnJlc3VsdHMrMSkqOC4KLS0gIHwgICBzdHcgQ0FSRzEs IDQoUkEpCi0rICB8ICAgc3R3IENBUkcxLCBXT1JEX0xPKFJBKQotICAgfCAgYmVxIC0+ZmZmX3Jl cwkJCS8vIERvbmUgaWYgZXhhY3RseSAxIGFyZ3VtZW50LgotICAgfCAgbGkgVE1QMSwgOAotICAg fCAgc3ViaSBSQywgUkMsIDgKLUBAIC0xMjk1LDE3ICsxNDEwLDM2IEBAIHN0YXRpYyB2b2lkIGJ1 aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8Ci0gICB8LmZmdW5jIHR5cGUKLSAg IHwgIGNtcGx3aSBOQVJHUzg6UkMsIDgKLS0gIHwgICBsd3ogQ0FSRzEsIDAoQkFTRSkKLSsgIHwg ICBsd3ogQ0FSRzEsIFdPUkRfSEkoQkFTRSkKLSAgIHwgIGJsdCAtPmZmZl9mYWxsYmFjawotICAg fCAgLmdwcjY0IGV4dHN3IENBUkcxLCBDQVJHMQotKyAgfC5pZiBQNjQKLSsgIHwgIGxpIFRNUDAs IExKX1ROVU1YCi0rICB8ICAgIHNyYXdpIFRNUDMsIENBUkcxLCAxNQotKyAgfCAgc3ViZmMgVE1Q MSwgVE1QMCwgQ0FSRzEKLSsgIHwuZWxzZQotICAgfCAgc3ViZmMgVE1QMCwgVElTTlVNLCBDQVJH MQotLSAgfCAgc3ViZmUgVE1QMiwgQ0FSRzEsIENBUkcxCi0rICB8LmVuZGlmCi0rICB8ICAgIHN1 YmZlIFRNUDIsIENBUkcxLCBDQVJHMQotKyAgfC5pZiBQNjQKLSsgIHwgIGNtcHdpIFRNUDMsIC0y Ci0rICB8ICAgIG9yYyBUTVAxLCBUTVAyLCBUTVAxCi0rICB8ICAgIHN1YmYgVE1QMSwgVE1QMCwg VE1QMQotKyAgfCAgYmVxID4xCi0rICB8LmVsc2UKLSAgIHwgIG9yYyBUTVAxLCBUTVAyLCBUTVAw Ci0tICB8ICBhZGRpIFRNUDEsIFRNUDEsIH5MSl9USVNOVU0rMQotKyAgfCAgc3ViZiBUTVAxLCBU SVNOVU0sIFRNUDEKLSsgIHwuZW5kaWYKLSAgIHwgIHNsd2kgVE1QMSwgVE1QMSwgMwotKyAgfDI6 Ci0gICB8ICAgbGEgVE1QMiwgQ0ZVTkM6UkItPnVwdmFsdWUKLSAgIHwgIGxmZHggRkFSRzEsIFRN UDIsIFRNUDEKLSAgIHwgIGIgLT5mZmZfcmVzbgotKyAgfC5pZiBQNjQKLSsgIHwxOgotKyAgfCAg bGkgVE1QMSwgfkxKX1RMSUdIVFVEPDwzCi0rICB8ICBiIDwyCi0rICB8LmVuZGlmCi0gICB8Ci0g ICB8Ly8tLSBCYXNlIGxpYnJhcnk6IGdldHRlcnMgYW5kIHNldHRlcnMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0gICB8Ci1AQCAtMTMyOCwxMCArMTQ2MiwxMCBAQCBzdGF0aWMg dm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgc3ViIFRNUDEsIFRN UDAsIFRNUDEKLSAgIHwgIGFkZCBOT0RFOlRNUDIsIE5PREU6VE1QMiwgVE1QMQkvLyBub2RlID0g dGFiLT5ub2RlICsgKGlkeCozMi1pZHgqOCkKLSAgIHwzOiAgLy8gUmVhcnJhbmdlZCBsb2dpYywg YmVjYXVzZSB3ZSBleHBlY3QgX25vdF8gdG8gZmluZCB0aGUga2V5LgotLSAgfCAgbHd6IENBUkc0 LCBOT0RFOlRNUDItPmtleQotLSAgfCAgIGx3eiBUTVAwLCA0K29mZnNldG9mKE5vZGUsIGtleSko Tk9ERTpUTVAyKQotLSAgfCAgICBsd3ogQ0FSRzIsIE5PREU6VE1QMi0+dmFsCi0tICB8ICAgICBs d3ogVE1QMSwgNCtvZmZzZXRvZihOb2RlLCB2YWwpKE5PREU6VE1QMikKLSsgIHwgIGx3eiBDQVJH NCwgV09SRF9ISStvZmZzZXRvZihOb2RlLCBrZXkpKE5PREU6VE1QMikKLSsgIHwgICBsd3ogVE1Q MCwgV09SRF9MTytvZmZzZXRvZihOb2RlLCBrZXkpKE5PREU6VE1QMikKLSsgIHwgICAgbHd6IENB UkcyLCBXT1JEX0hJK29mZnNldG9mKE5vZGUsIHZhbCkoTk9ERTpUTVAyKQotKyAgfCAgICAgbHd6 IFRNUDEsIFdPUkRfTE8rb2Zmc2V0b2YoTm9kZSwgdmFsKShOT0RFOlRNUDIpCi0gICB8ICBjaGVj a3N0ciBDQVJHNDsgYm5lID40Ci0gICB8ICAgY21wdyBUTVAwLCBTVFI6UkM7IGJlcSA+NQotICAg fDQ6Ci1AQCAtMTM0OSwxNCArMTQ4MywzMyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5l cyhCdWlsZEN0eCAqY3R4KQotICAgfDY6Ci0gICB8ICBjbXB3aSBDQVJHMywgTEpfVFVEQVRBOyBi ZXEgPDEKLSAgIHwgIC5ncHI2NCBleHRzdyBDQVJHMywgQ0FSRzMKLSsgIHwuaWYgUDY0Ci0rICB8 ICBsaSBUTVAwLCBMSl9UTlVNWAotKyAgfCAgICBzcmF3aSBUTVAzLCBDQVJHMywgMTUKLSsgIHwg IHN1YmZjIFRNUDEsIFRNUDAsIENBUkczCi0rICB8LmVsc2UKLSAgIHwgIHN1YmZjIFRNUDAsIFRJ U05VTSwgQ0FSRzMKLSsgIHwuZW5kaWYKLSAgIHwgIHN1YmZlIFRNUDIsIENBUkczLCBDQVJHMwot KyAgfC5pZiBQNjQKLSsgIHwgIGNtcHdpIFRNUDMsIC0yCi0rICB8ICAgIG9yYyBUTVAxLCBUTVAy LCBUTVAxCi0rICB8ICAgIHN1YmYgVE1QMSwgVE1QMCwgVE1QMQotKyAgfCAgYmVxID43Ci0rICB8 LmVsc2UKLSAgIHwgIG9yYyBUTVAxLCBUTVAyLCBUTVAwCi0tICB8ICBhZGRpIFRNUDEsIFRNUDEs IH5MSl9USVNOVU0rMQotKyAgfCAgc3ViZiBUTVAxLCBUSVNOVU0sIFRNUDEKLSsgIHwuZW5kaWYK LSAgIHwgIHNsd2kgVE1QMSwgVE1QMSwgMgotKyAgfDg6Ci0gICB8ICAgbGEgVE1QMiwgRElTUEFU Q0hfR0woZ2Nyb290W0dDUk9PVF9CQVNFTVRdKShESVNQQVRDSCkKLSAgIHwgIGx3enggVEFCOkNB UkcxLCBUTVAyLCBUTVAxCi0gICB8ICBiIDwyCi0rICB8LmlmIFA2NAotKyAgfDc6Ci0rICB8ICBs aSBUTVAxLCB+TEpfVExJR0hUVUQ8PDIKLSsgIHwgIGIgPDgKLSsgIHwuZW5kaWYKLSAgIHwKLSAg IHwuZmZ1bmNfMiBzZXRtZXRhdGFibGUKLSAgIHwgIC8vIEZhc3QgcGF0aDogbm8gbXQgZm9yIHRh YmxlIHlldCBhbmQgbm90IGNsZWFyaW5nIHRoZSBtdC4KLUBAIC0xMzc0LDggKzE1MjcsOCBAQCBz dGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfAotICAgfC5m ZnVuYyByYXdnZXQKLSAgIHwgIGNtcGx3aSBOQVJHUzg6UkMsIDE2Ci0tICB8ICAgbHd6IENBUkc0 LCAwKEJBU0UpCi0tICB8ICAgIGx3eiBUQUI6Q0FSRzIsIDQoQkFTRSkKLSsgIHwgICBsd3ogQ0FS RzQsIFdPUkRfSEkoQkFTRSkKLSsgIHwgICAgbHd6IFRBQjpDQVJHMiwgV09SRF9MTyhCQVNFKQot ICAgfCAgYmx0IC0+ZmZmX2ZhbGxiYWNrCi0gICB8ICBjaGVja3RhYiBDQVJHNDsgYm5lIC0+ZmZm X2ZhbGxiYWNrCi0gICB8ICAgbGEgQ0FSRzMsIDgoQkFTRSkKLUBAIC0xMzkwLDcgKzE1NDMsNyBA QCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfC5mZnVu YyB0b251bWJlcgotICAgfCAgLy8gT25seSBoYW5kbGVzIHRoZSBudW1iZXIgY2FzZSBpbmxpbmUg KHdpdGhvdXQgYSBiYXNlIGFyZ3VtZW50KS4KLSAgIHwgIGNtcGx3aSBOQVJHUzg6UkMsIDgKLS0g IHwgICBsd3ogQ0FSRzEsIDAoQkFTRSkKLSsgIHwgICBsd3ogQ0FSRzEsIFdPUkRfSEkoQkFTRSkK LSAgIHwgICAgbGZkIEZBUkcxLCAwKEJBU0UpCi0gICB8ICBibmUgLT5mZmZfZmFsbGJhY2sJCQkv LyBFeGFjdGx5IG9uZSBhcmd1bWVudC4KLSAgIHwgICBjaGVja251bSBDQVJHMTsgYmd0IC0+ZmZm X2ZhbGxiYWNrCi1AQCAtMTQyNSwxMCArMTU3OCwxNSBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJy b3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfAotICAgfC5mZnVuYyBuZXh0Ci0gICB8ICBjbXBs d2kgTkFSR1M4OlJDLCA4Ci0tICB8ICAgbHd6IENBUkcxLCAwKEJBU0UpCi0tICB8ICAgIGx3eiBU QUI6Q0FSRzIsIDQoQkFTRSkKLSsgIHwgICBsd3ogQ0FSRzEsIFdPUkRfSEkoQkFTRSkKLSsgIHwg ICAgbHd6IFRBQjpDQVJHMiwgV09SRF9MTyhCQVNFKQotICAgfCAgYmx0IC0+ZmZmX2ZhbGxiYWNr Ci0rICB8LmlmIEVORElBTl9MRQotKyAgfCAgIGFkZCBUTVAxLCBCQVNFLCBOQVJHUzg6UkMKLSsg IHwgICBzdHcgVElTTklMLCBXT1JEX0hJKFRNUDEpCQkvLyBTZXQgbWlzc2luZyAybmQgYXJnIHRv IG5pbC4KLSsgIHwuZWxzZQotICAgfCAgIHN0d3ggVElTTklMLCBCQVNFLCBOQVJHUzg6UkMJLy8g U2V0IG1pc3NpbmcgMm5kIGFyZyB0byBuaWwuCi0rICB8LmVuZGlmCi0gICB8ICBjaGVja3RhYiBD QVJHMQotICAgfCAgIGx3eiBQQywgRlJBTUVfUEMoQkFTRSkKLSAgIHwgIGJuZSAtPmZmZl9mYWxs YmFjawotQEAgLTE0NjQsMTggKzE2MjIsMTggQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGlu ZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIGxmZCBmMCwgQ0ZVTkM6UkItPnVwdmFsdWVbMF0KLSAg IHwgIGxhIFJBLCAtOChCQVNFKQotICNlbmRpZgotLSAgfCAgIHN0dyBUSVNOSUwsIDgoQkFTRSkK LSsgIHwgICBzdHcgVElTTklMLCA4K1dPUkRfSEkoQkFTRSkKLSAgIHwgIGxpIFJELCAoMysxKSo4 Ci0gICB8ICBzdGZkIGYwLCAwKFJBKQotICAgfCAgYiAtPmZmZl9yZXMKLSAgIHwKLSAgIHwuZmZ1 bmMgaXBhaXJzX2F1eAotICAgfCAgY21wbHdpIE5BUkdTODpSQywgMTYKLS0gIHwgICBsd3ogQ0FS RzMsIDAoQkFTRSkKLS0gIHwgICAgbHd6IFRBQjpDQVJHMSwgNChCQVNFKQotLSAgfCAgIGx3eiBD QVJHNCwgOChCQVNFKQotKyAgfCAgIGx3eiBDQVJHMywgV09SRF9ISShCQVNFKQotKyAgfCAgICBs d3ogVEFCOkNBUkcxLCBXT1JEX0xPKEJBU0UpCi0rICB8ICAgbHd6IENBUkc0LCA4K1dPUkRfSEko QkFTRSkKLSAgIHwuaWYgRFVBTE5VTQotLSAgfCAgICBsd3ogVE1QMiwgMTIoQkFTRSkKLSsgIHwg ICAgbHd6IFRNUDIsIDgrV09SRF9MTyhCQVNFKQotICAgfC5lbHNlCi0gICB8ICAgIGxmZCBGQVJH MiwgOChCQVNFKQotICAgfC5lbmRpZgotQEAgLTE1MDQsMTYgKzE2NjIsMTYgQEAgc3RhdGljIHZv aWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgICBsYSBSQSwgLTgoQkFT RSkKLSAgIHwgIGNtcGx3IFRNUDAsIFRNUDIKLSAgIHwuaWYgRFVBTE5VTQotLSAgfCAgc3R3IFRJ U05VTSwgMChSQSkKLSsgIHwgIHN0dyBUSVNOVU0sIFdPUkRfSEkoUkEpCi0gICB8ICAgc2x3aSBU TVAzLCBUTVAyLCAzCi0tICB8ICBzdHcgVE1QMiwgNChSQSkKLSsgIHwgIHN0dyBUTVAyLCBXT1JE X0xPKFJBKQotICAgfC5lbHNlCi0gICB8ICAgc2x3aSBUTVAzLCBUTVAyLCAzCi0gICB8ICBzdGZk IEZBUkcyLCAwKFJBKQotICAgfC5lbmRpZgotICAgfCAgYmxlID4yCQkJCS8vIE5vdCBpbiBhcnJh eSBwYXJ0PwotLSAgfCAgbHd6eCBUTVAyLCBUTVAxLCBUTVAzCi0tICB8ICBsZmR4IGYwLCBUTVAx LCBUTVAzCi0rICB8ICBsZmR1eCBmMCwgVE1QMSwgVE1QMwotKyAgfCAgbHd6IFRNUDIsIFdPUkRf SEkoVE1QMSkKLSAgIHwxOgotICAgfCAgY2hlY2tuaWwgVE1QMgotICAgfCAgIGxpIFJELCAoMCsx KSo4Ci1AQCAtMTUzMiw3ICsxNjkwLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMo QnVpbGRDdHggKmN0eCkKLSAgIHwgIGNtcGx3aSBDUkVUMSwgMAotICAgfCAgIGxpIFJELCAoMCsx KSo4Ci0gICB8ICBiZXEgLT5mZmZfcmVzCi0tICB8ICBsd3ogVE1QMiwgMChDUkVUMSkKLSsgIHwg IGx3eiBUTVAyLCBXT1JEX0hJKENSRVQxKQotICAgfCAgbGZkIGYwLCAwKENSRVQxKQotICAgfCAg YiA8MQotICAgfAotQEAgLTE1NTEsMTEgKzE3MDksMTEgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vi cm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIGxhIFJBLCAtOChCQVNFKQotICNlbmRpZgot ICAgfC5pZiBEVUFMTlVNCi0tICB8ICBzdHcgVElTTlVNLCA4KEJBU0UpCi0rICB8ICBzdHcgVElT TlVNLCA4K1dPUkRfSEkoQkFTRSkKLSAgIHwuZWxzZQotLSAgfCAgc3R3IFpFUk8sIDgoQkFTRSkK LSsgIHwgIHN0dyBaRVJPLCA4K1dPUkRfSEkoQkFTRSkKLSAgIHwuZW5kaWYKLS0gIHwgICBzdHcg WkVSTywgMTIoQkFTRSkKLSsgIHwgICBzdHcgWkVSTywgOCtXT1JEX0xPKEJBU0UpCi0gICB8ICBs aSBSRCwgKDMrMSkqOAotICAgfCAgc3RmZCBmMCwgMChSQSkKLSAgIHwgIGIgLT5mZmZfcmVzCi1A QCAtMTU3Niw3ICsxNzM0LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRD dHggKmN0eCkKLSAgIHwKLSAgIHwuZmZ1bmMgeHBjYWxsCi0gICB8ICBjbXBsd2kgTkFSR1M4OlJD LCAxNgotLSAgfCAgIGx3eiBDQVJHNCwgOChCQVNFKQotKyAgfCAgIGx3eiBDQVJHNCwgOCtXT1JE X0hJKEJBU0UpCi0gICB8ICAgIGxmZCBGQVJHMiwgOChCQVNFKQotICAgfCAgICBsZmQgRkFSRzEs IDAoQkFTRSkKLSAgIHwgIGJsdCAtPmZmZl9mYWxsYmFjawotQEAgLTE2NzMsNyArMTgzMSw3IEBA IHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8LmlmIHJl c3VtZQotICAgfCAgbGkgVE1QMSwgTEpfVFRSVUUKLSAgIHwgICBsYSBSQSwgLTgoQkFTRSkKLS0g IHwgIHN0dyBUTVAxLCAtOChCQVNFKQkJCS8vIFByZXBlbmQgdHJ1ZSB0byByZXN1bHRzLgotKyAg fCAgc3R3IFRNUDEsIFdPUkRfSEktOChCQVNFKQkJLy8gUHJlcGVuZCB0cnVlIHRvIHJlc3VsdHMu Ci0gICB8ICBhZGRpIFJELCBSRCwgMTYKLSAgIHwuZWxzZQotICAgfCAgbXIgUkEsIEJBU0UKLUBA IC0xNjkzLDcgKzE4NTEsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0 eCAqY3R4KQotICAgfCAgbGZkIGYwLCAwKFRNUDMpCi0gICB8ICAgc3RwIFRNUDMsIEw6U0FWRTAt PnRvcAkJLy8gUmVtb3ZlIGVycm9yIGZyb20gY29yb3V0aW5lIHN0YWNrLgotICAgfCAgICBsaSBS RCwgKDIrMSkqOAotLSAgfCAgIHN0dyBUTVAxLCAtOChCQVNFKQkJLy8gUHJlcGVuZCBmYWxzZSB0 byByZXN1bHRzLgotKyAgfCAgIHN0dyBUTVAxLCBXT1JEX0hJLTgoQkFTRSkJCS8vIFByZXBlbmQg ZmFsc2UgdG8gcmVzdWx0cy4KLSAgIHwgICAgbGEgUkEsIC04KEJBU0UpCi0gICB8ICBzdGZkIGYw LCAwKEJBU0UpCQkJLy8gQ29weSBlcnJvciBtZXNzYWdlLgotICAgfCAgYiA8NwotQEAgLTE3NDYs OCArMTkwNCw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgp Ci0gICB8LT5mZmZfcmVzaToKLSAgIHwgIGx3eiBQQywgRlJBTUVfUEMoQkFTRSkKLSAgIHwgIGxh IFJBLCAtOChCQVNFKQotLSAgfCAgc3R3IFRJU05VTSwgLTgoQkFTRSkKLS0gIHwgIHN0dyBDUkVU MSwgLTQoQkFTRSkKLSsgIHwgIHN0dyBUSVNOVU0sIFdPUkRfSEktOChCQVNFKQotKyAgfCAgc3R3 IENSRVQxLCBXT1JEX0xPLTgoQkFTRSkKLSAgIHwgIGIgLT5mZmZfcmVzMQotICAgfDE6Ci0gICB8 ICBsdXMgQ0FSRzMsIDB4NDFlMAkvLyAyXjMxLgotQEAgLTE3NjIsOSArMTkyMCw5IEBAIHN0YXRp YyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8LT5mZmZfcmVzdHY6 Ci0gICB8ICAvLyBDQVJHMy9DQVJHMSA9IFRWYWx1ZSByZXN1bHQuCi0gICB8ICBsd3ogUEMsIEZS QU1FX1BDKEJBU0UpCi0tICB8ICAgc3R3IENBUkczLCAtOChCQVNFKQotKyAgfCAgIHN0dyBDQVJH MywgV09SRF9ISS04KEJBU0UpCi0gICB8ICBsYSBSQSwgLTgoQkFTRSkKLS0gIHwgICBzdHcgQ0FS RzEsIC00KEJBU0UpCi0rICB8ICAgc3R3IENBUkcxLCBXT1JEX0xPLTgoQkFTRSkKLSAgIHwtPmZm Zl9yZXMxOgotICAgfCAgLy8gUkEgPSByZXN1bHRzLCBQQyA9IHJldHVybi4KLSAgIHwgIGxpIFJE LCAoMSsxKSo4Ci1AQCAtMTc4MiwxMCArMTk0MCwxMSBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJy b3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgaW5zX25leHQxCi0gICB8ICAvLyBBZGp1c3Qg QkFTRS4gS0JBU0UgaXMgYXNzdW1lZCB0byBiZSBzZXQgZm9yIHRoZSBjYWxsaW5nIGZyYW1lLgot ICAgfCAgIHN1YiBCQVNFLCBSQSwgVE1QMAotKyAgfCAgIGFkZGkgQkFTRVA0LCBCQVNFLCA0Ci0g ICB8ICBpbnNfbmV4dDIKLSAgIHwKLSAgIHw2OiAgLy8gRmlsbCB1cCByZXN1bHRzIHdpdGggbmls LgotLSAgfCAgc3ViaSBUTVAxLCBSRCwgOAotKyAgfCAgYWRkaSBUTVAxLCBSRCwgV09SRF9ISS04 Ci0gICB8ICAgYWRkaSBSRCwgUkQsIDgKLSAgIHwgIHN0d3ggVElTTklMLCBSQSwgVE1QMQotICAg fCAgYiA8NQotQEAgLTE4OTgsNyArMjA1Nyw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRp bmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8Ci0gICB8LmZmdW5jIG1hdGhfbG9nCi0gICB8ICBjbXBs d2kgTkFSR1M4OlJDLCA4Ci0tICB8ICAgbHd6IENBUkczLCAwKEJBU0UpCi0rICB8ICAgbHd6IENB UkczLCBXT1JEX0hJKEJBU0UpCi0gICB8ICAgIGxmZCBGQVJHMSwgMChCQVNFKQotICAgfCAgYm5l IC0+ZmZmX2ZhbGxiYWNrCQkJLy8gTmVlZCBleGFjdGx5IDEgYXJndW1lbnQuCi0gICB8ICBjaGVj a251bSBDQVJHMzsgYmdlIC0+ZmZmX2ZhbGxiYWNrCi1AQCAtMTkyMywxMyArMjA4MiwxMyBAQCBz dGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfC5pZiBEVUFM TlVNCi0gICB8LmZmdW5jIG1hdGhfbGRleHAKLSAgIHwgIGNtcGx3aSBOQVJHUzg6UkMsIDE2Ci0t ICB8ICAgbHd6IENBUkczLCAwKEJBU0UpCi0rICB8ICAgbHd6IENBUkczLCBXT1JEX0hJKEJBU0Up Ci0gICB8ICAgIGxmZCBGQVJHMSwgMChCQVNFKQotLSAgfCAgIGx3eiBDQVJHNCwgOChCQVNFKQot KyAgfCAgIGx3eiBDQVJHNCwgV09SRF9ISSs4KEJBU0UpCi0gICB8LmlmIEdQUjY0Ci0tICB8ICAg IGx3eiBDQVJHMiwgMTIoQkFTRSkKLSsgIHwgICAgbHd6IENBUkcyLCBXT1JEX0xPKzgoQkFTRSkK LSAgIHwuZWxzZQotLSAgfCAgICBsd3ogQ0FSRzEsIDEyKEJBU0UpCi0rICB8ICAgIGx3eiBDQVJH MSwgV09SRF9MTys4KEJBU0UpCi0gICB8LmVuZGlmCi0gICB8ICBibHQgLT5mZmZfZmFsbGJhY2sK LSAgIHwgIGNoZWNrbnVtIENBUkczOyBiZ2UgLT5mZmZfZmFsbGJhY2sKLUBAIC0xOTYxLDggKzIx MjAsOCBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAg fCAgc3RmZCBGQVJHMSwgMChSQSkKLSAgIHwgIGxpIFJELCAoMisxKSo4Ci0gICB8LmlmIERVQUxO VU0KLS0gIHwgICBzdHcgVElTTlVNLCA4KFJBKQotLSAgfCAgIHN0dyBUTVAxLCAxMihSQSkKLSsg IHwgICBzdHcgVElTTlVNLCBXT1JEX0hJKzgoUkEpCi0rICB8ICAgc3R3IFRNUDEsIFdPUkRfTE8r OChSQSkKLSAgIHwuZWxzZQotICAgfCAgIHN0ZmQgRkFSRzIsIDgoUkEpCi0gICB8LmVuZGlmCi1A QCAtMTk4OSw5ICsyMTQ4LDkgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRD dHggKmN0eCkKLSAgIHwgICBhZGQgVE1QMiwgQkFTRSwgTkFSR1M4OlJDCi0gICB8ICBibmUgPjQK LSAgIHwxOiAgLy8gSGFuZGxlIGludGVnZXJzLgotLSAgfCAgbHd6IENBUkc0LCAwKFRNUDEpCi0r ICB8ICBsd3ogQ0FSRzQsIFdPUkRfSEkoVE1QMSkKLSAgIHwgICBjbXBsdyBjcjEsIFRNUDEsIFRN UDIKLS0gIHwgIGx3eiBDQVJHMiwgNChUTVAxKQotKyAgfCAgbHd6IENBUkcyLCBXT1JEX0xPKFRN UDEpCi0gICB8ICAgYmdlIGNyMSwgLT5mZmZfcmVzaQotICAgfCAgY2hlY2tudW0gQ0FSRzQKLSAg IHwgICB4b3JpcyBUTVAwLCBDQVJHMSwgMHg4MDAwCi1AQCAtMjAyMCw3ICsyMTc5LDcgQEAgc3Rh dGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgICBsZmQgRkFS RzEsIDAoQkFTRSkKLSAgIHwgIGJnZSAtPmZmZl9mYWxsYmFjawotICAgfDU6ICAvLyBIYW5kbGUg bnVtYmVycy4KLS0gIHwgIGx3eiBDQVJHNCwgMChUTVAxKQotKyAgfCAgbHd6IENBUkc0LCBXT1JE X0hJKFRNUDEpCi0gICB8ICAgY21wbHcgY3IxLCBUTVAxLCBUTVAyCi0gICB8ICBsZmQgRkFSRzIs IDAoVE1QMSkKLSAgIHwgICBiZ2UgY3IxLCAtPmZmZl9yZXNuCi1AQCAtMjAzNSw3ICsyMTk0LDcg QEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwuZW5k aWYKLSAgIHwgIGIgPDUKLSAgIHw3OiAgLy8gQ29udmVydCBpbnRlZ2VyIHRvIG51bWJlciBhbmQg Y29udGludWUgYWJvdmUuCi0tICB8ICAgbHd6IENBUkcyLCA0KFRNUDEpCi0rICB8ICAgbHd6IENB UkcyLCBXT1JEX0xPKFRNUDEpCi0gICB8ICBibmUgLT5mZmZfZmFsbGJhY2sKLSAgIHwgIHRvbnVt X2kgRkFSRzIsIENBUkcyCi0gICB8ICBiIDw2Ci1AQCAtMjA0Myw3ICsyMjAyLDEyIEBAIHN0YXRp YyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICAuZmZ1bmNfbiBu YW1lCi0gICB8ICBsaSBUTVAxLCA4Ci0gICB8MToKLSsgIHwuaWYgRU5ESUFOX0xFCi0rICB8ICAg YWRkIENBUkcyLCBCQVNFLCBUTVAxCi0rICB8ICAgbHd6IENBUkcyLCBXT1JEX0hJKENBUkcyKQot KyAgfC5lbHNlCi0gICB8ICAgbHd6eCBDQVJHMiwgQkFTRSwgVE1QMQotKyAgfC5lbmRpZgotICAg fCAgIGxmZHggRkFSRzIsIEJBU0UsIFRNUDEKLSAgIHwgIGNtcGx3IGNyMSwgVE1QMSwgTkFSR1M4 OlJDCi0gICB8ICAgY2hlY2tudW0gQ0FSRzIKLUBAIC0yMDY3LDggKzIyMzEsOCBAQCBzdGF0aWMg dm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfAotICAgfC5mZnVuYyBz dHJpbmdfYnl0ZQkJCS8vIE9ubHkgaGFuZGxlIHRoZSAxLWFyZyBjYXNlIGhlcmUuCi0gICB8ICBj bXBsd2kgTkFSR1M4OlJDLCA4Ci0tICB8ICAgbHd6IENBUkczLCAwKEJBU0UpCi0tICB8ICAgIGx3 eiBTVFI6Q0FSRzEsIDQoQkFTRSkKLSsgIHwgICBsd3ogQ0FSRzMsIFdPUkRfSEkoQkFTRSkKLSsg IHwgICAgbHd6IFNUUjpDQVJHMSwgV09SRF9MTyhCQVNFKQotICAgfCAgYm5lIC0+ZmZmX2ZhbGxi YWNrCQkJLy8gTmVlZCBleGFjdGx5IDEgYXJndW1lbnQuCi0gICB8ICAgY2hlY2tzdHIgQ0FSRzMK LSAgIHwgICBibmUgLT5mZmZfZmFsbGJhY2sKLUBAIC0yMDk5LDEyICsyMjYzLDEyIEBAIHN0YXRp YyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8LmZmdW5jIHN0cmlu Z19jaGFyCQkJLy8gT25seSBoYW5kbGUgdGhlIDEtYXJnIGNhc2UgaGVyZS4KLSAgIHwgIGZmZ2Nj aGVjawotICAgfCAgY21wbHdpIE5BUkdTODpSQywgOAotLSAgfCAgIGx3eiBDQVJHMywgMChCQVNF KQotKyAgfCAgIGx3eiBDQVJHMywgV09SRF9ISShCQVNFKQotICAgfC5pZiBEVUFMTlVNCi0tICB8 ICAgIGx3eiBUTVAwLCA0KEJBU0UpCi0rICB8ICAgIGx3eiBUTVAwLCBXT1JEX0xPKEJBU0UpCi0g ICB8ICBibmUgLT5mZmZfZmFsbGJhY2sJCQkvLyBFeGFjdGx5IDEgYXJndW1lbnQuCi0gICB8ICBj aGVja251bSBDQVJHMzsgYm5lIC0+ZmZmX2ZhbGxiYWNrCi0tICB8ICAgbGEgQ0FSRzIsIDcoQkFT RSkKLSsgIHwgICBsYSBDQVJHMiwgV09SRF9CTE8oQkFTRSkKLSAgIHwuZWxzZQotICAgfCAgICBs ZmQgRkFSRzEsIDAoQkFTRSkKLSAgIHwgIGJuZSAtPmZmZl9mYWxsYmFjawkJCS8vIEV4YWN0bHkg MSBhcmd1bWVudC4KLUBAIC0yMTI4LDE2ICsyMjkyLDE2IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1 YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8LmZmdW5jIHN0cmluZ19zdWIKLSAgIHwgIGZm Z2NjaGVjawotICAgfCAgY21wbHdpIE5BUkdTODpSQywgMTYKLS0gIHwgICBsd3ogQ0FSRzMsIDE2 KEJBU0UpCi0rICB8ICAgbHd6IENBUkczLCBXT1JEX0hJKzE2KEJBU0UpCi0gICB8LmlmIG5vdCBE VUFMTlVNCi0gICB8ICAgIGxmZCBmMCwgMTYoQkFTRSkKLSAgIHwuZW5kaWYKLS0gIHwgICBsd3og VE1QMCwgMChCQVNFKQotLSAgfCAgICBsd3ogU1RSOkNBUkcxLCA0KEJBU0UpCi0rICB8ICAgbHd6 IFRNUDAsIFdPUkRfSEkoQkFTRSkKLSsgIHwgICAgbHd6IFNUUjpDQVJHMSwgV09SRF9MTyhCQVNF KQotICAgfCAgYmx0IC0+ZmZmX2ZhbGxiYWNrCi0tICB8ICAgbHd6IENBUkcyLCA4KEJBU0UpCi0r ICB8ICAgbHd6IENBUkcyLCBXT1JEX0hJKzgoQkFTRSkKLSAgIHwuaWYgRFVBTE5VTQotLSAgfCAg ICBsd3ogVE1QMSwgMTIoQkFTRSkKLSsgIHwgICAgbHd6IFRNUDEsIFdPUkRfTE8rOChCQVNFKQot ICAgfC5lbHNlCi0gICB8ICAgIGxmZCBmMSwgOChCQVNFKQotICAgfC5lbmRpZgotQEAgLTIxNDUs NyArMjMwOSw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgp Ci0gICB8ICBiZXEgPjEKLSAgIHwuaWYgRFVBTE5VTQotICAgfCAgY2hlY2tudW0gQ0FSRzMKLS0g IHwgICBsd3ogVE1QMiwgMjAoQkFTRSkKLSsgIHwgICBsd3ogVE1QMiwgV09SRF9MTysxNihCQVNF KQotICAgfCAgYm5lIC0+ZmZmX2ZhbGxiYWNrCi0gICB8MToKLSAgIHwgIGNoZWNrbnVtIENBUkcy OyBibmUgLT5mZmZfZmFsbGJhY2sKLUBAIC0yMjAxLDggKzIzNjUsOCBAQCBzdGF0aWMgdm9pZCBi dWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgLmZmdW5jIHN0cmluZ18gLi4g bmFtZQotICAgfCAgZmZnY2NoZWNrCi0gICB8ICBjbXBsd2kgTkFSR1M4OlJDLCA4Ci0tICB8ICAg bHd6IENBUkczLCAwKEJBU0UpCi0tICB8ICAgIGx3eiBTVFI6Q0FSRzIsIDQoQkFTRSkKLSsgIHwg ICBsd3ogQ0FSRzMsIFdPUkRfSEkoQkFTRSkKLSsgIHwgICAgbHd6IFNUUjpDQVJHMiwgV09SRF9M TyhCQVNFKQotICAgfCAgYmx0IC0+ZmZmX2ZhbGxiYWNrCi0gICB8ICBjaGVja3N0ciBDQVJHMwot ICAgfCAgIGxhIFNCVUY6Q0FSRzEsIERJU1BBVENIX0dMKHRtcGJ1ZikoRElTUEFUQ0gpCi1AQCAt MjI0MCwxMCArMjQwNCwxMCBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0 eCAqY3R4KQotICAgfCAgYWRkaSBUTVAxLCBCQVNFLCA4Ci0gICB8ICBhZGQgVE1QMiwgQkFTRSwg TkFSR1M4OlJDCi0gICB8MToKLS0gIHwgIGx3eiBDQVJHNCwgMChUTVAxKQotKyAgfCAgbHd6IENB Ukc0LCBXT1JEX0hJKFRNUDEpCi0gICB8ICAgY21wbHcgY3IxLCBUTVAxLCBUTVAyCi0gICB8Lmlm IERVQUxOVU0KLS0gIHwgIGx3eiBDQVJHMiwgNChUTVAxKQotKyAgfCAgbHd6IENBUkcyLCBXT1JE X0xPKFRNUDEpCi0gICB8LmVsc2UKLSAgIHwgIGxmZCBGQVJHMSwgMChUTVAxKQotICAgfC5lbmRp ZgotQEAgLTIzNDQsMjAgKzI1MDgsMjMgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMo QnVpbGRDdHggKmN0eCkKLSAgIHwKLSAgIHwtPmZmZl9mYWxsYmFjazoJCQkvLyBDYWxsIGZhc3Qg ZnVuY3Rpb24gZmFsbGJhY2sgaGFuZGxlci4KLSAgIHwgIC8vIEJBU0UgPSBuZXcgYmFzZSwgUkIg PSBDRlVOQywgUkMgPSBuYXJncyo4Ci0tICB8ICBscCBUTVAzLCBDRlVOQzpSQi0+ZgotKyAgfCAg bHAgRlVOQ1JFRywgQ0ZVTkM6UkItPmYKLSAgIHwgICAgYWRkIFRNUDEsIEJBU0UsIE5BUkdTODpS QwotICAgfCAgIGx3eiBQQywgRlJBTUVfUEMoQkFTRSkJCS8vIEZhbGxiYWNrIG1heSBvdmVyd3Jp dGUgUEMuCi0gICB8ICAgIGFkZGkgVE1QMCwgVE1QMSwgOCpMVUFfTUlOU1RBQ0sKLSAgIHwgICAg IGx3eiBUTVAyLCBMLT5tYXhzdGFjawotICAgfCAgIHN0dyBQQywgU0FWRV9QQwkJCS8vIFJlZHVu ZGFudCAoYnV0IGEgZGVmaW5lZCB2YWx1ZSkuCi0tICB8ICAudG9jIGxwIFRNUDMsIDAoVE1QMykK LSsgIHwgIC5vcGQgbHAgVE9DUkVHLCBUT0NfT0ZTKEZVTkNSRUcpCi0rICB8ICAub3BkZW52IGxw IEVOVlJFRywgRU5WX09GUyhGVU5DUkVHKQotKyAgfCAgLm9wZCBscCBGVU5DUkVHLCAwKEZVTkNS RUcpCi0gICB8ICBjbXBsdyBUTVAwLCBUTVAyCi0gICB8ICAgICBzdHAgQkFTRSwgTC0+YmFzZQot ICAgfCAgICBzdHAgVE1QMSwgTC0+dG9wCi0gICB8ICAgbXIgQ0FSRzEsIEwKLSAgIHwgIGJndCA+ NQkJCQkvLyBOZWVkIHRvIGdyb3cgc3RhY2suCi0tICB8ICBtdGN0ciBUTVAzCi0rICB8ICBtdGN0 ciBGVU5DUkVHCi0gICB8ICBiY3RybAkJCQkvLyAobHVhX1N0YXRlICpMKQotKyAgfCAgLnRvYyBs cCBUT0NSRUcsIFNBVkVfVE9DCi0gICB8ICAvLyBFaXRoZXIgdGhyb3dzIGFuIGVycm9yLCBvciBy ZWNvdmVycyBhbmQgcmV0dXJucyAtMSwgMCBvciBucmVzdWx0cysxLgotICAgfCAgbHAgQkFTRSwg TC0+YmFzZQotICAgfCAgY21wd2kgQ1JFVDEsIDAKLUBAIC0yNDU5LDYgKzI2MjYsNyBAQCBzdGF0 aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfDM6Ci0gICB8ICBs cCBCQVNFLCBMLT5iYXNlCi0gICB8NDogIC8vIFJlLWRpc3BhdGNoIHRvIHN0YXRpYyBpbnMuCi0r ICB8ICBhZGRpIEJBU0VQNCwgQkFTRSwgNAotICAgfCAgbHd6IElOUywgLTQoUEMpCi0gICB8ICBk ZWNvZGVfT1BQIFRNUDEsIElOUwotICAgfCAgIGRlY29kZV9SQjggUkIsIElOUwotQEAgLTI0NzIs NyArMjY0MCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgp Ci0gICB8Ci0gICB8LT5jb250X2hvb2s6CQkJCS8vIENvbnRpbnVlIGZyb20gaG9vayB5aWVsZC4K LSAgIHwgIGFkZGkgUEMsIFBDLCA0Ci0tICB8ICBsd3ogTVVMVFJFUywgLTIwKFJCKQkJLy8gUmVz dG9yZSBNVUxUUkVTIGZvciAqTSBpbnMuCi0rICB8ICBsd3ogTVVMVFJFUywgV09SRF9MTy0yNChS QikJCS8vIFJlc3RvcmUgTVVMVFJFUyBmb3IgKk0gaW5zLgotICAgfCAgYiA8NAotICAgfAotICAg fC0+dm1faG90bG9vcDoJCQkvLyBIb3QgbG9vcCBjb3VudGVyIHVuZGVyZmxvdy4KLUBAIC0yNTE0 LDYgKzI2ODIsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4 KQotICAgfCAgbHAgQkFTRSwgTC0+YmFzZQotICAgfCAgIGxwIFRNUDAsIEwtPnRvcAotICAgfCAg IHN0dyBaRVJPLCBTQVZFX1BDCQkJLy8gSW52YWxpZGF0ZSBmb3Igc3Vic2VxdWVudCBsaW5lIGhv b2suCi0rICB8ICBhZGRpIEJBU0VQNCwgQkFTRSwgNAotICAgfCAgc3ViIE5BUkdTODpSQywgVE1Q MCwgQkFTRQotICAgfCAgYWRkIFJBLCBCQVNFLCBSQQotICAgfCAgbHd6IExGVU5DOlJCLCBGUkFN RV9GVU5DKEJBU0UpCi1AQCAtMjUyNSw3ICsyNjk0LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vi cm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwuaWYgSklUCi0gICB8ICAvLyBSQSA9IHJlc3Vs dHB0ciwgUkIgPSBtZXRhIGJhc2UKLSAgIHwgIGx3eiBJTlMsIC00KFBDKQotLSAgfCAgICBsd3og VFJBQ0U6VE1QMiwgLTIwKFJCKQkJLy8gU2F2ZSBwcmV2aW91cyB0cmFjZS4KLSsgIHwgICAgbHd6 IFRSQUNFOlRNUDIsIFdPUkRfTE8tMjQoUkIpCS8vIFNhdmUgcHJldmlvdXMgdHJhY2UuCi0gICB8 ICAgYWRkaWMuIFRNUDEsIE1VTFRSRVMsIC04Ci0gICB8ICBkZWNvZGVfUkE4IFJDLCBJTlMJCQkv LyBDYWxsIGJhc2UuCi0gICB8ICAgYmVxID4yCi1AQCAtMjU2MCwxMCArMjcyOSwxNiBAQCBzdGF0 aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgbXIgQ0FSRzIs IFBDCi0gICB8ICBibCBleHRlcm4gbGpfZGlzcGF0Y2hfc3RpdGNoCS8vIChqaXRfU3RhdGUgKkos IGNvbnN0IEJDSW5zICpwYykKLSAgIHwgIGxwIEJBU0UsIEwtPmJhc2UKLSsgIHwgIGFkZGkgQkFT RVA0LCBCQVNFLCA0Ci0gICB8ICBiIC0+Y29udF9ub3AKLSAgIHwKLSAgIHw5OgotKyAgfC5pZiBF TkRJQU5fTEUKLSsgIHwgIGFkZGkgQkFTRVA0LCBCQVNFLCA0Ci0rICB8ICBzdHd4IFRJU05JTCwg QkFTRVA0LCBSQwotKyAgfC5lbHNlCi0gICB8ICBzdHd4IFRJU05JTCwgQkFTRSwgUkMKLSsgIHwu ZW5kaWYKLSAgIHwgIGFkZGkgUkMsIFJDLCA4Ci0gICB8ICBiIDwzCi0gICB8LmVuZGlmCi1AQCAt MjU3OCw2ICsyNzUzLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHgg KmN0eCkKLSAgIHwgIC8vIEhPT0tfUFJPRklMRSBpcyBvZmYgYWdhaW4sIHNvIHJlLWRpc3BhdGNo IHRvIGR5bmFtaWMgaW5zdHJ1Y3Rpb24uCi0gICB8ICBscCBCQVNFLCBMLT5iYXNlCi0gICB8ICBz dWJpIFBDLCBQQywgNAotKyAgfCAgYWRkaSBCQVNFUDQsIEJBU0UsIDQKLSAgIHwgIGIgLT5jb250 X25vcAotICNlbmRpZgotICAgfAotQEAgLTI1ODYsMzkgKzI3NjIsNzIgQEAgc3RhdGljIHZvaWQg YnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwvLy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g ICB8Ci0gICB8Lm1hY3JvIHNhdmV4XywgYSwgYiwgYywgZAotLSAgfCAgc3RmZCBmLi5hLCAxNith Kjgoc3ApCi0tICB8ICBzdGZkIGYuLmIsIDE2K2IqOChzcCkKLS0gIHwgIHN0ZmQgZi4uYywgMTYr Yyo4KHNwKQotLSAgfCAgc3RmZCBmLi5kLCAxNitkKjgoc3ApCi0rICB8ICBzdGZkIGYuLmEsIEVY SVRfT0ZGU0VUK2EqOChzcCkKLSsgIHwgIHN0ZmQgZi4uYiwgRVhJVF9PRkZTRVQrYio4KHNwKQot KyAgfCAgc3RmZCBmLi5jLCBFWElUX09GRlNFVCtjKjgoc3ApCi0rICB8ICBzdGZkIGYuLmQsIEVY SVRfT0ZGU0VUK2QqOChzcCkKLSsgIHwuZW5kbWFjcm8KLSsgIHwKLSsgIHwubWFjcm8gc2F2ZXIs IGEKLSsgIHwgIHN0cCByLi5hLCBFWElUX09GRlNFVCszMio4K2EqUFNJWkUoc3ApCi0gICB8LmVu ZG1hY3JvCi0gICB8Ci0gICB8LT52bV9leGl0X2hhbmRsZXI6Ci0gICB8LmlmIEpJVAotLSAgfCAg YWRkaSBzcCwgc3AsIC0oMTYrMzIqOCszMio0KQotLSAgfCAgc3RtdyByMiwgMTYrMzIqOCsyKjQo c3ApCi0rICB8ICBhZGRpIHNwLCBUTVAwLCBzcCwgLShFWElUX09GRlNFVCszMio4KzMyKlBTSVpF KQotKyAgfCAgc2F2ZXIgMyAvLyBDQVJHMQotKyAgfCAgc2F2ZXIgNCAvLyBDQVJHMgotKyAgfCAg c2F2ZXIgNSAvLyBDQVJHMwotKyAgfCAgc2F2ZXIgMTcgLy8gRElTUEFUQ0gKLSAgIHwgICAgYWRk aSBESVNQQVRDSCwgSkdMLCAtR0dfRElTUDJHLTMyNzY4Ci0gICB8ICAgIGxpIENBUkcyLCB+TEpf Vk1TVF9FWElUCi0tICB8ICAgbHd6IENBUkcxLCAxNiszMio4KzMyKjQoc3ApCS8vIEdldCBzdGFj ayBjaGFpbi4KLSsgIHwgICBscCBDQVJHMSwgRVhJVF9PRkZTRVQrMzIqOCszMipQU0laRShzcCkJ Ly8gR2V0IHN0YWNrIGNoYWluLgotICAgfCAgICBzdHcgQ0FSRzIsIERJU1BBVENIX0dMKHZtc3Rh dGUpKERJU1BBVENIKQotKyAgfCAgc2F2ZXIgMgotKyAgfCAgc2F2ZXIgNgotKyAgfCAgc2F2ZXIg NwotKyAgfCAgc2F2ZXIgOAotKyAgfCAgc2F2ZXIgOQotKyAgfCAgc2F2ZXIgMTAKLSsgIHwgIHNh dmVyIDExCi0rICB8ICBzYXZlciAxMgotKyAgfCAgc2F2ZXIgMTMKLSAgIHwgIHNhdmV4XyAwLDEs MiwzCi0tICB8ICAgc3R3IENBUkcxLCAwKHNwKQkJCS8vIFN0b3JlIGV4dGVuZGVkIHN0YWNrIGNo YWluLgotLSAgfCAgIGNscnNvIFRNUDEKLSsgIHwgICBzdHAgQ0FSRzEsIDAoc3ApCQkJLy8gU3Rv cmUgZXh0ZW5kZWQgc3RhY2sgY2hhaW4uCi0rCi0gICB8ICBzYXZleF8gNCw1LDYsNwotLSAgfCAg IGFkZGkgQ0FSRzIsIHNwLCAxNiszMio4KzMyKjQJLy8gUmVjb21wdXRlIG9yaWdpbmFsIHZhbHVl IG9mIHNwLgotKyAgfCAgc2F2ZXIgMTQKLSsgIHwgIHNhdmVyIDE1Ci0rICB8ICBzYXZlciAxNgot KyAgfCAgc2F2ZXIgMTgKLSsgIHwgICBhZGRpIENBUkcyLCBzcCwgRVhJVF9PRkZTRVQrMzIqOCsz MipQU0laRQkvLyBSZWNvbXB1dGUgb3JpZ2luYWwgdmFsdWUgb2Ygc3AuCi0gICB8ICBzYXZleF8g OCw5LDEwLDExCi0tICB8ICAgc3R3IENBUkcyLCAxNiszMio4KzEqNChzcCkJLy8gU3RvcmUgc3Ag aW4gUklEX1NQLgotKyAgfCAgIHN0cCBDQVJHMiwgRVhJVF9PRkZTRVQrMzIqOCsxKlBTSVpFKHNw KQkvLyBTdG9yZSBzcCBpbiBSSURfU1AuCi0gICB8ICBzYXZleF8gMTIsMTMsMTQsMTUKLSAgIHwg ICBtZmxyIENBUkczCi0gICB8ICAgbGkgVE1QMSwgMAotICAgfCAgc2F2ZXhfIDE2LDE3LDE4LDE5 Ci0tICB8ICAgc3R3IFRNUDEsIDE2KzMyKjgrMCo0KHNwKQkJLy8gQ2xlYXIgUklEX1RNUC4KLSsg IHwgICBzdHcgVE1QMSwgRVhJVF9PRkZTRVQrMzIqOCswKlBTSVpFKHNwKQkJLy8gQ2xlYXIgUklE X1RNUC4KLSAgIHwgIHNhdmV4XyAyMCwyMSwyMiwyMwotICAgfCAgIGxoeiBDQVJHNCwgMihDQVJH MykJCS8vIExvYWQgdHJhY2UgbnVtYmVyLgotICAgfCAgc2F2ZXhfIDI0LDI1LDI2LDI3Ci0gICB8 ICBsd3ogTCwgRElTUEFUQ0hfR0woY3VyX0wpKERJU1BBVENIKQotICAgfCAgc2F2ZXhfIDI4LDI5 LDMwLDMxCi0rICB8ICBzYXZlciAxOQotKyAgfCAgc2F2ZXIgMjAKLSsgIHwgIHNhdmVyIDIxCi0r ICB8ICBzYXZlciAyMgotKyAgfCAgc2F2ZXIgMjMKLSsgIHwgIHNhdmVyIDI0Ci0rICB8ICBzYXZl ciAyNQotKyAgfCAgc2F2ZXIgMjYKLSsgIHwgIHNhdmVyIDI3Ci0rICB8ICBzYXZlciAyOAotKyAg fCAgc2F2ZXIgMjkKLSsgIHwgIHNhdmVyIDMwCi0rICB8ICBzYXZlciAzMQotICAgfCAgIHN1YiBD QVJHMywgVE1QMCwgQ0FSRzMJCS8vIENvbXB1dGUgZXhpdCBudW1iZXIuCi0tICB8ICBscCBCQVNF LCBESVNQQVRDSF9HTChqaXRfYmFzZSkoRElTUEFUQ0gpCi0rICB8ICBsd3ogQkFTRSwgRElTUEFU Q0hfR0woaml0X2Jhc2UpKERJU1BBVENIKQotICAgfCAgIHNyd2kgQ0FSRzMsIENBUkczLCAyCi0g ICB8ICBzdHAgTCwgRElTUEFUQ0hfSihMKShESVNQQVRDSCkKLSAgIHwgICBzdWJpIENBUkczLCBD QVJHMywgMgotQEAgLTI2MjcsMTEgKzI4MzYsMTEgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91 dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIHN0dyBUTVAxLCBESVNQQVRDSF9HTChqaXRfYmFz ZSkoRElTUEFUQ0gpCi0gICB8ICBhZGRpIENBUkcxLCBESVNQQVRDSCwgR0dfRElTUDJKCi0gICB8 ICAgc3R3IENBUkczLCBESVNQQVRDSF9KKGV4aXRubykoRElTUEFUQ0gpCi0tICB8ICBhZGRpIENB UkcyLCBzcCwgMTYKLSsgIHwgIGFkZGkgQ0FSRzIsIHNwLCBFWElUX09GRlNFVAotICAgfCAgYmwg ZXh0ZXJuIGxqX3RyYWNlX2V4aXQJCS8vIChqaXRfU3RhdGUgKkosIEV4aXRTdGF0ZSAqZXgpCi0g ICB8ICAvLyBSZXR1cm5zIE1VTFRSRVMgKHVuc2NhbGVkKSBvciBuZWdhdGVkIGVycm9yIGNvZGUu Ci0gICB8ICBscCBUTVAxLCBMLT5jZnJhbWUKLS0gIHwgIGx3eiBUTVAyLCAwKHNwKQotKyAgfCAg bHAgVE1QMiwgMChzcCkKLSAgIHwgICBscCBCQVNFLCBMLT5iYXNlCi0gICB8LmlmIEdQUjY0Ci0g ICB8ICBybGRpY3Igc3AsIFRNUDEsIDAsIDYxCi1AQCAtMjYzOSw3ICsyODQ4LDcgQEAgc3RhdGlj IHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIHJsd2lubSBzcCwg VE1QMSwgMCwgMCwgMjkKLSAgIHwuZW5kaWYKLSAgIHwgICBsd3ogUEMsIFNBVkVfUEMJCQkvLyBH ZXQgU0FWRV9QQy4KLS0gIHwgIHN0dyBUTVAyLCAwKHNwKQotKyAgfCAgc3RwIFRNUDIsIDAoc3Ap Ci0gICB8ICBzdHcgTCwgU0FWRV9MCQkJLy8gU2V0IFNBVkVfTCAob24tdHJhY2UgcmVzdW1lL3lp ZWxkKS4KLSAgIHwgIGIgPjEKLSAgIHwuZW5kaWYKLUBAIC0yNjYwLDcgKzI4NjksMTIgQEAgc3Rh dGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgICAgc3R3IFRN UDIsIERJU1BBVENIX0dMKGppdF9iYXNlKShESVNQQVRDSCkKLSAgIHwgIGx3eiBLQkFTRSwgUEMy UFJPVE8oaykoVE1QMSkKLSAgIHwgIC8vIFNldHVwIHR5cGUgY29tcGFyaXNvbiBjb25zdGFudHMu Ci0rICB8LmlmIFA2NAotKyAgfCAgbHVzIFRJU05VTSwgTEpfVElTTlVNID4+IDE2Ci0rICB8ICBv cmkgVElTTlVNLCBUSVNOVU0sIExKX1RJU05VTSAmIDB4ZmZmZgotKyAgfC5lbHNlCi0gICB8ICBs aSBUSVNOVU0sIExKX1RJU05VTQotKyAgfC5lbmRpZgotICAgfCAgbHVzIFRNUDMsIDB4NTljMAkJ CS8vIFRPQklUID0gMl41MiArIDJeNTEgKGZsb2F0KS4KLSAgIHwgIHN0dyBUTVAzLCBUTVBECi0g ICB8ICBsaSBaRVJPLCAwCi1AQCAtMjY4MCwxNCArMjg5NCwxNCBAQCBzdGF0aWMgdm9pZCBidWls ZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgIGRlY29kZV9SQTggUkEsIElOUwot ICAgfCAgbHB4IFRNUDAsIERJU1BBVENILCBUTVAxCi0gICB8ICBtdGN0ciBUTVAwCi0tICB8ICBj bXBsd2kgVE1QMSwgQkNfRlVOQ0YqNAkJLy8gRnVuY3Rpb24gaGVhZGVyPwotKyAgfCAgY21wbHdp IFRNUDEsIEJDX0ZVTkNGKlBTSVpFCS8vIEZ1bmN0aW9uIGhlYWRlcj8KLSAgIHwgIGJnZSA+Mgot ICAgfCAgIGRlY29kZV9SQjggUkIsIElOUwotICAgfCAgIGRlY29kZV9SRDggUkQsIElOUwotICAg fCAgIGRlY29kZV9SQzggUkMsIElOUwotICAgfCAgYmN0cgotICAgfDI6Ci0tICB8ICBjbXBsd2kg VE1QMSwgKEJDX0ZVTkNDKzIpKjQJLy8gRmFzdCBmdW5jdGlvbj8KLSsgIHwgIGNtcGx3aSBUTVAx LCAoQkNfRlVOQ0MrMikqUFNJWkUJLy8gRmFzdCBmdW5jdGlvbj8KLSAgIHwgIGJsdCA+MwotICAg fCAgLy8gQ2hlY2sgZnJhbWUgYmVsb3cgZmFzdCBmdW5jdGlvbi4KLSAgIHwgIGx3eiBUTVAxLCBG UkFNRV9QQyhCQVNFKQotQEAgLTI2OTcsNyArMjkxMSw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1 YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICBsd3ogVE1QMiwgLTQoVE1QMSkKLSAgIHwg IGRlY29kZV9SQTggVE1QMCwgVE1QMgotICAgfCAgc3ViIFRNUDEsIEJBU0UsIFRNUDAKLS0gIHwg IGx3eiBMRlVOQzpUTVAyLCAtMTIoVE1QMSkKLSsgIHwgIGx3eiBMRlVOQzpUTVAyLCBXT1JEX0xP LTE2KFRNUDEpCi0gICB8ICBsd3ogVE1QMSwgTEZVTkM6VE1QMi0+cGMKLSAgIHwgIGx3eiBLQkFT RSwgUEMyUFJPVE8oaykoVE1QMSkKLSAgIHwzOgotQEAgLTI3MTgsNiArMjkzMiw4IEBAIHN0YXRp YyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8Ly8gTllJOiBVc2Ug aW50ZXJuYWwgaW1wbGVtZW50YXRpb25zIG9mIGZsb29yLCBjZWlsLCB0cnVuYy4KLSAgIHwKLSAg IHwtPnZtX21vZGk6Ci0rICB8ICBsaSBUTVAxLCAwCi0rICB8ICBtdHhlciBUTVAxCi0gICB8ICBk aXZ3by4gVE1QMCwgQ0FSRzEsIENBUkcyCi0gICB8ICBic28gPjEKLSAgIHwuaWYgR1BSNjQKLUBA IC0yNzM2LDcgKzI5NTIsOCBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0 eCAqY3R4KQotICAgfCAgY21wd2kgQ0FSRzIsIDAKLSAgIHwgICBsaSBDQVJHMSwgMAotICAgfCAg YmVxbHIKLS0gIHwgIGNscnNvIFRNUDAJCQkvLyBDbGVhciBTTyBmb3IgLTIxNDc0ODM2NDggJSAt MSBhbmQgcmV0dXJuIDAuCi0rICB8ICAvLyBDbGVhciBTTyBmb3IgLTIxNDc0ODM2NDggJSAtMSBh bmQgcmV0dXJuIDAuCi0rICB8ICBjcnhvciA0KmNyMCtzbywgNCpjcjArc28sIDQqY3IwK3NvCi0g ICB8ICBibHIKLSAgIHwKLSAgIHwvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1AQCAtMjc0OSwxMCArMjk2Niwx OCBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfC0+ dm1fY2FjaGVzeW5jOgotICAgfC5pZiBKSVQgb3IgRkZJCi0gICB8ICAvLyBDb21wdXRlIHN0YXJ0 IG9mIGZpcnN0IGNhY2hlIGxpbmUgYW5kIG51bWJlciBvZiBjYWNoZSBsaW5lcy4KLSsgIHwgIC5p ZiBHUFI2NAotKyAgfCAgcmxkaWNyIENBUkcxLCBDQVJHMSwgMCwgNTgKLSsgIHwgIC5lbHNlCi0g ICB8ICBybHdpbm0gQ0FSRzEsIENBUkcxLCAwLCAwLCAyNgotKyAgfCAgLmVuZGlmCi0gICB8ICBz dWIgQ0FSRzIsIENBUkcyLCBDQVJHMQotICAgfCAgYWRkaSBDQVJHMiwgQ0FSRzIsIDMxCi0rICB8 ICAuaWYgR1BSNjQKLSsgIHwgIHNyZGkuIENBUkcyLCBDQVJHMiwgNQotKyAgfCAgLmVsc2UKLSAg IHwgIHJsd2lubS4gQ0FSRzIsIENBUkcyLCAyNywgNSwgMzEKLSsgIHwgIC5lbmRpZgotICAgfCAg YmVxbHIKLSAgIHwgIG10Y3RyIENBUkcyCi0gICB8ICBtciBDQVJHMywgQ0FSRzEKLUBAIC0yNzc0 LDM5ICsyOTk5LDcwIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpj dHgpCi0gICB8Ly8tLSBGRkkgaGVscGVyIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgfC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHwKLS0g IHwvLyBIYW5kbGVyIGZvciBjYWxsYmFjayBmdW5jdGlvbnMuIENhbGxiYWNrIHNsb3QgbnVtYmVy IGluIHIxMSwgZyBpbiByMTIuCi0rICB8Ly8gSGFuZGxlciBmb3IgY2FsbGJhY2sgZnVuY3Rpb25z LgotKyAgfC8vIDMyLWJpdDogQ2FsbGJhY2sgc2xvdCBudW1iZXIgaW4gcjEyLCBnIGluIHIxMS4K LSsgIHwvLyA2NC1iaXQgdjE6IENhbGxiYWNrIHNsb3QgbnVtYmVyIGluIGJpdHMgNDcrIG9mIHIx MSwgZyBpbiAwLTQ2LCBUT0MgaW4gcjIuCi0rICB8Ly8gNjQtYml0IHYyOiBDYWxsYmFjayBzbG90 IG51bWJlciBpbiBiaXRzIDItMTEgb2YgcjEyLCBnIGluIHIxMSwKLSsgIHwvLyB2bV9mZmlfY2Fs bGJhY2sgaW4gcjIuCi0gICB8LT52bV9mZmlfY2FsbGJhY2s6Ci0gICB8LmlmIEZGSQotICAgfC50 eXBlIENUU1RBVEUsIENUU3RhdGUsIFBDCi0rICB8ICAuaWYgT1BECi0rICB8ICAgcmxkaWNsIHIx MiwgcjExLCAxNywgNDcKLSsgIHwgICBybGRpY2wgcjExLCByMTEsIDAsIDE3Ci0rICB8ICAuZW5k aWYKLSsgIHwgIC5pZiBFTEZWMgotKyAgfCAgIHJsd2lubSByMTIsIHIxMiwgMzAsIDIyLCAzMQot KyAgfCAgIGFkZGlzbCBUT0NSRUcsIFRPQ1JFRywgZXh0ZXJuIC5UT0MuLWxqX3ZtX2ZmaV9jYWxs YmFja0BoYQotKyAgfCAgIGFkZGlsIFRPQ1JFRywgVE9DUkVHLCBleHRlcm4gLlRPQy4tbGpfdm1f ZmZpX2NhbGxiYWNrQGwKLSsgIHwgIC5lbmRpZgotICAgfCAgc2F2ZXJlZ3MKLS0gIHwgIGx3eiBD VFNUQVRFLCBHTDpyMTItPmN0eXBlX3N0YXRlCi0tICB8ICAgYWRkaSBESVNQQVRDSCwgcjEyLCBH R19HMkRJU1AKLS0gIHwgIHN0dyByMTEsIENUU1RBVEUtPmNiLnNsb3QKLS0gIHwgIHN0dyByMywg Q1RTVEFURS0+Y2IuZ3ByWzBdCi0rICB8ICBsd3ogQ1RTVEFURSwgR0w6cjExLT5jdHlwZV9zdGF0 ZQotKyAgfCAgIGFkZGkgRElTUEFUQ0gsIHIxMSwgR0dfRzJESVNQCi0rICB8ICBzdHcgcjEyLCBD VFNUQVRFLT5jYi5zbG90Ci0rICB8ICBzdHAgcjMsIENUU1RBVEUtPmNiLmdwclswXQotICAgfCAg IHN0ZmQgZjEsIENUU1RBVEUtPmNiLmZwclswXQotLSAgfCAgc3R3IHI0LCBDVFNUQVRFLT5jYi5n cHJbMV0KLSsgIHwgIHN0cCByNCwgQ1RTVEFURS0+Y2IuZ3ByWzFdCi0gICB8ICAgc3RmZCBmMiwg Q1RTVEFURS0+Y2IuZnByWzFdCi0tICB8ICBzdHcgcjUsIENUU1RBVEUtPmNiLmdwclsyXQotKyAg fCAgc3RwIHI1LCBDVFNUQVRFLT5jYi5ncHJbMl0KLSAgIHwgICBzdGZkIGYzLCBDVFNUQVRFLT5j Yi5mcHJbMl0KLS0gIHwgIHN0dyByNiwgQ1RTVEFURS0+Y2IuZ3ByWzNdCi0rICB8ICBzdHAgcjYs IENUU1RBVEUtPmNiLmdwclszXQotICAgfCAgIHN0ZmQgZjQsIENUU1RBVEUtPmNiLmZwclszXQot LSAgfCAgc3R3IHI3LCBDVFNUQVRFLT5jYi5ncHJbNF0KLSsgIHwgIHN0cCByNywgQ1RTVEFURS0+ Y2IuZ3ByWzRdCi0gICB8ICAgc3RmZCBmNSwgQ1RTVEFURS0+Y2IuZnByWzRdCi0tICB8ICBzdHcg cjgsIENUU1RBVEUtPmNiLmdwcls1XQotKyAgfCAgc3RwIHI4LCBDVFNUQVRFLT5jYi5ncHJbNV0K LSAgIHwgICBzdGZkIGY2LCBDVFNUQVRFLT5jYi5mcHJbNV0KLS0gIHwgIHN0dyByOSwgQ1RTVEFU RS0+Y2IuZ3ByWzZdCi0rICB8ICBzdHAgcjksIENUU1RBVEUtPmNiLmdwcls2XQotICAgfCAgIHN0 ZmQgZjcsIENUU1RBVEUtPmNiLmZwcls2XQotLSAgfCAgc3R3IHIxMCwgQ1RTVEFURS0+Y2IuZ3By WzddCi0rICB8ICBzdHAgcjEwLCBDVFNUQVRFLT5jYi5ncHJbN10KLSAgIHwgICBzdGZkIGY4LCBD VFNUQVRFLT5jYi5mcHJbN10KLSsgIHwgIC5pZiBHUFI2NAotKyAgfCAgIHN0ZmQgZjksIENUU1RB VEUtPmNiLmZwcls4XQotKyAgfCAgIHN0ZmQgZjEwLCBDVFNUQVRFLT5jYi5mcHJbOV0KLSsgIHwg ICBzdGZkIGYxMSwgQ1RTVEFURS0+Y2IuZnByWzEwXQotKyAgfCAgIHN0ZmQgZjEyLCBDVFNUQVRF LT5jYi5mcHJbMTFdCi0rICB8ICAgc3RmZCBmMTMsIENUU1RBVEUtPmNiLmZwclsxMl0KLSsgIHwg IC5lbmRpZgotKyAgfCAgLmlmIEVMRlYyCi0rICB8ICBhZGRpIFRNUDAsIHNwLCBDRlJBTUVfU1BB Q0UrOTYKLSsgIHwgIC5lbGlmIEdQUjY0Ci0rICB8ICBhZGRpIFRNUDAsIHNwLCBDRlJBTUVfU1BB Q0UrMTEyCi0rICB8ICAuZWxzZQotICAgfCAgYWRkaSBUTVAwLCBzcCwgQ0ZSQU1FX1NQQUNFKzgK LS0gIHwgIHN0dyBUTVAwLCBDVFNUQVRFLT5jYi5zdGFjawotKyAgfCAgLmVuZGlmCi0rICB8ICBz dHAgVE1QMCwgQ1RTVEFURS0+Y2Iuc3RhY2sKLSAgIHwgICBtciBDQVJHMSwgQ1RTVEFURQotICAg fCAgc3R3IENUU1RBVEUsIFNBVkVfUEMJCS8vIEFueSB2YWx1ZSBvdXRzaWRlIG9mIGJ5dGVjb2Rl IGlzIG9rLgotICAgfCAgIG1yIENBUkcyLCBzcAotICAgfCAgYmwgZXh0ZXJuIGxqX2NjYWxsYmFj a19lbnRlcgkvLyAoQ1RTdGF0ZSAqY3RzLCB2b2lkICpjZikKLSAgIHwgIC8vIFJldHVybnMgbHVh X1N0YXRlICouCi0gICB8ICBscCBCQVNFLCBMOkNSRVQxLT5iYXNlCi0rICB8LmlmIFA2NAotKyAg fCAgICAgbHVzIFRJU05VTSwgTEpfVElTTlVNID4+IDE2CS8vIFNldHVwIHR5cGUgY29tcGFyaXNv biBjb25zdGFudHMuCi0rICB8ICAgICBvcmkgVElTTlVNLCBUSVNOVU0sIExKX1RJU05VTSAmIDB4 ZmZmZgotKyAgfC5lbHNlCi0gICB8ICAgICBsaSBUSVNOVU0sIExKX1RJU05VTQkJLy8gU2V0dXAg dHlwZSBjb21wYXJpc29uIGNvbnN0YW50cy4KLSsgIHwuZW5kaWYKLSAgIHwgIGxwIFJDLCBMOkNS RVQxLT50b3AKLSAgIHwgICAgIGx1cyBUTVAzLCAweDU5YzAJCS8vIFRPQklUID0gMl41MiArIDJe NTEgKGZsb2F0KS4KLSAgIHwgICAgIGxpIFpFUk8sIDAKLUBAIC0yODM1LDkgKzMwOTEsMjEgQEAg c3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIG1yIENB UkcxLCBDVFNUQVRFCi0gICB8ICBtciBDQVJHMiwgUkEKLSAgIHwgIGJsIGV4dGVybiBsal9jY2Fs bGJhY2tfbGVhdmUJLy8gKENUU3RhdGUgKmN0cywgVFZhbHVlICpvKQotLSAgfCAgbHd6IENSRVQx LCBDVFNUQVRFLT5jYi5ncHJbMF0KLSsgIHwgIGxwIENSRVQxLCBDVFNUQVRFLT5jYi5ncHJbMF0K LSAgIHwgIGxmZCBGQVJHMSwgQ1RTVEFURS0+Y2IuZnByWzBdCi0tICB8ICBsd3ogQ1JFVDIsIENU U1RBVEUtPmNiLmdwclsxXQotKyAgfCAgbHAgQ1JFVDIsIENUU1RBVEUtPmNiLmdwclsxXQotKyAg fCAgLmlmIEdQUjY0Ci0rICB8ICAgIGxmZCBGQVJHMiwgQ1RTVEFURS0+Y2IuZnByWzFdCi0rICB8 ICAuZWxzZQotKyAgfCAgICBscCBDQVJHMywgQ1RTVEFURS0+Y2IuZ3ByWzJdCi0rICB8ICAgIGxw IENBUkc0LCBDVFNUQVRFLT5jYi5ncHJbM10KLSsgIHwgIC5lbmRpZgotKyAgfCAgLmVsZnYyIGxm ZCBmMywgQ1RTVEFURS0+Y2IuZnByWzJdCi0rICB8ICAuZWxmdjIgbGZkIGY0LCBDVFNUQVRFLT5j Yi5mcHJbM10KLSsgIHwgIC5lbGZ2MiBsZmQgZjUsIENUU1RBVEUtPmNiLmZwcls0XQotKyAgfCAg LmVsZnYyIGxmZCBmNiwgQ1RTVEFURS0+Y2IuZnByWzVdCi0rICB8ICAuZWxmdjIgbGZkIGY3LCBD VFNUQVRFLT5jYi5mcHJbNl0KLSsgIHwgIC5lbGZ2MiBsZmQgZjgsIENUU1RBVEUtPmNiLmZwcls3 XQotICAgfCAgYiAtPnZtX2xlYXZlX3VudwotICAgfC5lbmRpZgotICAgfAotQEAgLTI4NTAsMjMg KzMxMTgsNDYgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkK LSAgIHwgICBsYnogQ0FSRzIsIENDU1RBVEUtPm5zcAotICAgfCAgIGxieiBDQVJHMywgQ0NTVEFU RS0+bmZwcgotICAgfCAgbmVnIFRNUDEsIFRNUDEKLSsgIHwgIC5pZiBHUFI2NAotKyAgfCAgICBz dGQgVE1QMCwgMTYoc3ApCi0rICB8ICAuZWxzZQotICAgfCAgICBzdHcgVE1QMCwgNChzcCkKLSsg IHwgIC5lbmRpZgotICAgfCAgIGNtcHdpIGNyMSwgQ0FSRzMsIDAKLSAgIHwgIG1yIFRNUDIsIHNw Ci0gICB8ICAgYWRkaWMuIENBUkcyLCBDQVJHMiwgLTEKLSsgIHwgIC5pZiBHUFI2NAotKyAgfCAg c3RkdXggc3AsIHNwLCBUTVAxCi0rICB8ICAuZWxzZQotICAgfCAgc3R3dXggc3AsIHNwLCBUTVAx Ci0rICB8ICAuZW5kaWYKLSAgIHwgICBjcm5vdCA0KmNyMStlcSwgNCpjcjErZXEJCS8vIEZvciB2 YXJhcmcgY2FsbHMuCi0tICB8ICBzdHcgcjE0LCAtNChUTVAyKQotLSAgfCAgc3R3IENDU1RBVEUs IC04KFRNUDIpCi0rICB8ICAuaWYgR1BSNjQKLSsgIHwgICAgc3RkIHIxNCwgLTgoVE1QMikKLSsg IHwgICAgc3RkIENDU1RBVEUsIC0xNihUTVAyKQotKyAgfCAgLmVsc2UKLSsgIHwgICAgc3R3IHIx NCwgLTQoVE1QMikKLSsgIHwgICAgc3R3IENDU1RBVEUsIC04KFRNUDIpCi0rICB8ICAuZW5kaWYK LSAgIHwgIG1yIHIxNCwgVE1QMgotICAgfCAgbGEgVE1QMSwgQ0NTVEFURS0+c3RhY2sKLSsgIHwg IC5pZiBHUFI2NAotKyAgfCAgIHNsZGkgQ0FSRzIsIENBUkcyLCAzCi0rICB8ICAuZWxzZQotICAg fCAgIHNsd2kgQ0FSRzIsIENBUkcyLCAyCi0rICB8ICAuZW5kaWYKLSAgIHwgICBibHR5ID4yCi0t ICB8ICBsYSBUTVAyLCA4KHNwKQotKyAgfCAgLmlmIEVMRlYyCi0rICB8ICAgIGxhIFRNUDIsIDk2 KHNwKQotKyAgfCAgLmVsaWYgR1BSNjQKLSsgIHwgICAgbGEgVE1QMiwgMTEyKHNwKQotKyAgfCAg LmVsc2UKLSsgIHwgICAgbGEgVE1QMiwgOChzcCkKLSsgIHwgIC5lbmRpZgotICAgfDE6Ci0tICB8 ICBsd3p4IFRNUDAsIFRNUDEsIENBUkcyCi0tICB8ICBzdHd4IFRNUDAsIFRNUDIsIENBUkcyCi0t ICB8ICAgYWRkaWMuIENBUkcyLCBDQVJHMiwgLTQKLSsgIHwgIGxweCBUTVAwLCBUTVAxLCBDQVJH MgotKyAgfCAgc3RweCBUTVAwLCBUTVAyLCBDQVJHMgotKyAgfCAgIGFkZGljLiBDQVJHMiwgQ0FS RzIsIC1QU0laRQotICAgfCAgYmdlIDwxCi0gICB8MjoKLSAgIHwgIGJuZXkgY3IxLCA+MwotQEAg LTI4NzgsMjggKzMxNjksNTUgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRD dHggKmN0eCkKLSAgIHwgIGxmZCBmNiwgQ0NTVEFURS0+ZnByWzVdCi0gICB8ICBsZmQgZjcsIEND U1RBVEUtPmZwcls2XQotICAgfCAgbGZkIGY4LCBDQ1NUQVRFLT5mcHJbN10KLSsgIHwgIC5pZiBH UFI2NAotKyAgfCAgbGZkIGY5LCBDQ1NUQVRFLT5mcHJbOF0KLSsgIHwgIGxmZCBmMTAsIENDU1RB VEUtPmZwcls5XQotKyAgfCAgbGZkIGYxMSwgQ0NTVEFURS0+ZnByWzEwXQotKyAgfCAgbGZkIGYx MiwgQ0NTVEFURS0+ZnByWzExXQotKyAgfCAgbGZkIGYxMywgQ0NTVEFURS0+ZnByWzEyXQotKyAg fCAgLmVuZGlmCi0gICB8MzoKLS0gIHwgICBscCBUTVAwLCBDQ1NUQVRFLT5mdW5jCi0tICB8ICBs d3ogQ0FSRzIsIENDU1RBVEUtPmdwclsxXQotLSAgfCAgbHd6IENBUkczLCBDQ1NUQVRFLT5ncHJb Ml0KLS0gIHwgIGx3eiBDQVJHNCwgQ0NTVEFURS0+Z3ByWzNdCi0tICB8ICBsd3ogQ0FSRzUsIEND U1RBVEUtPmdwcls0XQotLSAgfCAgIG10Y3RyIFRNUDAKLS0gIHwgIGx3eiByOCwgQ0NTVEFURS0+ Z3ByWzVdCi0tICB8ICBsd3ogcjksIENDU1RBVEUtPmdwcls2XQotLSAgfCAgbHd6IHIxMCwgQ0NT VEFURS0+Z3ByWzddCi0tICB8ICBsd3ogQ0FSRzEsIENDU1RBVEUtPmdwclswXQkJLy8gRG8gdGhp cyBsYXN0LCBzaW5jZSBDQ1NUQVRFIGlzIENBUkcxLgotKyAgfCAgLnRvYyBzdGQgVE9DUkVHLCBT QVZFX1RPQwotKyAgfCAgIGxwIEZVTkNSRUcsIENDU1RBVEUtPmZ1bmMKLSsgIHwgIGxwIENBUkcy LCBDQ1NUQVRFLT5ncHJbMV0KLSsgIHwgIGxwIENBUkczLCBDQ1NUQVRFLT5ncHJbMl0KLSsgIHwg IC5vcGQgbHAgVE9DUkVHLCBUT0NfT0ZTKEZVTkNSRUcpCi0rICB8ICAub3BkZW52IGxwIEVOVlJF RywgRU5WX09GUyhGVU5DUkVHKQotKyAgfCAgLm9wZCBscCBGVU5DUkVHLCAwKEZVTkNSRUcpCi0r ICB8ICBscCBDQVJHNCwgQ0NTVEFURS0+Z3ByWzNdCi0rICB8ICBscCBDQVJHNSwgQ0NTVEFURS0+ Z3ByWzRdCi0rICB8ICAgbXRjdHIgRlVOQ1JFRwotKyAgfCAgbHAgcjgsIENDU1RBVEUtPmdwcls1 XQotKyAgfCAgbHAgcjksIENDU1RBVEUtPmdwcls2XQotKyAgfCAgbHAgcjEwLCBDQ1NUQVRFLT5n cHJbN10KLSsgIHwgIGxwIENBUkcxLCBDQ1NUQVRFLT5ncHJbMF0JCS8vIERvIHRoaXMgbGFzdCwg c2luY2UgQ0NTVEFURSBpcyBDQVJHMS4KLSAgIHwgICBiY3RybAotLSAgfCAgbHd6IENDU1RBVEU6 VE1QMSwgLTgocjE0KQotLSAgfCAgbHd6IFRNUDIsIC00KHIxNCkKLSsgIHwgICAudG9jIGxwIFRP Q1JFRywgU0FWRV9UT0MKLSsgIHwgIC5pZiBHUFI2NAotKyAgfCAgIGxkIENDU1RBVEU6VE1QMSwg LTE2KHIxNCkKLSsgIHwgICBsZCBUTVAyLCAtOChyMTQpCi0rICB8ICAgbGQgVE1QMCwgMTYocjE0 KQotKyAgfCAgLmVsc2UKLSsgIHwgICBsd3ogQ0NTVEFURTpUTVAxLCAtOChyMTQpCi0rICB8ICAg bHd6IFRNUDIsIC00KHIxNCkKLSAgIHwgICBsd3ogVE1QMCwgNChyMTQpCi0tICB8ICBzdHcgQ0FS RzEsIENDU1RBVEU6VE1QMS0+Z3ByWzBdCi0rICB8ICAuZW5kaWYKLSsgIHwgIHN0cCBDQVJHMSwg Q0NTVEFURTpUTVAxLT5ncHJbMF0KLSAgIHwgIHN0ZmQgRkFSRzEsIENDU1RBVEU6VE1QMS0+ZnBy WzBdCi0tICB8ICBzdHcgQ0FSRzIsIENDU1RBVEU6VE1QMS0+Z3ByWzFdCi0rICB8ICBzdHAgQ0FS RzIsIENDU1RBVEU6VE1QMS0+Z3ByWzFdCi0rICB8ICAuaWYgR1BSNjQKLSsgIHwgICBzdGZkIEZB UkcyLCBDQ1NUQVRFOlRNUDEtPmZwclsxXQotKyAgfCAgLmVuZGlmCi0rICB8ICAuZWxmdjIgc3Rm ZCBGQVJHMywgQ0NTVEFURTpUTVAxLT5mcHJbMl0KLSsgIHwgIC5lbGZ2MiBzdGZkIEZBUkc0LCBD Q1NUQVRFOlRNUDEtPmZwclszXQotKyAgfCAgLmVsZnYyIHN0ZmQgRkFSRzUsIENDU1RBVEU6VE1Q MS0+ZnByWzRdCi0rICB8ICAuZWxmdjIgc3RmZCBGQVJHNiwgQ0NTVEFURTpUTVAxLT5mcHJbNV0K LSsgIHwgIC5lbGZ2MiBzdGZkIEZBUkc3LCBDQ1NUQVRFOlRNUDEtPmZwcls2XQotKyAgfCAgLmVs ZnYyIHN0ZmQgRkFSRzgsIENDU1RBVEU6VE1QMS0+ZnByWzddCi0gICB8ICAgbXRsciBUTVAwCi0t ICB8ICBzdHcgQ0FSRzMsIENDU1RBVEU6VE1QMS0+Z3ByWzJdCi0rICB8ICBzdHAgQ0FSRzMsIEND U1RBVEU6VE1QMS0+Z3ByWzJdCi0gICB8ICAgbXIgc3AsIHIxNAotLSAgfCAgc3R3IENBUkc0LCBD Q1NUQVRFOlRNUDEtPmdwclszXQotKyAgfCAgc3RwIENBUkc0LCBDQ1NUQVRFOlRNUDEtPmdwclsz XQotICAgfCAgIG1yIHIxNCwgVE1QMgotICAgfCAgYmxyCi0gICB8LmVuZGlmCi1AQCAtMjkyMywx MyArMzI0MSwxMyBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBv cCwgaW50IGRlZm9wKQotICAgY2FzZSBCQ19JU0xUOiBjYXNlIEJDX0lTR0U6IGNhc2UgQkNfSVNM RTogY2FzZSBCQ19JU0dUOgotICAgICB8ICAvLyBSQSA9IHNyYzEqOCwgUkQgPSBzcmMyKjgsIEpN UCB3aXRoIFJEID0gdGFyZ2V0Ci0gICAgIHwuaWYgRFVBTE5VTQotLSAgICB8ICBsd3p1eCBUTVAw LCBSQSwgQkFTRQotKyAgICB8ICBsd3p4IFRNUDAsIEJBU0VfSEksIFJBCi0gICAgIHwgICAgYWRk aSBQQywgUEMsIDQKLS0gICAgfCAgIGx3eiBDQVJHMiwgNChSQSkKLS0gICAgfCAgbHd6dXggVE1Q MSwgUkQsIEJBU0UKLSsgICAgfCAgIGx3enggQ0FSRzIsIEJBU0VfTE8sIFJBCi0rICAgIHwgIGx3 enggVE1QMSwgQkFTRV9ISSwgUkQKLSAgICAgfCAgICBsd3ogVE1QMiwgLTQoUEMpCi0gICAgIHwg IGNoZWNrbnVtIGNyMCwgVE1QMAotLSAgICB8ICAgbHd6IENBUkczLCA0KFJEKQotKyAgICB8ICAg bHd6eCBDQVJHMywgQkFTRV9MTywgUkQKLSAgICAgfCAgICBkZWNvZGVfUkQ0IFRNUDIsIFRNUDIK LSAgICAgfCAgY2hlY2tudW0gY3IxLCBUTVAxCi0gICAgIHwgICAgYWRkaXMgVE1QMiwgVE1QMiwg LShCQ0JJQVNfSio0ID4+IDE2KQotQEAgLTI5NTMsNyArMzI3MSw3IEBAIHN0YXRpYyB2b2lkIGJ1 aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHw3OiAgLy8g UkEgaXMgbm90IGFuIGludGVnZXIuCi0gICAgIHwgIGJndCBjcjAsIC0+dm1ldGFfY29tcAotICAg ICB8ICAvLyBSQSBpcyBhIG51bWJlci4KLS0gICAgfCAgIGxmZCBmMCwgMChSQSkKLSsgICAgfCAg IGxmZHggZjAsIEJBU0UsIFJBCi0gICAgIHwgIGJndCBjcjEsIC0+dm1ldGFfY29tcAotICAgICB8 ICBibHQgY3IxLCA+NAotICAgICB8ICAvLyBSQSBpcyBhIG51bWJlciwgUkQgaXMgYW4gaW50ZWdl ci4KLUBAIC0yOTY1LDcgKzMyODMsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHgg KmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8ICAvLyBSQSBpcyBhbiBpbnRlZ2VyLCBS RCBpcyBhIG51bWJlci4KLSAgICAgfCAgdG9udW1faSBmMCwgQ0FSRzIKLSAgICAgfDQ6Ci0tICAg IHwgIGxmZCBmMSwgMChSRCkKLSsgICAgfCAgbGZkeCBmMSwgQkFTRSwgUkQKLSAgICAgfDU6Ci0g ICAgIHwgIGZjbXB1IGNyMCwgZjAsIGYxCi0gICAgIGlmIChvcCA9PSBCQ19JU0xUKSB7Ci1AQCAt Mjk4MSwxMCArMzI5OSwxMCBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwg QkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB9Ci0gICAgIHwgIGIgPDEKLSAgICAgfC5lbHNlCi0t ICAgIHwgIGx3enggVE1QMCwgQkFTRSwgUkEKLSsgICAgfCAgbHd6eCBUTVAwLCBCQVNFX0hJLCBS QQotICAgICB8ICAgIGFkZGkgUEMsIFBDLCA0Ci0gICAgIHwgICBsZmR4IGYwLCBCQVNFLCBSQQot LSAgICB8ICBsd3p4IFRNUDEsIEJBU0UsIFJECi0rICAgIHwgIGx3enggVE1QMSwgQkFTRV9ISSwg UkQKLSAgICAgfCAgY2hlY2tudW0gY3IwLCBUTVAwCi0gICAgIHwgICAgbHd6IFRNUDIsIC00KFBD KQotICAgICB8ICAgbGZkeCBmMSwgQkFTRSwgUkQKLUBAIC0zMDE1LDE1ICszMzMzLDIzIEBAIHN0 YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0g ICAgIHZrID0gb3AgPT0gQkNfSVNFUVY7Ci0gICAgIHwgIC8vIFJBID0gc3JjMSo4LCBSRCA9IHNy YzIqOCwgSk1QIHdpdGggUkQgPSB0YXJnZXQKLSAgICAgfC5pZiBEVUFMTlVNCi0tICAgIHwgIGx3 enV4IFRNUDAsIFJBLCBCQVNFCi0rICAgIHwgIGx3enggVE1QMCwgQkFTRV9ISSwgUkEKLSAgICAg fCAgICBhZGRpIFBDLCBQQywgNAotLSAgICB8ICAgbHd6IENBUkcyLCA0KFJBKQotLSAgICB8ICBs d3p1eCBUTVAxLCBSRCwgQkFTRQotKyAgICB8ICAgbHd6eCBDQVJHMiwgQkFTRV9MTywgUkEKLSsg ICAgfCAgLmlmIEVORElBTl9MRQotKyAgICB8ICAgIGx3enggVE1QMSwgQkFTRV9ISSwgUkQKLSsg ICAgfCAgLmVsc2UKLSsgICAgfCAgICBsd3p1eCBUTVAxLCBSRCwgQkFTRV9ISQotKyAgICB8ICAu ZW5kaWYKLSAgICAgfCAgY2hlY2tudW0gY3IwLCBUTVAwCi0gICAgIHwgICAgbHd6IFRNUDIsIC00 KFBDKQotICAgICB8ICBjaGVja251bSBjcjEsIFRNUDEKLSAgICAgfCAgICBkZWNvZGVfUkQ0IFRN UDIsIFRNUDIKLS0gICAgfCAgIGx3eiBDQVJHMywgNChSRCkKLSsgICAgfCAgLmlmIEVORElBTl9M RQotKyAgICB8ICAgbHd6dXggQ0FSRzMsIFJELCBCQVNFX0xPCi0rICAgIHwgIC5lbHNlCi0rICAg IHwgICBsd3ogQ0FSRzMsIFdPUkRfTE8oUkQpCi0rICAgIHwgIC5lbmRpZgotICAgICB8ICBjcm9y IDQqY3I3K2d0LCA0KmNyMCtndCwgNCpjcjErZ3QKLSAgICAgfCAgICBhZGRpcyBUTVAyLCBUTVAy LCAtKEJDQklBU19KKjQgPj4gMTYpCi0gICAgIGlmICh2aykgewotQEAgLTMwMzIsMTQgKzMzNTgs MTQgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBk ZWZvcCkKLSAgICAgICB8ICBibGUgY3I3LCAtPkJDX0lTTkVOX1oKLSAgICAgfQotICAgICB8LmVs c2UKLS0gICAgfCAgbHd6dXggVE1QMCwgUkEsIEJBU0UKLSsgICAgfCAgbHd6eCBUTVAwLCBCQVNF X0hJLCBSQQotICAgICB8ICAgbHd6IFRNUDIsIDAoUEMpCi0tICAgIHwgICAgbGZkIGYwLCAwKFJB KQotKyAgICB8ICAgIGxmZHggZjAsIEJBU0UsIFJBCi0gICAgIHwgICBhZGRpIFBDLCBQQywgNAot LSAgICB8ICBsd3p1eCBUTVAxLCBSRCwgQkFTRQotKyAgICB8ICBsd3p4IFRNUDEsIEJBU0VfSEks IFJECi0gICAgIHwgIGNoZWNrbnVtIGNyMCwgVE1QMAotICAgICB8ICAgZGVjb2RlX1JENCBUTVAy LCBUTVAyCi0tICAgIHwgICAgbGZkIGYxLCAwKFJEKQotKyAgICB8ICAgIGxmZHggZjEsIEJBU0Us IFJECi0gICAgIHwgIGNoZWNrbnVtIGNyMSwgVE1QMQotICAgICB8ICAgYWRkaXMgVE1QMiwgVE1Q MiwgLShCQ0JJQVNfSio0ID4+IDE2KQotICAgICB8ICBiZ2UgY3IwLCA+NQotQEAgLTMwNTcsOCAr MzM4Myw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBp bnQgZGVmb3ApCi0gICAgIHwuZW5kaWYKLSAgICAgfDU6ICAvLyBFaXRoZXIgb3IgYm90aCB0eXBl cyBhcmUgbm90IG51bWJlcnMuCi0gICAgIHwuaWYgbm90IERVQUxOVU0KLS0gICAgfCAgICBsd3og Q0FSRzIsIDQoUkEpCi0tICAgIHwgICAgbHd6IENBUkczLCA0KFJEKQotKyAgICB8ICAgIGx3engg Q0FSRzIsIEJBU0VfTE8sIFJBCi0rICAgIHwgICAgbHd6eCBDQVJHMywgQkFTRV9MTywgUkQKLSAg ICAgfC5lbmRpZgotICAgICB8LmlmIEZGSQotICAgICB8ICBjbXB3aSBjcjcsIFRNUDAsIExKX1RD REFUQQotQEAgLTMwNzQsMTAgKzM0MDAsMTYgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxk Q3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfC5pZiBGRkkKLSAgICAgfCAgYmVx IGNyNywgLT52bWV0YV9lcXVhbF9jZAotICAgICB8LmVuZGlmCi0rICAgIHwuaWYgUDY0Ci0rICAg IHwgICBjbXBsd2kgY3I3LCBUTVAzLCB+TEpfVFVEQVRBCQkvLyBBdm9pZCA2NCBiaXQgbGlnaHR1 c2VyZGF0YS4KLSsgICAgfC5lbmRpZgotICAgICB8ICAgIGNtcGx3IGNyNSwgQ0FSRzIsIENBUkcz Ci0gICAgIHwgIGNyYW5kYyA0KmNyMCtndCwgNCpjcjArZXEsIDQqY3IxK2d0CS8vIDI6IFNhbWUg dHlwZSBhbmQgcHJpbWl0aXZlLgotICAgICB8ICBjcm9yYyA0KmNyMCtsdCwgNCpjcjUrZXEsIDQq Y3IwK2VxCS8vIDE6IFNhbWUgdHYgb3IgZGlmZmVyZW50IHR5cGUuCi0gICAgIHwgIGNyYW5kIDQq Y3IwK2VxLCA0KmNyMCtlcSwgNCpjcjUrZXEJLy8gMDogU2FtZSB0eXBlIGFuZCBzYW1lIHR2Lgot KyAgICB8LmlmIFA2NAotKyAgICB8ICAgY3JvciA0KmNyNitsdCwgNCpjcjYrbHQsIDQqY3I3K2d0 Ci0rICAgIHwuZW5kaWYKLSAgICAgfCAgIG1yIFNBVkUwLCBQQwotICAgICB8ICBjcm9yIDQqY3Iw K2VxLCA0KmNyMCtlcSwgNCpjcjArZ3QJLy8gMCBvciAyLgotICAgICB8ICBjcm9yIDQqY3IwK2x0 LCA0KmNyMCtsdCwgNCpjcjArZ3QJLy8gMSBvciAyLgotQEAgLTMxMTYsOSArMzQ0OCw5IEBAIHN0 YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0g ICBjYXNlIEJDX0lTRVFTOiBjYXNlIEJDX0lTTkVTOgotICAgICB2ayA9IG9wID09IEJDX0lTRVFT OwotICAgICB8ICAvLyBSQSA9IHNyYyo4LCBSRCA9IHN0cl9jb25zdCo4ICh+KSwgSk1QIHdpdGgg UkQgPSB0YXJnZXQKLS0gICAgfCAgbHd6dXggVE1QMCwgUkEsIEJBU0UKLSsgICAgfCAgbHd6eCBU TVAwLCBCQVNFX0hJLCBSQQotICAgICB8ICAgc3J3aSBSRCwgUkQsIDEKLS0gICAgfCAgbHd6IFNU UjpUTVAzLCA0KFJBKQotKyAgICB8ICBsd3p4IFNUUjpUTVAzLCBCQVNFX0xPLCBSQQotICAgICB8 ICAgIGx3eiBUTVAyLCAwKFBDKQotICAgICB8ICAgc3ViZmljIFJELCBSRCwgLTQKLSAgICAgfCAg ICBhZGRpIFBDLCBQQywgNAotQEAgLTMxNTAsMTUgKzM0ODIsMTQgQEAgc3RhdGljIHZvaWQgYnVp bGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgdmsgPSBvcCA9 PSBCQ19JU0VRTjsKLSAgICAgfCAgLy8gUkEgPSBzcmMqOCwgUkQgPSBudW1fY29uc3QqOCwgSk1Q IHdpdGggUkQgPSB0YXJnZXQKLSAgICAgfC5pZiBEVUFMTlVNCi0tICAgIHwgIGx3enV4IFRNUDAs IFJBLCBCQVNFCi0rICAgIHwgIGx3enggVE1QMCwgQkFTRV9ISSwgUkEKLSAgICAgfCAgICBhZGRp IFBDLCBQQywgNAotLSAgICB8ICAgbHd6IENBUkcyLCA0KFJBKQotLSAgICB8ICBsd3p1eCBUTVAx LCBSRCwgS0JBU0UKLSsgICAgfCAgIGx3enggQ0FSRzIsIEJBU0VfTE8sIFJBCi0rICAgIHwgIGx3 enV4MiBUTVAxLCBDQVJHMywgUkQsIEtCQVNFCi0gICAgIHwgIGNoZWNrbnVtIGNyMCwgVE1QMAot ICAgICB8ICAgIGx3eiBUTVAyLCAtNChQQykKLSAgICAgfCAgY2hlY2tudW0gY3IxLCBUTVAxCi0g ICAgIHwgICAgZGVjb2RlX1JENCBUTVAyLCBUTVAyCi0tICAgIHwgICBsd3ogQ0FSRzMsIDQoUkQp Ci0gICAgIHwgICAgYWRkaXMgVE1QMiwgVE1QMiwgLShCQ0JJQVNfSio0ID4+IDE2KQotICAgICBp ZiAodmspIHsKLSAgICAgICB8LT5CQ19JU0VRTl9aOgotQEAgLTMxNzUsNyArMzUwNiw3IEBAIHN0 YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0g ICAgIH0gZWxzZSB7Ci0gICAgICAgfC0+QkNfSVNORU5fWjogIC8vIER1bW15IGxhYmVsLgotICAg ICB9Ci0tICAgIHwgIGx3enggVE1QMCwgQkFTRSwgUkEKLSsgICAgfCAgbHd6eCBUTVAwLCBCQVNF X0hJLCBSQQotICAgICB8ICAgIGFkZGkgUEMsIFBDLCA0Ci0gICAgIHwgICBsZmR4IGYwLCBCQVNF LCBSQQotICAgICB8ICAgIGx3eiBUTVAyLCAtNChQQykKLUBAIC0zMjEzLDcgKzM1NDQsNyBAQCBz dGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQot ICAgICB8NzogIC8vIFJBIGlzIG5vdCBhbiBpbnRlZ2VyLgotICAgICB8ICBiZ2UgY3IwLCA8Mwot ICAgICB8ICAvLyBSQSBpcyBhIG51bWJlci4KLS0gICAgfCAgIGxmZCBmMCwgMChSQSkKLSsgICAg fCAgIGxmZHggZjAsIEJBU0UsIFJBCi0gICAgIHwgIGJsdCBjcjEsID4xCi0gICAgIHwgIC8vIFJB IGlzIGEgbnVtYmVyLCBSRCBpcyBhbiBpbnRlZ2VyLgotICAgICB8ICB0b251bV9pIGYxLCBDQVJH MwotQEAgLTMyMzIsNyArMzU2Myw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAq Y3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICBjYXNlIEJDX0lTRVFQOiBjYXNlIEJDX0lTTkVQ OgotICAgICB2ayA9IG9wID09IEJDX0lTRVFQOwotICAgICB8ICAvLyBSQSA9IHNyYyo4LCBSRCA9 IHByaW1pdGl2ZV90eXBlKjggKH4pLCBKTVAgd2l0aCBSRCA9IHRhcmdldAotLSAgICB8ICBsd3p4 IFRNUDAsIEJBU0UsIFJBCi0rICAgIHwgIGx3enggVE1QMCwgQkFTRV9ISSwgUkEKLSAgICAgfCAg IHNyd2kgVE1QMSwgUkQsIDMKLSAgICAgfCAgICBsd3ogVE1QMiwgMChQQykKLSAgICAgfCAgIG5v dCBUTVAxLCBUTVAxCi1AQCAtMzI2Miw3ICszNTkzLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5z KEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAKLSAgIGNhc2UgQkNfSVNUQzog Y2FzZSBCQ19JU0ZDOiBjYXNlIEJDX0lTVDogY2FzZSBCQ19JU0Y6Ci0gICAgIHwgIC8vIFJBID0g ZHN0Kjggb3IgdW51c2VkLCBSRCA9IHNyYyo4LCBKTVAgd2l0aCBSRCA9IHRhcmdldAotLSAgICB8 ICBsd3p4IFRNUDAsIEJBU0UsIFJECi0rICAgIHwgIGx3enggVE1QMCwgQkFTRV9ISSwgUkQKLSAg ICAgfCAgIGx3eiBJTlMsIDAoUEMpCi0gICAgIHwgICBhZGRpIFBDLCBQQywgNAotICAgICBpZiAo b3AgPT0gQkNfSVNUIHx8IG9wID09IEJDX0lTRikgewotQEAgLTMyOTcsNyArMzYyOCw3IEBAIHN0 YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0g Ci0gICBjYXNlIEJDX0lTVFlQRToKLSAgICAgfCAgLy8gUkEgPSBzcmMqOCwgUkQgPSAtdHlwZSo4 Ci0tICAgIHwgIGx3enggVE1QMCwgQkFTRSwgUkEKLSsgICAgfCAgbHd6eCBUTVAwLCBCQVNFX0hJ LCBSQQotICAgICB8ICBzcndpIFRNUDEsIFJELCAzCi0gICAgIHwgIGluc19uZXh0MQotICAgICB8 LmlmIG5vdCBQUEUgYW5kIG5vdCBHUFI2NAotQEAgLTMzMTEsNyArMzY0Miw3IEBAIHN0YXRpYyB2 b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIGJy ZWFrOwotICAgY2FzZSBCQ19JU05VTToKLSAgICAgfCAgLy8gUkEgPSBzcmMqOCwgUkQgPSAtKFRJ U05VTS0xKSo4Ci0tICAgIHwgIGx3enggVE1QMCwgQkFTRSwgUkEKLSsgICAgfCAgbHd6eCBUTVAw LCBCQVNFX0hJLCBSQQotICAgICB8ICBpbnNfbmV4dDEKLSAgICAgfCAgY2hlY2tudW0gVE1QMAot ICAgICB8ICBiZ2UgLT52bWV0YV9pc3R5cGUKLUBAIC0zMzMwLDE3ICszNjYxLDIwIEBAIHN0YXRp YyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICBj YXNlIEJDX05PVDoKLSAgICAgfCAgLy8gUkEgPSBkc3QqOCwgUkQgPSBzcmMqOAotICAgICB8ICBp bnNfbmV4dDEKLS0gICAgfCAgbHd6eCBUTVAwLCBCQVNFLCBSRAotKyAgICB8ICBsd3p4IFRNUDAs IEJBU0VfSEksIFJECi0gICAgIHwgIC5ncHI2NCBleHRzdyBUTVAwLCBUTVAwCi0gICAgIHwgIHN1 YmZpYyBUTVAxLCBUTVAwLCBMSl9UVFJVRQotICAgICB8ICBhZGRlIFRNUDAsIFRNUDAsIFRNUDEK LS0gICAgfCAgc3R3eCBUTVAwLCBCQVNFLCBSQQotKyAgICB8ICBzdHd4IFRNUDAsIEJBU0VfSEks IFJBCi0gICAgIHwgIGluc19uZXh0MgotICAgICBicmVhazsKLSAgIGNhc2UgQkNfVU5NOgotICAg ICB8ICAvLyBSQSA9IGRzdCo4LCBSRCA9IHNyYyo4Ci0tICAgIHwgIGx3enV4IFRNUDEsIFJELCBC QVNFCi0tICAgIHwgICBsd3ogVE1QMCwgNChSRCkKLSsgICAgfCAgbHd6eCBUTVAxLCBCQVNFX0hJ LCBSRAotKyAgICB8ICAgbHd6eCBUTVAwLCBCQVNFX0xPLCBSRAotKyAgICB8LmlmIERVQUxOVU0g YW5kIG5vdCBHUFI2NAotKyAgICB8ICBtdHhlciBaRVJPCi0rICAgIHwuZW5kaWYKLSAgICAgfCAg Y2hlY2tudW0gVE1QMQotICAgICB8LmlmIERVQUxOVU0KLSAgICAgfCAgYm5lID41Ci1AQCAtMzM1 MiwxOCArMzY4NiwxMyBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNP cCBvcCwgaW50IGRlZm9wKQotICAgICB8LmVsc2UKLSAgICAgfCAgbmVnby4gVE1QMCwgVE1QMAot ICAgICB8ICBic28gPjQKLS0gICAgfDE6Ci0gICAgIHwuZW5kaWYKLSAgICAgfCAgaW5zX25leHQx Ci0tICAgIHwgIHN0d3V4IFRJU05VTSwgUkEsIEJBU0UKLS0gICAgfCAgIHN0dyBUTVAwLCA0KFJB KQotKyAgICB8ICBzdHd4IFRJU05VTSwgQkFTRV9ISSwgUkEKLSsgICAgfCAgIHN0d3ggVE1QMCwg QkFTRV9MTywgUkEKLSAgICAgfDM6Ci0gICAgIHwgIGluc19uZXh0MgotICAgICB8NDoKLS0gICAg fC5pZiBub3QgR1BSNjQKLS0gICAgfCAgLy8gUG90ZW50aWFsIG92ZXJmbG93LgotLSAgICB8ICBj aGVja292IFRNUDEsIDwxCQkJLy8gSWdub3JlIHVucmVsYXRlZCBvdmVyZmxvdy4KLS0gICAgfC5l bmRpZgotICAgICB8ICBsdXMgVE1QMSwgMHg0MWUwCQkJLy8gMl4zMS4KLSAgICAgfCAgbGkgVE1Q MCwgMAotICAgICB8ICBiID43Ci1AQCAtMzM3Myw4ICszNzAyLDggQEAgc3RhdGljIHZvaWQgYnVp bGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgeG9yaXMg VE1QMSwgVE1QMSwgMHg4MDAwCi0gICAgIHw3OgotICAgICB8ICBpbnNfbmV4dDEKLS0gICAgfCAg c3R3dXggVE1QMSwgUkEsIEJBU0UKLS0gICAgfCAgIHN0dyBUTVAwLCA0KFJBKQotKyAgICB8ICBz dHd4IFRNUDEsIEJBU0VfSEksIFJBCi0rICAgIHwgICBzdHd4IFRNUDAsIEJBU0VfTE8sIFJBCi0g ICAgIHwuaWYgRFVBTE5VTQotICAgICB8ICBiIDwzCi0gICAgIHwuZWxzZQotQEAgLTMzODMsMTUg KzM3MTIsMTUgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3As IGludCBkZWZvcCkKLSAgICAgYnJlYWs7Ci0gICBjYXNlIEJDX0xFTjoKLSAgICAgfCAgLy8gUkEg PSBkc3QqOCwgUkQgPSBzcmMqOAotLSAgICB8ICBsd3p1eCBUTVAwLCBSRCwgQkFTRQotLSAgICB8 ICAgbHd6IENBUkcxLCA0KFJEKQotKyAgICB8ICBsd3p4IFRNUDAsIEJBU0VfSEksIFJECi0rICAg IHwgICBsd3p4IENBUkcxLCBCQVNFX0xPLCBSRAotICAgICB8ICBjaGVja3N0ciBUTVAwOyBibmUg PjIKLSAgICAgfCAgbHd6IENSRVQxLCBTVFI6Q0FSRzEtPmxlbgotICAgICB8MToKLSAgICAgfC5p ZiBEVUFMTlVNCi0gICAgIHwgIGluc19uZXh0MQotLSAgICB8ICBzdHd1eCBUSVNOVU0sIFJBLCBC QVNFCi0tICAgIHwgICBzdHcgQ1JFVDEsIDQoUkEpCi0rICAgIHwgIHN0d3ggVElTTlVNLCBCQVNF X0hJLCBSQQotKyAgICB8ICAgc3R3eCBDUkVUMSwgQkFTRV9MTywgUkEKLSAgICAgfC5lbHNlCi0g ICAgIHwgIHRvbnVtX3UgZjAsIENSRVQxCQkvLyBSZXN1bHQgaXMgYSBub24tbmVnYXRpdmUgaW50 ZWdlci4KLSAgICAgfCAgaW5zX25leHQxCi1AQCAtMzQyNiw5ICszNzU1LDE2IEBAIHN0YXRpYyB2 b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHx8 dmsgPSAoKGludClvcCAtIEJDX0FERFZOKSAvIChCQ19BREROVi1CQ19BRERWTik7Ci0gICAgIHx8 c3dpdGNoICh2aykgewotICAgICB8fGNhc2UgMDoKLS0gICAgfCAgIGx3enggVE1QMSwgQkFTRSwg UkIKLSsgICAgfCAgIC5pZiBFTkRJQU5fTEUgYW5kIERVQUxOVU0KLSsgICAgfCAgICAgYWRkaSBU TVAyLCBSQywgNAotKyAgICB8ICAgLmVuZGlmCi0rICAgIHwgICBsd3p4IFRNUDEsIEJBU0VfSEks IFJCCi0gICAgIHwgICAuaWYgRFVBTE5VTQotLSAgICB8ICAgICBsd3p4IFRNUDIsIEtCQVNFLCBS QwotKyAgICB8ICAgICAuaWYgRU5ESUFOX0xFCi0rICAgIHwgICAgICAgbHd6eCBUTVAyLCBLQkFT RSwgVE1QMgotKyAgICB8ICAgICAuZWxzZQotKyAgICB8ICAgICAgIGx3enggVE1QMiwgS0JBU0Us IFJDCi0rICAgIHwgICAgIC5lbmRpZgotICAgICB8ICAgLmVuZGlmCi0gICAgIHwgICAgbGZkeCBm MTQsIEJBU0UsIFJCCi0gICAgIHwgICAgbGZkeCBmMTUsIEtCQVNFLCBSQwotQEAgLTM0NDIsOSAr Mzc3OCwxNiBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwg aW50IGRlZm9wKQotICAgICB8ICAgLmVuZGlmCi0gICAgIHx8ICBicmVhazsKLSAgICAgfHxjYXNl IDE6Ci0tICAgIHwgICBsd3p4IFRNUDEsIEJBU0UsIFJCCi0rICAgIHwgICAuaWYgRU5ESUFOX0xF IGFuZCBEVUFMTlVNCi0rICAgIHwgICAgIGFkZGkgVE1QMiwgUkMsIDQKLSsgICAgfCAgIC5lbmRp ZgotKyAgICB8ICAgbHd6eCBUTVAxLCBCQVNFX0hJLCBSQgotICAgICB8ICAgLmlmIERVQUxOVU0K LS0gICAgfCAgICAgbHd6eCBUTVAyLCBLQkFTRSwgUkMKLSsgICAgfCAgICAgLmlmIEVORElBTl9M RQotKyAgICB8ICAgICAgIGx3enggVE1QMiwgS0JBU0UsIFRNUDIKLSsgICAgfCAgICAgLmVsc2UK LSsgICAgfCAgICAgICBsd3p4IFRNUDIsIEtCQVNFLCBSQwotKyAgICB8ICAgICAuZW5kaWYKLSAg ICAgfCAgIC5lbmRpZgotICAgICB8ICAgIGxmZHggZjE1LCBCQVNFLCBSQgotICAgICB8ICAgIGxm ZHggZjE0LCBLQkFTRSwgUkMKLUBAIC0zNDU4LDggKzM4MDEsOCBAQCBzdGF0aWMgdm9pZCBidWls ZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8ICAgLmVuZGlm Ci0gICAgIHx8ICBicmVhazsKLSAgICAgfHxkZWZhdWx0OgotLSAgICB8ICAgbHd6eCBUTVAxLCBC QVNFLCBSQgotLSAgICB8ICAgbHd6eCBUTVAyLCBCQVNFLCBSQwotKyAgICB8ICAgbHd6eCBUTVAx LCBCQVNFX0hJLCBSQgotKyAgICB8ICAgbHd6eCBUTVAyLCBCQVNFX0hJLCBSQwotICAgICB8ICAg IGxmZHggZjE0LCBCQVNFLCBSQgotICAgICB8ICAgIGxmZHggZjE1LCBCQVNFLCBSQwotICAgICB8 ICAgY2hlY2tudW0gY3IwLCBUTVAxCi1AQCAtMzUxNCw0MSArMzg1Nyw2MiBAQCBzdGF0aWMgdm9p ZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8fHZr ID0gKChpbnQpb3AgLSBCQ19BRERWTikgLyAoQkNfQURETlYtQkNfQUREVk4pOwotICAgICB8fHN3 aXRjaCAodmspIHsKLSAgICAgfHxjYXNlIDA6Ci0tICAgIHwgICBsd3p1eCBUTVAxLCBSQiwgQkFT RQotLSAgICB8ICAgbHd6dXggVE1QMiwgUkMsIEtCQVNFCi0tICAgIHwgICAgbHd6IENBUkcxLCA0 KFJCKQotLSAgICB8ICAgY2hlY2tudW0gY3IwLCBUTVAxCi0tICAgIHwgICAgbHd6IENBUkcyLCA0 KFJDKQotKyAgICB8ICAgLmlmIEVORElBTl9MRQotKyAgICB8ICAgICBsd3p1eCBDQVJHMiwgUkMs IEtCQVNFCi0rICAgIHwgICAgIGx3enggVE1QMSwgUkIsIEJBU0VfSEkKLSsgICAgfCAgICAgIGx3 eiBUTVAyLCA0KFJDKQotKyAgICB8ICAgICBjaGVja251bSBjcjAsIFRNUDEKLSsgICAgfCAgICAg IGx3enV4IENBUkcxLCBSQiwgQkFTRQotKyAgICB8ICAgLmVsc2UKLSsgICAgfCAgICAgbHd6dXgg VE1QMSwgUkIsIEJBU0UKLSsgICAgfCAgICAgbHd6dXggVE1QMiwgUkMsIEtCQVNFCi0rICAgIHwg ICAgICBsd3ogQ0FSRzEsIDQoUkIpCi0rICAgIHwgICAgIGNoZWNrbnVtIGNyMCwgVE1QMQotKyAg ICB8ICAgICAgbHd6IENBUkcyLCA0KFJDKQotKyAgICB8ICAgLmVuZGlmCi0gICAgIHx8ICBicmVh azsKLSAgICAgfHxjYXNlIDE6Ci0tICAgIHwgICBsd3p1eCBUTVAxLCBSQiwgQkFTRQotLSAgICB8 ICAgbHd6dXggVE1QMiwgUkMsIEtCQVNFCi0tICAgIHwgICAgbHd6IENBUkcyLCA0KFJCKQotLSAg ICB8ICAgY2hlY2tudW0gY3IwLCBUTVAxCi0tICAgIHwgICAgbHd6IENBUkcxLCA0KFJDKQotKyAg ICB8ICAgLmlmIEVORElBTl9MRQotKyAgICB8ICAgICBsd3p1eCBDQVJHMSwgUkMsIEtCQVNFCi0r ICAgIHwgICAgIGx3enggVE1QMSwgUkIsIEJBU0VfSEkKLSsgICAgfCAgICAgIGx3eiBUTVAyLCA0 KFJDKQotKyAgICB8ICAgICBjaGVja251bSBjcjAsIFRNUDEKLSsgICAgfCAgICAgIGx3enV4IENB UkcyLCBSQiwgQkFTRQotKyAgICB8ICAgLmVsc2UKLSsgICAgfCAgICAgbHd6dXggVE1QMSwgUkIs IEJBU0UKLSsgICAgfCAgICAgbHd6dXggVE1QMiwgUkMsIEtCQVNFCi0rICAgIHwgICAgICBsd3og Q0FSRzIsIDQoUkIpCi0rICAgIHwgICAgIGNoZWNrbnVtIGNyMCwgVE1QMQotKyAgICB8ICAgICAg bHd6IENBUkcxLCA0KFJDKQotKyAgICB8ICAgLmVuZGlmCi0gICAgIHx8ICBicmVhazsKLSAgICAg fHxkZWZhdWx0OgotLSAgICB8ICAgbHd6dXggVE1QMSwgUkIsIEJBU0UKLS0gICAgfCAgIGx3enV4 IFRNUDIsIFJDLCBCQVNFCi0tICAgIHwgICAgbHd6IENBUkcxLCA0KFJCKQotLSAgICB8ICAgY2hl Y2tudW0gY3IwLCBUTVAxCi0tICAgIHwgICAgbHd6IENBUkcyLCA0KFJDKQotKyAgICB8ICAgLmlm IEVORElBTl9MRQotKyAgICB8ICAgICBsd3p4IFRNUDEsIFJCLCBCQVNFX0hJCi0rICAgIHwgICAg IGx3enggVE1QMiwgUkMsIEJBU0VfSEkKLSsgICAgfCAgICAgIGx3enV4IENBUkcxLCBSQiwgQkFT RQotKyAgICB8ICAgICBjaGVja251bSBjcjAsIFRNUDEKLSsgICAgfCAgICAgIGx3enV4IENBUkcy LCBSQywgQkFTRQotKyAgICB8ICAgLmVsc2UKLSsgICAgfCAgICAgbHd6dXggVE1QMSwgUkIsIEJB U0UKLSsgICAgfCAgICAgbHd6dXggVE1QMiwgUkMsIEJBU0UKLSsgICAgfCAgICAgIGx3eiBDQVJH MSwgNChSQikKLSsgICAgfCAgICAgY2hlY2tudW0gY3IwLCBUTVAxCi0rICAgIHwgICAgICBsd3og Q0FSRzIsIDQoUkMpCi0rICAgIHwgICAuZW5kaWYKLSAgICAgfHwgIGJyZWFrOwotICAgICB8fH0K LSsgICAgfCAgbXR4ZXIgWkVSTwotICAgICB8ICBjaGVja251bSBjcjEsIFRNUDIKLSAgICAgfCAg Ym5lID41Ci0gICAgIHwgIGJuZSBjcjEsID41Ci0gICAgIHwgIGludGlucyBDQVJHMSwgQ0FSRzEs IENBUkcyCi0tICAgIHwgIGJzbyA+NAotLSAgICB8MToKLSsgICAgfCAgaW5zX2FyaXRoZmFsbGJh Y2sgYnNvCi0gICAgIHwgIGluc19uZXh0MQotLSAgICB8ICBzdHd1eCBUSVNOVU0sIFJBLCBCQVNF Ci0tICAgIHwgIHN0dyBDQVJHMSwgNChSQSkKLSsgICAgfCAgc3R3eCBUSVNOVU0sIEJBU0VfSEks IFJBCi0rICAgIHwgIHN0d3ggQ0FSRzEsIEJBU0VfTE8sIFJBCi0gICAgIHwyOgotICAgICB8ICBp bnNfbmV4dDIKLS0gICAgfDQ6ICAvLyBPdmVyZmxvdy4KLS0gICAgfCAgY2hlY2tvdiBUTVAwLCA8 MQkJCS8vIElnbm9yZSB1bnJlbGF0ZWQgb3ZlcmZsb3cuCi0tICAgIHwgIGluc19hcml0aGZhbGxi YWNrIGIKLSAgICAgfDU6ICAvLyBGUCB2YXJpYW50LgotICAgICB8fGlmICh2ayA9PSAxKSB7Ci0g ICAgIHwgIGxmZCBmMTUsIDAoUkIpCi1AQCAtMzYyMCw5ICszOTg0LDkgQEAgc3RhdGljIHZvaWQg YnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgYnJlYWs7 Ci0gICBjYXNlIEJDX1BPVzoKLSAgICAgfCAgLy8gTllJOiAocGFydGlhbCkgaW50ZWdlciBhcml0 aG1ldGljLgotLSAgICB8ICBsd3p4IFRNUDEsIEJBU0UsIFJCCi0rICAgIHwgIGx3enggVE1QMSwg QkFTRV9ISSwgUkIKLSAgICAgfCAgIGxmZHggRkFSRzEsIEJBU0UsIFJCCi0tICAgIHwgIGx3engg VE1QMiwgQkFTRSwgUkMKLSsgICAgfCAgbHd6eCBUTVAyLCBCQVNFX0hJLCBSQwotICAgICB8ICAg bGZkeCBGQVJHMiwgQkFTRSwgUkMKLSAgICAgfCAgY2hlY2tudW0gY3IwLCBUTVAxCi0gICAgIHwg IGNoZWNrbnVtIGNyMSwgVE1QMgotQEAgLTM2NDgsNiArNDAxMiw3IEBAIHN0YXRpYyB2b2lkIGJ1 aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgIC8vIFJl dHVybnMgTlVMTCAoZmluaXNoZWQpIG9yIFRWYWx1ZSAqIChtZXRhbWV0aG9kKS4KLSAgICAgfCAg Y21wbHdpIENSRVQxLCAwCi0gICAgIHwgICBscCBCQVNFLCBMLT5iYXNlCi0rICAgIHwgICBhZGRp IEJBU0VQNCwgQkFTRSwgNAotICAgICB8ICBibmUgLT52bWV0YV9iaW5vcAotICAgICB8ICBpbnNf bmV4dDEKLSAgICAgfCAgbGZkeCBmMCwgQkFTRSwgU0FWRTAJCS8vIENvcHkgcmVzdWx0IGZyb20g UkIgdG8gUkEuCi1AQCAtMzY2NCw4ICs0MDI5LDggQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1 aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgaW5zX25leHQxCi0gICAg IHwgIGx3enggVE1QMCwgS0JBU0UsIFRNUDEJCS8vIEtCQVNFLTQtc3RyX2NvbnN0KjQKLSAgICAg fCAgbGkgVE1QMiwgTEpfVFNUUgotLSAgICB8ICBzdHd1eCBUTVAyLCBSQSwgQkFTRQotLSAgICB8 ICBzdHcgVE1QMCwgNChSQSkKLSsgICAgfCAgc3R3eCBUTVAyLCBCQVNFX0hJLCBSQQotKyAgICB8 ICBzdHd4IFRNUDAsIEJBU0VfTE8sIFJBCi0gICAgIHwgIGluc19uZXh0MgotICAgICBicmVhazsK LSAgIGNhc2UgQkNfS0NEQVRBOgotQEAgLTM2NzYsOCArNDA0MSw4IEBAIHN0YXRpYyB2b2lkIGJ1 aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgIGluc19u ZXh0MQotICAgICB8ICBsd3p4IFRNUDAsIEtCQVNFLCBUTVAxCQkvLyBLQkFTRS00LWNkYXRhX2Nv bnN0KjQKLSAgICAgfCAgbGkgVE1QMiwgTEpfVENEQVRBCi0tICAgIHwgIHN0d3V4IFRNUDIsIFJB LCBCQVNFCi0tICAgIHwgIHN0dyBUTVAwLCA0KFJBKQotKyAgICB8ICBzdHd4IFRNUDIsIEJBU0Vf SEksIFJBCi0rICAgIHwgIHN0d3ggVE1QMCwgQkFTRV9MTywgUkEKLSAgICAgfCAgaW5zX25leHQy Ci0gICAgIHwuZW5kaWYKLSAgICAgYnJlYWs7Ci1AQCAtMzY4NywxNCArNDA1MiwxNSBAQCBzdGF0 aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAg ICB8ICBzbHdpIFJELCBSRCwgMTMKLSAgICAgfCAgc3Jhd2kgUkQsIFJELCAxNgotICAgICB8ICBp bnNfbmV4dDEKLS0gICAgfCAgIHN0d3V4IFRJU05VTSwgUkEsIEJBU0UKLS0gICAgfCAgIHN0dyBS RCwgNChSQSkKLSsgICAgfCAgIHN0d3ggVElTTlVNLCBCQVNFX0hJLCBSQQotKyAgICB8ICAgc3R3 eCBSRCwgQkFTRV9MTywgUkEKLSAgICAgfCAgaW5zX25leHQyCi0gICAgIHwuZWxzZQotICAgICB8 ICAvLyBUaGUgc29mdC1mbG9hdCBhcHByb2FjaCBpcyBmYXN0ZXIuCi0gICAgIHwgIHNsd2kgUkQs IFJELCAxMwotICAgICB8ICBzcmF3aSBUTVAxLCBSRCwgMzEKLSAgICAgfCAgeG9yIFRNUDIsIFRN UDEsIFJECi0rICAgIHwgIC5ncHI2NCBleHRzdyBSRCwgUkQKLSAgICAgfCAgc3ViIFRNUDIsIFRN UDIsIFRNUDEJCS8vIFRNUDIgPSBhYnMoeCkKLSAgICAgfCAgY250bHp3IFRNUDMsIFRNUDIKLSAg ICAgfCAgc3ViZmljIFRNUDEsIFRNUDMsIDB4NDBkCQkvLyBUTVAxID0gZXhwb25lbnQtMQotQEAg LTM3MDYsOCArNDA3Miw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBC Q09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgICBhZGQgUkQsIFJELCBUTVAxCQkvLyBoaSA9IGhp ICsgZXhwb25lbnQtMQotICAgICB8ICAgIGFuZCBSRCwgUkQsIFRNUDAJCS8vIGhpID0geCA9PSAw ID8gMCA6IGhpCi0gICAgIHwgIGluc19uZXh0MQotLSAgICB8ICAgIHN0d3V4IFJELCBSQSwgQkFT RQotLSAgICB8ICAgIHN0dyBaRVJPLCA0KFJBKQotKyAgICB8ICAgIHN0d3ggUkQsIEJBU0VfSEks IFJBCi0rICAgIHwgICAgc3R3eCBaRVJPLCBCQVNFX0xPLCBSQQotICAgICB8ICBpbnNfbmV4dDIK LSAgICAgfC5lbmRpZgotICAgICBicmVhazsKLUBAIC0zNzIzLDE1ICs0MDg5LDE1IEBAIHN0YXRp YyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAg IHwgIHNyd2kgVE1QMSwgUkQsIDMKLSAgICAgfCAgbm90IFRNUDAsIFRNUDEKLSAgICAgfCAgaW5z X25leHQxCi0tICAgIHwgIHN0d3ggVE1QMCwgQkFTRSwgUkEKLSsgICAgfCAgc3R3eCBUTVAwLCBC QVNFX0hJLCBSQQotICAgICB8ICBpbnNfbmV4dDIKLSAgICAgYnJlYWs7Ci0gICBjYXNlIEJDX0tO SUw6Ci0gICAgIHwgIC8vIFJBID0gYmFzZSo4LCBSRCA9IGVuZCo4Ci0tICAgIHwgIHN0d3ggVElT TklMLCBCQVNFLCBSQQotKyAgICB8ICBzdHd4IFRJU05JTCwgQkFTRV9ISSwgUkEKLSAgICAgfCAg IGFkZGkgUkEsIFJBLCA4Ci0gICAgIHwxOgotLSAgICB8ICBzdHd4IFRJU05JTCwgQkFTRSwgUkEK LSsgICAgfCAgc3R3eCBUSVNOSUwsIEJBU0VfSEksIFJBCi0gICAgIHwgIGNtcHcgUkEsIFJECi0g ICAgIHwgICBhZGRpIFJBLCBSQSwgOAotICAgICB8ICBibHQgPDEKLUBAIC0zNzYzLDEwICs0MTI5 LDEwIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQg ZGVmb3ApCi0gICAgIHwgICBsd3ogQ0FSRzIsIFVQVkFMOlJCLT52Ci0gICAgIHwgIGFuZGl4LiBU TVAzLCBUTVAzLCBMSl9HQ19CTEFDSwkvLyBpc2JsYWNrKHV2KQotICAgICB8ICAgIGxieiBUTVAw LCBVUFZBTDpSQi0+Y2xvc2VkCi0tICAgIHwgICBsd3ogVE1QMiwgMChSRCkKLSsgICAgfCAgIGx3 eiBUTVAyLCBXT1JEX0hJKFJEKQotICAgICB8ICAgc3RmZCBmMCwgMChDQVJHMikKLSAgICAgfCAg ICBjbXBsd2kgY3IxLCBUTVAwLCAwCi0tICAgIHwgICBsd3ogVE1QMSwgNChSRCkKLSsgICAgfCAg IGx3eiBUTVAxLCBXT1JEX0xPKFJEKQotICAgICB8ICBjcm9yIDQqY3IwK2VxLCA0KmNyMCtlcSwg NCpjcjErZXEKLSAgICAgfCAgIHN1YmkgVE1QMiwgVE1QMiwgKExKX1ROVU1YKzEpCi0gICAgIHwg IGJuZSA+MgkJCQkvLyBVcHZhbHVlIGlzIGNsb3NlZCBhbmQgYmxhY2s/Ci1AQCAtMzc5OSw4ICs0 MTY1LDggQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGlu dCBkZWZvcCkKLSAgICAgfCAgIGxieiBUTVAzLCBTVFI6VE1QMS0+bWFya2VkCi0gICAgIHwgICBs YnogVE1QMiwgVVBWQUw6UkItPmNsb3NlZAotICAgICB8ICAgbGkgVE1QMCwgTEpfVFNUUgotLSAg ICB8ICAgc3R3IFNUUjpUTVAxLCA0KENBUkcyKQotLSAgICB8ICAgc3R3IFRNUDAsIDAoQ0FSRzIp Ci0rICAgIHwgICBzdHcgU1RSOlRNUDEsIFdPUkRfTE8oQ0FSRzIpCi0rICAgIHwgICBzdHcgVE1Q MCwgV09SRF9ISShDQVJHMikKLSAgICAgfCAgYm5lID4yCi0gICAgIHwxOgotICAgICB8ICBpbnNf bmV4dAotQEAgLTM4MzcsNyArNDIwMyw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0 eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgIGx3enggVVBWQUw6UkIsIExGVU5D OlJCLCBSQQotICAgICB8ICBpbnNfbmV4dDEKLSAgICAgfCAgbHd6IFRNUDEsIFVQVkFMOlJCLT52 Ci0tICAgIHwgIHN0dyBUTVAwLCAwKFRNUDEpCi0rICAgIHwgIHN0dyBUTVAwLCBXT1JEX0hJKFRN UDEpCi0gICAgIHwgIGluc19uZXh0MgotICAgICBicmVhazsKLSAKLUBAIC0zODUyLDYgKzQyMTgs NyBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRl Zm9wKQotICAgICB8ICAgYWRkIENBUkcyLCBCQVNFLCBSQQotICAgICB8ICBibCBleHRlcm4gbGpf ZnVuY19jbG9zZXV2CS8vIChsdWFfU3RhdGUgKkwsIFRWYWx1ZSAqbGV2ZWwpCi0gICAgIHwgIGxw IEJBU0UsIEwtPmJhc2UKLSsgICAgfCAgYWRkaSBCQVNFUDQsIEJBU0UsIDQKLSAgICAgfDE6Ci0g ICAgIHwgIGluc19uZXh0Ci0gICAgIGJyZWFrOwotQEAgLTM4NzAsOCArNDIzNyw5IEBAIHN0YXRp YyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAg IHwgIC8vIFJldHVybnMgR0NmdW5jTCAqLgotICAgICB8ICBscCBCQVNFLCBMLT5iYXNlCi0gICAg IHwgICBsaSBUTVAwLCBMSl9URlVOQwotLSAgICB8ICBzdHd1eCBUTVAwLCBSQSwgQkFTRQotLSAg ICB8ICBzdHcgTEZVTkM6Q1JFVDEsIDQoUkEpCi0rICAgIHwgIGFkZGkgQkFTRVA0LCBCQVNFLCA0 Ci0rICAgIHwgIHN0d3ggVE1QMCwgQkFTRV9ISSwgUkEKLSsgICAgfCAgc3R3eCBMRlVOQzpDUkVU MSwgQkFTRV9MTywgUkEKLSAgICAgfCAgaW5zX25leHQKLSAgICAgYnJlYWs7Ci0gCi1AQCAtMzkw NCw4ICs0MjcyLDkgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Ag b3AsIGludCBkZWZvcCkKLSAgICAgfQotICAgICB8ICBscCBCQVNFLCBMLT5iYXNlCi0gICAgIHwg ICBsaSBUTVAwLCBMSl9UVEFCCi0tICAgIHwgIHN0d3V4IFRNUDAsIFJBLCBCQVNFCi0tICAgIHwg IHN0dyBUQUI6Q1JFVDEsIDQoUkEpCi0rICAgIHwgIGFkZGkgQkFTRVA0LCBCQVNFLCA0Ci0rICAg IHwgIHN0d3ggVE1QMCwgQkFTRV9ISSwgUkEKLSsgICAgfCAgc3R3eCBUQUI6Q1JFVDEsIEJBU0Vf TE8sIFJBCi0gICAgIHwgIGluc19uZXh0Ci0gICAgIGlmIChvcCA9PSBCQ19UTkVXKSB7Ci0gICAg ICAgfDM6Ci1AQCAtMzkzOCwxMyArNDMwNywxMyBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVp bGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotIAotICAgY2FzZSBCQ19UR0VUVjoKLSAg ICAgfCAgLy8gUkEgPSBkc3QqOCwgUkIgPSB0YWJsZSo4LCBSQyA9IGtleSo4Ci0tICAgIHwgIGx3 enV4IENBUkcxLCBSQiwgQkFTRQotLSAgICB8ICBsd3p1eCBDQVJHMiwgUkMsIEJBU0UKLS0gICAg fCAgIGx3eiBUQUI6UkIsIDQoUkIpCi0rICAgIHwgIGx3enggQ0FSRzEsIEJBU0VfSEksIFJCCi0r ICAgIHwgIGx3enggQ0FSRzIsIEJBU0VfSEksIFJDCi0rICAgIHwgICBsd3p4IFRBQjpSQiwgQkFT RV9MTywgUkIKLSAgICAgfC5pZiBEVUFMTlVNCi0tICAgIHwgICBsd3ogUkMsIDQoUkMpCi0rICAg IHwgICBsd3p4IFJDLCBCQVNFX0xPLCBSQwotICAgICB8LmVsc2UKLS0gICAgfCAgIGxmZCBmMCwg MChSQykKLSsgICAgfCAgIGxmZHggZjAsIEJBU0UsIFJDCi0gICAgIHwuZW5kaWYKLSAgICAgfCAg Y2hlY2t0YWIgQ0FSRzEKLSAgICAgfCAgIGNoZWNrbnVtIGNyMSwgQ0FSRzIKLUBAIC0zOTcxLDgg KzQzNDAsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3As IGludCBkZWZvcCkKLSAgICAgfCAgIHNsd2kgVE1QMiwgVE1QMiwgMwotICAgICB8LmVuZGlmCi0g ICAgIHwgIGJsZSAtPnZtZXRhX3RnZXR2CQkvLyBJbnRlZ2VyIGtleSBhbmQgaW4gYXJyYXkgcGFy dD8KLS0gICAgfCAgbHd6eCBUTVAwLCBUTVAxLCBUTVAyCi0tICAgIHwgICBsZmR4IGYxNCwgVE1Q MSwgVE1QMgotKyAgICB8ICAuaWYgRU5ESUFOX0xFCi0rICAgIHwgICAgbGZkdXggZjE0LCBUTVAx LCBUTVAyCi0rICAgIHwgICAgbHd6IFRNUDAsIFdPUkRfSEkoVE1QMSkKLSsgICAgfCAgLmVsc2UK LSsgICAgfCAgICBsd3p4IFRNUDAsIFRNUDEsIFRNUDIKLSsgICAgfCAgICBsZmR4IGYxNCwgVE1Q MSwgVE1QMgotKyAgICB8ICAuZW5kaWYKLSAgICAgfCAgY2hlY2tuaWwgVE1QMDsgYmVxID4yCi0g ICAgIHwxOgotICAgICB8ICBpbnNfbmV4dDEKLUBAIC0zOTkxLDE1ICs0MzY1LDE1IEBAIHN0YXRp YyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAg IHw1OgotICAgICB8ICBjaGVja3N0ciBDQVJHMjsgYm5lIC0+dm1ldGFfdGdldHYKLSAgICAgfC5p ZiBub3QgRFVBTE5VTQotLSAgICB8ICBsd3ogU1RSOlJDLCA0KFJDKQotKyAgICB8ICBsd3p4IFNU UjpSQywgQkFTRV9MTywgUkMKLSAgICAgfC5lbmRpZgotICAgICB8ICBiIC0+QkNfVEdFVFNfWgkJ CS8vIFN0cmluZyBrZXk/Ci0gICAgIGJyZWFrOwotICAgY2FzZSBCQ19UR0VUUzoKLSAgICAgfCAg Ly8gUkEgPSBkc3QqOCwgUkIgPSB0YWJsZSo4LCBSQyA9IHN0cl9jb25zdCo4ICh+KQotLSAgICB8 ICBsd3p1eCBDQVJHMSwgUkIsIEJBU0UKLSsgICAgfCAgbHd6eCBDQVJHMSwgQkFTRV9ISSwgUkIK LSAgICAgfCAgIHNyd2kgVE1QMSwgUkMsIDEKLS0gICAgfCAgICBsd3ogVEFCOlJCLCA0KFJCKQot KyAgICB8ICAgIGx3enggVEFCOlJCLCBCQVNFX0xPLCBSQgotICAgICB8ICAgc3ViZmljIFRNUDEs IFRNUDEsIC00Ci0gICAgIHwgIGNoZWNrdGFiIENBUkcxCi0gICAgIHwgICBsd3p4IFNUUjpSQywg S0JBU0UsIFRNUDEJLy8gS0JBU0UtNC1zdHJfY29uc3QqNAotQEAgLTQwMTUsMTYgKzQzODksMTYg QEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZv cCkKLSAgICAgfCAgc3ViIFRNUDEsIFRNUDAsIFRNUDEKLSAgICAgfCAgYWRkIE5PREU6VE1QMiwg Tk9ERTpUTVAyLCBUTVAxCS8vIG5vZGUgPSB0YWItPm5vZGUgKyAoaWR4KjMyLWlkeCo4KQotICAg ICB8MToKLS0gICAgfCAgbHd6IENBUkcxLCBOT0RFOlRNUDItPmtleQotLSAgICB8ICAgbHd6IFRN UDAsIDQrb2Zmc2V0b2YoTm9kZSwga2V5KShOT0RFOlRNUDIpCi0tICAgIHwgICAgbHd6IENBUkcy LCBOT0RFOlRNUDItPnZhbAotLSAgICB8ICAgICBsd3ogVE1QMSwgNCtvZmZzZXRvZihOb2RlLCB2 YWwpKE5PREU6VE1QMikKLSsgICAgfCAgbHd6IENBUkcxLCBXT1JEX0hJK29mZnNldG9mKE5vZGUs IGtleSkoTk9ERTpUTVAyKQotKyAgICB8ICAgbHd6IFRNUDAsIFdPUkRfTE8rb2Zmc2V0b2YoTm9k ZSwga2V5KShOT0RFOlRNUDIpCi0rICAgIHwgICAgbHd6IENBUkcyLCBXT1JEX0hJK29mZnNldG9m KE5vZGUsIHZhbCkoTk9ERTpUTVAyKQotKyAgICB8ICAgICBsd3ogVE1QMSwgV09SRF9MTytvZmZz ZXRvZihOb2RlLCB2YWwpKE5PREU6VE1QMikKLSAgICAgfCAgY2hlY2tzdHIgQ0FSRzE7IGJuZSA+ NAotICAgICB8ICAgY21wdyBUTVAwLCBTVFI6UkM7IGJuZSA+NAotICAgICB8ICAgIGNoZWNrbmls IENBUkcyOyBiZXEgPjUJCS8vIEtleSBmb3VuZCwgYnV0IG5pbCB2YWx1ZT8KLSAgICAgfDM6Ci0t ICAgIHwgICAgc3R3dXggQ0FSRzIsIFJBLCBCQVNFCi0tICAgIHwgICAgIHN0dyBUTVAxLCA0KFJB KQotKyAgICB8ICAgIHN0d3ggQ0FSRzIsIEJBU0VfSEksIFJBCi0rICAgIHwgICAgIHN0d3ggVE1Q MSwgQkFTRV9MTywgUkEKLSAgICAgfCAgaW5zX25leHQKLSAgICAgfAotICAgICB8NDogIC8vIEZv bGxvdyBoYXNoIGNoYWluLgotQEAgLTQwNDUsMTUgKzQ0MTksMjAgQEAgc3RhdGljIHZvaWQgYnVp bGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgYnJlYWs7Ci0g ICBjYXNlIEJDX1RHRVRCOgotICAgICB8ICAvLyBSQSA9IGRzdCo4LCBSQiA9IHRhYmxlKjgsIFJD ID0gaW5kZXgqOAotLSAgICB8ICBsd3p1eCBDQVJHMSwgUkIsIEJBU0UKLSsgICAgfCAgbHd6eCBD QVJHMSwgQkFTRV9ISSwgUkIKLSAgICAgfCAgIHNyd2kgVE1QMCwgUkMsIDMKLS0gICAgfCAgIGx3 eiBUQUI6UkIsIDQoUkIpCi0rICAgIHwgICBsd3p4IFRBQjpSQiwgQkFTRV9MTywgUkIKLSAgICAg fCAgY2hlY2t0YWIgQ0FSRzE7IGJuZSAtPnZtZXRhX3RnZXRiCi0gICAgIHwgIGx3eiBUTVAxLCBU QUI6UkItPmFzaXplCi0gICAgIHwgICBsd3ogVE1QMiwgVEFCOlJCLT5hcnJheQotICAgICB8ICBj bXBsdyBUTVAwLCBUTVAxOyBiZ2UgLT52bWV0YV90Z2V0YgotLSAgICB8ICBsd3p4IFRNUDEsIFRN UDIsIFJDCi0tICAgIHwgICBsZmR4IGYwLCBUTVAyLCBSQwotKyAgICB8ICAuaWYgRU5ESUFOX0xF Ci0rICAgIHwgICAgbGZkdXggZjAsIFRNUDIsIFJDCi0rICAgIHwgICAgbHd6IFRNUDEsIFdPUkRf SEkoVE1QMikKLSsgICAgfCAgLmVsc2UKLSsgICAgfCAgICBsd3p4IFRNUDEsIFRNUDIsIFJDCi0r ICAgIHwgICAgbGZkeCBmMCwgVE1QMiwgUkMKLSsgICAgfCAgLmVuZGlmCi0gICAgIHwgIGNoZWNr bmlsIFRNUDE7IGJlcSA+NQotICAgICB8MToKLSAgICAgfCAgaW5zX25leHQxCi1AQCAtNDA3MSwx MiArNDQ1MCwxMCBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBv cCwgaW50IGRlZm9wKQotICAgICBicmVhazsKLSAgIGNhc2UgQkNfVEdFVFI6Ci0gICAgIHwgIC8v IFJBID0gZHN0KjgsIFJCID0gdGFibGUqOCwgUkMgPSBrZXkqOAotLSAgICB8ICBhZGQgUkIsIEJB U0UsIFJCCi0tICAgIHwgIGx3eiBUQUI6Q0FSRzEsIDQoUkIpCi0rICAgIHwgIGx3enggVEFCOkNB UkcxLCBCQVNFX0xPLCBSQgotICAgICB8LmlmIERVQUxOVU0KLS0gICAgfCAgYWRkIFJDLCBCQVNF LCBSQwotICAgICB8ICBsd3ogVE1QMCwgVEFCOkNBUkcxLT5hc2l6ZQotLSAgICB8ICBsd3ogQ0FS RzIsIDQoUkMpCi0rICAgIHwgIGx3enggQ0FSRzIsIEJBU0VfTE8sIFJDCi0gICAgIHwgICBsd3og VE1QMSwgVEFCOkNBUkcxLT5hcnJheQotICAgICB8LmVsc2UKLSAgICAgfCAgbGZkeCBmMCwgQkFT RSwgUkMKLUBAIC00MDk2LDEzICs0NDczLDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWls ZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gCi0gICBjYXNlIEJDX1RTRVRWOgotICAg ICB8ICAvLyBSQSA9IHNyYyo4LCBSQiA9IHRhYmxlKjgsIFJDID0ga2V5KjgKLS0gICAgfCAgbHd6 dXggQ0FSRzEsIFJCLCBCQVNFCi0tICAgIHwgIGx3enV4IENBUkcyLCBSQywgQkFTRQotLSAgICB8 ICAgbHd6IFRBQjpSQiwgNChSQikKLSsgICAgfCAgbHd6eCBDQVJHMSwgQkFTRV9ISSwgUkIKLSsg ICAgfCAgbHd6eCBDQVJHMiwgQkFTRV9ISSwgUkMKLSsgICAgfCAgIGx3enggVEFCOlJCLCBCQVNF X0xPLCBSQgotICAgICB8LmlmIERVQUxOVU0KLS0gICAgfCAgIGx3eiBSQywgNChSQykKLSsgICAg fCAgIGx3enggUkMsIEJBU0VfTE8sIFJDCi0gICAgIHwuZWxzZQotLSAgICB8ICAgbGZkIGYwLCAw KFJDKQotKyAgICB8ICAgbGZkeCBmMCwgQkFTRSwgUkMKLSAgICAgfC5lbmRpZgotICAgICB8ICBj aGVja3RhYiBDQVJHMQotICAgICB8ICAgY2hlY2tudW0gY3IxLCBDQVJHMgotQEAgLTQxMjksNyAr NDUwNiwxMiBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwg aW50IGRlZm9wKQotICAgICB8ICAgc2x3aSBUTVAwLCBUTVAyLCAzCi0gICAgIHwuZW5kaWYKLSAg ICAgfCAgYmxlIC0+dm1ldGFfdHNldHYJCS8vIEludGVnZXIga2V5IGFuZCBpbiBhcnJheSBwYXJ0 PwotKyAgICB8ICAuaWYgRU5ESUFOX0xFCi0rICAgIHwgICBhZGRpIFRNUDIsIFRNUDEsIDQKLSsg ICAgfCAgIGx3enggVE1QMiwgVE1QMiwgVE1QMAotKyAgICB8ICAuZWxzZQotICAgICB8ICAgbHd6 eCBUTVAyLCBUTVAxLCBUTVAwCi0rICAgIHwgIC5lbmRpZgotICAgICB8ICBsYnogVE1QMywgVEFC OlJCLT5tYXJrZWQKLSAgICAgfCAgICBsZmR4IGYxNCwgQkFTRSwgUkEKLSAgICAgfCAgIGNoZWNr bmlsIFRNUDI7IGJlcSA+MwotQEAgLTQxNTIsNyArNDUzNCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxk X2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHw1OgotICAgICB8 ICBjaGVja3N0ciBDQVJHMjsgYm5lIC0+dm1ldGFfdHNldHYKLSAgICAgfC5pZiBub3QgRFVBTE5V TQotLSAgICB8ICBsd3ogU1RSOlJDLCA0KFJDKQotKyAgICB8ICBsd3p4IFNUUjpSQywgQkFTRV9M TywgUkMKLSAgICAgfC5lbmRpZgotICAgICB8ICBiIC0+QkNfVFNFVFNfWgkJCS8vIFN0cmluZyBr ZXk/Ci0gICAgIHwKLUBAIC00MTYyLDkgKzQ1NDQsOSBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMo QnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICBicmVhazsKLSAgIGNhc2Ug QkNfVFNFVFM6Ci0gICAgIHwgIC8vIFJBID0gc3JjKjgsIFJCID0gdGFibGUqOCwgUkMgPSBzdHJf Y29uc3QqOCAofikKLS0gICAgfCAgbHd6dXggQ0FSRzEsIFJCLCBCQVNFCi0rICAgIHwgIGx3engg Q0FSRzEsIEJBU0VfSEksIFJCCi0gICAgIHwgICBzcndpIFRNUDEsIFJDLCAxCi0tICAgIHwgICAg bHd6IFRBQjpSQiwgNChSQikKLSsgICAgfCAgICBsd3p4IFRBQjpSQiwgQkFTRV9MTywgUkIKLSAg ICAgfCAgIHN1YmZpYyBUTVAxLCBUTVAxLCAtNAotICAgICB8ICBjaGVja3RhYiBDQVJHMQotICAg ICB8ICAgbHd6eCBTVFI6UkMsIEtCQVNFLCBUTVAxCS8vIEtCQVNFLTQtc3RyX2NvbnN0KjQKLUBA IC00MTgzLDkgKzQ1NjUsOSBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwg QkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8ICAgIGxieiBUTVAzLCBUQUI6UkItPm1hcmtlZAot ICAgICB8ICBhZGQgTk9ERTpUTVAyLCBOT0RFOlRNUDIsIFRNUDEJLy8gbm9kZSA9IHRhYi0+bm9k ZSArIChpZHgqMzItaWR4KjgpCi0gICAgIHwxOgotLSAgICB8ICBsd3ogQ0FSRzEsIE5PREU6VE1Q Mi0+a2V5Ci0tICAgIHwgICBsd3ogVE1QMCwgNCtvZmZzZXRvZihOb2RlLCBrZXkpKE5PREU6VE1Q MikKLS0gICAgfCAgICBsd3ogQ0FSRzIsIE5PREU6VE1QMi0+dmFsCi0rICAgIHwgIGx3eiBDQVJH MSwgV09SRF9ISStvZmZzZXRvZihOb2RlLCBrZXkpKE5PREU6VE1QMikKLSsgICAgfCAgIGx3eiBU TVAwLCBXT1JEX0xPK29mZnNldG9mKE5vZGUsIGtleSkoTk9ERTpUTVAyKQotKyAgICB8ICAgIGx3 eiBDQVJHMiwgV09SRF9ISStvZmZzZXRvZihOb2RlLCB2YWwpKE5PREU6VE1QMikKLSAgICAgfCAg ICAgbHd6IE5PREU6VE1QMSwgTk9ERTpUTVAyLT5uZXh0Ci0gICAgIHwgIGNoZWNrc3RyIENBUkcx OyBibmUgPjUKLSAgICAgfCAgIGNtcHcgVE1QMCwgU1RSOlJDOyBibmUgPjUKLUBAIC00MjI1LDEz ICs0NjA3LDE0IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9w LCBpbnQgZGVmb3ApCi0gICAgIHwgIGJlcSAtPnZtZXRhX3RzZXRzCQkvLyAnbm8gX19uZXdpbmRl eCcgZmxhZyBOT1Qgc2V0OiBjaGVjay4KLSAgICAgfDY6Ci0gICAgIHwgIGxpIFRNUDAsIExKX1RT VFIKLS0gICAgfCAgIHN0dyBTVFI6UkMsIDQoQ0FSRzMpCi0rICAgIHwgICBzdHcgU1RSOlJDLCBX T1JEX0xPKENBUkczKQotICAgICB8ICAgbXIgQ0FSRzIsIFRBQjpSQgotLSAgICB8ICBzdHcgVE1Q MCwgMChDQVJHMykKLSsgICAgfCAgc3R3IFRNUDAsIFdPUkRfSEkoQ0FSRzMpCi0gICAgIHwgIGJs IGV4dGVybiBsal90YWJfbmV3a2V5CQkvLyAobHVhX1N0YXRlICpMLCBHQ3RhYiAqdCwgVFZhbHVl ICprKQotICAgICB8ICAvLyBSZXR1cm5zIFRWYWx1ZSAqLgotICAgICB8ICBscCBCQVNFLCBMLT5i YXNlCi0gICAgIHwgIHN0ZmQgZjE0LCAwKENSRVQxKQotKyAgICB8ICAgYWRkaSBCQVNFUDQsIEJB U0UsIDQKLSAgICAgfCAgYiA8MwkJCQkvLyBObyAybmQgd3JpdGUgYmFycmllciBuZWVkZWQuCi0g ICAgIHwKLSAgICAgfDc6ICAvLyBQb3NzaWJsZSB0YWJsZSB3cml0ZSBiYXJyaWVyIGZvciB0aGUg dmFsdWUuIFNraXAgdmFsaXN3aGl0ZSBjaGVjay4KLUBAIC00MjQwLDkgKzQ2MjMsOSBAQCBzdGF0 aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAg ICBicmVhazsKLSAgIGNhc2UgQkNfVFNFVEI6Ci0gICAgIHwgIC8vIFJBID0gc3JjKjgsIFJCID0g dGFibGUqOCwgUkMgPSBpbmRleCo4Ci0tICAgIHwgIGx3enV4IENBUkcxLCBSQiwgQkFTRQotKyAg ICB8ICBsd3p4IENBUkcxLCBCQVNFX0hJLCBSQgotICAgICB8ICAgc3J3aSBUTVAwLCBSQywgMwot LSAgICB8ICAgbHd6IFRBQjpSQiwgNChSQikKLSsgICAgfCAgIGx3enggVEFCOlJCLCBCQVNFX0xP LCBSQgotICAgICB8ICBjaGVja3RhYiBDQVJHMTsgYm5lIC0+dm1ldGFfdHNldGIKLSAgICAgfCAg bHd6IFRNUDEsIFRBQjpSQi0+YXNpemUKLSAgICAgfCAgIGx3eiBUTVAyLCBUQUI6UkItPmFycmF5 Ci1AQCAtNDI1MCw3ICs0NjMzLDEyIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAq Y3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgIGNtcGx3IFRNUDAsIFRNUDEKLSAgICAg fCAgIGxmZHggZjE0LCBCQVNFLCBSQQotICAgICB8ICBiZ2UgLT52bWV0YV90c2V0YgotLSAgICB8 ICBsd3p4IFRNUDEsIFRNUDIsIFJDCi0rICAgIHwgIC5pZiBFTkRJQU5fTEUKLSsgICAgfCAgICBh ZGRpIFRNUDEsIFRNUDIsIDQKLSsgICAgfCAgICBsd3p4IFRNUDEsIFRNUDEsIFJDCi0rICAgIHwg IC5lbHNlCi0rICAgIHwgICAgbHd6eCBUTVAxLCBUTVAyLCBSQwotKyAgICB8ICAuZW5kaWYKLSAg ICAgfCAgY2hlY2tuaWwgVE1QMTsgYmVxID41Ci0gICAgIHwxOgotICAgICB8ICBhbmRpeC4gVE1Q MCwgVE1QMywgTEpfR0NfQkxBQ0sJLy8gaXNibGFjayh0YWJsZSkKLUBAIC00Mjc0LDEzICs0NjYy LDExIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQg ZGVmb3ApCi0gICAgIGJyZWFrOwotICAgY2FzZSBCQ19UU0VUUjoKLSAgICAgfCAgLy8gUkEgPSBk c3QqOCwgUkIgPSB0YWJsZSo4LCBSQyA9IGtleSo4Ci0tICAgIHwgIGFkZCBSQiwgQkFTRSwgUkIK LS0gICAgfCAgbHd6IFRBQjpDQVJHMiwgNChSQikKLSsgICAgfCAgbHd6eCBUQUI6Q0FSRzIsIEJB U0VfTE8sIFJCCi0gICAgIHwuaWYgRFVBTE5VTQotLSAgICB8ICBhZGQgUkMsIEJBU0UsIFJDCi0g ICAgIHwgICAgbGJ6IFRNUDMsIFRBQjpDQVJHMi0+bWFya2VkCi0gICAgIHwgIGx3eiBUTVAwLCBU QUI6Q0FSRzItPmFzaXplCi0tICAgIHwgIGx3eiBDQVJHMywgNChSQykKLSsgICAgfCAgbHd6eCBD QVJHMywgQkFTRV9MTywgUkMKLSAgICAgfCAgIGx3eiBUTVAxLCBUQUI6Q0FSRzItPmFycmF5Ci0g ICAgIHwuZWxzZQotICAgICB8ICBsZmR4IGYwLCBCQVNFLCBSQwotQEAgLTQzMTEsOSArNDY5Nyw5 IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVm b3ApCi0gICAgIHwgIGFkZCBSQSwgQkFTRSwgUkEKLSAgICAgfDE6Ci0gICAgIHwgICBhZGQgVE1Q MywgS0JBU0UsIFJECi0tICAgIHwgIGx3eiBUQUI6Q0FSRzIsIC00KFJBKQkJLy8gR3VhcmFudGVl ZCB0byBiZSBhIHRhYmxlLgotKyAgICB8ICBsd3ogVEFCOkNBUkcyLCBXT1JEX0xPLTgoUkEpCS8v IEd1YXJhbnRlZWQgdG8gYmUgYSB0YWJsZS4KLSAgICAgfCAgICBhZGRpYy4gVE1QMCwgTVVMVFJF UywgLTgKLS0gICAgfCAgIGx3eiBUTVAzLCA0KFRNUDMpCQkvLyBJbnRlZ2VyIGNvbnN0YW50IGlz IGluIGxvLXdvcmQuCi0rICAgIHwgICBsd3ogVE1QMywgV09SRF9MTyhUTVAzKQkJLy8gSW50ZWdl ciBjb25zdGFudCBpcyBpbiBsby13b3JkLgotICAgICB8ICAgIHNyd2kgQ0FSRzMsIFRNUDAsIDMK LSAgICAgfCAgICBiZXEgPjQJCQkJLy8gTm90aGluZyB0byBjb3B5PwotICAgICB8ICBhZGQgQ0FS RzMsIENBUkczLCBUTVAzCi1AQCAtNDM2Miw4ICs0NzQ4LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRf aW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgIGNhc2UgQkNfQ0FMTDoK LSAgICAgfCAgLy8gUkEgPSBiYXNlKjgsIChSQiA9IChucmVzdWx0cysxKSo4LCkgUkMgPSAobmFy Z3MrMSkqOAotICAgICB8ICBtciBUTVAyLCBCQVNFCi0tICAgIHwgIGx3enV4IFRNUDAsIEJBU0Us IFJBCi0tICAgIHwgICBsd3ogTEZVTkM6UkIsIDQoQkFTRSkKLSsgICAgfCAgbHd6dXgyIFRNUDAs IExGVU5DOlJCLCBCQVNFLCBSQQotICAgICB8ICAgIHN1YmkgTkFSR1M4OlJDLCBOQVJHUzg6UkMs IDgKLSAgICAgfCAgIGFkZGkgQkFTRSwgQkFTRSwgOAotICAgICB8ICBjaGVja2Z1bmMgVE1QMDsg Ym5lIC0+dm1ldGFfY2FsbAotQEAgLTQzNzcsOCArNDc2Miw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxk X2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIGJyZWFrOwotICAg Y2FzZSBCQ19DQUxMVDoKLSAgICAgfCAgLy8gUkEgPSBiYXNlKjgsIChSQiA9IDAsKSBSQyA9IChu YXJncysxKSo4Ci0tICAgIHwgIGx3enV4IFRNUDAsIFJBLCBCQVNFCi0tICAgIHwgICBsd3ogTEZV TkM6UkIsIDQoUkEpCi0rICAgIHwgIGx3enV4MiBUTVAwLCBMRlVOQzpSQiwgUkEsIEJBU0UKLSAg ICAgfCAgICBzdWJpIE5BUkdTODpSQywgTkFSR1M4OlJDLCA4Ci0gICAgIHwgICAgbHd6IFRNUDEs IEZSQU1FX1BDKEJBU0UpCi0gICAgIHwgIGNoZWNrZnVuYyBUTVAwCi1AQCAtNDQzMCwxMiArNDgx NCwxMiBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50 IGRlZm9wKQotICAgICB8ICAvLyBSQSA9IGJhc2UqOCwgKFJCID0gKG5yZXN1bHRzKzEpKjgsIFJD ID0gKG5hcmdzKzEpKjggKCgyKzEpKjgpKQotICAgICB8ICBtciBUTVAyLCBCQVNFCi0gICAgIHwg IGFkZCBCQVNFLCBCQVNFLCBSQQotLSAgICB8ICBsd3ogVE1QMSwgLTI0KEJBU0UpCi0tICAgIHwg ICBsd3ogTEZVTkM6UkIsIC0yMChCQVNFKQotKyAgICB8ICBsd3ogVE1QMSwgV09SRF9ISS0yNChC QVNFKQotKyAgICB8ICAgbHd6IExGVU5DOlJCLCBXT1JEX0xPLTI0KEJBU0UpCi0gICAgIHwgICAg bGZkIGYxLCAtOChCQVNFKQotICAgICB8ICAgIGxmZCBmMCwgLTE2KEJBU0UpCi0tICAgIHwgIHN0 dyBUTVAxLCAwKEJBU0UpCQkvLyBDb3B5IGNhbGxhYmxlLgotLSAgICB8ICAgc3R3IExGVU5DOlJC LCA0KEJBU0UpCi0rICAgIHwgIHN0dyBUTVAxLCBXT1JEX0hJKEJBU0UpCQkvLyBDb3B5IGNhbGxh YmxlLgotKyAgICB8ICAgc3R3IExGVU5DOlJCLCBXT1JEX0xPKEJBU0UpCi0gICAgIHwgIGNoZWNr ZnVuYyBUTVAxCi0gICAgIHwgICAgc3RmZCBmMSwgMTYoQkFTRSkJCS8vIENvcHkgY29udHJvbCB2 YXIuCi0gICAgIHwgICAgIGxpIE5BUkdTODpSQywgMTYJCS8vIEl0ZXJhdG9ycyBnZXQgMiBhcmd1 bWVudHMuCi1AQCAtNDQ1MCw4ICs0ODM0LDggQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxk Q3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgLy8gTllJOiBhZGQgaG90bG9v cCwgcmVjb3JkIEJDX0lURVJOLgotICAgICB8LmVuZGlmCi0gICAgIHwgIGFkZCBSQSwgQkFTRSwg UkEKLS0gICAgfCAgbHd6IFRBQjpSQiwgLTEyKFJBKQotLSAgICB8ICBsd3ogUkMsIC00KFJBKQkJ CS8vIEdldCBpbmRleCBmcm9tIGNvbnRyb2wgdmFyLgotKyAgICB8ICBsd3ogVEFCOlJCLCBXT1JE X0xPLTE2KFJBKQotKyAgICB8ICBsd3ogUkMsIFdPUkRfTE8tOChSQSkJCS8vIEdldCBpbmRleCBm cm9tIGNvbnRyb2wgdmFyLgotICAgICB8ICBsd3ogVE1QMCwgVEFCOlJCLT5hc2l6ZQotICAgICB8 ICBsd3ogVE1QMSwgVEFCOlJCLT5hcnJheQotICAgICB8ICAgYWRkaSBQQywgUEMsIDQKLUBAIC00 NDU5LDE0ICs0ODQzLDE0IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBC Q09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgIGNtcGx3IFJDLCBUTVAwCi0gICAgIHwgICBzbHdp IFRNUDMsIFJDLCAzCi0gICAgIHwgIGJnZSA+NQkJCQkvLyBJbmRleCBwb2ludHMgYWZ0ZXIgYXJy YXkgcGFydD8KLS0gICAgfCAgbHd6eCBUTVAyLCBUTVAxLCBUTVAzCi0tICAgIHwgICBsZmR4IGYw LCBUTVAxLCBUTVAzCi0rICAgIHwgIGxmZHV4IGYwLCBUTVAzLCBUTVAxCi0rICAgIHwgICBsd3og VE1QMiwgV09SRF9ISShUTVAzKQotICAgICB8ICBjaGVja25pbCBUTVAyCi0gICAgIHwgICAgIGx3 eiBJTlMsIC00KFBDKQotICAgICB8ICBiZXEgPjQKLSAgICAgfC5pZiBEVUFMTlVNCi0tICAgIHwg ICBzdHcgUkMsIDQoUkEpCi0tICAgIHwgICBzdHcgVElTTlVNLCAwKFJBKQotKyAgICB8ICAgc3R3 IFJDLCBXT1JEX0xPKFJBKQotKyAgICB8ICAgc3R3IFRJU05VTSwgV09SRF9ISShSQSkKLSAgICAg fC5lbHNlCi0gICAgIHwgICB0b251bV91IGYxLCBSQwotICAgICB8LmVuZGlmCi1AQCAtNDQ3NCw3 ICs0ODU4LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3As IGludCBkZWZvcCkKLSAgICAgfCAgICAgYWRkaXMgVE1QMywgUEMsIC0oQkNCSUFTX0oqNCA+PiAx NikKLSAgICAgfCAgc3RmZCBmMCwgOChSQSkKLSAgICAgfCAgICAgZGVjb2RlX1JENCBUTVAxLCBJ TlMKLS0gICAgfCAgICBzdHcgUkMsIC00KFJBKQkJCS8vIFVwZGF0ZSBjb250cm9sIHZhci4KLSsg ICAgfCAgICBzdHcgUkMsIFdPUkRfTE8tOChSQSkJCS8vIFVwZGF0ZSBjb250cm9sIHZhci4KLSAg ICAgfCAgICAgYWRkIFBDLCBUTVAxLCBUTVAzCi0gICAgIHwuaWYgbm90IERVQUxOVU0KLSAgICAg fCAgIHN0ZmQgZjEsIDAoUkEpCi1AQCAtNDQ5Niw5ICs0ODgwLDggQEAgc3RhdGljIHZvaWQgYnVp bGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgYmd0eSA8 MwotICAgICB8ICAgc2x3aSBSQiwgUkMsIDMKLSAgICAgfCAgIHN1YiBUTVAzLCBUTVAzLCBSQgot LSAgICB8ICBsd3p4IFJCLCBUTVAyLCBUTVAzCi0tICAgIHwgIGxmZHggZjAsIFRNUDIsIFRNUDMK LS0gICAgfCAgIGFkZCBOT0RFOlRNUDMsIFRNUDIsIFRNUDMKLSsgICAgfCAgbGZkdXggZjAsIFRN UDMsIFRNUDIKLSsgICAgfCAgbHd6IFJCLCBXT1JEX0hJKFRNUDMpCi0gICAgIHwgIGNoZWNrbmls IFJCCi0gICAgIHwgICAgIGx3eiBJTlMsIC00KFBDKQotICAgICB8ICBiZXEgPjcKLUBAIC00NTEw LDcgKzQ4OTMsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBv cCwgaW50IGRlZm9wKQotICAgICB8ICAgc3RmZCBmMSwgMChSQSkKLSAgICAgfCAgICBhZGRpIFJD LCBSQywgMQotICAgICB8ICAgICBhZGQgUEMsIFRNUDEsIFRNUDIKLS0gICAgfCAgICBzdHcgUkMs IC00KFJBKQkJCS8vIFVwZGF0ZSBjb250cm9sIHZhci4KLSsgICAgfCAgICBzdHcgUkMsIFdPUkRf TE8tOChSQSkJCS8vIFVwZGF0ZSBjb250cm9sIHZhci4KLSAgICAgfCAgYiA8MwotICAgICB8Ci0g ICAgIHw3OiAgLy8gU2tpcCBob2xlcyBpbiBoYXNoIHBhcnQuCi1AQCAtNDUyMSwxMCArNDkwNCwx MCBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRl Zm9wKQotICAgY2FzZSBCQ19JU05FWFQ6Ci0gICAgIHwgIC8vIFJBID0gYmFzZSo4LCBSRCA9IHRh cmdldCAocG9pbnRzIHRvIElURVJOKQotICAgICB8ICBhZGQgUkEsIEJBU0UsIFJBCi0tICAgIHwg IGx3eiBUTVAwLCAtMjQoUkEpCi0tICAgIHwgIGx3eiBDRlVOQzpUTVAxLCAtMjAoUkEpCi0tICAg IHwgICBsd3ogVE1QMiwgLTE2KFJBKQotLSAgICB8ICAgIGx3eiBUTVAzLCAtOChSQSkKLSsgICAg fCAgbHd6IFRNUDAsIFdPUkRfSEktMjQoUkEpCi0rICAgIHwgIGx3eiBDRlVOQzpUTVAxLCBXT1JE X0xPLTI0KFJBKQotKyAgICB8ICAgbHd6IFRNUDIsIFdPUkRfSEktMTYoUkEpCi0rICAgIHwgICAg bHd6IFRNUDMsIFdPUkRfSEktOChSQSkKLSAgICAgfCAgIGNtcHdpIGNyMCwgVE1QMiwgTEpfVFRB QgotICAgICB8ICBjbXB3aSBjcjEsIFRNUDAsIExKX1RGVU5DCi0gICAgIHwgICAgY21wd2kgY3I2 LCBUTVAzLCBMSl9UTklMCi1AQCAtNDUzOCwxNyArNDkyMSwyNSBAQCBzdGF0aWMgdm9pZCBidWls ZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8ICBibmUgY3Iw LCA+NQotICAgICB8ICBsdXMgVE1QMSwgMHhmZmZlCi0gICAgIHwgIG9yaSBUTVAxLCBUTVAxLCAw eDdmZmYKLS0gICAgfCAgc3R3IFpFUk8sIC00KFJBKQkJCS8vIEluaXRpYWxpemUgY29udHJvbCB2 YXIuCi0tICAgIHwgIHN0dyBUTVAxLCAtOChSQSkKLSsgICAgfCAgc3R3IFpFUk8sIFdPUkRfTE8t OChSQSkJCS8vIEluaXRpYWxpemUgY29udHJvbCB2YXIuCi0rICAgIHwgIHN0dyBUTVAxLCBXT1JE X0hJLTgoUkEpCi0gICAgIHwgICAgYWRkaXMgUEMsIFRNUDMsIC0oQkNCSUFTX0oqNCA+PiAxNikK LSAgICAgfDE6Ci0gICAgIHwgIGluc19uZXh0Ci0gICAgIHw1OiAgLy8gRGVzcGVjaWFsaXplIGJ5 dGVjb2RlIGlmIGFueSBvZiB0aGUgY2hlY2tzIGZhaWwuCi0gICAgIHwgIGxpIFRNUDAsIEJDX0pN UAotICAgICB8ICAgbGkgVE1QMSwgQkNfSVRFUkMKLSsgICAgfCAgLmlmIEVORElBTl9MRQotKyAg ICB8ICBzdGIgVE1QMCwgLTQoUEMpCi0rICAgIHwgIC5lbHNlCi0gICAgIHwgIHN0YiBUTVAwLCAt MShQQykKLSsgICAgfCAgLmVuZGlmCi0gICAgIHwgICAgYWRkaXMgUEMsIFRNUDMsIC0oQkNCSUFT X0oqNCA+PiAxNikKLSsgICAgfCAgLmlmIEVORElBTl9MRQotKyAgICB8ICAgc3RiIFRNUDEsIDAo UEMpCi0rICAgIHwgIC5lbHNlCi0gICAgIHwgICBzdGIgVE1QMSwgMyhQQykKLSsgICAgfCAgLmVu ZGlmCi0gICAgIHwgIGIgPDEKLSAgICAgYnJlYWs7Ci0gCi1AQCAtNDU4Miw3ICs0OTczLDcgQEAg c3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkK LSAgICAgfCAgICBhZGRpIFJBLCBSQSwgOAotICAgICB8ICAgYmx0IGNyMSwgPDEJCQkvLyBNb3Jl IHZhcmFyZyBzbG90cz8KLSAgICAgfDI6ICAvLyBGaWxsIHVwIHJlbWFpbmRlciB3aXRoIG5pbC4K LS0gICAgfCAgc3R3IFRJU05JTCwgMChSQSkKLSsgICAgfCAgc3R3IFRJU05JTCwgV09SRF9ISShS QSkKLSAgICAgfCAgY21wbHcgUkEsIFRNUDIKLSAgICAgfCAgIGFkZGkgUkEsIFJBLCA4Ci0gICAg IHwgIGJsdCA8MgotQEAgLTQ2MTksNiArNTAxMCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhC dWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgIGFkZCBSQSwgQkFTRSwg UkEKLSAgICAgfCAgYWRkIFJDLCBCQVNFLCBTQVZFMAotICAgICB8ICBzdWJpIFRNUDMsIEJBU0Us IDgKLSsgICAgfCAgYWRkaSBCQVNFUDQsIEJBU0UsIDQKLSAgICAgfCAgYiA8NgotICAgICBicmVh azsKLSAKLUBAIC00NjY3LDEzICs1MDU5LDE0IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWls ZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgIGJndCA+NgotICAgICB8ICAg c3ViIEJBU0UsIFRNUDIsIFJBCi0gICAgIHwgIGx3eiBMRlVOQzpUTVAxLCBGUkFNRV9GVU5DKEJB U0UpCi0rICAgIHwgIGFkZGkgQkFTRVA0LCBCQVNFLCA0Ci0gICAgIHwgIGluc19uZXh0MQotICAg ICB8ICBsd3ogVE1QMSwgTEZVTkM6VE1QMS0+cGMKLSAgICAgfCAgbHd6IEtCQVNFLCBQQzJQUk9U TyhrKShUTVAxKQotICAgICB8ICBpbnNfbmV4dDIKLSAgICAgfAotICAgICB8NjogIC8vIEZpbGwg dXAgcmVzdWx0cyB3aXRoIG5pbC4KLS0gICAgfCAgc3ViaSBUTVAxLCBSRCwgOAotKyAgICB8ICBh ZGRpIFRNUDEsIFJELCBXT1JEX0hJLTgKLSAgICAgfCAgIGFkZGkgUkQsIFJELCA4Ci0gICAgIHwg IHN0d3ggVElTTklMLCBUTVAyLCBUTVAxCi0gICAgIHwgIGIgPDUKLUBAIC00NzA5LDEzICs1MTAy LDE0IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQg ZGVmb3ApCi0gICAgIHwgIGJndCA+NgotICAgICB8ICAgc3ViIEJBU0UsIFRNUDIsIFJBCi0gICAg IHwgIGx3eiBMRlVOQzpUTVAxLCBGUkFNRV9GVU5DKEJBU0UpCi0rICAgIHwgIGFkZGkgQkFTRVA0 LCBCQVNFLCA0Ci0gICAgIHwgIGluc19uZXh0MQotICAgICB8ICBsd3ogVE1QMSwgTEZVTkM6VE1Q MS0+cGMKLSAgICAgfCAgbHd6IEtCQVNFLCBQQzJQUk9UTyhrKShUTVAxKQotICAgICB8ICBpbnNf bmV4dDIKLSAgICAgfAotICAgICB8NjogIC8vIEZpbGwgdXAgcmVzdWx0cyB3aXRoIG5pbC4KLS0g ICAgfCAgc3ViaSBUTVAxLCBSRCwgOAotKyAgICB8ICBhZGRpIFRNUDEsIFJELCBXT1JEX0hJLTgK LSAgICAgfCAgIGFkZGkgUkQsIFJELCA4Ci0gICAgIHwgIHN0d3ggVElTTklMLCBUTVAyLCBUTVAx Ci0gICAgIHwgIGIgPDUKLUBAIC00NzQxLDExICs1MTM1LDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxk X2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHZrID0gKG9wID09 IEJDX0lGT1JMIHx8IG9wID09IEJDX0pGT1JMKTsKLSAgICAgfC5pZiBEVUFMTlVNCi0gICAgIHwg IC8vIEludGVnZXIgbG9vcC4KLS0gICAgfCAgbHd6dXggVE1QMSwgUkEsIEJBU0UKLS0gICAgfCAg IGx3eiBDQVJHMSwgRk9STF9JRFgqOCs0KFJBKQotKyAgICB8ICBsd3p1eDIgVE1QMSwgQ0FSRzEs IFJBLCBCQVNFCi0rICAgIGlmICh2aykgewotKyAgICAgIHwgIG10eGVyIFpFUk8KLSsgICAgfQot ICAgICB8ICBjbXBsdyBjcjAsIFRNUDEsIFRJU05VTQotICAgICBpZiAodmspIHsKLS0gICAgICB8 ICAgbHd6IENBUkczLCBGT1JMX1NURVAqOCs0KFJBKQotKyAgICAgIHwgICBsd3ogQ0FSRzMsIEZP UkxfU1RFUCo4K1dPUkRfTE8oUkEpCi0gICAgICAgfCAgYm5lID45Ci0gICAgICAgfC5pZiBHUFI2 NAotICAgICAgIHwgIC8vIE5lZWQgdG8gY2hlY2sgb3ZlcmZsb3cgZm9yIChhPDwzMikgKyAoYjw8 MzIpLgotQEAgLTQ3NTcsMTUgKzUxNTMsMTUgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxk Q3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgICB8ICBhZGRvLiBDQVJHMSwgQ0FS RzEsIENBUkczCi0gICAgICAgfC5lbmRpZgotICAgICAgIHwgICAgY21wd2kgY3I2LCBDQVJHMywg MAotLSAgICAgIHwgICBsd3ogQ0FSRzIsIEZPUkxfU1RPUCo4KzQoUkEpCi0tICAgICAgfCAgYnNv ID42Ci0rICAgICAgfCAgIGx3eiBDQVJHMiwgRk9STF9TVE9QKjgrV09SRF9MTyhSQSkKLSsgICAg ICB8ICBic28gPjIKLSAgICAgICB8NDoKLS0gICAgICB8ICBzdHcgQ0FSRzEsIEZPUkxfSURYKjgr NChSQSkKLSsgICAgICB8ICBzdHcgQ0FSRzEsIEZPUkxfSURYKjgrV09SRF9MTyhSQSkKLSAgICAg fSBlbHNlIHsKLS0gICAgICB8ICBsd3ogVE1QMywgRk9STF9TVEVQKjgoUkEpCi0tICAgICAgfCAg IGx3eiBDQVJHMywgRk9STF9TVEVQKjgrNChSQSkKLS0gICAgICB8ICBsd3ogVE1QMiwgRk9STF9T VE9QKjgoUkEpCi0tICAgICAgfCAgIGx3eiBDQVJHMiwgRk9STF9TVE9QKjgrNChSQSkKLSsgICAg ICB8ICBsd3ogVE1QMywgRk9STF9TVEVQKjgrV09SRF9ISShSQSkKLSsgICAgICB8ICAgbHd6IENB UkczLCBGT1JMX1NURVAqOCtXT1JEX0xPKFJBKQotKyAgICAgIHwgIGx3eiBUTVAyLCBGT1JMX1NU T1AqOCtXT1JEX0hJKFJBKQotKyAgICAgIHwgICBsd3ogQ0FSRzIsIEZPUkxfU1RPUCo4K1dPUkRf TE8oUkEpCi0gICAgICAgfCAgY21wbHcgY3I3LCBUTVAzLCBUSVNOVU0KLSAgICAgICB8ICBjbXBs dyBjcjEsIFRNUDIsIFRJU05VTQotICAgICAgIHwgIGNyYW5kIDQqY3IwK2VxLCA0KmNyMCtlcSwg NCpjcjcrZXEKLUBAIC00Nzc2LDExICs1MTcyLDExIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhC dWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgICAgYmx0IGNyNiwgPjUK LSAgICAgfCAgY21wdyBDQVJHMSwgQ0FSRzIKLSAgICAgfDE6Ci0tICAgIHwgICBzdHcgVElTTlVN LCBGT1JMX0VYVCo4KFJBKQotKyAgICB8ICAgc3R3IFRJU05VTSwgRk9STF9FWFQqOCtXT1JEX0hJ KFJBKQotICAgICBpZiAob3AgIT0gQkNfSkZPUkwpIHsKLSAgICAgICB8ICBzcndpIFJELCBSRCwg MQotICAgICB9Ci0tICAgIHwgICBzdHcgQ0FSRzEsIEZPUkxfRVhUKjgrNChSQSkKLSsgICAgfCAg IHN0dyBDQVJHMSwgRk9STF9FWFQqOCtXT1JEX0xPKFJBKQotICAgICBpZiAob3AgIT0gQkNfSkZP UkwpIHsKLSAgICAgICB8ICBhZGQgUkQsIFBDLCBSRAotICAgICB9Ci1AQCAtNDgwMCwxMSArNTE5 Niw2IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQg ZGVmb3ApCi0gICAgIHw1OiAgLy8gSW52ZXJ0IGNoZWNrIGZvciBuZWdhdGl2ZSBzdGVwLgotICAg ICB8ICBjbXB3IENBUkcyLCBDQVJHMQotICAgICB8ICBiIDwxCi0tICAgIGlmICh2aykgewotLSAg ICAgIHw2OiAgLy8gUG90ZW50aWFsIG92ZXJmbG93LgotLSAgICAgIHwgIGNoZWNrb3YgVE1QMCwg PDQJCS8vIElnbm9yZSB1bnJlbGF0ZWQgb3ZlcmZsb3cuCi0tICAgICAgfCAgYiA8MgotLSAgICB9 Ci0gICAgIHwuZW5kaWYKLSAgICAgaWYgKHZrKSB7Ci0gICAgICAgfC5pZiBEVUFMTlVNCi1AQCAt NDgxNSwxNCArNTIwNiwxOSBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwg QkNPcCBvcCwgaW50IGRlZm9wKQotICAgICAgIHwuZW5kaWYKLSAgICAgICB8ICBsZmQgZjMsIEZP UkxfU1RFUCo4KFJBKQotICAgICAgIHwgIGxmZCBmMiwgRk9STF9TVE9QKjgoUkEpCi0tICAgICAg fCAgIGx3eiBUTVAzLCBGT1JMX1NURVAqOChSQSkKLSsgICAgICB8ICAgbHd6IFRNUDMsIEZPUkxf U1RFUCo4K1dPUkRfSEkoUkEpCi0gICAgICAgfCAgZmFkZCBmMSwgZjEsIGYzCi0gICAgICAgfCAg c3RmZCBmMSwgRk9STF9JRFgqOChSQSkKLSAgICAgfSBlbHNlIHsKLSAgICAgICB8LmlmIERVQUxO VU0KLSAgICAgICB8OTogIC8vIEZQIGxvb3AuCi0gICAgICAgfC5lbHNlCi0rICAgICAgfC5pZiBF TkRJQU5fTEUKLSsgICAgICB8ICBsd3p4IFRNUDEsIFJBLCBCQVNFX0xPCi0rICAgICAgfCAgYWRk IFJBLCBSQSwgQkFTRQotKyAgICAgIHwuZWxzZQotICAgICAgIHwgIGx3enV4IFRNUDEsIFJBLCBC QVNFCi0rICAgICAgfC5lbmRpZgotICAgICAgIHwgIGx3eiBUTVAzLCBGT1JMX1NURVAqOChSQSkK LSAgICAgICB8ICBsd3ogVE1QMiwgRk9STF9TVE9QKjgoUkEpCi0gICAgICAgfCAgY21wbHcgY3Iw LCBUTVAxLCBUSVNOVU0KLUBAIC00OTAzLDE3ICs1Mjk5LDE2IEBAIHN0YXRpYyB2b2lkIGJ1aWxk X2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gI2VuZGlmCi0gICBjYXNl IEJDX0lJVEVSTDoKLSAgICAgfCAgLy8gUkEgPSBiYXNlKjgsIFJEID0gdGFyZ2V0Ci0tICAgIHwg IGx3enV4IFRNUDEsIFJBLCBCQVNFCi0tICAgIHwgICBsd3ogVE1QMiwgNChSQSkKLSsgICAgfCAg bHd6dXgyIFRNUDEsIFRNUDIsIFJBLCBCQVNFCi0gICAgIHwgIGNoZWNrbmlsIFRNUDE7IGJlcSA+ MQkJLy8gU3RvcCBpZiBpdGVyYXRvciByZXR1cm5lZCBuaWwuCi0gICAgIGlmIChvcCA9PSBCQ19K SVRFUkwpIHsKLS0gICAgICB8ICBzdHcgVE1QMSwgLTgoUkEpCi0tICAgICAgfCAgIHN0dyBUTVAy LCAtNChSQSkKLSsgICAgICB8ICBzdHcgVE1QMSwgV09SRF9ISS04KFJBKQotKyAgICAgIHwgICBz dHcgVE1QMiwgV09SRF9MTy04KFJBKQotICAgICAgIHwgIGIgPT5CQ19KTE9PUAotICAgICB9IGVs c2UgewotICAgICAgIHwgIGJyYW5jaF9SRAkJCS8vIE90aGVyd2lzZSBzYXZlIGNvbnRyb2wgdmFy ICsgYnJhbmNoLgotLSAgICAgIHwgIHN0dyBUTVAxLCAtOChSQSkKLS0gICAgICB8ICAgc3R3IFRN UDIsIC00KFJBKQotKyAgICAgIHwgIHN0dyBUTVAxLCBXT1JEX0hJLTgoUkEpCi0rICAgICAgfCAg IHN0dyBUTVAyLCBXT1JEX0xPLTgoUkEpCi0gICAgIH0KLSAgICAgfDE6Ci0gICAgIHwgIGluc19u ZXh0Ci1AQCAtNDk0Miw3ICs1MzM3LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4 ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgLy8gVHJhY2VzIG9uIFBQQyBkb24n dCBzdG9yZSB0aGUgdHJhY2UgbnVtYmVyLCBzbyB1c2UgMC4KLSAgICAgfCAgIHN0dyBaRVJPLCBE SVNQQVRDSF9HTCh2bXN0YXRlKShESVNQQVRDSCkKLSAgICAgfCAgbHd6eCBUUkFDRTpUTVAyLCBU TVAxLCBSRAotLSAgICB8ICBjbHJzbyBUTVAxCi0rICAgIHwgIG10eGVyIFpFUk8KLSAgICAgfCAg bHAgVE1QMiwgVFJBQ0U6VE1QMi0+bWNvZGUKLSAgICAgfCAgIHN0dyBCQVNFLCBESVNQQVRDSF9H TChqaXRfYmFzZSkoRElTUEFUQ0gpCi0gICAgIHwgIG10Y3RyIFRNUDIKLUBAIC00OTk0LDcgKzUz ODksNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50 IGRlZm9wKQotICAgICB9Ci0gICAgIHwKLSAgICAgfDM6ICAvLyBDbGVhciBtaXNzaW5nIHBhcmFt ZXRlcnMuCi0tICAgIHwgIHN0d3ggVElTTklMLCBCQVNFLCBOQVJHUzg6UkMKLSsgICAgfCAgc3R3 eCBUSVNOSUwsIEJBU0VfSEksIE5BUkdTODpSQwotICAgICB8ICBhZGRpIE5BUkdTODpSQywgTkFS R1M4OlJDLCA4Ci0gICAgIHwgIGIgPDIKLSAgICAgYnJlYWs7Ci1AQCAtNTAxMSwxMSArNTQwNiwx MSBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRl Zm9wKQotICAgICB8ICBsd3ogVE1QMiwgTC0+bWF4c3RhY2sKLSAgICAgfCAgIGFkZCBUTVAxLCBC QVNFLCBSQwotICAgICB8ICBhZGQgVE1QMCwgUkEsIFJDCi0tICAgIHwgICBzdHcgTEZVTkM6UkIs IDQoVE1QMSkJCS8vIFN0b3JlIGNvcHkgb2YgTEZVTkMuCi0rICAgIHwgICBzdHcgTEZVTkM6UkIs IFdPUkRfTE8oVE1QMSkJLy8gU3RvcmUgY29weSBvZiBMRlVOQy4KLSAgICAgfCAgIGFkZGkgVE1Q MywgUkMsIDgrRlJBTUVfVkFSRwotICAgICB8ICAgIGx3eiBLQkFTRSwgLTQrUEMyUFJPVE8oayko UEMpCi0gICAgIHwgIGNtcGx3IFRNUDAsIFRNUDIKLS0gICAgfCAgIHN0dyBUTVAzLCAwKFRNUDEp CQkvLyBTdG9yZSBkZWx0YSArIEZSQU1FX1ZBUkcuCi0rICAgIHwgICBzdHcgVE1QMywgV09SRF9I SShUTVAxKQkJLy8gU3RvcmUgZGVsdGEgKyBGUkFNRV9WQVJHLgotICAgICB8ICBiZ2UgLT52bV9n cm93c3RhY2tfbAotICAgICB8ICBsYnogVE1QMiwgLTQrUEMyUFJPVE8obnVtcGFyYW1zKShQQykK LSAgICAgfCAgIG1yIFJBLCBCQVNFCi1AQCAtNTAyNiwxOCArNTQyMSwxOSBAQCBzdGF0aWMgdm9p ZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8ICBi ZXEgPjMKLSAgICAgfDE6Ci0gICAgIHwgIGNtcGx3IFJBLCBSQwkJCS8vIExlc3MgYXJncyB0aGFu IHBhcmFtZXRlcnM/Ci0tICAgIHwgICBsd3ogVE1QMCwgMChSQSkKLS0gICAgfCAgIGx3eiBUTVAz LCA0KFJBKQotKyAgICB8ICAgbHd6IFRNUDAsIFdPUkRfSEkoUkEpCi0rICAgIHwgICBsd3ogVE1Q MywgV09SRF9MTyhSQSkKLSAgICAgfCAgYmdlID40Ci0tICAgIHwgICAgc3R3IFRJU05JTCwgMChS QSkJCS8vIENsZWFyIG9sZCBmaXhhcmcgc2xvdCAoaGVscCB0aGUgR0MpLgotKyAgICB8ICAgIHN0 dyBUSVNOSUwsIFdPUkRfSEkoUkEpCS8vIENsZWFyIG9sZCBmaXhhcmcgc2xvdCAoaGVscCB0aGUg R0MpLgotICAgICB8ICAgIGFkZGkgUkEsIFJBLCA4Ci0gICAgIHwyOgotICAgICB8ICBhZGRpYy4g VE1QMiwgVE1QMiwgLTEKLS0gICAgfCAgIHN0dyBUTVAwLCA4KFRNUDEpCi0tICAgIHwgICBzdHcg VE1QMywgMTIoVE1QMSkKLSsgICAgfCAgIHN0dyBUTVAwLCBXT1JEX0hJKzgoVE1QMSkKLSsgICAg fCAgIHN0dyBUTVAzLCBXT1JEX0xPKzgoVE1QMSkKLSAgICAgfCAgICBhZGRpIFRNUDEsIFRNUDEs IDgKLSAgICAgfCAgYm5lIDwxCi0gICAgIHwzOgotKyAgICB8ICBhZGRpIEJBU0VQNCwgQkFTRSwg NAotICAgICB8ICBpbnNfbmV4dDIKLSAgICAgfAotICAgICB8NDogIC8vIENsZWFyIG1pc3Npbmcg cGFyYW1ldGVycy4KLUBAIC01MDQ5LDM1ICs1NDQ1LDM1IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lu cyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICBjYXNlIEJDX0ZVTkNDVzoK LSAgICAgfCAgLy8gQkFTRSA9IG5ldyBiYXNlLCBSQSA9IEJBU0UrZnJhbWVzaXplKjgsIFJCID0g Q0ZVTkMsIFJDID0gbmFyZ3MqOAotICAgICBpZiAob3AgPT0gQkNfRlVOQ0MpIHsKLS0gICAgICB8 ICBscCBSRCwgQ0ZVTkM6UkItPmYKLSsgICAgICB8ICBscCBGVU5DUkVHLCBDRlVOQzpSQi0+Zgot ICAgICB9IGVsc2UgewotLSAgICAgIHwgIGxwIFJELCBESVNQQVRDSF9HTCh3cmFwZikoRElTUEFU Q0gpCi0rICAgICAgfCAgbHAgRlVOQ1JFRywgRElTUEFUQ0hfR0wod3JhcGYpKERJU1BBVENIKQot ICAgICB9Ci0gICAgIHwgICBhZGQgVE1QMSwgUkEsIE5BUkdTODpSQwotICAgICB8ICAgbHd6IFRN UDIsIEwtPm1heHN0YWNrCi0tICAgIHwgIC50b2MgbHAgVE1QMywgMChSRCkKLSsgICAgfCAgLm9w ZCBscCBUTVAzLCAwKEZVTkNSRUcpCi0gICAgIHwgICAgYWRkIFJDLCBCQVNFLCBOQVJHUzg6UkMK LSAgICAgfCAgIHN0cCBCQVNFLCBMLT5iYXNlCi0gICAgIHwgICBjbXBsdyBUTVAxLCBUTVAyCi0g ICAgIHwgICAgc3RwIFJDLCBMLT50b3AKLSAgICAgfCAgICAgbGlfdm1zdGF0ZSBDCi0tICAgIHwu aWYgVE9DCi0rICAgIHwuaWYgT1BECi0gICAgIHwgIG10Y3RyIFRNUDMKLSAgICAgfC5lbHNlCi0t ICAgIHwgIG10Y3RyIFJECi0rICAgIHwgIG10Y3RyIEZVTkNSRUcKLSAgICAgfC5lbmRpZgotICAg ICBpZiAob3AgPT0gQkNfRlVOQ0NXKSB7Ci0gICAgICAgfCAgbHAgQ0FSRzIsIENGVU5DOlJCLT5m Ci0gICAgIH0KLSAgICAgfCAgbXIgQ0FSRzEsIEwKLSAgICAgfCAgIGJndCAtPnZtX2dyb3dzdGFj a19jCQkvLyBOZWVkIHRvIGdyb3cgc3RhY2suCi0tICAgIHwgIC50b2MgbHAgVE9DUkVHLCBUT0Nf T0ZTKFJEKQotLSAgICB8ICAudG9jZW52IGxwIEVOVlJFRywgRU5WX09GUyhSRCkKLSsgICAgfCAg Lm9wZCBscCBUT0NSRUcsIFRPQ19PRlMoRlVOQ1JFRykKLSsgICAgfCAgLm9wZGVudiBscCBFTlZS RUcsIEVOVl9PRlMoRlVOQ1JFRykKLSAgICAgfCAgICAgc3Rfdm1zdGF0ZQotICAgICB8ICBiY3Ry bAkJCQkvLyAobHVhX1N0YXRlICpMIFssIGx1YV9DRnVuY3Rpb24gZl0pCi0rICAgIHwgIC50b2Mg bHAgVE9DUkVHLCBTQVZFX1RPQwotICAgICB8ICAvLyBSZXR1cm5zIG5yZXN1bHRzLgotICAgICB8 ICBscCBCQVNFLCBMLT5iYXNlCi0tICAgIHwgIC50b2MgbGQgVE9DUkVHLCBTQVZFX1RPQwotICAg ICB8ICAgc2x3aSBSRCwgQ1JFVDEsIDMKLSAgICAgfCAgbHAgVE1QMSwgTC0+dG9wCi0gICAgIHwg ICAgbGlfdm1zdGF0ZSBJTlRFUlAKLUBAIC01MTI4LDcgKzU1MjQsMTEgQEAgc3RhdGljIHZvaWQg ZW1pdF9hc21fZGVidWcoQnVpbGRDdHggKmN0eCkKLSAJIlx0LmJ5dGUgMHgxXG4iCi0gCSJcdC5z dHJpbmcgXCJcIlxuIgotIAkiXHQudWxlYjEyOCAweDFcbiIKLSsjaWYgTEpfQVJDSF9QUEMzMk9O NjQKLSsJIlx0LnNsZWIxMjggLThcbiIKLSsjZWxzZQotIAkiXHQuc2xlYjEyOCAtNFxuIgotKyNl bmRpZgotIAkiXHQuYnl0ZSA2NVxuIgotIAkiXHQuYnl0ZSAweGNcblx0LnVsZWIxMjggMVxuXHQu dWxlYjEyOCAwXG4iCi0gCSJcdC5hbGlnbiAyXG4iCi1AQCAtNTE0MSwxNCArNTU0MSwyNCBAQCBz dGF0aWMgdm9pZCBlbWl0X2FzbV9kZWJ1ZyhCdWlsZEN0eCAqY3R4KQotIAkiXHQubG9uZyAuTGJl Z2luXG4iCi0gCSJcdC5sb25nICVkXG4iCi0gCSJcdC5ieXRlIDB4ZVxuXHQudWxlYjEyOCAlZFxu IgotKyNpZiBMSl9BUkNIX1BQQzMyT042NAotKwkiXHQuYnl0ZSAweDExXG5cdC51bGViMTI4IDY1 XG5cdC5zbGViMTI4IC0yXG4iCi0rCSJcdC5ieXRlIDB4MTFcblx0LnVsZWIxMjggNzBcblx0LnNs ZWIxMjggLTFcbiIsCi0rI2Vsc2UKLSAJIlx0LmJ5dGUgMHgxMVxuXHQudWxlYjEyOCA2NVxuXHQu c2xlYjEyOCAtMVxuIgotIAkiXHQuYnl0ZSAweDVcblx0LnVsZWIxMjggNzBcblx0LnVsZWIxMjgg NTVcbiIsCi0rI2VuZGlmCi0gCWZjb2ZzLCBDRlJBTUVfU0laRSk7Ci0gICAgIGZvciAoaSA9IDE0 OyBpIDw9IDMxOyBpKyspCi0gICAgICAgZnByaW50ZihjdHgtPmZwLAotIAkiXHQuYnl0ZSAlZFxu XHQudWxlYjEyOCAlZFxuIgotIAkiXHQuYnl0ZSAlZFxuXHQudWxlYjEyOCAlZFxuIiwKLS0JMHg4 MCtpLCAzNysoMzEtaSksIDB4ODArMzIraSwgMisyKigzMS1pKSk7Ci0rI2lmIExKX0FSQ0hfUFBD MzJPTjY0Ci0rCTB4ODAraSwgMTkrKDMxLWkpLCAweDgwKzMyK2ksIDErKDMxLWkpCi0rI2Vsc2UK LSsJMHg4MCtpLCAzNysoMzEtaSksIDB4ODArMzIraSwgMisyKigzMS1pKQotKyNlbmRpZgotKyAg ICAgICk7Ci0gICAgIGZwcmludGYoY3R4LT5mcCwKLSAJIlx0LmFsaWduIDJcbiIKLSAJIi5MRUZE RTA6XG5cbiIpOwotQEAgLTUxNjQsOCArNTU3NCwxMiBAQCBzdGF0aWMgdm9pZCBlbWl0X2FzbV9k ZWJ1ZyhCdWlsZEN0eCAqY3R4KQotIAkiXHQubG9uZyBsal92bV9mZmlfY2FsbFxuIgotICNlbmRp ZgotIAkiXHQubG9uZyAlZFxuIgotKyNpZiBMSl9BUkNIX1BQQzMyT042NAotKwkiXHQuYnl0ZSAw eDExXG5cdC51bGViMTI4IDY1XG5cdC5zbGViMTI4IC0yXG4iCi0rI2Vsc2UKLSAJIlx0LmJ5dGUg MHgxMVxuXHQudWxlYjEyOCA2NVxuXHQuc2xlYjEyOCAtMVxuIgotLQkiXHQuYnl0ZSAweDhlXG5c dC51bGViMTI4IDJcbiIKLSsjZW5kaWYKLSsJIlx0LmJ5dGUgMHg4ZVxuXHQudWxlYjEyOCAxXG4i Ci0gCSJcdC5ieXRlIDB4ZFxuXHQudWxlYjEyOCAweGVcbiIKLSAJIlx0LmFsaWduIDJcbiIKLSAJ Ii5MRUZERTE6XG5cbiIsIChpbnQpY3R4LT5jb2Rlc3ogLSBmY29mcyk7Ci1AQCAtNTE4MCw3ICs1 NTk0LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfYXNtX2RlYnVnKEJ1aWxkQ3R4ICpjdHgpCi0gCSJc dC5ieXRlIDB4MVxuIgotIAkiXHQuc3RyaW5nIFwielBSXCJcbiIKLSAJIlx0LnVsZWIxMjggMHgx XG4iCi0rI2lmIExKX0FSQ0hfUFBDMzJPTjY0Ci0rCSJcdC5zbGViMTI4IC04XG4iCi0rI2Vsc2UK LSAJIlx0LnNsZWIxMjggLTRcbiIKLSsjZW5kaWYKLSAJIlx0LmJ5dGUgNjVcbiIKLSAJIlx0LnVs ZWIxMjggNlxuIgkJCS8qIGF1Z21lbnRhdGlvbiBsZW5ndGggKi8KLSAJIlx0LmJ5dGUgMHgxYlxu IgkJCS8qIHBjcmVsfHNkYXRhNCAqLwotQEAgLTUxOTgsMTQgKzU2MTYsMjQgQEAgc3RhdGljIHZv aWQgZW1pdF9hc21fZGVidWcoQnVpbGRDdHggKmN0eCkKLSAJIlx0LmxvbmcgJWRcbiIKLSAJIlx0 LnVsZWIxMjggMFxuIgkJCS8qIGF1Z21lbnRhdGlvbiBsZW5ndGggKi8KLSAJIlx0LmJ5dGUgMHhl XG5cdC51bGViMTI4ICVkXG4iCi0rI2lmIExKX0FSQ0hfUFBDMzJPTjY0Ci0rCSJcdC5ieXRlIDB4 MTFcblx0LnVsZWIxMjggNjVcblx0LnNsZWIxMjggLTJcbiIKLSsJIlx0LmJ5dGUgMHgxMVxuXHQu dWxlYjEyOCA3MFxuXHQuc2xlYjEyOCAtMVxuIiwKLSsjZWxzZQotIAkiXHQuYnl0ZSAweDExXG5c dC51bGViMTI4IDY1XG5cdC5zbGViMTI4IC0xXG4iCi0gCSJcdC5ieXRlIDB4NVxuXHQudWxlYjEy OCA3MFxuXHQudWxlYjEyOCA1NVxuIiwKLSsjZW5kaWYKLSAJZmNvZnMsIENGUkFNRV9TSVpFKTsK LSAgICAgZm9yIChpID0gMTQ7IGkgPD0gMzE7IGkrKykKLSAgICAgICBmcHJpbnRmKGN0eC0+ZnAs Ci0gCSJcdC5ieXRlICVkXG5cdC51bGViMTI4ICVkXG4iCi0gCSJcdC5ieXRlICVkXG5cdC51bGVi MTI4ICVkXG4iLAotLQkweDgwK2ksIDM3KygzMS1pKSwgMHg4MCszMitpLCAyKzIqKDMxLWkpKTsK LSsjaWYgTEpfQVJDSF9QUEMzMk9ONjQKLSsJMHg4MCtpLCAxOSsoMzEtaSksIDB4ODArMzIraSwg MSsoMzEtaSkKLSsjZWxzZQotKwkweDgwK2ksIDM3KygzMS1pKSwgMHg4MCszMitpLCAyKzIqKDMx LWkpCi0rI2VuZGlmCi0rICAgICAgKTsKLSAgICAgZnByaW50ZihjdHgtPmZwLAotIAkiXHQuYWxp Z24gMlxuIgotIAkiLkxFRkRFMjpcblxuIik7Ci1AQCAtNTIzMyw4ICs1NjYxLDEyIEBAIHN0YXRp YyB2b2lkIGVtaXRfYXNtX2RlYnVnKEJ1aWxkQ3R4ICpjdHgpCi0gCSJcdC5sb25nIGxqX3ZtX2Zm aV9jYWxsLS5cbiIKLSAJIlx0LmxvbmcgJWRcbiIKLSAJIlx0LnVsZWIxMjggMFxuIgkJCS8qIGF1 Z21lbnRhdGlvbiBsZW5ndGggKi8KLSsjaWYgTEpfQVJDSF9QUEMzMk9ONjQKLSsJIlx0LmJ5dGUg MHgxMVxuXHQudWxlYjEyOCA2NVxuXHQuc2xlYjEyOCAtMlxuIgotKyNlbHNlCi0gCSJcdC5ieXRl IDB4MTFcblx0LnVsZWIxMjggNjVcblx0LnNsZWIxMjggLTFcbiIKLS0JIlx0LmJ5dGUgMHg4ZVxu XHQudWxlYjEyOCAyXG4iCi0rI2VuZGlmCi0rCSJcdC5ieXRlIDB4OGVcblx0LnVsZWIxMjggMVxu IgotIAkiXHQuYnl0ZSAweGRcblx0LnVsZWIxMjggMHhlXG4iCi0gCSJcdC5hbGlnbiAyXG4iCi0g CSIuTEVGREUzOlxuXG4iLCAoaW50KWN0eC0+Y29kZXN6IC0gZmNvZnMpOwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9MdWFKSVQvZmlsZXMvcGF0Y2hlcy9wcGM2NC9maXgtdm0taml0LXBwYzY0LnBhdGNo IGIvc3JjcGtncy9MdWFKSVQvZmlsZXMvcGF0Y2hlcy9wcGM2NC9maXgtdm0taml0LXBwYzY0LnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGU3NjBiNzM4MzYxNC4uMDAwMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9MdWFKSVQvZmlsZXMvcGF0Y2hlcy9wcGM2NC9maXgtdm0t aml0LXBwYzY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGEvc3Jj L3ZtX3BwYy5kYXNjCTIwMTktMDYtMDMgMTk6NDE6NTAuMjE0NjcxNzMxICswMjAwCi0rKysgYi9z cmMvdm1fcHBjLmRhc2MJMjAxOS0wNi0wMyAxOTo0NDo0MC4yMjk2ODYxNDMgKzAyMDAKLUBAIC0y Nzc0LDcgKzI3NzQsNyBAQAotICAgfAotICAgfC0+dm1fZXhpdF9oYW5kbGVyOgotICAgfC5pZiBK SVQKLS0gIHwgIGFkZGkgc3AsIFRNUDAsIHNwLCAtKEVYSVRfT0ZGU0VUKzMyKjgrMzIqUFNJWkUp Ci0rICB8ICBhZGRpIHNwLCBzcCwgLShFWElUX09GRlNFVCszMio4KzMyKlBTSVpFKQotICAgfCAg c2F2ZXIgMyAvLyBDQVJHMQotICAgfCAgc2F2ZXIgNCAvLyBDQVJHMgotICAgfCAgc2F2ZXIgNSAv LyBDQVJHMwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9hYXJjaDY0LUZpeC1l eGl0LXN0dWItcGF0Y2hpbmcucGF0Y2ggYi9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2FhcmNoNjQt Rml4LWV4aXQtc3R1Yi1wYXRjaGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggNDg3YTFjZDFjYTc4NzYuLjAwMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvTHVhSklUL3Bh dGNoZXMvYWFyY2g2NC1GaXgtZXhpdC1zdHViLXBhdGNoaW5nLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMjMxICswLDAgQEAKLWNvbW1pdCA5ZGEwNjUzNTA5MmQ2ZDlkZWM0NDI2NDFhMjZjNjRi Y2U1NTc0MzIyCi1BdXRob3I6IE1pa2UgUGFsbCA8bWlrZT4KLURhdGU6ICAgU3VuIEp1biAyNCAx NDowODo1OSAyMDE4ICswMjAwCi0KLSAgICBBUk02NDogRml4IGV4aXQgc3R1YiBwYXRjaGluZy4K LSAgICAKLSAgICBDb250cmlidXRlZCBieSBKYXZpZXIgR3VlcnJhIEdpcmFsZGV6LgotCi1kaWZm IC0tZ2l0IGEvc3JjL2xqX2FzbV9hcm02NC5oIGIvc3JjL2xqX2FzbV9hcm02NC5oCi1pbmRleCBj YmIxODZkMy4uYmFhZmEyMWEgMTAwNjQ0Ci0tLS0gYS9zcmMvbGpfYXNtX2FybTY0LmgKLSsrKyBi L3NyYy9sal9hc21fYXJtNjQuaAotQEAgLTU2LDExICs1NiwxMSBAQCBzdGF0aWMgdm9pZCBhc21f ZXhpdHN0dWJfc2V0dXAoQVNNU3RhdGUgKmFzLCBFeGl0Tm8gbmV4aXRzKQotICAgICBhc21fbWNs aW1pdChhcyk7Ci0gICAvKiAxOiBzdHIgbHIsW3NwXTsgYmwgLT52bV9leGl0X2hhbmRsZXI7IG1v dnogdzAsdHJhY2VubzsgYmwgPDE7IGJsIDwxOyAuLi4gKi8KLSAgIGZvciAoaSA9IG5leGl0cy0x OyAoaW50MzJfdClpID49IDA7IGktLSkKLS0gICAgKi0tbXhwID0gQTY0SV9MRShBNjRJX0JMfCgo LTMtaSkmMHgwM2ZmZmZmZnUpKTsKLS0gICotLW14cCA9IEE2NElfTEUoQTY0SV9NT1Zad3xBNjRG X1UxNihhcy0+VC0+dHJhY2VubykpOwotKyAgICAqLS1teHAgPSBBNjRJX0xFKEE2NElfQkwgfCBB NjRGX1MyNigtMy1pKSk7Ci0rICAqLS1teHAgPSBBNjRJX0xFKEE2NElfTU9WWncgfCBBNjRGX1Ux Nihhcy0+VC0+dHJhY2VubykpOwotICAgbXhwLS07Ci0tICAqbXhwID0gQTY0SV9MRShBNjRJX0JM fCgoKE1Db2RlICopKHZvaWQgKilsal92bV9leGl0X2hhbmRsZXItbXhwKSYweDAzZmZmZmZmdSkp OwotLSAgKi0tbXhwID0gQTY0SV9MRShBNjRJX1NUUnh8QTY0Rl9EKFJJRF9MUil8QTY0Rl9OKFJJ RF9TUCkpOwotKyAgKm14cCA9IEE2NElfTEUoQTY0SV9CTCB8IEE2NEZfUzI2KCgoTUNvZGUgKiko dm9pZCAqKWxqX3ZtX2V4aXRfaGFuZGxlci1teHApKSk7Ci0rICAqLS1teHAgPSBBNjRJX0xFKEE2 NElfU1RSeCB8IEE2NEZfRChSSURfTFIpIHwgQTY0Rl9OKFJJRF9TUCkpOwotICAgYXMtPm1jdG9w ID0gbXhwOwotIH0KLSAKLUBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyB2b2lkIGFzbV9ndWFyZGNj KEFTTVN0YXRlICphcywgQTY0Q0MgY2MpCi0gICBNQ29kZSAqcCA9IGFzLT5tY3A7Ci0gICBpZiAo TEpfVU5MSUtFTFkocCA9PSBhcy0+aW52bWNwKSkgewotICAgICBhcy0+bG9vcGludiA9IDE7Ci0t ICAgICpwID0gQTY0SV9CIHwgKCh0YXJnZXQtcCkgJiAweDAzZmZmZmZmdSk7Ci0rICAgICpwID0g QTY0SV9CIHwgQTY0Rl9TMjYodGFyZ2V0LXApOwotICAgICBlbWl0X2NvbmRfYnJhbmNoKGFzLCBj Y14xLCBwLTEpOwotICAgICByZXR1cm47Ci0gICB9Ci1AQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMg dm9pZCBhc21fZ3VhcmR0bmIoQVNNU3RhdGUgKmFzLCBBNjRJbnMgYWksIFJlZyByLCB1aW50MzJf dCBiaXQpCi0gICBNQ29kZSAqcCA9IGFzLT5tY3A7Ci0gICBpZiAoTEpfVU5MSUtFTFkocCA9PSBh cy0+aW52bWNwKSkgewotICAgICBhcy0+bG9vcGludiA9IDE7Ci0tICAgICpwID0gQTY0SV9CIHwg KCh0YXJnZXQtcCkgJiAweDAzZmZmZmZmdSk7Ci0rICAgICpwID0gQTY0SV9CIHwgQTY0Rl9TMjYo dGFyZ2V0LXApOwotICAgICBlbWl0X3RuYihhcywgYWleMHgwMTAwMDAwMHUsIHIsIGJpdCwgcC0x KTsKLSAgICAgcmV0dXJuOwotICAgfQotQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgdm9pZCBh c21fZ3VhcmRjbmIoQVNNU3RhdGUgKmFzLCBBNjRJbnMgYWksIFJlZyByKQotICAgTUNvZGUgKnAg PSBhcy0+bWNwOwotICAgaWYgKExKX1VOTElLRUxZKHAgPT0gYXMtPmludm1jcCkpIHsKLSAgICAg YXMtPmxvb3BpbnYgPSAxOwotLSAgICAqcCA9IEE2NElfQiB8ICgodGFyZ2V0LXApICYgMHgwM2Zm ZmZmZnUpOwotKyAgICAqcCA9IEE2NElfQiB8IEE2NEZfUzI2KHRhcmdldC1wKTsKLSAgICAgZW1p dF9jbmIoYXMsIGFpXjB4MDEwMDAwMDB1LCByLCBwLTEpOwotICAgICByZXR1cm47Ci0gICB9Ci1A QCAtMTg1MCw3ICsxODUwLDcgQEAgc3RhdGljIHZvaWQgYXNtX2xvb3BfZml4dXAoQVNNU3RhdGUg KmFzKQotICAgICBwWy0yXSB8PSAoKHVpbnQzMl90KWRlbHRhICYgbWFzaykgPDwgNTsKLSAgIH0g ZWxzZSB7Ci0gICAgIHB0cmRpZmZfdCBkZWx0YSA9IHRhcmdldCAtIChwIC0gMSk7Ci0tICAgIHBb LTFdID0gQTY0SV9CIHwgKCh1aW50MzJfdCkoZGVsdGEpICYgMHgwM2ZmZmZmZnUpOwotKyAgICBw Wy0xXSA9IEE2NElfQiB8IEE2NEZfUzI2KGRlbHRhKTsKLSAgIH0KLSB9Ci0gCi1AQCAtMTkxOSw3 ICsxOTE5LDcgQEAgc3RhdGljIHZvaWQgYXNtX3RhaWxfZml4dXAoQVNNU3RhdGUgKmFzLCBUcmFj ZU5vIGxuaykKLSAgIH0KLSAgIC8qIFBhdGNoIGV4aXQgYnJhbmNoLiAqLwotICAgdGFyZ2V0ID0g bG5rID8gdHJhY2VyZWYoYXMtPkosIGxuayktPm1jb2RlIDogKE1Db2RlICopbGpfdm1fZXhpdF9p bnRlcnA7Ci0tICBwWy0xXSA9IEE2NElfQiB8ICgoKHRhcmdldC1wKSsxKSYweDAzZmZmZmZmdSk7 Ci0rICBwWy0xXSA9IEE2NElfQiB8IEE2NEZfUzI2KCh0YXJnZXQtcCkrMSk7Ci0gfQotIAotIC8q IFByZXBhcmUgdGFpbCBvZiBjb2RlLiAqLwotQEAgLTE5ODIsNDAgKzE5ODIsNTAgQEAgdm9pZCBs al9hc21fcGF0Y2hleGl0KGppdF9TdGF0ZSAqSiwgR0N0cmFjZSAqVCwgRXhpdE5vIGV4aXRubywg TUNvZGUgKnRhcmdldCkKLSB7Ci0gICBNQ29kZSAqcCA9IFQtPm1jb2RlOwotICAgTUNvZGUgKnBl ID0gKE1Db2RlICopKChjaGFyICopcCArIFQtPnN6bWNvZGUpOwotLSAgTUNvZGUgKmNzdGFydCA9 IE5VTEwsICpjZW5kID0gcDsKLSsgIE1Db2RlICpjc3RhcnQgPSBOVUxMOwotICAgTUNvZGUgKm1j YXJlYSA9IGxqX21jb2RlX3BhdGNoKEosIHAsIDApOwotICAgTUNvZGUgKnB4ID0gZXhpdHN0dWJf dHJhY2VfYWRkcihULCBleGl0bm8pOwotKyAgLyogTm90ZTogdGhpcyBhc3N1bWVzIGEgdHJhY2Ug ZXhpdCBpcyBvbmx5IGV2ZXIgcGF0Y2hlZCBvbmNlLiAqLwotICAgZm9yICg7IHAgPCBwZTsgcCsr KSB7Ci0gICAgIC8qIExvb2sgZm9yIGV4aXRzdHViIGJyYW5jaCwgcmVwbGFjZSB3aXRoIGJyYW5j aCB0byB0YXJnZXQuICovCi0rICAgIHB0cmRpZmZfdCBkZWx0YSA9IHRhcmdldCAtIHA7Ci0gICAg IE1Db2RlIGlucyA9IEE2NElfTEUoKnApOwotICAgICBpZiAoKGlucyAmIDB4ZmYwMDAwMDB1KSA9 PSAweDU0MDAwMDAwdSAmJgotIAkoKGlucyBeICgocHgtcCk8PDUpKSAmIDB4MDBmZmZmZTB1KSA9 PSAwKSB7Ci0tICAgICAgLyogUGF0Y2ggYmNjIGV4aXRzdHViLiAqLwotLSAgICAgICpwID0gQTY0 SV9MRSgoaW5zICYgMHhmZjAwMDAxZnUpIHwgKCgodGFyZ2V0LXApPDw1KSAmIDB4MDBmZmZmZTB1 KSk7Ci0tICAgICAgY2VuZCA9IHArMTsKLS0gICAgICBpZiAoIWNzdGFydCkgY3N0YXJ0ID0gcDsK LSsgICAgICAvKiBQYXRjaCBiY2MsIGlmIHdpdGhpbiByYW5nZS4gKi8KLSsgICAgICBpZiAoQTY0 Rl9TX09LKGRlbHRhLCAxOSkpIHsKLSsJKnAgPSBBNjRJX0xFKChpbnMgJiAweGZmMDAwMDFmdSkg fCBBNjRGX1MxOShkZWx0YSkpOwotKwlpZiAoIWNzdGFydCkgY3N0YXJ0ID0gcDsKLSsgICAgICB9 Ci0gICAgIH0gZWxzZSBpZiAoKGlucyAmIDB4ZmMwMDAwMDB1KSA9PSAweDE0MDAwMDAwdSAmJgot IAkgICAgICAgKChpbnMgXiAocHgtcCkpICYgMHgwM2ZmZmZmZnUpID09IDApIHsKLS0gICAgICAv KiBQYXRjaCBiIGV4aXRzdHViLiAqLwotLSAgICAgICpwID0gQTY0SV9MRSgoaW5zICYgMHhmYzAw MDAwMHUpIHwgKCh0YXJnZXQtcCkgJiAweDAzZmZmZmZmdSkpOwotLSAgICAgIGNlbmQgPSBwKzE7 Ci0rICAgICAgLyogUGF0Y2ggYi4gKi8KLSsgICAgICBsdWFfYXNzZXJ0KEE2NEZfU19PSyhkZWx0 YSwgMjYpKTsKLSsgICAgICAqcCA9IEE2NElfTEUoKGlucyAmIDB4ZmMwMDAwMDB1KSB8IEE2NEZf UzI2KGRlbHRhKSk7Ci0gICAgICAgaWYgKCFjc3RhcnQpIGNzdGFydCA9IHA7Ci0gICAgIH0gZWxz ZSBpZiAoKGlucyAmIDB4N2UwMDAwMDB1KSA9PSAweDM0MDAwMDAwdSAmJgotIAkgICAgICAgKChp bnMgXiAoKHB4LXApPDw1KSkgJiAweDAwZmZmZmUwdSkgPT0gMCkgewotLSAgICAgIC8qIFBhdGNo IGNiei9jYm56IGV4aXRzdHViLiAqLwotLSAgICAgICpwID0gQTY0SV9MRSgoaW5zICYgMHhmZjAw MDAxZikgfCAoKCh0YXJnZXQtcCk8PDUpICYgMHgwMGZmZmZlMHUpKTsKLS0gICAgICBjZW5kID0g cCsxOwotLSAgICAgIGlmICghY3N0YXJ0KSBjc3RhcnQgPSBwOwotKyAgICAgIC8qIFBhdGNoIGNi ei9jYm56LCBpZiB3aXRoaW4gcmFuZ2UuICovCi0rICAgICAgaWYgKEE2NEZfU19PSyhkZWx0YSwg MTkpKSB7Ci0rCSpwID0gQTY0SV9MRSgoaW5zICYgMHhmZjAwMDAxZnUpIHwgQTY0Rl9TMTkoZGVs dGEpKTsKLSsJaWYgKCFjc3RhcnQpIGNzdGFydCA9IHA7Ci0rICAgICAgfQotICAgICB9IGVsc2Ug aWYgKChpbnMgJiAweDdlMDAwMDAwdSkgPT0gMHgzNjAwMDAwMHUgJiYKLSAJICAgICAgICgoaW5z IF4gKChweC1wKTw8NSkpICYgMHgwMDA3ZmZlMHUpID09IDApIHsKLS0gICAgICAvKiBQYXRjaCB0 YnovdGJueiBleGl0c3R1Yi4gKi8KLS0gICAgICAqcCA9IEE2NElfTEUoKGlucyAmIDB4ZmZmODAw MWZ1KSB8ICgoKHRhcmdldC1wKTw8NSkgJiAweDAwMDdmZmUwdSkpOwotLSAgICAgIGNlbmQgPSBw KzE7Ci0tICAgICAgaWYgKCFjc3RhcnQpIGNzdGFydCA9IHA7Ci0rICAgICAgLyogUGF0Y2ggdGJ6 L3RibnosIGlmIHdpdGhpbiByYW5nZS4gKi8KLSsgICAgICBpZiAoQTY0Rl9TX09LKGRlbHRhLCAx NCkpIHsKLSsJKnAgPSBBNjRJX0xFKChpbnMgJiAweGZmZjgwMDFmdSkgfCBBNjRGX1MxNChkZWx0 YSkpOwotKwlpZiAoIWNzdGFydCkgY3N0YXJ0ID0gcDsKLSsgICAgICB9Ci0gICAgIH0KLSAgIH0K LS0gIGx1YV9hc3NlcnQoY3N0YXJ0ICE9IE5VTEwpOwotLSAgbGpfbWNvZGVfc3luYyhjc3RhcnQs IGNlbmQpOwotKyAgeyAgLyogQWx3YXlzIHBhdGNoIGxvbmctcmFuZ2UgYnJhbmNoIGluIGV4aXQg c3R1YiBpdHNlbGYuICovCi0rICAgIHB0cmRpZmZfdCBkZWx0YSA9IHRhcmdldCAtIHB4OwotKyAg ICBsdWFfYXNzZXJ0KEE2NEZfU19PSyhkZWx0YSwgMjYpKTsKLSsgICAgKnB4ID0gQTY0SV9CIHwg QTY0Rl9TMjYoZGVsdGEpOwotKyAgICBpZiAoIWNzdGFydCkgY3N0YXJ0ID0gcHg7Ci0rICB9Ci0r ICBsal9tY29kZV9zeW5jKGNzdGFydCwgcHgrMSk7Ci0gICBsal9tY29kZV9wYXRjaChKLCBtY2Fy ZWEsIDEpOwotIH0KLSAKLWRpZmYgLS1naXQgYS9zcmMvbGpfZW1pdF9hcm02NC5oIGIvc3JjL2xq X2VtaXRfYXJtNjQuaAotaW5kZXggNmRhNGM3ZDQuLjEwMDFiMWQ4IDEwMDY0NAotLS0tIGEvc3Jj L2xqX2VtaXRfYXJtNjQuaAotKysrIGIvc3JjL2xqX2VtaXRfYXJtNjQuaAotQEAgLTI0MSw3ICsy NDEsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X2xvYWRrKEFTTVN0YXRlICphcywgUmVnIHJkLCB1aW50 NjRfdCB1NjQsIGludCBpczY0KQotICNkZWZpbmUgbWNwb2ZzKGFzLCBrKSBcCi0gICAoKGludHB0 cl90KSgodWludHB0cl90KShrKSAtICh1aW50cHRyX3QpKGFzLT5tY3AgLSAxKSkpCi0gI2RlZmlu ZSBjaGVja21jcG9mcyhhcywgaykgXAotLSAgKCgoKG1jcG9mcyhhcywgayk+PjIpICsgMHgwMDA0 MDAwMCkgPj4gMTkpID09IDApCi0rICAoQTY0Rl9TX09LKG1jcG9mcyhhcywgayk+PjIsIDE5KSkK LSAKLSBzdGF0aWMgUmVnIHJhX2FsbG9jayhBU01TdGF0ZSAqYXMsIGludHB0cl90IGssIFJlZ1Nl dCBhbGxvdyk7Ci0gCi1AQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyB2b2lkIGVtaXRfY29uZF9i cmFuY2goQVNNU3RhdGUgKmFzLCBBNjRDQyBjb25kLCBNQ29kZSAqdGFyZ2V0KQotIHsKLSAgIE1D b2RlICpwID0gLS1hcy0+bWNwOwotICAgcHRyZGlmZl90IGRlbHRhID0gdGFyZ2V0IC0gcDsKLS0g IGx1YV9hc3NlcnQoKChkZWx0YSArIDB4NDAwMDApID4+IDE5KSA9PSAwKTsKLSsgIGx1YV9hc3Nl cnQoQTY0Rl9TX09LKGRlbHRhLCAxOSkpOwotICAgKnAgPSBBNjRJX0JDQyB8IEE2NEZfUzE5KGRl bHRhKSB8IGNvbmQ7Ci0gfQotIAotQEAgLTMyMCwyNCArMzIwLDI0IEBAIHN0YXRpYyB2b2lkIGVt aXRfYnJhbmNoKEFTTVN0YXRlICphcywgQTY0SW5zIGFpLCBNQ29kZSAqdGFyZ2V0KQotIHsKLSAg IE1Db2RlICpwID0gLS1hcy0+bWNwOwotICAgcHRyZGlmZl90IGRlbHRhID0gdGFyZ2V0IC0gcDsK LS0gIGx1YV9hc3NlcnQoKChkZWx0YSArIDB4MDIwMDAwMDApID4+IDI2KSA9PSAwKTsKLS0gICpw ID0gYWkgfCAoKHVpbnQzMl90KWRlbHRhICYgMHgwM2ZmZmZmZnUpOwotKyAgbHVhX2Fzc2VydChB NjRGX1NfT0soZGVsdGEsIDI2KSk7Ci0rICAqcCA9IGFpIHwgQTY0Rl9TMjYoZGVsdGEpOwotIH0K LSAKLSBzdGF0aWMgdm9pZCBlbWl0X3RuYihBU01TdGF0ZSAqYXMsIEE2NElucyBhaSwgUmVnIHIs IHVpbnQzMl90IGJpdCwgTUNvZGUgKnRhcmdldCkKLSB7Ci0gICBNQ29kZSAqcCA9IC0tYXMtPm1j cDsKLSAgIHB0cmRpZmZfdCBkZWx0YSA9IHRhcmdldCAtIHA7Ci0tICBsdWFfYXNzZXJ0KGJpdCA8 IDYzICYmICgoZGVsdGEgKyAweDIwMDApID4+IDE0KSA9PSAwKTsKLSsgIGx1YV9hc3NlcnQoYml0 IDwgNjMgJiYgQTY0Rl9TX09LKGRlbHRhLCAxNCkpOwotICAgaWYgKGJpdCA+IDMxKSBhaSB8PSBB NjRJX1g7Ci0tICAqcCA9IGFpIHwgQTY0Rl9CSVQoYml0ICYgMzEpIHwgQTY0Rl9TMTQoKHVpbnQz Ml90KWRlbHRhICYgMHgzZmZmdSkgfCByOwotKyAgKnAgPSBhaSB8IEE2NEZfQklUKGJpdCAmIDMx KSB8IEE2NEZfUzE0KGRlbHRhKSB8IHI7Ci0gfQotIAotIHN0YXRpYyB2b2lkIGVtaXRfY25iKEFT TVN0YXRlICphcywgQTY0SW5zIGFpLCBSZWcgciwgTUNvZGUgKnRhcmdldCkKLSB7Ci0gICBNQ29k ZSAqcCA9IC0tYXMtPm1jcDsKLSAgIHB0cmRpZmZfdCBkZWx0YSA9IHRhcmdldCAtIHA7Ci0tICBs dWFfYXNzZXJ0KCgoZGVsdGEgKyAweDQwMDAwKSA+PiAxOSkgPT0gMCk7Ci0rICBsdWFfYXNzZXJ0 KEE2NEZfU19PSyhkZWx0YSwgMTkpKTsKLSAgICpwID0gYWkgfCBBNjRGX1MxOShkZWx0YSkgfCBy OwotIH0KLSAKLUBAIC0zNDcsOCArMzQ3LDggQEAgc3RhdGljIHZvaWQgZW1pdF9jYWxsKEFTTVN0 YXRlICphcywgdm9pZCAqdGFyZ2V0KQotIHsKLSAgIE1Db2RlICpwID0gLS1hcy0+bWNwOwotICAg cHRyZGlmZl90IGRlbHRhID0gKGNoYXIgKil0YXJnZXQgLSAoY2hhciAqKXA7Ci0tICBpZiAoKCgo ZGVsdGE+PjIpICsgMHgwMjAwMDAwMCkgPj4gMjYpID09IDApIHsKLS0gICAgKnAgPSBBNjRJX0JM IHwgKCh1aW50MzJfdCkoZGVsdGE+PjIpICYgMHgwM2ZmZmZmZnUpOwotKyAgaWYgKEE2NEZfU19P SyhkZWx0YT4+MiwgMjYpKSB7Ci0rICAgICpwID0gQTY0SV9CTCB8IEE2NEZfUzI2KGRlbHRhPj4y KTsKLSAgIH0gZWxzZSB7ICAvKiBUYXJnZXQgb3V0IG9mIHJhbmdlOiBuZWVkIGluZGlyZWN0IGNh bGwuIEJ1dCBkb24ndCB1c2UgUjAtUjcuICovCi0gICAgIFJlZyByID0gcmFfYWxsb2NrKGFzLCBp NjRwdHIodGFyZ2V0KSwKLSAJCSAgICAgIFJTRVRfUkFOR0UoUklEX1g4LCBSSURfTUFYX0dQUikt UlNFVF9GSVhFRCk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xqX3RhcmdldF9hcm02NC5oIGIvc3JjL2xq X3RhcmdldF9hcm02NC5oCi1pbmRleCA1MjAwMjNhZS4uYTIwN2EyYmEgMTAwNjQ0Ci0tLS0gYS9z cmMvbGpfdGFyZ2V0X2FybTY0LmgKLSsrKyBiL3NyYy9sal90YXJnZXRfYXJtNjQuaAotQEAgLTEz Miw5ICsxMzIsOSBAQCBzdGF0aWMgTEpfQUlOTElORSB1aW50MzJfdCAqZXhpdHN0dWJfdHJhY2Vf YWRkcl8odWludDMyX3QgKnAsIHVpbnQzMl90IGV4aXRubykKLSAjZGVmaW5lIEE2NEZfSU1NUih4 KQkoKHgpIDw8IDE2KQotICNkZWZpbmUgQTY0Rl9VMTYoeCkJKCh4KSA8PCA1KQotICNkZWZpbmUg QTY0Rl9VMTIoeCkJKCh4KSA8PCAxMCkKLS0jZGVmaW5lIEE2NEZfUzI2KHgpCSh4KQotKyNkZWZp bmUgQTY0Rl9TMjYoeCkJKCgodWludDMyX3QpKHgpICYgMHgwM2ZmZmZmZnUpKQotICNkZWZpbmUg QTY0Rl9TMTkoeCkJKCgodWludDMyX3QpKHgpICYgMHg3ZmZmZnUpIDw8IDUpCi0tI2RlZmluZSBB NjRGX1MxNCh4KQkoKHgpIDw8IDUpCi0rI2RlZmluZSBBNjRGX1MxNCh4KQkoKCh1aW50MzJfdCko eCkgJiAweDNmZmZ1KSA8PCA1KQotICNkZWZpbmUgQTY0Rl9TOSh4KQkoKHgpIDw8IDEyKQotICNk ZWZpbmUgQTY0Rl9CSVQoeCkJKCh4KSA8PCAxOSkKLSAjZGVmaW5lIEE2NEZfU0goc2gsIHgpCSgo KHNoKSA8PCAyMikgfCAoKHgpIDw8IDEwKSkKLUBAIC0xNDUsNiArMTQ1LDkgQEAgc3RhdGljIExK X0FJTkxJTkUgdWludDMyX3QgKmV4aXRzdHViX3RyYWNlX2FkZHJfKHVpbnQzMl90ICpwLCB1aW50 MzJfdCBleGl0bm8pCi0gI2RlZmluZSBBNjRGX0xTTDE2KHgpCSgoKHgpIC8gMTYpIDw8IDIxKQot ICNkZWZpbmUgQTY0Rl9CU0goc2gpCSgoc2gpIDw8IDEwKQotIAotKy8qIENoZWNrIGZvciB2YWxp ZCBmaWVsZCByYW5nZS4gKi8KLSsjZGVmaW5lIEE2NEZfU19PSyh4LCBiKQkoKCgoeCkgKyAoMSA8 PCAoYi0xKSkpID4+IChiKSkgPT0gMCkKLSsKLSB0eXBlZGVmIGVudW0gQTY0SW5zIHsKLSAgIEE2 NElfUyA9IDB4MjAwMDAwMDAsCi0gICBBNjRJX1ggPSAweDgwMDAwMDAwLApkaWZmIC0tZ2l0IGEv c3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9hYXJjaDY0LXJlZ2lzdGVyLWFsbG9jYXRpb24tYnVnLWZp eC5wYXRjaCBiL3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMvYWFyY2g2NC1yZWdpc3Rlci1hbGxvY2F0 aW9uLWJ1Zy1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzMDI2NDc4 Njc1NWYzLi4wMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2FhcmNo NjQtcmVnaXN0ZXItYWxsb2NhdGlvbi1idWctZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MjkgKzAsMCBAQAotRnJvbTogSmFzb24gVGVwbGl0eiA8amFzb25AdGVuc3lyLmNvbT4KLURhdGU6 IE1vbiwgOSBPY3QgMjAxNyAyMzowMzowOSArMDAwMAotU3ViamVjdDogRml4IHJlZ2lzdGVyIGFs bG9jYXRpb24gYnVnIGluIGFybTY0Ci0KLS0tLQotIHNyYy9sal9hc21fYXJtNjQuaCB8IDMgKy0t Ci0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZm IC0tZ2l0IHNyYy9sal9hc21fYXJtNjQuaCBzcmMvbGpfYXNtX2FybTY0LmgKLWluZGV4IDhmZDky ZTcuLjU0OWY4YTYgMTAwNjQ0Ci0tLS0gYS9zcmMvbGpfYXNtX2FybTY0LmgKLSsrKyBiL3NyYy9s al9hc21fYXJtNjQuaAotQEAgLTg3MSw3ICs4NzEsNyBAQCBzdGF0aWMgdm9pZCBhc21faHJlZmso QVNNU3RhdGUgKmFzLCBJUklucyAqaXIpCi0gICBpbnQgYmlnb2ZzID0gIWVtaXRfY2hlY2tvZnMo QTY0SV9MRFJ4LCBvZnMpOwotICAgUmVnU2V0IGFsbG93ID0gUlNFVF9HUFI7Ci0gICBSZWcgZGVz dCA9IChyYV91c2VkKGlyKSB8fCBiaWdvZnMpID8gcmFfZGVzdChhcywgaXIsIFJTRVRfR1BSKSA6 IFJJRF9OT05FOwotLSAgUmVnIG5vZGUgPSByYV9hbGxvYzEoYXMsIGlyLT5vcDEsIGFsbG93KTsK LSsgIFJlZyBub2RlID0gcmFfYWxsb2MxKGFzLCBpci0+b3AxLCByYV9oYXNyZWcoZGVzdCkgPyBy c2V0X2NsZWFyKGFsbG93LCBkZXN0KSA6IGFsbG93KTsKLSAgIFJlZyBrZXkgPSByYV9zY3JhdGNo KGFzLCByc2V0X2NsZWFyKGFsbG93LCBub2RlKSk7Ci0gICBSZWcgaWR4ID0gbm9kZTsKLSAgIHVp bnQ2NF90IGs7Ci1AQCAtODc5LDcgKzg3OSw2IEBAIHN0YXRpYyB2b2lkIGFzbV9ocmVmayhBU01T dGF0ZSAqYXMsIElSSW5zICppcikKLSAgIHJzZXRfY2xlYXIoYWxsb3csIGtleSk7Ci0gICBpZiAo Ymlnb2ZzKSB7Ci0gICAgIGlkeCA9IGRlc3Q7Ci0tICAgIHJzZXRfY2xlYXIoYWxsb3csIGRlc3Qp OwotICAgICBrb2ZzID0gKGludDMyX3Qpb2Zmc2V0b2YoTm9kZSwga2V5KTsKLSAgIH0gZWxzZSBp ZiAocmFfaGFzcmVnKGRlc3QpKSB7Ci0gICAgIGVtaXRfb3BrKGFzLCBBNjRJX0FERHgsIGRlc3Qs IG5vZGUsIG9mcywgYWxsb3cpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9l OWFmMWFiZWM1NDJlNmY5ODUxZmYyMzY4ZTdmMTk2YjYzODJhNDRjLnBhdGNoIGIvc3JjcGtncy9M dWFKSVQvcGF0Y2hlcy9lOWFmMWFiZWM1NDJlNmY5ODUxZmYyMzY4ZTdmMTk2YjYzODJhNDRjLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjE3ODY2YzM5MmNmMC4uMDAwMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9lOWFmMWFiZWM1NDJlNmY5ODUx ZmYyMzY4ZTdmMTk2YjYzODJhNDRjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYyICswLDAg QEAKLUZyb20gZTlhZjFhYmVjNTQyZTZmOTg1MWZmMjM2OGU3ZjE5NmI2MzgyYTQ0YyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pa2UgUGFsbCA8bWlrZT4KLURhdGU6IFdlZCwgMzAg U2VwIDIwMjAgMDE6MzE6MjcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9y IGZ1bGwtcmFuZ2UgNjQgYml0IGxpZ2h0dXNlcmRhdGEuCi0KLS0tLQotIGRvYy9zdGF0dXMuaHRt bCAgIHwgMTEgLS0tLS0tLS0tCi0gc3JjL2ppdC9kdW1wLmx1YSAgfCAgNCArKystCi0gc3JjL2xp Yl9kZWJ1Zy5jICAgfCAxMiArKysrKy0tLS0tCi0gc3JjL2xpYl9qaXQuYyAgICAgfCAxNCArKysr KystLS0tLS0KLSBzcmMvbGliX3BhY2thZ2UuYyB8ICA4ICsrKy0tLS0KLSBzcmMvbGliX3N0cmlu Zy5jICB8ICAyICstCi0gc3JjL2xqX2FwaS5jICAgICAgfCA0MCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0KLSBzcmMvbGpfY2NhbGwuYyAgICB8ICAyICstCi0gc3JjL2xqX2Njb252 LmMgICAgfCAgMiArLQotIHNyYy9sal9jcmVjb3JkLmMgIHwgIDYgKystLS0KLSBzcmMvbGpfZGlz cGF0Y2guYyB8ICAyICstCi0gc3JjL2xqX2lyLmMgICAgICAgfCAgNiArKystLQotIHNyYy9sal9v YmouYyAgICAgIHwgIDUgKysrLS0KLSBzcmMvbGpfb2JqLmggICAgICB8IDU3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2xqX3NuYXAuYyAgICAg fCAgOSArKysrKysrLQotIHNyYy9sal9zdGF0ZS5jICAgIHwgIDYgKysrKysKLSBzcmMvbGpfc3Ry Zm10LmMgICB8ICAyICstCi0gMTcgZmlsZXMgY2hhbmdlZCwgMTIxIGluc2VydGlvbnMoKyksIDY3 IGRlbGV0aW9ucygtKQotCi0jZGlmZiAtLWdpdCBhL2RvYy9zdGF0dXMuaHRtbCBiL2RvYy9zdGF0 dXMuaHRtbAotI2luZGV4IDBhYWZlMTNhMi4uZmQwYWU4YmFlIDEwMDY0NAotIy0tLSBhL2RvYy9z dGF0dXMuaHRtbAotIysrKyBiL2RvYy9zdGF0dXMuaHRtbAotI0BAIC05MSwxNyArOTEsNiBAQCA8 aDI+Q3VycmVudCBTdGF0dXM8L2gyPgotIyA8dHQ+bHVhX2F0cGFuaWM8L3R0PiBvbiB4NjQuIFRo aXMgaXNzdWUgd2lsbCBiZSBmaXhlZCB3aXRoIHRoZSBuZXcKLSMgZ2FyYmFnZSBjb2xsZWN0b3Iu Ci0jIDwvbGk+Ci0jLTxsaT4KLSMtTHVhSklUIG9uIDY0IGJpdCBzeXN0ZW1zIHByb3ZpZGVzIGEg PGI+bGltaXRlZCByYW5nZTwvYj4gb2YgNDcgYml0cyBmb3IgdGhlCi0jLTxiPmxlZ2FjeSA8dHQ+ bGlnaHR1c2VyZGF0YTwvdHQ+PC9iPiBkYXRhIHR5cGUuCi0jLVRoaXMgaXMgb25seSByZWxldmFu dCBvbiB4NjQgc3lzdGVtcyB3aGljaCB1c2UgdGhlIG5lZ2F0aXZlIHBhcnQgb2YgdGhlCi0jLXZp cnR1YWwgYWRkcmVzcyBzcGFjZSBpbiB1c2VyIG1vZGUsIGUuZy4gU29sYXJpcy94NjQsIGFuZCBv biBBUk02NCBzeXN0ZW1zCi0jLWNvbmZpZ3VyZWQgd2l0aCBhIDQ4IGJpdCBvciA1MiBiaXQgVkEu Ci0jLUF2b2lkIHVzaW5nIDx0dD5saWdodHVzZXJkYXRhPC90dD4gdG8gaG9sZCBwb2ludGVycyB0 aGF0IG1heSBwb2ludCBvdXRzaWRlCi0jLW9mIHRoYXQgcmFuZ2UsIGUuZy4gdmFyaWFibGVzIG9u IHRoZSBzdGFjay4gSW4gZ2VuZXJhbCwgYXZvaWQgdGhpcyBkYXRhCi0jLXR5cGUgZm9yIG5ldyBj b2RlIGFuZCByZXBsYWNlIGl0IHdpdGggKG11Y2ggbW9yZSBwZXJmb3JtYW50KSBGRkkgYmluZGlu Z3MuCi0jLUZGSSBjZGF0YSBwb2ludGVycyBjYW4gYWRkcmVzcyB0aGUgZnVsbCA2NCBiaXQgcmFu Z2UuCi0jLTwvbGk+Ci0jIDwvdWw+Ci0jIDxiciBjbGFzcz0iZmx1c2giPgotIyA8L2Rpdj4KLUlu ZGV4OiBsdWFqaXQvc3JjL2ppdC9kdW1wLmx1YQotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGx1YWppdC5vcmln L3NyYy9qaXQvZHVtcC5sdWEKLSsrKyBsdWFqaXQvc3JjL2ppdC9kdW1wLmx1YQotQEAgLTMxNSw3 ICszMTUsOSBAQAotICAgbG9jYWwgdG4gPSB0eXBlKGspCi0gICBsb2NhbCBzCi0gICBpZiB0biA9 PSAibnVtYmVyIiB0aGVuCi0tICAgIGlmIGJhbmQoc24gb3IgMCwgMHgzMDAwMCkgfj0gMCB0aGVu Ci0rICAgIGlmIHQgPCAxMiB0aGVuCi0rICAgICAgcyA9IGsgPT0gMCBhbmQgIk5VTEwiIG9yIGZv cm1hdCgiWzB4JTA4eF0iLCBrKQotKyAgICBlbHNlaWYgYmFuZChzbiBvciAwLCAweDMwMDAwKSB+ PSAwIHRoZW4KLSAgICAgICBzID0gYmFuZChzbiwgMHgyMDAwMCkgfj0gMCBhbmQgImNvbnRwYyIg b3IgImZ0c3oiCi0gICAgIGVsc2VpZiBrID09IDJeNTIrMl41MSB0aGVuCi0gICAgICAgcyA9ICJi aWFzIgotSW5kZXg6IGx1YWppdC9zcmMvbGliX2RlYnVnLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsdWFq aXQub3JpZy9zcmMvbGliX2RlYnVnLmMKLSsrKyBsdWFqaXQvc3JjL2xpYl9kZWJ1Zy5jCi1AQCAt MjMxLDggKzIzMSw4IEBACi0gICBpbnQzMl90IG4gPSBsal9saWJfY2hlY2tpbnQoTCwgMikgLSAx OwotICAgaWYgKCh1aW50MzJfdCluID49IGZuLT5sLm51cHZhbHVlcykKLSAgICAgbGpfZXJyX2Fy ZyhMLCAyLCBMSl9FUlJfSURYUk5HKTsKLS0gIHNldGxpZ2h0dWRWKEwtPnRvcC0xLCBpc2x1YWZ1 bmMoZm4pID8gKHZvaWQgKilnY3JlZihmbi0+bC51dnB0cltuXSkgOgotLQkJCQkJKHZvaWQgKikm Zm4tPmMudXB2YWx1ZVtuXSk7Ci0rICBsdWFfcHVzaGxpZ2h0dXNlcmRhdGEoTCwgaXNsdWFmdW5j KGZuKSA/ICh2b2lkICopZ2NyZWYoZm4tPmwudXZwdHJbbl0pIDoKLSsJCQkJCSAgICh2b2lkICop JmZuLT5jLnVwdmFsdWVbbl0pOwotICAgcmV0dXJuIDE7Ci0gfQotIAotQEAgLTI4MywxMyArMjgz LDEzIEBACi0gCi0gLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0gCi0tI2RlZmluZSBLRVlfSE9PSwko KHZvaWQgKikweDMwMDQpCi0rI2RlZmluZSBLRVlfSE9PSwkoVTY0eCg4MDAwMDAwMCwwMDAwMDAw MCl8J2gnKQotIAotIHN0YXRpYyB2b2lkIGhvb2tmKGx1YV9TdGF0ZSAqTCwgbHVhX0RlYnVnICph cikKLSB7Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgaG9va25hbWVzW10gPQotICAgICB7 ImNhbGwiLCAicmV0dXJuIiwgImxpbmUiLCAiY291bnQiLCAidGFpbCByZXR1cm4ifTsKLS0gIGx1 YV9wdXNobGlnaHR1c2VyZGF0YShMLCBLRVlfSE9PSyk7Ci0rICAoTC0+dG9wKyspLT51NjQgPSBL RVlfSE9PSzsKLSAgIGx1YV9yYXdnZXQoTCwgTFVBX1JFR0lTVFJZSU5ERVgpOwotICAgaWYgKGx1 YV9pc2Z1bmN0aW9uKEwsIC0xKSkgewotICAgICBsdWFfcHVzaHN0cmluZyhMLCBob29rbmFtZXNb KGludClhci0+ZXZlbnRdKTsKLUBAIC0zMzQsNyArMzM0LDcgQEAKLSAgICAgY291bnQgPSBsdWFM X29wdGludChMLCBhcmcrMywgMCk7Ci0gICAgIGZ1bmMgPSBob29rZjsgbWFzayA9IG1ha2VtYXNr KHNtYXNrLCBjb3VudCk7Ci0gICB9Ci0tICBsdWFfcHVzaGxpZ2h0dXNlcmRhdGEoTCwgS0VZX0hP T0spOwotKyAgKEwtPnRvcCsrKS0+dTY0ID0gS0VZX0hPT0s7Ci0gICBsdWFfcHVzaHZhbHVlKEws IGFyZysxKTsKLSAgIGx1YV9yYXdzZXQoTCwgTFVBX1JFR0lTVFJZSU5ERVgpOwotICAgbHVhX3Nl dGhvb2soTCwgZnVuYywgbWFzaywgY291bnQpOwotQEAgLTM0OSw3ICszNDksNyBAQAotICAgaWYg KGhvb2sgIT0gTlVMTCAmJiBob29rICE9IGhvb2tmKSB7ICAvKiBleHRlcm5hbCBob29rPyAqLwot ICAgICBsdWFfcHVzaGxpdGVyYWwoTCwgImV4dGVybmFsIGhvb2siKTsKLSAgIH0gZWxzZSB7Ci0t ICAgIGx1YV9wdXNobGlnaHR1c2VyZGF0YShMLCBLRVlfSE9PSyk7Ci0rICAgIChMLT50b3ArKykt PnU2NCA9IEtFWV9IT09LOwotICAgICBsdWFfcmF3Z2V0KEwsIExVQV9SRUdJU1RSWUlOREVYKTsg ICAvKiBnZXQgaG9vayAqLwotICAgfQotICAgbHVhX3B1c2hzdHJpbmcoTCwgdW5tYWtlbWFzayht YXNrLCBidWZmKSk7Ci1JbmRleDogbHVhaml0L3NyYy9saWJfaml0LmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBsdWFqaXQub3JpZy9zcmMvbGliX2ppdC5jCi0rKysgbHVhaml0L3NyYy9saWJfaml0LmMKLUBA IC01NDAsMTUgKzU0MCwxNSBAQAotIAotIC8qIE5vdCBsb2FkZWQgYnkgZGVmYXVsdCwgdXNlOiBs b2NhbCBwcm9maWxlID0gcmVxdWlyZSgiaml0LnByb2ZpbGUiKSAqLwotIAotLXN0YXRpYyBjb25z dCBjaGFyIEtFWV9QUk9GSUxFX1RIUkVBRCA9ICd0JzsKLS1zdGF0aWMgY29uc3QgY2hhciBLRVlf UFJPRklMRV9GVU5DID0gJ2YnOwotKyNkZWZpbmUgS0VZX1BST0ZJTEVfVEhSRUFECShVNjR4KDgw MDAwMDAwLDAwMDAwMDAwKXwndCcpCi0rI2RlZmluZSBLRVlfUFJPRklMRV9GVU5DCShVNjR4KDgw MDAwMDAwLDAwMDAwMDAwKXwnZicpCi0gCi0gc3RhdGljIHZvaWQgaml0X3Byb2ZpbGVfY2FsbGJh Y2sobHVhX1N0YXRlICpMMiwgbHVhX1N0YXRlICpMLCBpbnQgc2FtcGxlcywKLSAJCQkJIGludCB2 bXN0YXRlKQotIHsKLSAgIFRWYWx1ZSBrZXk7Ci0gICBjVFZhbHVlICp0djsKLS0gIHNldGxpZ2h0 dWRWKCZrZXksICh2b2lkICopJktFWV9QUk9GSUxFX0ZVTkMpOwotKyAga2V5LnU2NCA9IEtFWV9Q Uk9GSUxFX0ZVTkM7Ci0gICB0diA9IGxqX3RhYl9nZXQoTCwgdGFiVihyZWdpc3RyeShMKSksICZr ZXkpOwotICAgaWYgKHR2aXNmdW5jKHR2KSkgewotICAgICBjaGFyIHZtc3QgPSAoY2hhcil2bXN0 YXRlOwotQEAgLTU3NSw5ICs1NzUsOSBAQAotICAgbHVhX1N0YXRlICpMMiA9IGx1YV9uZXd0aHJl YWQoTCk7ICAvKiBUaHJlYWQgdGhhdCBydW5zIHByb2ZpbGVyIGNhbGxiYWNrLiAqLwotICAgVFZh bHVlIGtleTsKLSAgIC8qIEFuY2hvciB0aHJlYWQgYW5kIGZ1bmN0aW9uIGluIHJlZ2lzdHJ5LiAq LwotLSAgc2V0bGlnaHR1ZFYoJmtleSwgKHZvaWQgKikmS0VZX1BST0ZJTEVfVEhSRUFEKTsKLSsg IGtleS51NjQgPSBLRVlfUFJPRklMRV9USFJFQUQ7Ci0gICBzZXR0aHJlYWRWKEwsIGxqX3RhYl9z ZXQoTCwgcmVnaXN0cnksICZrZXkpLCBMMik7Ci0tICBzZXRsaWdodHVkVigma2V5LCAodm9pZCAq KSZLRVlfUFJPRklMRV9GVU5DKTsKLSsgIGtleS51NjQgPSBLRVlfUFJPRklMRV9GVU5DOwotICAg c2V0ZnVuY1YoTCwgbGpfdGFiX3NldChMLCByZWdpc3RyeSwgJmtleSksIGZ1bmMpOwotICAgbGpf Z2NfYW55YmFycmllcnQoTCwgcmVnaXN0cnkpOwotICAgbHVhSklUX3Byb2ZpbGVfc3RhcnQoTCwg bW9kZSA/IHN0cmRhdGEobW9kZSkgOiAiIiwKLUBAIC01OTIsOSArNTkyLDkgQEAKLSAgIFRWYWx1 ZSBrZXk7Ci0gICBsdWFKSVRfcHJvZmlsZV9zdG9wKEwpOwotICAgcmVnaXN0cnkgPSB0YWJWKHJl Z2lzdHJ5KEwpKTsKLS0gIHNldGxpZ2h0dWRWKCZrZXksICh2b2lkICopJktFWV9QUk9GSUxFX1RI UkVBRCk7Ci0rICBrZXkudTY0ID0gS0VZX1BST0ZJTEVfVEhSRUFEOwotICAgc2V0bmlsVihsal90 YWJfc2V0KEwsIHJlZ2lzdHJ5LCAma2V5KSk7Ci0tICBzZXRsaWdodHVkVigma2V5LCAodm9pZCAq KSZLRVlfUFJPRklMRV9GVU5DKTsKLSsgIGtleS51NjQgPSBLRVlfUFJPRklMRV9GVU5DOwotICAg c2V0bmlsVihsal90YWJfc2V0KEwsIHJlZ2lzdHJ5LCAma2V5KSk7Ci0gICBsal9nY19hbnliYXJy aWVydChMLCByZWdpc3RyeSk7Ci0gICByZXR1cm4gMDsKLUluZGV4OiBsdWFqaXQvc3JjL2xpYl9w YWNrYWdlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGliX3BhY2thZ2UuYwot KysrIGx1YWppdC9zcmMvbGliX3BhY2thZ2UuYwotQEAgLTM5OCw3ICszOTgsNyBAQAotIAotIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSAqLwotIAotLSNkZWZpbmUgc2VudGluZWwJKCh2b2lkICopMHg0MDA0 KQotKyNkZWZpbmUgS0VZX1NFTlRJTkVMCShVNjR4KDgwMDAwMDAwLDAwMDAwMDAwKXwncycpCi0g Ci0gc3RhdGljIGludCBsal9jZl9wYWNrYWdlX3JlcXVpcmUobHVhX1N0YXRlICpMKQotIHsKLUBA IC00MDgsNyArNDA4LDcgQEAKLSAgIGx1YV9nZXRmaWVsZChMLCBMVUFfUkVHSVNUUllJTkRFWCwg Il9MT0FERUQiKTsKLSAgIGx1YV9nZXRmaWVsZChMLCAyLCBuYW1lKTsKLSAgIGlmIChsdWFfdG9i b29sZWFuKEwsIC0xKSkgeyAgLyogaXMgaXQgdGhlcmU/ICovCi0tICAgIGlmIChsdWFfdG91c2Vy ZGF0YShMLCAtMSkgPT0gc2VudGluZWwpICAvKiBjaGVjayBsb29wcyAqLwotKyAgICBpZiAoKEwt PnRvcC0xKS0+dTY0ID09IEtFWV9TRU5USU5FTCkgIC8qIGNoZWNrIGxvb3BzICovCi0gICAgICAg bHVhTF9lcnJvcihMLCAibG9vcCBvciBwcmV2aW91cyBlcnJvciBsb2FkaW5nIG1vZHVsZSAiIExV QV9RUywgbmFtZSk7Ci0gICAgIHJldHVybiAxOyAgLyogcGFja2FnZSBpcyBhbHJlYWR5IGxvYWRl ZCAqLwotICAgfQotQEAgLTQzMSwxNCArNDMxLDE0IEBACi0gICAgIGVsc2UKLSAgICAgICBsdWFf cG9wKEwsIDEpOwotICAgfQotLSAgbHVhX3B1c2hsaWdodHVzZXJkYXRhKEwsIHNlbnRpbmVsKTsK LSsgIChMLT50b3ArKyktPnU2NCA9IEtFWV9TRU5USU5FTDsKLSAgIGx1YV9zZXRmaWVsZChMLCAy LCBuYW1lKTsgIC8qIF9MT0FERURbbmFtZV0gPSBzZW50aW5lbCAqLwotICAgbHVhX3B1c2hzdHJp bmcoTCwgbmFtZSk7ICAvKiBwYXNzIG5hbWUgYXMgYXJndW1lbnQgdG8gbW9kdWxlICovCi0gICBs dWFfY2FsbChMLCAxLCAxKTsgIC8qIHJ1biBsb2FkZWQgbW9kdWxlICovCi0gICBpZiAoIWx1YV9p c25pbChMLCAtMSkpICAvKiBub24tbmlsIHJldHVybj8gKi8KLSAgICAgbHVhX3NldGZpZWxkKEws IDIsIG5hbWUpOyAgLyogX0xPQURFRFtuYW1lXSA9IHJldHVybmVkIHZhbHVlICovCi0gICBsdWFf Z2V0ZmllbGQoTCwgMiwgbmFtZSk7Ci0tICBpZiAobHVhX3RvdXNlcmRhdGEoTCwgLTEpID09IHNl bnRpbmVsKSB7ICAgLyogbW9kdWxlIGRpZCBub3Qgc2V0IGEgdmFsdWU/ICovCi0rICBpZiAoKEwt PnRvcC0xKS0+dTY0ID09IEtFWV9TRU5USU5FTCkgeyAgIC8qIG1vZHVsZSBkaWQgbm90IHNldCBh IHZhbHVlPyAqLwotICAgICBsdWFfcHVzaGJvb2xlYW4oTCwgMSk7ICAvKiB1c2UgdHJ1ZSBhcyBy ZXN1bHQgKi8KLSAgICAgbHVhX3B1c2h2YWx1ZShMLCAtMSk7ICAvKiBleHRyYSBjb3B5IHRvIGJl IHJldHVybmVkICovCi0gICAgIGx1YV9zZXRmaWVsZChMLCAyLCBuYW1lKTsgIC8qIF9MT0FERURb bmFtZV0gPSB0cnVlICovCi1JbmRleDogbHVhaml0L3NyYy9saWJfc3RyaW5nLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGliX3N0cmluZy5jCi0rKysgbHVhaml0L3NyYy9saWJf c3RyaW5nLmMKLUBAIC03MTQsNyArNzE0LDcgQEAKLSAJbGpfc3RyZm10X3B1dGZjaGFyKHNiLCBz ZiwgbGpfbGliX2NoZWNraW50KEwsIGFyZykpOwotIAlicmVhazsKLSAgICAgICBjYXNlIFNUUkZN VF9QVFI6ICAvKiBObyBmb3JtYXR0aW5nLiAqLwotLQlsal9zdHJmbXRfcHV0cHRyKHNiLCBsal9v YmpfcHRyKEwtPmJhc2UrYXJnLTEpKTsKLSsJbGpfc3RyZm10X3B1dHB0cihzYiwgbGpfb2JqX3B0 cihHKEwpLCBMLT5iYXNlK2FyZy0xKSk7Ci0gCWJyZWFrOwotICAgICAgIGRlZmF1bHQ6Ci0gCWx1 YV9hc3NlcnQoMCk7Ci1JbmRleDogbHVhaml0L3NyYy9sal9hcGkuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGx1YWppdC5vcmlnL3NyYy9sal9hcGkuYwotKysrIGx1YWppdC9zcmMvbGpfYXBpLmMKLUBAIC01 OTUsNyArNTk1LDcgQEAKLSAgIGlmICh0dmlzdWRhdGEobykpCi0gICAgIHJldHVybiB1ZGRhdGEo dWRhdGFWKG8pKTsKLSAgIGVsc2UgaWYgKHR2aXNsaWdodHVkKG8pKQotLSAgICByZXR1cm4gbGln aHR1ZFYobyk7Ci0rICAgIHJldHVybiBsaWdodHVkVihHKEwpLCBvKTsKLSAgIGVsc2UKLSAgICAg cmV0dXJuIE5VTEw7Ci0gfQotQEAgLTYwOCw3ICs2MDgsNyBAQAotIAotIExVQV9BUEkgY29uc3Qg dm9pZCAqbHVhX3RvcG9pbnRlcihsdWFfU3RhdGUgKkwsIGludCBpZHgpCi0gewotLSAgcmV0dXJu IGxqX29ial9wdHIoaW5kZXgyYWRyKEwsIGlkeCkpOwotKyAgcmV0dXJuIGxqX29ial9wdHIoRyhM KSwgaW5kZXgyYWRyKEwsIGlkeCkpOwotIH0KLSAKLSAvKiAtLSBTdGFjayBzZXR0ZXJzIChvYmpl Y3QgY3JlYXRpb24pIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLUBA IC02OTQsOSArNjk0LDM4IEBACi0gICBpbmNyX3RvcChMKTsKLSB9Ci0gCi0rI2lmIExKXzY0Ci0r c3RhdGljIHZvaWQgKmxpZ2h0dWRfaW50ZXJuKGx1YV9TdGF0ZSAqTCwgdm9pZCAqcCkKLSt7Ci0r ICBnbG9iYWxfU3RhdGUgKmcgPSBHKEwpOwotKyAgdWludDY0X3QgdSA9ICh1aW50NjRfdClwOwot KyAgdWludDMyX3QgdXAgPSBsaWdodHVkdXAodSk7Ci0rICB1aW50MzJfdCAqc2VnbWFwID0gbXJl ZihnLT5nYy5saWdodHVkc2VnLCB1aW50MzJfdCk7Ci0rICBNU2l6ZSBzZWdudW0gPSBnLT5nYy5s aWdodHVkbnVtOwotKyAgaWYgKHNlZ21hcCkgewotKyAgICBNU2l6ZSBzZWc7Ci0rICAgIGZvciAo c2VnID0gMDsgc2VnIDw9IHNlZ251bTsgc2VnKyspCi0rICAgICAgaWYgKHNlZ21hcFtzZWddID09 IHVwKSAgLyogRmFzdCBwYXRoLiAqLwotKwlyZXR1cm4gKHZvaWQgKikoKCh1aW50NjRfdClzZWcg PDwgTEpfTElHSFRVRF9CSVRTX0xPKSB8IGxpZ2h0dWRsbyh1KSk7Ci0rICAgIHNlZ251bSsrOwot KyAgfQotKyAgaWYgKCEoKHNlZ251bS0xKSAmIHNlZ251bSkgJiYgc2VnbnVtICE9IDEpIHsKLSsg ICAgaWYgKHNlZ251bSA+PSAoMSA8PCBMSl9MSUdIVFVEX0JJVFNfU0VHKSkgbGpfZXJyX21zZyhM LCBMSl9FUlJfQkFETFUpOwotKyAgICBsal9tZW1fcmVhbGxvY3ZlYyhMLCBzZWdtYXAsIHNlZ251 bSwgc2VnbnVtID8gMipzZWdudW0gOiAydSwgdWludDMyX3QpOwotKyAgICBzZXRtcmVmKGctPmdj LmxpZ2h0dWRzZWcsIHNlZ21hcCk7Ci0rICB9Ci0rICBnLT5nYy5saWdodHVkbnVtID0gc2VnbnVt OwotKyAgc2VnbWFwW3NlZ251bV0gPSB1cDsKLSsgIHJldHVybiAodm9pZCAqKSgoKHVpbnQ2NF90 KXNlZ251bSA8PCBMSl9MSUdIVFVEX0JJVFNfTE8pIHwgbGlnaHR1ZGxvKHUpKTsKLSt9Ci0rI2Vu ZGlmCi0rCi0gTFVBX0FQSSB2b2lkIGx1YV9wdXNobGlnaHR1c2VyZGF0YShsdWFfU3RhdGUgKkws IHZvaWQgKnApCi0gewotLSAgc2V0bGlnaHR1ZFYoTC0+dG9wLCBjaGVja2xpZ2h0dWRwdHIoTCwg cCkpOwotKyNpZiBMSl82NAotKyAgcCA9IGxpZ2h0dWRfaW50ZXJuKEwsIHApOwotKyNlbmRpZgot KyAgc2V0cmF3bGlnaHR1ZFYoTC0+dG9wLCBwKTsKLSAgIGluY3JfdG9wKEwpOwotIH0KLSAKLUBA IC0xMTM4LDcgKzExNjcsMTAgQEAKLSAgIGZuLT5jLmYgPSBmdW5jOwotICAgc2V0ZnVuY1YoTCwg dG9wKyssIGZuKTsKLSAgIGlmIChMSl9GUjIpIHNldG5pbFYodG9wKyspOwotLSAgc2V0bGlnaHR1 ZFYodG9wKyssIGNoZWNrbGlnaHR1ZHB0cihMLCB1ZCkpOwotKyNpZiBMSl82NAotKyAgdWQgPSBs aWdodHVkX2ludGVybihMLCB1ZCk7Ci0rI2VuZGlmCi0rICBzZXRyYXdsaWdodHVkVih0b3ArKywg dWQpOwotICAgY2ZyYW1lX25yZXMoTC0+Y2ZyYW1lKSA9IDErMDsgIC8qIFplcm8gcmVzdWx0cy4g Ki8KLSAgIEwtPnRvcCA9IHRvcDsKLSAgIHJldHVybiB0b3AtMTsgIC8qIE5vdyBjYWxsIHRoZSBu ZXdseSBhbGxvY2F0ZWQgQyBmdW5jdGlvbi4gKi8KLUluZGV4OiBsdWFqaXQvc3JjL2xqX2NjYWxs LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGpfY2NhbGwuYwotKysrIGx1YWpp dC9zcmMvbGpfY2NhbGwuYwotQEAgLTEzMTQsNyArMTMxNCw3IEBACi0gICAgIGxqX3ZtX2ZmaV9j YWxsKCZjYyk7Ci0gICAgIGlmIChjdHMtPmNiLnNsb3QgIT0gfjB1KSB7ICAvKiBCbGFja2xpc3Qg ZnVuY3Rpb24gdGhhdCBjYWxsZWQgYSBjYWxsYmFjay4gKi8KLSAgICAgICBUVmFsdWUgdHY7Ci0t ICAgICAgc2V0bGlnaHR1ZFYoJnR2LCAodm9pZCAqKWNjLmZ1bmMpOwotKyAgICAgIHR2LnU2NCA9 ICgodWludHB0cl90KSh2b2lkICopY2MuZnVuYyA+PiAyKSB8IFU2NHgoODAwMDAwMDAwLCAwMDAw MDAwMCk7Ci0gICAgICAgc2V0Ym9vbFYobGpfdGFiX3NldChMLCBjdHMtPm1pc2NtYXAsICZ0diks IDEpOwotICAgICB9Ci0gICAgIGN0ID0gKENUeXBlICopKChpbnRwdHJfdCljdCsoaW50cHRyX3Qp Y3RzLT50YWIpOyAgLyogTWF5IGJlIHJlYWxsb2NhdGVkLiAqLwotSW5kZXg6IGx1YWppdC9zcmMv bGpfY2NvbnYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGx1YWppdC5vcmlnL3NyYy9sal9jY29udi5jCi0r KysgbHVhaml0L3NyYy9sal9jY29udi5jCi1AQCAtNjExLDcgKzYxMSw3IEBACi0gICAgIGlmICh1 ZC0+dWR0eXBlID09IFVEVFlQRV9JT19GSUxFKQotICAgICAgIHRtcHB0ciA9ICoodm9pZCAqKil0 bXBwdHI7Ci0gICB9IGVsc2UgaWYgKHR2aXNsaWdodHVkKG8pKSB7Ci0tICAgIHRtcHB0ciA9IGxp Z2h0dWRWKG8pOwotKyAgICB0bXBwdHIgPSBsaWdodHVkVihjdHMtPmcsIG8pOwotICAgfSBlbHNl IGlmICh0dmlzZnVuYyhvKSkgewotICAgICB2b2lkICpwID0gbGpfY2NhbGxiYWNrX25ldyhjdHMs IGQsIGZ1bmNWKG8pKTsKLSAgICAgaWYgKHApIHsKLUluZGV4OiBsdWFqaXQvc3JjL2xqX2NyZWNv cmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGx1YWppdC5vcmlnL3NyYy9sal9jcmVjb3JkLmMKLSsrKyBs dWFqaXQvc3JjL2xqX2NyZWNvcmQuYwotQEAgLTY0Myw4ICs2NDMsNyBAQAotICAgICB9Ci0gICB9 IGVsc2UgaWYgKHRyZWZfaXNsaWdodHVkKHNwKSkgewotICNpZiBMSl82NAotLSAgICBzcCA9IGVt aXRpcihJUlQoSVJfQkFORCwgSVJUX1A2NCksIHNwLAotLQkJbGpfaXJfa2ludDY0KEosIFU2NHgo MDAwMDdmZmYsZmZmZmZmZmYpKSk7Ci0rICAgIGxqX3RyYWNlX2VycihKLCBMSl9UUkVSUl9OWUlD T05WKTsKLSAjZW5kaWYKLSAgIH0gZWxzZSB7ICAvKiBOWUk6IHRyZWZfaXN0YWIoc3ApLiAqLwot ICAgICBJUlR5cGUgdDsKLUBAIC0xMjA5LDggKzEyMDgsNyBAQAotICAgICBUUmVmIHRyOwotICAg ICBUVmFsdWUgdHY7Ci0gICAgIC8qIENoZWNrIGZvciBibGFja2xpc3RlZCBDIGZ1bmN0aW9ucyB0 aGF0IG1pZ2h0IGNhbGwgYSBjYWxsYmFjay4gKi8KLS0gICAgc2V0bGlnaHR1ZFYoJnR2LAotLQkJ Y2RhdGFfZ2V0cHRyKGNkYXRhcHRyKGNkKSwgKExKXzY0ICYmIHRwID09IElSVF9QNjQpID8gOCA6 IDQpKTsKLSsgICAgdHYudTY0ID0gKCh1aW50cHRyX3QpY2RhdGFfZ2V0cHRyKGNkYXRhcHRyKGNk KSwgKExKXzY0ICYmIHRwID09IElSVF9QNjQpID8gOCA6IDQpID4+IDIpIHwgVTY0eCg4MDAwMDAw MDAsIDAwMDAwMDAwKTsKLSAgICAgaWYgKHR2aXN0cnVlKGxqX3RhYl9nZXQoSi0+TCwgY3RzLT5t aXNjbWFwLCAmdHYpKSkKLSAgICAgICBsal90cmFjZV9lcnIoSiwgTEpfVFJFUlJfQkxBQ0tMKTsK LSAgICAgaWYgKGN0eXBlX2lzdm9pZChjdHItPmluZm8pKSB7Ci1JbmRleDogbHVhaml0L3NyYy9s al9kaXNwYXRjaC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbHVhaml0Lm9yaWcvc3JjL2xqX2Rpc3BhdGNo LmMKLSsrKyBsdWFqaXQvc3JjL2xqX2Rpc3BhdGNoLmMKLUBAIC0zMDIsNyArMzAyLDcgQEAKLSAg ICAgICBpZiAoaWR4ICE9IDApIHsKLSAJY1RWYWx1ZSAqdHYgPSBpZHggPiAwID8gTC0+YmFzZSAr IChpZHgtMSkgOiBMLT50b3AgKyBpZHg7Ci0gCWlmICh0dmlzbGlnaHR1ZCh0dikpCi0tCSAgZy0+ d3JhcGYgPSAobHVhX0NGdW5jdGlvbilsaWdodHVkVih0dik7Ci0rCSAgZy0+d3JhcGYgPSAobHVh X0NGdW5jdGlvbilsaWdodHVkVihnLCB0dik7Ci0gCWVsc2UKLSAJICByZXR1cm4gMDsgIC8qIEZh aWxlZC4gKi8KLSAgICAgICB9IGVsc2UgewotSW5kZXg6IGx1YWppdC9zcmMvbGpfaXIuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGx1YWppdC5vcmlnL3NyYy9sal9pci5jCi0rKysgbHVhaml0L3NyYy9sal9p ci5jCi1AQCAtMzg2LDggKzM4NiwxMCBAQAotICAgY2FzZSBJUl9LUFJJOiBzZXRwcmlWKHR2LCBp cnRfdG9pdHlwZShpci0+dCkpOyBicmVhazsKLSAgIGNhc2UgSVJfS0lOVDogc2V0aW50Vih0diwg aXItPmkpOyBicmVhazsKLSAgIGNhc2UgSVJfS0dDOiBzZXRnY1YoTCwgdHYsIGlyX2tnYyhpciks IGlydF90b2l0eXBlKGlyLT50KSk7IGJyZWFrOwotLSAgY2FzZSBJUl9LUFRSOiBjYXNlIElSX0tL UFRSOiBzZXRsaWdodHVkVih0diwgaXJfa3B0cihpcikpOyBicmVhazsKLS0gIGNhc2UgSVJfS05V TEw6IHNldGxpZ2h0dWRWKHR2LCBOVUxMKTsgYnJlYWs7Ci0rICBjYXNlIElSX0tQVFI6IGNhc2Ug SVJfS0tQVFI6Ci0rICAgIHNldG51bVYodHYsIChsdWFfTnVtYmVyKSh1aW50cHRyX3QpaXJfa3B0 cihpcikpOwotKyAgICBicmVhazsKLSsgIGNhc2UgSVJfS05VTEw6IHNldGludFYodHYsIDApOyBi cmVhazsKLSAgIGNhc2UgSVJfS05VTTogc2V0bnVtVih0diwgaXJfa251bShpciktPm4pOyBicmVh azsKLSAjaWYgTEpfSEFTRkZJCi0gICBjYXNlIElSX0tJTlQ2NDogewotSW5kZXg6IGx1YWppdC9z cmMvbGpfb2JqLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGpfb2JqLmMKLSsr KyBsdWFqaXQvc3JjL2xqX29iai5jCi1AQCAtMzQsMTIgKzM0LDEzIEBACi0gfQotIAotIC8qIFJl dHVybiBwb2ludGVyIHRvIG9iamVjdCBvciBpdHMgb2JqZWN0IGRhdGEuICovCi0tY29uc3Qgdm9p ZCAqIExKX0ZBU1RDQUxMIGxqX29ial9wdHIoY1RWYWx1ZSAqbykKLStjb25zdCB2b2lkICogTEpf RkFTVENBTEwgbGpfb2JqX3B0cihnbG9iYWxfU3RhdGUgKmcsIGNUVmFsdWUgKm8pCi0gewotKyAg VU5VU0VEKGcpOwotICAgaWYgKHR2aXN1ZGF0YShvKSkKLSAgICAgcmV0dXJuIHVkZGF0YSh1ZGF0 YVYobykpOwotICAgZWxzZSBpZiAodHZpc2xpZ2h0dWQobykpCi0tICAgIHJldHVybiBsaWdodHVk VihvKTsKLSsgICAgcmV0dXJuIGxpZ2h0dWRWKGcsIG8pOwotICAgZWxzZSBpZiAoTEpfSEFTRkZJ ICYmIHR2aXNjZGF0YShvKSkKLSAgICAgcmV0dXJuIGNkYXRhcHRyKGNkYXRhVihvKSk7Ci0gICBl bHNlIGlmICh0dmlzZ2N2KG8pKQotSW5kZXg6IGx1YWppdC9zcmMvbGpfb2JqLmgKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGpfb2JqLmgKLSsrKyBsdWFqaXQvc3JjL2xqX29iai5o Ci1AQCAtMjMyLDcgKzIzMiw3IEBACi0gKiogICAgICAgICAgICAgICAgICAtLS1NU1ctLS0uLS0t TFNXLS0tCi0gKiogcHJpbWl0aXZlIHR5cGVzIHwgIGl0eXBlICB8ICAgICAgICAgfAotICoqIGxp Z2h0dXNlcmRhdGEgICB8ICBpdHlwZSAgfCAgdm9pZCAqIHwgICgzMiBiaXQgcGxhdGZvcm1zKQot LSoqIGxpZ2h0dXNlcmRhdGEgICB8ZmZmZnwgICAgdm9pZCAqICAgIHwgICg2NCBiaXQgcGxhdGZv cm1zLCA0NyBiaXQgcG9pbnRlcnMpCi0rKiogbGlnaHR1c2VyZGF0YSAgIHxmZmZmfHNlZ3wgICAg b2ZzICAgfCAgKDY0IGJpdCBwbGF0Zm9ybXMpCi0gKiogR0Mgb2JqZWN0cyAgICAgIHwgIGl0eXBl ICB8ICBHQ1JlZiAgfAotICoqIGludCAoTEpfRFVBTE5VTSl8ICBpdHlwZSAgfCAgIGludCAgIHwK LSAqKiBudW1iZXIgICAgICAgICAgIC0tLS0tLS1kb3VibGUtLS0tLS0KLUBAIC0yNDUsNyArMjQ1 LDggQEAKLSAqKgotICoqICAgICAgICAgICAgICAgICAgICAgLS0tLS0tTVNXLS0tLS0tLi0tLS0t LUxTVy0tLS0tLQotICoqIHByaW1pdGl2ZSB0eXBlcyAgICB8MS4uMXxpdHlwZXwxLi4uLi4uLi4u Li4uLi4uLi4uMXwKLS0qKiBHQyBvYmplY3RzL2xpZ2h0dWQgfDEuLjF8aXR5cGV8LS0tLS0tLUdD UmVmLS0tLS0tLS18Ci0rKiogR0Mgb2JqZWN0cyAgICAgICAgIHwxLi4xfGl0eXBlfC0tLS0tLS1H Q1JlZi0tLS0tLS0tfAotKyoqIGxpZ2h0dXNlcmRhdGEgICAgICB8MS4uMXxpdHlwZXxzZWd8LS0t LS0tb2ZzLS0tLS0tLXwKLSAqKiBpbnQgKExKX0RVQUxOVU0pICAgfDEuLjF8aXR5cGV8MC4uMHwt LS0tLWludC0tLS0tLS18Ci0gKiogbnVtYmVyICAgICAgICAgICAgICAtLS0tLS0tLS0tLS1kb3Vi bGUtLS0tLS0tLS0tLS0tCi0gKioKLUBAIC0yODUsNiArMjg2LDEyIEBACi0gI2RlZmluZSBMSl9H Q1ZNQVNLCQkoKCh1aW50NjRfdCkxIDw8IDQ3KSAtIDEpCi0gI2VuZGlmCi0gCi0rI2lmIExKXzY0 Ci0rLyogVG8gc3RheSB3aXRoaW4gNDcgYml0cywgbGlnaHR1c2VyZGF0YSBpcyBzZWdtZW50ZWQu ICovCi0rI2RlZmluZSBMSl9MSUdIVFVEX0JJVFNfU0VHCTgKLSsjZGVmaW5lIExKX0xJR0hUVURf QklUU19MTwkoNDcgLSBMSl9MSUdIVFVEX0JJVFNfU0VHKQotKyNlbmRpZgotKwotIC8qIC0tIFN0 cmluZyBvYmplY3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAqLwotIAotIC8qIFN0cmluZyBvYmplY3QgaGVhZGVyLiBTdHJpbmcgcGF5bG9h ZCBmb2xsb3dzLiAqLwotQEAgLTU3Niw3ICs1ODMsMTEgQEAKLSAgIHVpbnQ4X3QgY3VycmVudHdo aXRlOwkvKiBDdXJyZW50IHdoaXRlIGNvbG9yLiAqLwotICAgdWludDhfdCBzdGF0ZTsJLyogR0Mg c3RhdGUuICovCi0gICB1aW50OF90IG5vY2RhdGFmaW47CS8qIE5vIGNkYXRhIGZpbmFsaXplciBj YWxsZWQuICovCi0tICB1aW50OF90IHVudXNlZDI7Ci0rI2lmIExKXzY0Ci0rICB1aW50OF90IGxp Z2h0dWRudW07CS8qIE51bWJlciBvZiBsaWdodHVzZXJkYXRhIHNlZ21lbnRzIC0gMS4gKi8KLSsj ZWxzZQotKyAgdWludDhfdCB1bnVzZWQxOwotKyNlbmRpZgotICAgTVNpemUgc3dlZXBzdHI7CS8q IFN3ZWVwIHBvc2l0aW9uIGluIHN0cmluZyB0YWJsZS4gKi8KLSAgIEdDUmVmIHJvb3Q7CQkvKiBM aXN0IG9mIGFsbCBjb2xsZWN0YWJsZSBvYmplY3RzLiAqLwotICAgTVJlZiBzd2VlcDsJCS8qIFN3 ZWVwIHBvc2l0aW9uIGluIHJvb3QgbGlzdC4gKi8KLUBAIC01ODgsNiArNTk5LDkgQEAKLSAgIEdD U2l6ZSBlc3RpbWF0ZTsJLyogRXN0aW1hdGUgb2YgbWVtb3J5IGFjdHVhbGx5IGluIHVzZS4gKi8K LSAgIE1TaXplIHN0ZXBtdWw7CS8qIEluY3JlbWVudGFsIEdDIHN0ZXAgZ3JhbnVsYXJpdHkuICov Ci0gICBNU2l6ZSBwYXVzZTsJCS8qIFBhdXNlIGJldHdlZW4gc3VjY2Vzc2l2ZSBHQyBjeWNsZXMu ICovCi0rI2lmIExKXzY0Ci0rICBNUmVmIGxpZ2h0dWRzZWc7CS8qIFVwcGVyIGJpdHMgb2YgbGln aHR1c2VyZGF0YSBzZWdtZW50cy4gKi8KLSsjZW5kaWYKLSB9IEdDU3RhdGU7Ci0gCi0gLyogR2xv YmFsIHN0YXRlLCBzaGFyZWQgYnkgYWxsIHRocmVhZHMgb2YgYSBMdWEgdW5pdmVyc2UuICovCi1A QCAtNzk1LDEwICs4MDksMjMgQEAKLSAjZW5kaWYKLSAjZGVmaW5lIGJvb2xWKG8pCWNoZWNrX2V4 cCh0dmlzYm9vbChvKSwgKExKX1RGQUxTRSAtIGl0eXBlKG8pKSkKLSAjaWYgTEpfNjQKLS0jZGVm aW5lIGxpZ2h0dWRWKG8pIFwKLS0gIGNoZWNrX2V4cCh0dmlzbGlnaHR1ZChvKSwgKHZvaWQgKiko KG8pLT51NjQgJiBVNjR4KDAwMDA3ZmZmLGZmZmZmZmZmKSkpCi0rI2RlZmluZSBsaWdodHVkc2Vn KHUpIFwKLSsgICgoKHUpID4+IExKX0xJR0hUVURfQklUU19MTykgJiAoKDEgPDwgTEpfTElHSFRV RF9CSVRTX1NFRyktMSkpCi0rI2RlZmluZSBsaWdodHVkbG8odSkgXAotKyAgKCh1KSAmICgoKHVp bnQ2NF90KTEgPDwgTEpfTElHSFRVRF9CSVRTX0xPKSAtIDEpKQotKyNkZWZpbmUgbGlnaHR1ZHVw KHApIFwKLSsgICgodWludDMyX3QpKCgocCkgPj4gTEpfTElHSFRVRF9CSVRTX0xPKSA8PCAoTEpf TElHSFRVRF9CSVRTX0xPLTMyKSkpCi0rc3RhdGljIExKX0FJTkxJTkUgdm9pZCAqbGlnaHR1ZFYo Z2xvYmFsX1N0YXRlICpnLCBjVFZhbHVlICpvKQotK3sKLSsgIHVpbnQ2NF90IHUgPSBvLT51NjQ7 Ci0rICB1aW50NjRfdCBzZWcgPSBsaWdodHVkc2VnKHUpOwotKyAgdWludDMyX3QgKnNlZ21hcCA9 IG1yZWYoZy0+Z2MubGlnaHR1ZHNlZywgdWludDMyX3QpOwotKyAgbHVhX2Fzc2VydCh0dmlzbGln aHR1ZChvKSk7Ci0rICBsdWFfYXNzZXJ0KHNlZyA8PSBnLT5nYy5saWdodHVkbnVtKTsKLSsgIHJl dHVybiAodm9pZCAqKSgoKHVpbnQ2NF90KXNlZ21hcFtzZWddIDw8IDMyKSB8IGxpZ2h0dWRsbyh1 KSk7Ci0rfQotICNlbHNlCi0tI2RlZmluZSBsaWdodHVkVihvKQljaGVja19leHAodHZpc2xpZ2h0 dWQobyksIGdjcmVmcCgobyktPmdjciwgdm9pZCkpCi0rI2RlZmluZSBsaWdodHVkVihnLCBvKQlj aGVja19leHAodHZpc2xpZ2h0dWQobyksIGdjcmVmcCgobyktPmdjciwgdm9pZCkpCi0gI2VuZGlm Ci0gI2RlZmluZSBnY1YobykJCWNoZWNrX2V4cCh0dmlzZ2N2KG8pLCBnY3ZhbChvKSkKLSAjZGVm aW5lIHN0clYobykJCWNoZWNrX2V4cCh0dmlzc3RyKG8pLCAmZ2N2YWwobyktPnN0cikKLUBAIC04 MjQsNyArODUxLDcgQEAKLSAjZGVmaW5lIHNldHByaVYobywgaSkJCShzZXRpdHlwZSgobyksIChp KSkpCi0gI2VuZGlmCi0gCi0tc3RhdGljIExKX0FJTkxJTkUgdm9pZCBzZXRsaWdodHVkVihUVmFs dWUgKm8sIHZvaWQgKnApCi0rc3RhdGljIExKX0FJTkxJTkUgdm9pZCBzZXRyYXdsaWdodHVkVihU VmFsdWUgKm8sIHZvaWQgKnApCi0gewotICNpZiBMSl9HQzY0Ci0gICBvLT51NjQgPSAodWludDY0 X3QpcCB8ICgoKHVpbnQ2NF90KUxKX1RMSUdIVFVEKSA8PCA0Nyk7Ci1AQCAtODM1LDI0ICs4NjIs MTQgQEAKLSAjZW5kaWYKLSB9Ci0gCi0tI2lmIExKXzY0Ci0tI2RlZmluZSBjaGVja2xpZ2h0dWRw dHIoTCwgcCkgXAotLSAgKCgodWludDY0X3QpKHApID4+IDQ3KSA/IChsal9lcnJfbXNnKEwsIExK X0VSUl9CQURMVSksIE5VTEwpIDogKHApKQotLSNlbHNlCi0tI2RlZmluZSBjaGVja2xpZ2h0dWRw dHIoTCwgcCkJKHApCi0tI2VuZGlmCi0tCi0tI2lmIExKX0ZSMgotKyNpZiBMSl9GUjIgfHwgTEpf MzIKLSAjZGVmaW5lIGNvbnRwdHIoZikJCSgodm9pZCAqKShmKSkKLSAjZGVmaW5lIHNldGNvbnQo bywgZikJCSgobyktPnU2NCA9ICh1aW50NjRfdCkodWludHB0cl90KWNvbnRwdHIoZikpCi0tI2Vs aWYgTEpfNjQKLSsjZWxzZQotICNkZWZpbmUgY29udHB0cihmKSBcCi0gICAoKHZvaWQgKikodWlu dHB0cl90KSh1aW50MzJfdCkoKGludHB0cl90KShmKSAtIChpbnRwdHJfdClsal92bV9hc21fYmVn aW4pKQotICNkZWZpbmUgc2V0Y29udChvLCBmKSBcCi0gICAoKG8pLT51NjQgPSAodWludDY0X3Qp KHZvaWQgKikoZikgLSAodWludDY0X3QpbGpfdm1fYXNtX2JlZ2luKQotLSNlbHNlCi0tI2RlZmlu ZSBjb250cHRyKGYpCQkoKHZvaWQgKikoZikpCi0tI2RlZmluZSBzZXRjb250KG8sIGYpCQlzZXRs aWdodHVkVigobyksIGNvbnRwdHIoZikpCi0gI2VuZGlmCi0gCi0gI2RlZmluZSB0dmNoZWNrbGl2 ZShMLCBvKSBcCi1AQCAtOTc4LDYgKzk5NSw2IEBACi0gCi0gLyogQ29tcGFyZSB0d28gb2JqZWN0 cyB3aXRob3V0IGNhbGxpbmcgbWV0YW1ldGhvZHMuICovCi0gTEpfRlVOQyBpbnQgTEpfRkFTVENB TEwgbGpfb2JqX2VxdWFsKGNUVmFsdWUgKm8xLCBjVFZhbHVlICpvMik7Ci0tTEpfRlVOQyBjb25z dCB2b2lkICogTEpfRkFTVENBTEwgbGpfb2JqX3B0cihjVFZhbHVlICpvKTsKLStMSl9GVU5DIGNv bnN0IHZvaWQgKiBMSl9GQVNUQ0FMTCBsal9vYmpfcHRyKGdsb2JhbF9TdGF0ZSAqZywgY1RWYWx1 ZSAqbyk7Ci0gCi0gI2VuZGlmCi1JbmRleDogbHVhaml0L3NyYy9sal9zbmFwLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGpfc25hcC5jCi0rKysgbHVhaml0L3NyYy9sal9zbmFw LmMKLUBAIC02MjYsNyArNjI2LDEyIEBACi0gICBJUlR5cGUxIHQgPSBpci0+dDsKLSAgIFJlZ1NQ IHJzID0gaXItPnByZXY7Ci0gICBpZiAoaXJyZWZfaXNrKHJlZikpIHsgIC8qIFJlc3RvcmUgY29u c3RhbnQgc2xvdC4gKi8KLS0gICAgbGpfaXJfa3ZhbHVlKEotPkwsIG8sIGlyKTsKLSsgICAgaWYg KGlyLT5vID09IElSX0tQVFIpIHsKLSsgICAgICBvLT51NjQgPSAodWludDY0X3QpKHVpbnRwdHJf dClpcl9rcHRyKGlyKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICBsdWFfYXNzZXJ0KCEoaXItPm8g PT0gSVJfS0tQVFIgfHwgaXItPm8gPT0gSVJfS05VTEwpKTsKLSsgICAgICBsal9pcl9rdmFsdWUo Si0+TCwgbywgaXIpOwotKyAgICB9Ci0gICAgIHJldHVybjsKLSAgIH0KLSAgIGlmIChMSl9VTkxJ S0VMWShibG9vbXRlc3QocmZpbHQsIHJlZikpKQotSW5kZXg6IGx1YWppdC9zcmMvbGpfc3RhdGUu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGx1YWppdC5vcmlnL3NyYy9sal9zdGF0ZS5jCi0rKysgbHVhaml0 L3NyYy9sal9zdGF0ZS5jCi1AQCAtMTcxLDYgKzE3MSwxMiBAQAotICAgbGpfbWVtX2ZyZWV2ZWMo ZywgZy0+c3RyaGFzaCwgZy0+c3RybWFzaysxLCBHQ1JlZik7Ci0gICBsal9idWZfZnJlZShnLCAm Zy0+dG1wYnVmKTsKLSAgIGxqX21lbV9mcmVldmVjKGcsIHR2cmVmKEwtPnN0YWNrKSwgTC0+c3Rh Y2tzaXplLCBUVmFsdWUpOwotKyNpZiBMSl82NAotKyAgaWYgKG1yZWYoZy0+Z2MubGlnaHR1ZHNl ZywgdWludDMyX3QpKSB7Ci0rICAgIE1TaXplIHNlZ251bSA9IGctPmdjLmxpZ2h0dWRudW0gPyAo MiA8PCBsal9mbHMoZy0+Z2MubGlnaHR1ZG51bSkpIDogMjsKLSsgICAgbGpfbWVtX2ZyZWV2ZWMo ZywgbXJlZihnLT5nYy5saWdodHVkc2VnLCB1aW50MzJfdCksIHNlZ251bSwgdWludDMyX3QpOwot KyAgfQotKyNlbmRpZgotICAgbHVhX2Fzc2VydChnLT5nYy50b3RhbCA9PSBzaXplb2YoR0dfU3Rh dGUpKTsKLSAjaWZuZGVmIExVQUpJVF9VU0VfU1lTTUFMTE9DCi0gICBpZiAoZy0+YWxsb2NmID09 IGxqX2FsbG9jX2YpCi1JbmRleDogbHVhaml0L3NyYy9sal9zdHJmbXQuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGx1YWppdC5vcmlnL3NyYy9sal9zdHJmbXQuYwotKysrIGx1YWppdC9zcmMvbGpfc3RyZm10 LmMKLUBAIC0zOTMsNyArMzkzLDcgQEAKLSAgICAgICBwID0gbGpfYnVmX3dtZW0ocCwgImJ1aWx0 aW4jIiwgOCk7Ci0gICAgICAgcCA9IGxqX3N0cmZtdF93aW50KHAsIGZ1bmNWKG8pLT5jLmZmaWQp OwotICAgICB9IGVsc2UgewotLSAgICAgIHAgPSBsal9zdHJmbXRfd3B0cihwLCBsal9vYmpfcHRy KG8pKTsKLSsgICAgICBwID0gbGpfc3RyZm10X3dwdHIocCwgbGpfb2JqX3B0cihHKEwpLCBvKSk7 Ci0gICAgIH0KLSAgICAgcmV0dXJuIGxqX3N0cl9uZXcoTCwgYnVmLCAoc2l6ZV90KShwIC0gYnVm KSk7Ci0gICB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2VuYWJsZS1kZWJ1 Zy1zeW1ib2xzLnBhdGNoIGIvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9lbmFibGUtZGVidWctc3lt Ym9scy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZlNGM5MTA2YWNmOTMu LjAwMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMvZW5hYmxlLWRlYnVn LXN5bWJvbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1Gcm9tOiA9P3V0 Zi04P3E/T25kPUM1PTk5ZWpfU3VyPUMzPUJEPz0gPG9uZHJlakBzdXJ5Lm9yZz4KLURhdGU6IFR1 ZSwgMTcgTm92IDIwMTUgMTY6Mjc6MTEgKzAxMDAKLVN1YmplY3Q6IEVuYWJsZSBkZWJ1Z2dpbmcg c3ltYm9scyBpbiB0aGUgYnVpbGQKLQotLS0tCi0gc3JjL01ha2VmaWxlIHwgNCArKy0tCi0gMSBm aWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdp dCBzcmMvTWFrZWZpbGUgc3JjL01ha2VmaWxlCi1pbmRleCA4YTM4ZWZkLi42YjczYTg5IDEwMDY0 NAotLS0tIGEvc3JjL01ha2VmaWxlCi0rKysgYi9zcmMvTWFrZWZpbGUKLUBAIC01NCw5ICs1NCw5 IEBAIENDT1BUX2FybTY0PQotIENDT1BUX3BwYz0KLSBDQ09QVF9taXBzPQotICMKLS1DQ0RFQlVH PQotKyNDQ0RFQlVHPQotICMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gZ2VuZXJhdGUgZGVi dWcgaW5mb3JtYXRpb246Ci0tI0NDREVCVUc9IC1nCi0rQ0NERUJVRz0gLWcKLSAjCi0gQ0NXQVJO PSAtV2FsbAotICMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gZW5hYmxlIG1vcmUgd2Fybmlu Z3M6CmRpZmYgLS1naXQgYS9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2ZpeC1iY3NhdmUtcHBjNjQu cGF0Y2ggYi9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2ZpeC1iY3NhdmUtcHBjNjQucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1M2UyMTEwNzEwNjMyLi4wMDAwMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2ZpeC1iY3NhdmUtcHBjNjQucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0tLS0gYS9zcmMvaml0L2Jjc2F2ZS5sdWEJMjAx OC0xMi0xNyAxOTowNjoyNy4yMTUwNDI0MTcgKzAxMDAKLSsrKyBiL3NyYy9qaXQvYmNzYXZlLmx1 YQkyMDE4LTEyLTE3IDE5OjE3OjEyLjk4MjQ3Nzk0NSArMDEwMAotQEAgLTY0LDcgKzY0LDcgQEAK LSAKLSBsb2NhbCBtYXBfYXJjaCA9IHsKLSAgIHg4NiA9IHRydWUsIHg2NCA9IHRydWUsIGFybSA9 IHRydWUsIGFybTY0ID0gdHJ1ZSwgYXJtNjRiZSA9IHRydWUsCi0tICBwcGMgPSB0cnVlLCBtaXBz ID0gdHJ1ZSwgbWlwc2VsID0gdHJ1ZSwKLSsgIHBwYyA9IHRydWUsIHBwYzY0ID0gdHJ1ZSwgcHBj NjRsZSA9IHRydWUsIG1pcHMgPSB0cnVlLCBtaXBzZWwgPSB0cnVlLAotIH0KLSAKLSBsb2NhbCBt YXBfb3MgPSB7Ci1AQCAtMjAwLDkgKzIwMCwxMCBAQAotIF1dCi0gICBsb2NhbCBzeW1uYW1lID0g TEpCQ19QUkVGSVguLmN0eC5tb2RuYW1lCi0gICBsb2NhbCBpczY0LCBpc2JlID0gZmFsc2UsIGZh bHNlCi0tICBpZiBjdHguYXJjaCA9PSAieDY0IiBvciBjdHguYXJjaCA9PSAiYXJtNjQiIG9yIGN0 eC5hcmNoID09ICJhcm02NGJlIiB0aGVuCi0rICBpZiBjdHguYXJjaCA9PSAieDY0IiBvciBjdHgu YXJjaCA9PSAiYXJtNjQiIG9yIGN0eC5hcmNoID09ICJhcm02NGJlIiBvciBjdHguYXJjaCA9PSAi cHBjNjQiIG9yIGN0eC5hcmNoID09ICJwcGM2NGxlIiB0aGVuCi0gICAgIGlzNjQgPSB0cnVlCi0t ICBlbHNlaWYgY3R4LmFyY2ggPT0gInBwYyIgb3IgY3R4LmFyY2ggPT0gIm1pcHMiIHRoZW4KLSsg IGVuZAotKyAgaWYgY3R4LmFyY2ggPT0gInBwYyIgb3IgY3R4LmFyY2ggPT0gInBwYzY0IiBvciBj dHguYXJjaCA9PSAibWlwcyIgdGhlbgotICAgICBpc2JlID0gdHJ1ZQotICAgZW5kCi0gCi1AQCAt MjM3LDcgKzIzOCw3IEBACi0gICBoZHIuZWVuZGlhbiA9IGlzYmUgYW5kIDIgb3IgMQotICAgaGRy LmV2ZXJzaW9uID0gMQotICAgaGRyLnR5cGUgPSBmMTYoMSkKLS0gIGhkci5tYWNoaW5lID0gZjE2 KCh7IHg4Nj0zLCB4NjQ9NjIsIGFybT00MCwgYXJtNjQ9MTgzLCBhcm02NGJlPTE4MywgcHBjPTIw LCBtaXBzPTgsIG1pcHNlbD04IH0pW2N0eC5hcmNoXSkKLSsgIGhkci5tYWNoaW5lID0gZjE2KCh7 IHg4Nj0zLCB4NjQ9NjIsIGFybT00MCwgYXJtNjQ9MTgzLCBhcm02NGJlPTE4MywgcHBjPTIwLCBw cGM2ND0yMSwgcHBjNjRsZT0yMSwgbWlwcz04LCBtaXBzZWw9OCB9KVtjdHguYXJjaF0pCi0gICBp ZiBjdHguYXJjaCA9PSAibWlwcyIgb3IgY3R4LmFyY2ggPT0gIm1pcHNlbCIgdGhlbgotICAgICBo ZHIuZmxhZ3MgPSBmMzIoMHg1MDAwMTAwNikKLSAgIGVuZApkaWZmIC0tZ2l0IGEvc3JjcGtncy9M dWFKSVQvcGF0Y2hlcy9nZXQtcmlkLW9mLWx1YWppdC12ZXJzaW9uLXN5bS5wYXRjaCBiL3NyY3Br Z3MvTHVhSklUL3BhdGNoZXMvZ2V0LXJpZC1vZi1sdWFqaXQtdmVyc2lvbi1zeW0ucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZTFlZTcyZmNiYjhiLi4wMDAwMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2dldC1yaWQtb2YtbHVhaml0LXZlcnNpb24t c3ltLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbTogPT91dGYtOD9x P09uZD1DNT05OWVqX1N1cj1DMz1CRD89IDxvbmRyZWpAc3VyeS5vcmc+Ci1EYXRlOiBUaHUsIDE5 IE5vdiAyMDE1IDE2OjI5OjAyICswMjAwCi1TdWJqZWN0OiBHZXQgcmlkIG9mIExVQUpJVF9WRVJT SU9OX1NZTSB0aGF0IGNoYW5nZXMgQUJJIG9uIGV2ZXJ5IHBhdGNoIHJlbGVhc2UKLQotLS0tCi0g c3JjL2xqX2Rpc3BhdGNoLmMgfCA1IC0tLS0tCi0gc3JjL2x1YWppdC5jICAgICAgfCAyIC0tCi0g c3JjL2x1YWppdC5oICAgICAgfCAzIC0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMTAgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgc3JjL2xqX2Rpc3BhdGNoLmMgc3JjL2xqX2Rpc3BhdGNoLmMKLWlu ZGV4IDVkNjc5NWYuLmU4NjVhNzggMTAwNjQ0Ci0tLS0gYS9zcmMvbGpfZGlzcGF0Y2guYwotKysr IGIvc3JjL2xqX2Rpc3BhdGNoLmMKLUBAIC0zMTksMTEgKzMxOSw2IEBAIGludCBsdWFKSVRfc2V0 bW9kZShsdWFfU3RhdGUgKkwsIGludCBpZHgsIGludCBtb2RlKQotICAgcmV0dXJuIDE7ICAvKiBP Sy4gKi8KLSB9Ci0gCi0tLyogRW5mb3JjZSAoZHluYW1pYykgbGlua2VyIGVycm9yIGZvciB2ZXJz aW9uIG1pc21hdGNoZXMuIFNlZSBsdWFqaXQuYy4gKi8KLS1MVUFfQVBJIHZvaWQgTFVBSklUX1ZF UlNJT05fU1lNKHZvaWQpCi0tewotLX0KLS0KLSAvKiAtLSBIb29rcyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLSAKLSAv KiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHkgKGUuZy4gZHVyaW5n IGEgc2lnbmFsKS4gKi8KLWRpZmYgLS1naXQgc3JjL2x1YWppdC5jIHNyYy9sdWFqaXQuYwotaW5k ZXggMWNhMjQzMC4uY2NmNDI1ZSAxMDA2NDQKLS0tLSBhL3NyYy9sdWFqaXQuYwotKysrIGIvc3Jj L2x1YWppdC5jCi1AQCAtNTE2LDggKzUxNiw2IEBAIHN0YXRpYyBpbnQgcG1haW4obHVhX1N0YXRl ICpMKQotICAgZ2xvYmFsTCA9IEw7Ci0gICBpZiAoYXJndlswXSAmJiBhcmd2WzBdWzBdKSBwcm9n bmFtZSA9IGFyZ3ZbMF07Ci0gCi0tICBMVUFKSVRfVkVSU0lPTl9TWU0oKTsgIC8qIExpbmtlci1l bmZvcmNlZCB2ZXJzaW9uIGNoZWNrLiAqLwotLQotICAgYXJnbiA9IGNvbGxlY3RhcmdzKGFyZ3Ys ICZmbGFncyk7Ci0gICBpZiAoYXJnbiA8IDApIHsgIC8qIEludmFsaWQgYXJncz8gKi8KLSAgICAg cHJpbnRfdXNhZ2UoKTsKLWRpZmYgLS1naXQgc3JjL2x1YWppdC5oIHNyYy9sdWFqaXQuaAotaW5k ZXggNzA4YTVhMS4uMzVhZTAyYyAxMDA2NDQKLS0tLSBhL3NyYy9sdWFqaXQuaAotKysrIGIvc3Jj L2x1YWppdC5oCi1AQCAtNzMsNyArNzMsNCBAQCBMVUFfQVBJIHZvaWQgbHVhSklUX3Byb2ZpbGVf c3RvcChsdWFfU3RhdGUgKkwpOwotIExVQV9BUEkgY29uc3QgY2hhciAqbHVhSklUX3Byb2ZpbGVf ZHVtcHN0YWNrKGx1YV9TdGF0ZSAqTCwgY29uc3QgY2hhciAqZm10LAotIAkJCQkJICAgICBpbnQg ZGVwdGgsIHNpemVfdCAqbGVuKTsKLSAKLS0vKiBFbmZvcmNlIChkeW5hbWljKSBsaW5rZXIgZXJy b3IgZm9yIHZlcnNpb24gbWlzbWF0Y2hlcy4gQ2FsbCBmcm9tIG1haW4uICovCi0tTFVBX0FQSSB2 b2lkIExVQUpJVF9WRVJTSU9OX1NZTSh2b2lkKTsKLS0KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvTHVhSklUL3BhdGNoZXMvdW5wb2xsdXRlLWdsb2JhbC1uYW1lc3BhY2UucGF0Y2ggYi9z cmNwa2dzL0x1YUpJVC9wYXRjaGVzL3VucG9sbHV0ZS1nbG9iYWwtbmFtZXNwYWNlLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWRhYWNiYWFlYTQ2NC4uMDAwMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy91bnBvbGx1dGUtZ2xvYmFsLW5hbWVzcGFj ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLUZyb206ID0/dXRmLTg/cT9P bmQ9QzU9OTllal9TdXI9QzM9QkQ/PSA8b25kcmVqQHN1cnkub3JnPgotRGF0ZTogV2VkLCAxMSBP Y3QgMjAxNyAwODo0Mjo0MSArMDAwMAotU3ViamVjdDogTWFrZSBjY2FsbF9jb3B5X3N0cnVjdCBz dGF0aWMgdG8gdW5wb2xsdXRlIGdsb2JhbCBsaWJyYXJ5IG5hbWVzcGFjZQotCi0tLS0KLSBzcmMv bGpfY2NhbGwuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKLQotZGlmZiAtLWdpdCBzcmMvbGpfY2NhbGwuYyBzcmMvbGpfY2NhbGwuYwotaW5k ZXggYjg5MTU5MS4uYTdkY2MxYiAxMDA2NDQKLS0tLSBhL3NyYy9sal9jY2FsbC5jCi0rKysgYi9z cmMvbGpfY2NhbGwuYwotQEAgLTk2MCw3ICs5NjAsNyBAQCBub3RoOiAgLyogTm90IGEgaG9tb2dl bmVvdXMgZmxvYXQvZG91YmxlIGFnZ3JlZ2F0ZS4gKi8KLSAgIHJldHVybiAwOyAgLyogU3RydWN0 IGlzIGluIEdQUnMuICovCi0gfQotIAotLXZvaWQgY2NhbGxfY29weV9zdHJ1Y3QoQ0NhbGxTdGF0 ZSAqY2MsIENUeXBlICpjdHIsIHZvaWQgKmRwLCB2b2lkICpzcCwgaW50IGZ0KQotK3N0YXRpYyB2 b2lkIGNjYWxsX2NvcHlfc3RydWN0KENDYWxsU3RhdGUgKmNjLCBDVHlwZSAqY3RyLCB2b2lkICpk cCwgdm9pZCAqc3AsIGludCBmdCkKLSB7Ci0gICBpZiAoTEpfQUJJX1NPRlRGUCA/IGZ0IDoKLSAg ICAgICAoKGZ0ICYgMykgPT0gRlRZUEVfRkxPQVQgfHwgKGZ0ID4+IDIpID09IEZUWVBFX0ZMT0FU KSkgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9MdWFKSVQvdGVtcGxhdGUgYi9zcmNwa2dzL0x1YUpJ VC90ZW1wbGF0ZQppbmRleCA4NTQ0OWFjM2Q2ZjczMS4uZmVkMmM3MDNlYWYyNWMgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvTHVhSklUL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvTHVhSklUL3RlbXBsYXRl CkBAIC0xLDcxICsxLDU1IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdMdWFKSVQnCiBwa2duYW1l PUx1YUpJVAotdmVyc2lvbj0yLjEuMGJldGEzCi1yZXZpc2lvbj0yCi1fc29fdmVyc2lvbj0yLjEu MAotX2Rpc3RfdmVyc2lvbj0ke19zb192ZXJzaW9ufS1iZXRhMworIyB0aGUgbWlub3IgdmVyc2lv biBpcyB0aGUgY29udGVudHMgb2YgdGhlIC5yZWx2ZXIgZmlsZSBpbiB0aGUgc291cmNlIHRhcmJh bGwKK3ZlcnNpb249Mi4xLjE3MTM3NzMyMDIKK3JldmlzaW9uPTEKK19jb21taXRfaGFzaD01Nzkw ZDI1Mzk3MmM5ZDc4YTBjMmFlY2U1MjdlZGE1YjEzNGJiYmY3CitidWlsZF9zdHlsZT1nbnUtbWFr ZWZpbGUKIGhvc3RtYWtlZGVwZW5kcz0ibHVhNTItQml0T3AiCiBzaG9ydF9kZXNjPSJKdXN0LUlu LVRpbWUgQ29tcGlsZXIgZm9yIEx1YSIKLW1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9p ZGxpbnV4Lm9yZz4iCittYWludGFpbmVyPSJEYW5pZWwgTWFydGluZXogPGRhbmllbG1hcnRpbmV6 QGNvY2subGk+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHA6Ly93d3cubHVhaml0Lm9y ZyIKLWRpc3RmaWxlcz0iaHR0cDovL2x1YWppdC5vcmcvZG93bmxvYWQvJHtwa2duYW1lfS0ke19k aXN0X3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTFhZDJlMzRiMTExYzgwMmY5ZDBjZGYwMTll OTg2OTA5MTIzMjM3YTI4Yzc0NmIyMTI5NWI2M2M5ZTc4NWQ5YzMKK2Rpc3RmaWxlcz0iaHR0cHM6 Ly9yZXBvLm9yLmN6L2x1YWppdC0yLjAuZ2l0L3NuYXBzaG90LyR7X2NvbW1pdF9oYXNofS50YXIu Z3oiCitjaGVja3N1bT1jOGY2N2UyYjNhMmYwNzMzODE5YjEzNjgxODViY2E0Nzc1Yjc0YjExMWNl M2IzYTg2ZjAzNzhmOWZlMmJhNzc2CiAKIGJ1aWxkX29wdGlvbnM9Imx1YTUyY29tcGF0IgorZGVz Y19vcHRpb25fbHVhNTJjb21wYXQ9ImhpZ2hlciBjb21wYXRpYmlsaXR5IHdpdGggbHVhIDUuMiIK IAotX2Nyb3NzX2NjPSJjYyIKLWlmIFsgIiRYQlBTX1dPUkRTSVpFIiAhPSAiJFhCUFNfVEFSR0VU X1dPUkRTSVpFIiBdOyB0aGVuCi0JaWYgWyAiJHtYQlBTX01BQ0hJTkUvLW11c2wvfSIgPSAieDg2 XzY0IiBdOyB0aGVuCi0JCWhvc3RtYWtlZGVwZW5kcys9IiBjcm9zcy1pNjg2LWxpbnV4LW11c2wi Ci0JCV9jcm9zc19jYz0iaTY4Ni1saW51eC1tdXNsLWdjYyAtc3RhdGljIgotCWVsc2UKLQkJYnJv a2VuPSJIb3N0IGFuZCB0YXJnZXQgd29yZHNpemUgbXVzdCBtYXRjaCIKK19ob3N0X2NjPSJjYyIK K2lmIFsgLW4gIiRDUk9TU19CVUlMRCIgXTsgdGhlbgorCWlmIFsgIiRYQlBTX1dPUkRTSVpFIiAh PSAiJFhCUFNfVEFSR0VUX1dPUkRTSVpFIiBdOyB0aGVuCisJCWlmIFsgIiR7WEJQU19NQUNISU5F JSUtKn0iID0gIng4Nl82NCIgXTsgdGhlbgorCQkJaG9zdG1ha2VkZXBlbmRzKz0iIGNyb3NzLWk2 ODYtbGludXgtbXVzbCIKKwkJCV9ob3N0X2NjPSJpNjg2LWxpbnV4LW11c2wtZ2NjIC1zdGF0aWMi CisJCWVsc2UKKwkJCWJyb2tlbj0iSG9zdCBhbmQgdGFyZ2V0IHdvcmRzaXplIG11c3QgbWF0Y2gg d2hlbiBub3Qgb24geDg2XzY0IgorCQlmaQogCWZpCi1maQotCi0jIHRoZSBwcGM2NCBwYXRjaHNl dCBzdWJ0bHkgYnJlYWtzIHBwYywgbmVlZHMgaW52ZXN0aWdhdGlvbjsgZm9yCi0jIG5vdyBhcHBs eSBwYXRjaGVzIGNvbmRpdGlvbmFsbHksIHNlcGFyYXRlbHkgZm9yIHBwYzY0IGFuZCBwcGMKLXBv c3RfcGF0Y2goKSB7Ci0JbG9jYWwgcGF0Y2hkaXIKLQotCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNI SU5FIiBpbgotCQlwcGM2NCopIHBhdGNoZGlyPSJwcGM2NCI7OwotCQlwcGMqKSBwYXRjaGRpcj0i cHBjIjs7Ci0JCSopIHJldHVybjs7Ci0JZXNhYwotCi0JZm9yIGkgaW4gJHtGSUxFU0RJUn0vcGF0 Y2hlcy8ke3BhdGNoZGlyfS8qLnBhdGNoOyBkbwotCQltc2dfbm9ybWFsICJwYXRjaGluZzogJGlc biIKLQkJcGF0Y2ggLXNOcDEgLWkgJHtpfQotCWRvbmUKLX0KLQotZG9fYnVpbGQoKSB7Ci0JbG9j YWwgX2NmbGFncz0kQ0ZMQUdTCi0JbG9jYWwgX2xkZmxhZ3M9JExERkxBR1MKIAotCWlmIFsgIiRD Uk9TU19CVUlMRCIgXTsgdGhlbgotCQlsb2NhbCBjcm9zcz0iQ1JPU1M9JHtYQlBTX0NST1NTX1RS SVBMRVR9LSIKLQlmaQorCW1ha2VfYnVpbGRfYXJncys9IiBDUk9TUz0ke1hCUFNfQ1JPU1NfVFJJ UExFVH0tIgorZmkKIAorcHJlX2J1aWxkKCkgewogCWlmIFsgIiRidWlsZF9vcHRpb25fbHVhNTJj b21wYXQiIF07IHRoZW4KLQkJbG9jYWwgX3hjZmxhZ3M9IlhDRkxBR1M9LURMVUFKSVRfRU5BQkxF X0xVQTUyQ09NUEFUIgorCQltYWtlX2J1aWxkX2FyZ3MrPSIgWENGTEFHUz0tRExVQUpJVF9FTkFC TEVfTFVBNTJDT01QQVQiCiAJZmkKK30KIAorZG9fYnVpbGQoKSB7CisJIyBpZiB3ZSBkb24ndCB1 bnNldCwgdGhlIGJ1aWxkIGZhaWxzIHRvIGNyb3NzLWNvbXBpbGUKKwkjIGR1ZSB0byBjb25mbGlj dGlvbiB3aXRoIHRoZSBtYWtlZmlsZSBtYWNyb3MKKwlsb2NhbCBfY2ZsYWdzPSIkQ0ZMQUdTIgor CWxvY2FsIF9sZGZsYWdzPSIkTERGTEFHUyIKIAl1bnNldCBDRkxBR1MgTERGTEFHUwotCW1ha2Ug JHttYWtlam9ic30gUFJFRklYPS91c3IgSE9TVF9MVUE9bHVhNS4yIEhPU1RfQ0M9IiR7X2Nyb3Nz X2NjfSIgXAorCisJbWFrZSBhbWFsZyAke21ha2Vqb2JzfSBQUkVGSVg9L3VzciBIT1NUX0xVQT1s dWE1LjIgXAogCQlIT1NUX0NGTEFHUz0iJFhCUFNfQ0ZMQUdTIiBIT1NUX0xERkxBR1M9IiRYQlBT X0xERkxBR1MiIFwKIAkJVEFSR0VUX0NGTEFHUz0iJHtfY2ZsYWdzfSIgVEFSR0VUX0xERkxBR1M9 IiR7X2xkZmxhZ3N9IiBcCi0JCSR7X3hjZmxhZ3N9ICR7Y3Jvc3N9CisJCUhPU1RfQ0M9IiR7X2hv c3RfY2N9IiAke21ha2VfYnVpbGRfYXJnc30KIH0KIAotZG9faW5zdGFsbCgpIHsKLQltYWtlIERQ UkVGSVg9JHtERVNURElSfS91c3IgREVTVERJUj0ke0RFU1RESVJ9IFwKLQkJSU5TVEFMTF9TSEFS RT0ke0RFU1RESVJ9L3Vzci9zaGFyZSBQUkVGSVg9L3VzciBpbnN0YWxsCi0KLQltdiAke0RFU1RE SVJ9L3Vzci9iaW4vbHVhaml0LSogJHtERVNURElSfS91c3IvYmluL2x1YWppdAotCWxuIC1mcyBs aWJsdWFqaXQtNS4xLnNvLiR7X3NvX3ZlcnNpb259ICR7REVTVERJUn0vdXNyL2xpYi9saWJsdWFq aXQtNS4xLnNvLjIKK3Bvc3RfaW5zdGFsbCgpIHsKIAl2bGljZW5zZSBDT1BZUklHSFQKIH0KIApk aWZmIC0tZ2l0IGEvc3JjcGtncy9MdWFKSVQvdXBkYXRlIGIvc3JjcGtncy9MdWFKSVQvdXBkYXRl CmluZGV4IDE1NjEzOTEwNjc3Yzk1Li45NmJiYmQ0NTNjMzJjMyAxMDA2NDQKLS0tIGEvc3JjcGtn cy9MdWFKSVQvdXBkYXRlCisrKyBiL3NyY3BrZ3MvTHVhSklUL3VwZGF0ZQpAQCAtMSArMSBAQAot c2l0ZT0iaHR0cDovL2x1YWppdC5vcmcvZG93bmxvYWQuaHRtbCIKK2Rpc2FibGVkPSJpbXBvc3Np YmxlIHRvIGRldGVybWluZSBnaXZlbiByZWxlYXNlIHN0eWxlIGFuZCB2ZXJzaW9uaW5nIHNjaGVt ZSIK --===============8190934210154580470==--