From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Sergio Durigan Junior To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Revert "[aarch64] Fix missed unaligned hardware watchpoints (RH BZ 1347993)." Date: Thu, 23 Jul 2026 18:33:15 GMT Message-ID: <178483159597.1.227842188633998210.rpms-gdb-9736ebfbb03f@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 9736ebfbb03f5cdeaf95b2229bcccd37403e82aa ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogOTczNmViZmJiMDNmNWNkZWFmOTViMjIyOWJjY2NkMzc0MDNlODJhYQog ICAgICAgICAgICBBdXRob3IgOiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhh dC5jb20+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTgtMDUtMTdUMTQ6NTI6NTMtMDQ6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzg5Ly0xMjg0IGluIDMgZmlsZShzKQogICAgICAgICAgICBVUkwg ICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzk3MzZlYmZiYjAz ZjVjZGVhZjk1YjIyMjliY2NjZDM3NDAzZTgyYWE/YnJhbmNoPWZpeC1kdXAtcGF0Y2gKCiAgICAg ICAgICAgIExvZzoKICAgICAgICAgICAgUmV2ZXJ0ICJbYWFyY2g2NF0gRml4IG1pc3NlZCB1bmFs aWduZWQgaGFyZHdhcmUgd2F0Y2hwb2ludHMgKFJIIEJaIDEzNDc5OTMpLiIKClRoaXMgcmV2ZXJ0 cyBjb21taXQgMzk3YzhhNTkyMjM0Zjg4OGViYWRjYTliM2M1YzYyOGNiMTU0MDc1NC4KCi0tLQpk aWZmIC0tZ2l0IGEvZ2RiLXJoYnoxMzQ3OTkzLWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRjaCBi L2dkYi1yaGJ6MTM0Nzk5My1hYXJjaDY0LWh3LXdhdGNocG9pbnQucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDc1YmQwNDYuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoxMzQ3OTkz LWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExODggKzAs MCBAQAotY29tbWl0IGEzYjYwZTQ1ODg2MDYzNTRiOTM1MDhhMDAwOGE1Y2EwNGI2OGZhZDgKLUF1 dGhvcjogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci1EYXRlOiAg IEZyaSBNYXkgNCAyMjoyMjowNCAyMDE4ICswMjAwCi0KLSAgICBhYXJjaDY0OiBQUiAxOTgwNjog d2F0Y2hwb2ludHM6IGZhbHNlIG5lZ2F0aXZlcyArIFBSIDIwMjA3IGNvbnRpZ3VvdXMgb25lcwot ICAgIAotICAgIFNvbWUgdW5hbGlnbmVkIHdhdGNocG9pbnRzIHdlcmUgY3VycmVudGx5IG1pc3Nl ZC4KLSAgICAKLSAgICBPbiBvbGQga2VybmVscyBhcyBzcGVjaWZpZWQgaW4KLSAgICAgICAgICAg IGtlcm5lbCBSRkU6IGFhcmNoNjQ6IHB0cmFjZTogQkFTOiBTdXBwb3J0IGFueSBjb250aWd1b3Vz IHJhbmdlIChlZGl0KQotICAgICAgICAgICAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxs YS9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDcKLSAgICBhZnRlciB0aGlzIHBhdGNoIHNvbWUgb3RoZXIg dW5hbGlnbmVkIHdhdGNocG9pbnRzIHdpbGwgZ2V0IHJlcG9ydGVkIGFzIGZhbHNlCi0gICAgcG9z aXRpdmVzLgotICAgIAotICAgIFdpdGggbmV3IGtlcm5lbHMgYWxsIHRoZSB3YXRjaHBvaW50cyBz aG91bGQgd29yayBleGFjdGx5LgotICAgIAotICAgIFRoZXJlIG1heSBiZSBhIHJlZ3Jlc2lvbiB0 aGF0IGl0IG5vdyBsZXNzIG1lcmdlcyB3YXRjaHBvaW50cyBzbyB0aGF0IHdpdGgKLSAgICBtdWx0 aXBsZSBvdmVybGFwcGluZyB3YXRjaHBvaW50cyBpdCBtYXkgcnVuIG91dCBvZiB0aGUgNCBoYXJk d2FyZSB3YXRjaHBvaW50Ci0gICAgcmVnaXN0ZXJzLiAgQnV0IGFzIGRpc2N1c3NlZCBpbiB0aGUg b3JpZ2luYWwgdGhyZWFkIEdEQiBuZWVkcyBzb21lIGdlbmVyaWMKLSAgICB3YXRjaHBvaW50cyBt ZXJnaW5nIGZyYW1ld29yayB0byBiZSB1c2VkIGJ5IGFsbCB0aGUgdGFyZ2V0IHNwZWNpZmljIGNv ZGUuCi0gICAgRXZlbiBjdXJyZW50IEZTRiBHREIgY29kZSBkb2VzIG5vdCBtZXJnZSBpdCBwZXJm ZWN0bHkuICBBbHNvIHdpdGggdGhlIG1vcmUKLSAgICBwcmVjaXNlIHdhdGNocG9pbnRzIG9uZSBj YW4gdGVjaG5pY2FsbHkgbWVyZ2UgdGhlbSBsZXNzLiAgQW5kIEkgZG8gbm90IHRoaW5rCi0gICAg aXQgbWF0dGVycyB0b28gbXVjaCB0byBpbXByb3ZlIG1lcmdlYWJpbGl0eSBvbmx5IGZvciBvbGQg a2VybmVscy4KLSAgICBTdGlsbCBldmVuIG9uIG5ldyBrZXJuZWxzIHNvbWUgYmV0dGVyIG1lcmdp bmcgbG9naWMgd291bGQgbWFrZSBzZW5zZS4KLSAgICAKLSAgICBUaGVyZSByZW1haW5zIG9uZSBp c3N1ZToKLSAgICAgICAgICAgIGtlcm5lbC00LjE1LjE0LTMwMC5mYzI3LmFybXY3aGwKLSAgICAg ICAgICAgIEZBSUw6IGdkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmV4cDogY29udGludWUK LSAgICAgICAgICAgIEZBSUw6IGdkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmV4cDogY29u dGludWUKLSAgICAgICAgICAgIChnZGIpIGNvbnRpbnVlCi0gICAgICAgICAgICBDb250aW51aW5n LgotICAgICAgICAgICAgVW5leHBlY3RlZCBlcnJvciBzZXR0aW5nIHdhdGNocG9pbnQ6IEludmFs aWQgYXJndW1lbnQuCi0gICAgICAgICAgICAoZ2RiKSBGQUlMOiBnZGIuYmFzZS93YXRjaHBvaW50 LXVuYWxpZ25lZC5leHA6IGNvbnRpbnVlCi0gICAgQnV0IHRoYXQgbG9va3MgYXMgYSBrZXJuZWwg YnVnIHRvIG1lLgotICAgICgxKSBJdCBpcyBub3QgYSByZWdyZXNzaW9uIGJ5IHRoaXMgcGF0Y2gu Ci0gICAgKDIpIEl0IGlzIHVucmVsYXRlZCB0byB0aGlzIHBhdGNoLgotICAgIAotICAgIGdkYi9D aGFuZ2VMb2cKLSAgICAyMDE4LTA1LTA0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0gICAgICAgICAgICAgICAgUGVkcm8gQWx2ZXMgPHBhbHZlc0ByZWRoYXQu Y29tPgotICAgIAotICAgICAgICAgICAgUFIgYnJlYWtwb2ludHMvMTk4MDYgYW5kIHN1cHBvcnQg Zm9yIFBSIGV4dGVybmFsLzIwMjA3LgotICAgICAgICAgICAgKiBORVdTOiBNZW50aW9uIEFhcmNo NjQgd2F0Y2hwb2ludCBpbXByb3ZlbWVudHMuCi0gICAgICAgICAgICAqIGFhcmNoNjQtbGludXgt bmF0LmMgKGFhcmNoNjRfbGludXhfc3RvcHBlZF9kYXRhX2FkZHJlc3MpOiBGaXggbWlzc2VkCi0g ICAgICAgICAgICB3YXRjaHBvaW50cyBhbmQgUFIgZXh0ZXJuYWwvMjAyMDcgd2F0Y2hwb2ludHMu Ci0gICAgICAgICAgICAqIG5hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMKLSAgICAgICAgICAg IChrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UpOiBOZXcuCi0gICAgICAgICAg ICAoYWFyY2g2NF93YXRjaHBvaW50X29mZnNldCk6IE5ldy4KLSAgICAgICAgICAgIChhYXJjaDY0 X3dhdGNocG9pbnRfbGVuZ3RoKTogU3VwcG9ydCBQUiBleHRlcm5hbC8yMDIwNyB3YXRjaHBvaW50 cy4KLSAgICAgICAgICAgIChhYXJjaDY0X3BvaW50X2VuY29kZV9jdHJsX3JlZyk6IE5ldyBwYXJh bWV0ZXIgb2Zmc2V0LCBuZXcgYXNzZXJ0cy4KLSAgICAgICAgICAgIChhYXJjaDY0X3BvaW50X2lz X2FsaWduZWQpOiBTdXBwb3J0IFBSIGV4dGVybmFsLzIwMjA3IHdhdGNocG9pbnRzLgotICAgICAg ICAgICAgKGFhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCk6IE5ldyBwYXJhbWV0ZXJzIGFsaWduZWRf b2Zmc2V0X3AgYW5kCi0gICAgICAgICAgICBuZXh0X2FkZHJfb3JpZ19wLiAgU3VwcG9ydCBQUiBl eHRlcm5hbC8yMDIwNyB3YXRjaHBvaW50cy4KLSAgICAgICAgICAgIChhYXJjaDY0X2Rvd25ncmFk ZV9yZWdzKTogTmV3LgotICAgICAgICAgICAgKGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9w b2ludCk6IE5ldyBwYXJhbWV0ZXJzIG9mZnNldCBhbmQKLSAgICAgICAgICAgIGFkZHJfb3JpZy4K LSAgICAgICAgICAgIChhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9pbnQpOiBMaWtld2lz ZS4KLSAgICAgICAgICAgIChhYXJjaDY0X2hhbmRsZV9icmVha3BvaW50KTogVXBkYXRlIGNhbGxl ci4KLSAgICAgICAgICAgIChhYXJjaDY0X2hhbmRsZV9hbGlnbmVkX3dhdGNocG9pbnQpOiBMaWtl d2lzZS4KLSAgICAgICAgICAgIChhYXJjaDY0X2hhbmRsZV91bmFsaWduZWRfd2F0Y2hwb2ludCk6 IFN1cHBvcnQgYWRkcl9vcmlnIGFuZAotICAgICAgICAgICAgYWxpZ25lZF9vZmZzZXQuCi0gICAg ICAgICAgICAoYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyk6IFJlbW92ZSBjb25zdCBmcm9t IHN0YXRlLiAgQ2FsbAotICAgICAgICAgICAgYWFyY2g2NF9kb3duZ3JhZGVfcmVncy4KLSAgICAg ICAgICAgIChhYXJjaDY0X3Nob3dfZGVidWdfcmVnX3N0YXRlKTogUHJpbnQgYWxzbyBkcl9hZGRy X29yaWdfd3AuCi0gICAgICAgICAgICAqIG5hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmggKERS X0NPTlRST0xfTEVOR1RIKTogUmVuYW1lIHRvIC4uLgotICAgICAgICAgICAgKERSX0NPTlRST0xf TUFTSyk6IC4uLiB0aGlzLgotICAgICAgICAgICAgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19z dGF0ZSk6IE5ldyBmaWVsZCBkcl9hZGRyX29yaWdfd3AuCi0gICAgICAgICAgICAodW5zaWduZWQg aW50IGFhcmNoNjRfd2F0Y2hwb2ludF9vZmZzZXQpOiBOZXcgcHJvdG90eXBlLgotICAgICAgICAg ICAgKGFhcmNoNjRfbGludXhfc2V0X2RlYnVnX3JlZ3MpOiBSZW1vdmUgY29uc3QgZnJvbSBzdGF0 ZS4KLSAgICAgICAgICAgICogdXRpbHMuYyAoYWxpZ25fdXAsIGFsaWduX2Rvd24pOiBNb3ZlIHRv IC4uLgotICAgICAgICAgICAgKiBjb21tb24vY29tbW9uLXV0aWxzLmMgKGFsaWduX3VwLCBhbGln bl9kb3duKTogLi4uIGhlcmUuCi0gICAgICAgICAgICAqIHV0aWxzLmggKGFsaWduX3VwLCBhbGln bl9kb3duKTogTW92ZSB0byAuLi4KLSAgICAgICAgICAgICogY29tbW9uL2NvbW1vbi11dGlscy5o IChhbGlnbl91cCwgYWxpZ25fZG93bik6IC4uLiBoZXJlLgotICAgIAotICAgIGdkYi9nZGJzZXJ2 ZXIvQ2hhbmdlTG9nCi0gICAgMjAxOC0wNS0wNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotICAgICAgICAgICAgICAgIFBlZHJvIEFsdmVzIDxwYWx2ZXNAcmVk aGF0LmNvbT4KLSAgICAKLSAgICAgICAgICAgICogbGludXgtYWFyY2g2NC1sb3cuYyAoYWFyY2g2 NF9zdG9wcGVkX2RhdGFfYWRkcmVzcyk6Ci0gICAgICAgICAgICBMaWtld2lzZS4KLSAgICAKLSAg ICBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotICAgIDIwMTgtMDUtMDQgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAgICAgICAgICAgICAgICBQZWRybyBBbHZl cyA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gICAgCi0gICAgICAgICAgICBQUiBicmVha3BvaW50cy8x OTgwNiBhbmQgc3VwcG9ydCBmb3IgUFIgZXh0ZXJuYWwvMjAyMDcuCi0gICAgICAgICAgICAqIGdk Yi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmM6IE5ldyBmaWxlLgotICAgICAgICAgICAgKiBn ZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHA6IE5ldyBmaWxlLgotCi0tLS0gLi9nZGIv TkVXUwkyMDE4LTAxLTMxIDAzOjU4OjUwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL05FV1MJ MjAxOC0wNS0wNSAxNzo1NDoxNC4xMDgxNDgxNTIgKzAyMDAKLUBAIC0xLDYgKzEsMTYgQEAKLSAJ CVdoYXQgaGFzIGNoYW5nZWQgaW4gR0RCPwotIAkgICAgIChPcmdhbml6ZWQgcmVsZWFzZSBieSBy ZWxlYXNlKQotIAotKyogQWFyY2g2NC9MaW51eCBoYXJkd2FyZSB3YXRjaHBvaW50cyBpbXByb3Zl bWVudHMKLSsKLSsgIEhhcmR3YXJlIHdhdGNocG9pbnRzIG9uIHVuYWxpZ25lZCBhZGRyZXNzZXMg YXJlIG5vdyBwcm9wZXJseQotKyAgc3VwcG9ydGVkIHdoZW4gcnVubmluZyBMaW51eCBrZXJuZWwg NC4xMCBvciBoaWdoZXI6IHJlYWQgYW5kIGFjY2VzcwotKyAgd2F0Y2hwb2ludHMgYXJlIG5vIGxv bmdlciBzcHVyaW91c2x5IG1pc3NlZCwgYW5kIGFsbCB3YXRjaHBvaW50cwotKyAgbGVuZ3RocyBi ZXR3ZWVuIDEgYW5kIDggYnl0ZXMgYXJlIHN1cHBvcnRlZC4gIE9uIG9sZGVyIGtlcm5lbHMsCi0r ICB3YXRjaHBvaW50cyBzZXQgb24gdW5hbGlnbmVkIGFkZHJlc3NlcyBhcmUgbm8gbG9uZ2VyIG1p c3NlZCwgd2l0aAotKyAgdGhlIHRyYWRlb2ZmIHRoYXQgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSBv ZiBmYWxzZSBoaXRzIGJlaW5nCi0rICByZXBvcnRlZC4KLSsKLSAqKiogQ2hhbmdlcyBpbiBHREIg OC4xCi0gCi0gKiBHREIgbm93IHN1cHBvcnRzIGR5bmFtaWNhbGx5IGNyZWF0aW5nIGFyYml0cmFy eSByZWdpc3RlciBncm91cHMgc3BlY2lmaWVkCi0tLS0gLi9nZGIvYWFyY2g2NC1saW51eC1uYXQu YwkyMDE4LTAxLTA1IDA1OjA3OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2FhcmNoNjQt bGludXgtbmF0LmMJMjAxOC0wNS0wNSAxNzo1NDo1My4yMjg1MDY4MjIgKzAyMDAKLUBAIC03MzUs MTYgKzczNSwzOCBAQCBhYXJjaDY0X2xpbnV4X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Ci0g ICBzdGF0ZSA9IGFhcmNoNjRfZ2V0X2RlYnVnX3JlZ19zdGF0ZSAocHRpZF9nZXRfcGlkIChpbmZl cmlvcl9wdGlkKSk7Ci0gICBmb3IgKGkgPSBhYXJjaDY0X251bV93cF9yZWdzIC0gMTsgaSA+PSAw OyAtLWkpCi0gICAgIHsKLSsgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgb2Zmc2V0Ci0rCT0gYWFy Y2g2NF93YXRjaHBvaW50X29mZnNldCAoc3RhdGUtPmRyX2N0cmxfd3BbaV0pOwotICAgICAgIGNv bnN0IHVuc2lnbmVkIGludCBsZW4gPSBhYXJjaDY0X3dhdGNocG9pbnRfbGVuZ3RoIChzdGF0ZS0+ ZHJfY3RybF93cFtpXSk7Ci0gICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJfdHJhcCA9IChDT1JF X0FERFIpIHNpZ2luZm8uc2lfYWRkcjsKLS0gICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl93YXRj aCA9IHN0YXRlLT5kcl9hZGRyX3dwW2ldOwotKyAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3dh dGNoID0gc3RhdGUtPmRyX2FkZHJfd3BbaV0gKyBvZmZzZXQ7Ci0rICAgICAgY29uc3QgQ09SRV9B RERSIGFkZHJfd2F0Y2hfYWxpZ25lZCA9IGFsaWduX2Rvd24gKHN0YXRlLT5kcl9hZGRyX3dwW2ld LCA4KTsKLSsgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl9vcmlnID0gc3RhdGUtPmRyX2FkZHJf b3JpZ193cFtpXTsKLSAKLSAgICAgICBpZiAoc3RhdGUtPmRyX3JlZl9jb3VudF93cFtpXQotIAkg ICYmIERSX0NPTlRST0xfRU5BQkxFRCAoc3RhdGUtPmRyX2N0cmxfd3BbaV0pCi0tCSAgJiYgYWRk cl90cmFwID49IGFkZHJfd2F0Y2gKLSsJICAmJiBhZGRyX3RyYXAgPj0gYWRkcl93YXRjaF9hbGln bmVkCi0gCSAgJiYgYWRkcl90cmFwIDwgYWRkcl93YXRjaCArIGxlbikKLSAJewotLQkgICphZGRy X3AgPSBhZGRyX3RyYXA7Ci0rCSAgLyogQUREUl9UUkFQIHJlcG9ydHMgdGhlIGZpcnN0IGFkZHJl c3Mgb2YgdGhlIG1lbW9yeSByYW5nZQotKwkgICAgIGFjY2Vzc2VkIGJ5IHRoZSBDUFUsIHJlZ2Fy ZGxlc3Mgb2Ygd2hhdCB3YXMgdGhlIG1lbW9yeQotKwkgICAgIHJhbmdlIHdhdGNoZWQuICBUaHVz LCBhIGxhcmdlIENQVSBhY2Nlc3MgdGhhdCBzdHJhZGRsZXMKLSsJICAgICB0aGUgQUREUl9XQVRD SC4uQUREUl9XQVRDSCtMRU4gcmFuZ2UgbWF5IHJlc3VsdCBpbiBhbgotKwkgICAgIEFERFJfVFJB UCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlCi0rCSAgICAgQUREUl9XQVRDSC4uQUREUl9XQVRDSCtM RU4gcmFuZ2UuICBFLmcuOgotKwotKwkgICAgIGFkZHI6IHwgICA0ICAgfCAgIDUgICB8ICAgNiAg IHwgICA3ICAgfCAgIDggICB8Ci0rCQkJCSAgIHwtLS0tIHJhbmdlIHdhdGNoZWQgLS0tLXwKLSsJ CSAgIHwtLS0tLS0tLS0tLSByYW5nZSBhY2Nlc3NlZCAtLS0tLS0tLS0tLS18Ci0rCi0rCSAgICAg SW4gdGhpcyBjYXNlLCBBRERSX1RSQVAgd2lsbCBiZSA0LgotKwotKwkgICAgIFRvIG1hdGNoIGEg d2F0Y2hwb2ludCBrbm93biB0byBHREIgY29yZSwgd2UgbXVzdCBuZXZlcgotKwkgICAgIHJlcG9y dCAqQUREUl9QIG91dHNpZGUgb2YgYW55IEFERFJfV0FUQ0guLkFERFJfV0FUQ0grTEVOCi0rCSAg ICAgcmFuZ2UuICBBRERSX1dBVENIIDw9IEFERFJfVFJBUCA8IEFERFJfT1JJRyBpcyBhIGZhbHNl Ci0rCSAgICAgcG9zaXRpdmUgb24ga2VybmVscyBvbGRlciB0aGFuIDQuMTAuICBTZWUgUFIKLSsJ ICAgICBleHRlcm5hbC8yMDIwNy4gICovCi0rCSAgKmFkZHJfcCA9IGFkZHJfb3JpZzsKLSAJICBy ZXR1cm4gMTsKLSAJfQotICAgICB9Ci0tLS0gLi9nZGIvY29tbW9uL2NvbW1vbi11dGlscy5jCTIw MTgtMDEtMDUgMDU6MDc6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvY29tbW9uL2NvbW1v bi11dGlscy5jCTIwMTgtMDUtMDUgMTc6NTQ6MTQuMTA5MTQ4MTYxICswMjAwCi1AQCAtNDA4LDMg KzQwOCwyMyBAQCBzdHJpbmdpZnlfYXJndiAoY29uc3Qgc3RkOjp2ZWN0b3I8Y2hhciAqCi0gCi0g ICByZXR1cm4gcmV0OwotIH0KLSsKLSsvKiBTZWUgY29tbW9uL2NvbW1vbi11dGlscy5oLiAgKi8K LSsKLStVTE9OR0VTVAotK2FsaWduX3VwIChVTE9OR0VTVCB2LCBpbnQgbikKLSt7Ci0rICAvKiBD aGVjayB0aGF0IE4gaXMgcmVhbGx5IGEgcG93ZXIgb2YgdHdvLiAgKi8KLSsgIGdkYl9hc3NlcnQg KG4gJiYgKG4gJiAobi0xKSkgPT0gMCk7Ci0rICByZXR1cm4gKHYgKyBuIC0gMSkgJiAtbjsKLSt9 Ci0rCi0rLyogU2VlIGNvbW1vbi9jb21tb24tdXRpbHMuaC4gICovCi0rCi0rVUxPTkdFU1QKLSth bGlnbl9kb3duIChVTE9OR0VTVCB2LCBpbnQgbikKLSt7Ci0rICAvKiBDaGVjayB0aGF0IE4gaXMg cmVhbGx5IGEgcG93ZXIgb2YgdHdvLiAgKi8KLSsgIGdkYl9hc3NlcnQgKG4gJiYgKG4gJiAobi0x KSkgPT0gMCk7Ci0rICByZXR1cm4gKHYgJiAtbik7Ci0rfQotLS0tIC4vZ2RiL2NvbW1vbi9jb21t b24tdXRpbHMuaAkyMDE4LTAxLTA1IDA1OjA3OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2Ri L2NvbW1vbi9jb21tb24tdXRpbHMuaAkyMDE4LTA1LTA1IDE3OjU0OjE0LjExMDE0ODE3MCArMDIw MAotQEAgLTE0Niw0ICsxNDYsMzYgQEAgaW5faW5jbHVzaXZlX3JhbmdlIChUIHZhbHVlLCBUIGxv dywgVCBoaQotICAgcmV0dXJuIHZhbHVlID49IGxvdyAmJiB2YWx1ZSA8PSBoaWdoOwotIH0KLSAK LSsvKiBFbnN1cmUgdGhhdCBWIGlzIGFsaWduZWQgdG8gYW4gTiBieXRlIGJvdW5kYXJ5IChCJ3Mg YXNzdW1lZCB0byBiZSBhCi0rICAgcG93ZXIgb2YgMikuICBSb3VuZCB1cC9kb3duIHdoZW4gbmVj ZXNzYXJ5LiAgRXhhbXBsZXMgb2YgY29ycmVjdAotKyAgIHVzZSBpbmNsdWRlOgotKwotKyAgICBh ZGRyID0gYWxpZ25fdXAgKGFkZHIsIDgpOyAtLSBWQUxVRSBuZWVkcyA4IGJ5dGUgYWxpZ25tZW50 Ci0rICAgIHdyaXRlX21lbW9yeSAoYWRkciwgdmFsdWUsIGxlbik7Ci0rICAgIGFkZHIgKz0gbGVu OwotKwotKyAgIGFuZDoKLSsKLSsgICAgc3AgPSBhbGlnbl9kb3duIChzcCAtIGxlbiwgMTYpOyAt LSBLZWVwIFNQIDE2IGJ5dGUgYWxpZ25lZAotKyAgICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZSwg bGVuKTsKLSsKLSsgICBOb3RlIHRoYXQgdXNlcyBzdWNoIGFzOgotKwotKyAgICB3cml0ZV9tZW1v cnkgKGFkZHIsIHZhbHVlLCBsZW4pOwotKyAgICBhZGRyICs9IGFsaWduX3VwIChsZW4sIDgpOwot KwotKyAgIGFuZDoKLSsKLSsgICAgc3AgLT0gYWxpZ25fdXAgKGxlbiwgOCk7Ci0rICAgIHdyaXRl X21lbW9yeSAoc3AsIHZhbHVlLCBsZW4pOwotKwotKyAgIGFyZSB0eXBpY2FsbHkgbm90IGNvcnJl Y3QgYXMgdGhleSBkb24ndCBlbnN1cmUgdGhhdCB0aGUgYWRkcmVzcyAoU1AKLSsgICBvciBBRERS KSBpcyBjb3JyZWN0bHkgYWxpZ25lZCAocmVseWluZyBvbiBwcmV2aW91cyBhbGlnbm1lbnQgdG8K LSsgICBrZWVwIHRoaW5ncyByaWdodCkuICBUaGlzIGlzIGFsc28gd2h5IHRoZSBtZXRob2RzIGFy ZSBjYWxsZWQKLSsgICAiYWxpZ25fLi4uIiBpbnN0ZWFkIG9mICJyb3VuZF8uLi4iIGFzIHRoZSBs YXR0ZXIgcmVhZHMgYmV0dGVyIHdpdGgKLSsgICB0aGlzIGluY29ycmVjdCBjb2Rpbmcgc3R5bGUu ICAqLwotKwotK2V4dGVybiBVTE9OR0VTVCBhbGlnbl91cCAoVUxPTkdFU1QgdiwgaW50IG4pOwot K2V4dGVybiBVTE9OR0VTVCBhbGlnbl9kb3duIChVTE9OR0VTVCB2LCBpbnQgbik7Ci0rCi0gI2Vu ZGlmCi0tLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFhcmNoNjQtbG93LmMJMjAxOC0wMS0wNSAw NTowNzoyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtYWFyY2g2 NC1sb3cuYwkyMDE4LTA1LTA1IDE3OjU0OjE0LjExMDE0ODE3MCArMDIwMAotQEAgLTM2MCwxNCAr MzYwLDM5IEBAIGFhcmNoNjRfc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHZvaWQpCi0gICBzdGF0ZSA9 IGFhcmNoNjRfZ2V0X2RlYnVnX3JlZ19zdGF0ZSAocGlkX29mIChjdXJyZW50X3RocmVhZCkpOwot ICAgZm9yIChpID0gYWFyY2g2NF9udW1fd3BfcmVncyAtIDE7IGkgPj0gMDsgLS1pKQotICAgICB7 Ci0rICAgICAgY29uc3QgdW5zaWduZWQgaW50IG9mZnNldAotKwk9IGFhcmNoNjRfd2F0Y2hwb2lu dF9vZmZzZXQgKHN0YXRlLT5kcl9jdHJsX3dwW2ldKTsKLSAgICAgICBjb25zdCB1bnNpZ25lZCBp bnQgbGVuID0gYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCAoc3RhdGUtPmRyX2N0cmxfd3BbaV0p OwotICAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3RyYXAgPSAoQ09SRV9BRERSKSBzaWdpbmZv LnNpX2FkZHI7Ci0tICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJfd2F0Y2ggPSBzdGF0ZS0+ZHJf YWRkcl93cFtpXTsKLSsgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl93YXRjaCA9IHN0YXRlLT5k cl9hZGRyX3dwW2ldICsgb2Zmc2V0OwotKyAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3dhdGNo X2FsaWduZWQgPSBhbGlnbl9kb3duIChzdGF0ZS0+ZHJfYWRkcl93cFtpXSwgOCk7Ci0rICAgICAg Y29uc3QgQ09SRV9BRERSIGFkZHJfb3JpZyA9IHN0YXRlLT5kcl9hZGRyX29yaWdfd3BbaV07Ci0r Ci0gICAgICAgaWYgKHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0KLSAJICAmJiBEUl9DT05UUk9M X0VOQUJMRUQgKHN0YXRlLT5kcl9jdHJsX3dwW2ldKQotLQkgICYmIGFkZHJfdHJhcCA+PSBhZGRy X3dhdGNoCi0rCSAgJiYgYWRkcl90cmFwID49IGFkZHJfd2F0Y2hfYWxpZ25lZAotIAkgICYmIGFk ZHJfdHJhcCA8IGFkZHJfd2F0Y2ggKyBsZW4pCi0tCXJldHVybiBhZGRyX3RyYXA7Ci0rCXsKLSsJ ICAvKiBBRERSX1RSQVAgcmVwb3J0cyB0aGUgZmlyc3QgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IHJh bmdlCi0rCSAgICAgYWNjZXNzZWQgYnkgdGhlIENQVSwgcmVnYXJkbGVzcyBvZiB3aGF0IHdhcyB0 aGUgbWVtb3J5Ci0rCSAgICAgcmFuZ2Ugd2F0Y2hlZC4gIFRodXMsIGEgbGFyZ2UgQ1BVIGFjY2Vz cyB0aGF0IHN0cmFkZGxlcwotKwkgICAgIHRoZSBBRERSX1dBVENILi5BRERSX1dBVENIK0xFTiBy YW5nZSBtYXkgcmVzdWx0IGluIGFuCi0rCSAgICAgQUREUl9UUkFQIHRoYXQgaXMgbG93ZXIgdGhh biB0aGUKLSsJICAgICBBRERSX1dBVENILi5BRERSX1dBVENIK0xFTiByYW5nZS4gIEUuZy46Ci0r Ci0rCSAgICAgYWRkcjogfCAgIDQgICB8ICAgNSAgIHwgICA2ICAgfCAgIDcgICB8ICAgOCAgIHwK LSsJCQkJICAgfC0tLS0gcmFuZ2Ugd2F0Y2hlZCAtLS0tfAotKwkJICAgfC0tLS0tLS0tLS0tIHJh bmdlIGFjY2Vzc2VkIC0tLS0tLS0tLS0tLXwKLSsKLSsJICAgICBJbiB0aGlzIGNhc2UsIEFERFJf VFJBUCB3aWxsIGJlIDQuCi0rCi0rCSAgICAgVG8gbWF0Y2ggYSB3YXRjaHBvaW50IGtub3duIHRv IEdEQiBjb3JlLCB3ZSBtdXN0IG5ldmVyCi0rCSAgICAgcmVwb3J0ICpBRERSX1Agb3V0c2lkZSBv ZiBhbnkgQUREUl9XQVRDSC4uQUREUl9XQVRDSCtMRU4KLSsJICAgICByYW5nZS4gIEFERFJfV0FU Q0ggPD0gQUREUl9UUkFQIDwgQUREUl9PUklHIGlzIGEgZmFsc2UKLSsJICAgICBwb3NpdGl2ZSBv biBrZXJuZWxzIG9sZGVyIHRoYW4gNC4xMC4gIFNlZSBQUgotKwkgICAgIGV4dGVybmFsLzIwMjA3 LiAgKi8KLSsJICByZXR1cm4gYWRkcl9vcmlnOwotKwl9Ci0gICAgIH0KLSAKLSAgIHJldHVybiAo Q09SRV9BRERSKSAwOwotLS0tIC4vZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMJMjAx OC0wMS0wNSAwNTowNzoyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9uYXQvYWFyY2g2NC1s aW51eC1ody1wb2ludC5jCTIwMTgtMDUtMDUgMTc6NTQ6MTQuMTEwMTQ4MTcwICswMjAwCi1AQCAt MzQsMjkgKzM0LDUyIEBACi0gaW50IGFhcmNoNjRfbnVtX2JwX3JlZ3M7Ci0gaW50IGFhcmNoNjRf bnVtX3dwX3JlZ3M7Ci0gCi0rLyogVHJ1ZSBpZiB0aGlzIGtlcm5lbCBkb2VzIG5vdCBoYXZlIHRo ZSBidWcgZGVzY3JpYmVkIGJ5IFBSCi0rICAgZXh0ZXJuYWwvMjAyMDcgKExpbnV4ID49IDQuMTAp LiAgQSBmaXhlZCBrZXJuZWwgc3VwcG9ydHMgYW55Ci0rICAgY29udGlndW91cyByYW5nZSBvZiBi aXRzIGluIDgtYml0IGJ5dGUgRFJfQ09OVFJPTF9NQVNLLiAgQSBidWdneQotKyAgIGtlcm5lbCBz dXBwb3J0cyBvbmx5IDB4MDEsIDB4MDMsIDB4MGYgYW5kIDB4ZmYuICBXZSBzdGFydCBieQotKyAg IGFzc3VtaW5nIHRoZSBidWcgaXMgZml4ZWQsIGFuZCB0aGVuIGRldGVjdCB0aGUgYnVnIGF0Ci0r ICAgUFRSQUNFX1NFVFJFR1NFVCB0aW1lLiAgKi8KLStzdGF0aWMgYm9vbCBrZXJuZWxfc3VwcG9y dHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UgPSB0cnVlOwotKwotKy8qIFJldHVybiBzdGFydGluZyBi eXRlIDAuLjcgaW5jbC4gb2YgYSB3YXRjaHBvaW50IGVuY29kZWQgYnkgQ1RSTC4gICovCi0rCi0r dW5zaWduZWQgaW50Ci0rYWFyY2g2NF93YXRjaHBvaW50X29mZnNldCAodW5zaWduZWQgaW50IGN0 cmwpCi0rewotKyAgdWludDhfdCBtYXNrID0gRFJfQ09OVFJPTF9NQVNLIChjdHJsKTsKLSsgIHVu c2lnbmVkIHJldHZhbDsKLSsKLSsgIC8qIFNoaWZ0IG91dCBib3R0b20gemVyb3MuICAqLwotKyAg Zm9yIChyZXR2YWwgPSAwOyBtYXNrICYmIChtYXNrICYgMSkgPT0gMDsgKytyZXR2YWwpCi0rICAg IG1hc2sgPj49IDE7Ci0rCi0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSAvKiBVdGlsaXR5IGZ1 bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbGVuZ3RoIGluIGJ5dGVzIG9mIGEgd2F0Y2hwb2ludAot ICAgIGFjY29yZGluZyB0byB0aGUgY29udGVudCBvZiBhIGhhcmR3YXJlIGRlYnVnIGNvbnRyb2wg cmVnaXN0ZXIgQ1RSTC4KLS0gICBOb3RlIHRoYXQgdGhlIGtlcm5lbCBjdXJyZW50bHkgb25seSBz dXBwb3J0cyB0aGUgZm9sbG93aW5nIEJ5dGUKLS0gICBBZGRyZXNzIFNlbGVjdCAoQkFTKSB2YWx1 ZXM6IDB4MSwgMHgzLCAweGYgYW5kIDB4ZmYsIHdoaWNoIG1lYW5zCi0tICAgdGhhdCBmb3IgYSBo YXJkd2FyZSB3YXRjaHBvaW50LCBpdHMgdmFsaWQgbGVuZ3RoIGNhbiBvbmx5IGJlIDEKLS0gICBi eXRlLCAyIGJ5dGVzLCA0IGJ5dGVzIG9yIDggYnl0ZXMuICAqLwotKyAgIEFueSBjb250aWd1b3Vz IHJhbmdlIG9mIGJ5dGVzIGluIENUUkwgaXMgc3VwcG9ydGVkLiAgVGhlIHJldHVybmVkCi0rICAg dmFsdWUgY2FuIGJlIGJldHdlZW4gMC4uOCAoaW5jbHVzaXZlKS4gICovCi0gCi0gdW5zaWduZWQg aW50Ci0gYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCAodW5zaWduZWQgaW50IGN0cmwpCi0gewot LSAgc3dpdGNoIChEUl9DT05UUk9MX0xFTkdUSCAoY3RybCkpCi0tICAgIHsKLS0gICAgY2FzZSAw eDAxOgotLSAgICAgIHJldHVybiAxOwotLSAgICBjYXNlIDB4MDM6Ci0tICAgICAgcmV0dXJuIDI7 Ci0tICAgIGNhc2UgMHgwZjoKLS0gICAgICByZXR1cm4gNDsKLS0gICAgY2FzZSAweGZmOgotLSAg ICAgIHJldHVybiA4OwotLSAgICBkZWZhdWx0OgotLSAgICAgIHJldHVybiAwOwotLSAgICB9Ci0r ICB1aW50OF90IG1hc2sgPSBEUl9DT05UUk9MX01BU0sgKGN0cmwpOwotKyAgdW5zaWduZWQgcmV0 dmFsOwotKwotKyAgLyogU2hpZnQgb3V0IGJvdHRvbSB6ZXJvcy4gICovCi0rICBtYXNrID4+PSBh YXJjaDY0X3dhdGNocG9pbnRfb2Zmc2V0IChjdHJsKTsKLSsKLSsgIC8qIENvdW50IGJvdHRvbSBv bmVzLiAgKi8KLSsgIGZvciAocmV0dmFsID0gMDsgKG1hc2sgJiAxKSAhPSAwOyArK3JldHZhbCkK LSsgICAgbWFzayA+Pj0gMTsKLSsKLSsgIGlmIChtYXNrICE9IDApCi0rICAgIGVycm9yIChfKCJV bmV4cGVjdGVkIGhhcmR3YXJlIHdhdGNocG9pbnQgbGVuZ3RoIHJlZ2lzdGVyIHZhbHVlIDB4JXgi KSwKLSsJICAgRFJfQ09OVFJPTF9NQVNLIChjdHJsKSk7Ci0rCi0rICByZXR1cm4gcmV0dmFsOwot IH0KLSAKLSAvKiBHaXZlbiB0aGUgaGFyZHdhcmUgYnJlYWtwb2ludCBvciB3YXRjaHBvaW50IHR5 cGUgVFlQRSBhbmQgaXRzCi1AQCAtNjQsMTAgKzg3LDEzIEBAIGFhcmNoNjRfd2F0Y2hwb2ludF9s ZW5ndGggKHVuc2lnbmVkIGludAotICAgIGJyZWFrcG9pbnQvd2F0Y2hwb2ludCBjb250cm9sIHJl Z2lzdGVyLiAgKi8KLSAKLSBzdGF0aWMgdW5zaWduZWQgaW50Ci0tYWFyY2g2NF9wb2ludF9lbmNv ZGVfY3RybF9yZWcgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwgaW50IGxlbikKLSthYXJj aDY0X3BvaW50X2VuY29kZV9jdHJsX3JlZyAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLCBp bnQgb2Zmc2V0LCBpbnQgbGVuKQotIHsKLSAgIHVuc2lnbmVkIGludCBjdHJsLCB0dHlwZTsKLSAK LSsgIGdkYl9hc3NlcnQgKG9mZnNldCA9PSAwIHx8IGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGln dW91c19yYW5nZSk7Ci0rICBnZGJfYXNzZXJ0IChvZmZzZXQgKyBsZW4gPD0gQUFSQ0g2NF9IV1Bf TUFYX0xFTl9QRVJfUkVHKTsKLSsKLSAgIC8qIHR5cGUgKi8KLSAgIHN3aXRjaCAodHlwZSkKLSAg ICAgewotQEAgLTg5LDggKzExNSw4IEBAIGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0cmxfcmVnIChl bnVtIHRhcmcKLSAKLSAgIGN0cmwgPSB0dHlwZSA8PCAzOwotIAotLSAgLyogbGVuZ3RoIGJpdG1h c2sgKi8KLS0gIGN0cmwgfD0gKCgxIDw8IGxlbikgLSAxKSA8PCA1OwotKyAgLyogb2Zmc2V0IGFu ZCBsZW5ndGggYml0bWFzayAqLwotKyAgY3RybCB8PSAoKDEgPDwgbGVuKSAtIDEpIDw8ICg1ICsg b2Zmc2V0KTsKLSAgIC8qIGVuYWJsZWQgYXQgZWwwICovCi0gICBjdHJsIHw9ICgyIDw8IDEpIHwg MTsKLSAKLUBAIC0xMzQsNTggKzE2MCw2NSBAQCBhYXJjaDY0X3BvaW50X2lzX2FsaWduZWQgKGlu dCBpc193YXRjaHBvCi0gICBpZiAoYWRkciAmIChhbGlnbm1lbnQgLSAxKSkKLSAgICAgcmV0dXJu IDA7Ci0gCi0tICBpZiAobGVuICE9IDggJiYgbGVuICE9IDQgJiYgbGVuICE9IDIgJiYgbGVuICE9 IDEpCi0rICBpZiAoKCFrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UKLSsgICAg ICAgJiYgbGVuICE9IDggJiYgbGVuICE9IDQgJiYgbGVuICE9IDIgJiYgbGVuICE9IDEpCi0rICAg ICAgfHwgKGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5nZQotKwkgICYmIChsZW4g PCAxIHx8IGxlbiA+IDgpKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi0gICByZXR1cm4gMTsKLSB9Ci0g Ci0gLyogR2l2ZW4gdGhlIChwb3RlbnRpYWxseSB1bmFsaWduZWQpIHdhdGNocG9pbnQgYWRkcmVz cyBpbiBBRERSIGFuZAotLSAgIGxlbmd0aCBpbiBMRU4sIHJldHVybiB0aGUgYWxpZ25lZCBhZGRy ZXNzIGFuZCBhbGlnbmVkIGxlbmd0aCBpbgotLSAgICpBTElHTkVEX0FERFJfUCBhbmQgKkFMSUdO RURfTEVOX1AsIHJlc3BlY3RpdmVseS4gIFRoZSByZXR1cm5lZAotLSAgIGFsaWduZWQgYWRkcmVz cyBhbmQgbGVuZ3RoIHdpbGwgYmUgdmFsaWQgdmFsdWVzIHRvIHdyaXRlIHRvIHRoZQotLSAgIGhh cmR3YXJlIHdhdGNocG9pbnQgdmFsdWUgYW5kIGNvbnRyb2wgcmVnaXN0ZXJzLgotKyAgIGxlbmd0 aCBpbiBMRU4sIHJldHVybiB0aGUgYWxpZ25lZCBhZGRyZXNzLCBvZmZzZXQgZnJvbSB0aGF0IGJh c2UKLSsgICBhZGRyZXNzLCBhbmQgYWxpZ25lZCBsZW5ndGggaW4gKkFMSUdORURfQUREUl9QLCAq QUxJR05FRF9PRkZTRVRfUAotKyAgIGFuZCAqQUxJR05FRF9MRU5fUCwgcmVzcGVjdGl2ZWx5LiAg VGhlIHJldHVybmVkIHZhbHVlcyB3aWxsIGJlCi0rICAgdmFsaWQgdmFsdWVzIHRvIHdyaXRlIHRv IHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50IHZhbHVlIGFuZCBjb250cm9sCi0rICAgcmVnaXN0ZXJz LgotIAotICAgIFRoZSBnaXZlbiB3YXRjaHBvaW50IG1heSBnZXQgdHJ1bmNhdGVkIGlmIG1vcmUg dGhhbiBvbmUgaGFyZHdhcmUKLSAgICByZWdpc3RlciBpcyBuZWVkZWQgdG8gY292ZXIgdGhlIHdh dGNoZWQgcmVnaW9uLiAgKk5FWFRfQUREUl9QCi0gICAgYW5kICpORVhUX0xFTl9QLCBpZiBub24t TlVMTCwgd2lsbCByZXR1cm4gdGhlIGFkZHJlc3MgYW5kIGxlbmd0aAotICAgIG9mIHRoZSByZW1h aW5pbmcgcGFydCBvZiB0aGUgd2F0Y2hwb2ludCAod2hpY2ggY2FuIGJlIHByb2Nlc3NlZAotLSAg IGJ5IGNhbGxpbmcgdGhpcyByb3V0aW5lIGFnYWluIHRvIGdlbmVyYXRlIGFub3RoZXIgYWxpZ25l ZCBhZGRyZXNzCi0tICAgYW5kIGxlbmd0aCBwYWlyLgotKyAgIGJ5IGNhbGxpbmcgdGhpcyByb3V0 aW5lIGFnYWluIHRvIGdlbmVyYXRlIGFub3RoZXIgYWxpZ25lZCBhZGRyZXNzLAotKyAgIG9mZnNl dCBhbmQgbGVuZ3RoIHR1cGxlLgotIAotICAgIEVzc2VudGlhbGx5LCB1bmFsaWduZWQgd2F0Y2hw b2ludCBpcyBhY2hpZXZlZCBieSBtaW5pbWFsbHkKLSAgICBlbmxhcmdpbmcgdGhlIHdhdGNoZWQg YXJlYSB0byBtZWV0IHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnQsIGFuZAotICAgIGlmIG5lY2Vz c2FyeSwgc3BsaXR0aW5nIHRoZSB3YXRjaHBvaW50IG92ZXIgc2V2ZXJhbCBoYXJkd2FyZQotLSAg IHdhdGNocG9pbnQgcmVnaXN0ZXJzLiAgVGhlIHRyYWRlLW9mZiBpcyB0aGF0IHRoZXJlIHdpbGwg YmUKLS0gICBmYWxzZS1wb3NpdGl2ZSBoaXRzIGZvciB0aGUgcmVhZC10eXBlIG9yIHRoZSBhY2Nl c3MtdHlwZSBoYXJkd2FyZQotLSAgIHdhdGNocG9pbnRzOyBmb3IgdGhlIHdyaXRlIHR5cGUsIHdo aWNoIGlzIG1vcmUgY29tbW9ubHkgdXNlZCwgdGhlcmUKLS0gICB3aWxsIGJlIG5vIHN1Y2ggaXNz dWVzLCBhcyB0aGUgaGlnaGVyLWxldmVsIGJyZWFrcG9pbnQgbWFuYWdlbWVudAotLSAgIGluIGdk YiBhbHdheXMgZXhhbWluZXMgdGhlIGV4YWN0IHdhdGNoZWQgcmVnaW9uIGZvciBhbnkgY29udGVu dAotLSAgIGNoYW5nZSwgYW5kIHRyYW5zcGFyZW50bHkgcmVzdW1lcyBhIHRocmVhZCBmcm9tIGEg d2F0Y2hwb2ludCB0cmFwCi0tICAgaWYgdGhlcmUgaXMgbm8gY2hhbmdlIHRvIHRoZSB3YXRjaGVk IHJlZ2lvbi4KLSsgICB3YXRjaHBvaW50IHJlZ2lzdGVycy4KLSsKLSsgICBPbiBrZXJuZWxzIHRo YXQgcHJlZGF0ZSB0aGUgc3VwcG9ydCBmb3IgQnl0ZSBBZGRyZXNzIFNlbGVjdCAoQkFTKQotKyAg IGluIHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50IGNvbnRyb2wgcmVnaXN0ZXIsIHRoZSBvZmZzZXQg ZnJvbSB0aGUKLSsgICBiYXNlIGFkZHJlc3MgaXMgYWx3YXlzIHplcm8sIGFuZCBzbyBpbiB0aGF0 IGNhc2UgdGhlIHRyYWRlLW9mZiBpcwotKyAgIHRoYXQgdGhlcmUgd2lsbCBiZSBmYWxzZS1wb3Np dGl2ZSBoaXRzIGZvciB0aGUgcmVhZC10eXBlIG9yIHRoZQotKyAgIGFjY2Vzcy10eXBlIGhhcmR3 YXJlIHdhdGNocG9pbnRzOyBmb3IgdGhlIHdyaXRlIHR5cGUsIHdoaWNoIGlzIG1vcmUKLSsgICBj b21tb25seSB1c2VkLCB0aGVyZSB3aWxsIGJlIG5vIHN1Y2ggaXNzdWVzLCBhcyB0aGUgaGlnaGVy LWxldmVsCi0rICAgYnJlYWtwb2ludCBtYW5hZ2VtZW50IGluIGdkYiBhbHdheXMgZXhhbWluZXMg dGhlIGV4YWN0IHdhdGNoZWQKLSsgICByZWdpb24gZm9yIGFueSBjb250ZW50IGNoYW5nZSwgYW5k IHRyYW5zcGFyZW50bHkgcmVzdW1lcyBhIHRocmVhZAotKyAgIGZyb20gYSB3YXRjaHBvaW50IHRy YXAgaWYgdGhlcmUgaXMgbm8gY2hhbmdlIHRvIHRoZSB3YXRjaGVkIHJlZ2lvbi4KLSAKLSAgICBB bm90aGVyIGxpbWl0YXRpb24gaXMgdGhhdCBiZWNhdXNlIHRoZSB3YXRjaGVkIHJlZ2lvbiBpcyBl bmxhcmdlZCwKLS0gICB0aGUgd2F0Y2hwb2ludCBmYXVsdCBhZGRyZXNzIHJldHVybmVkIGJ5Ci0r ICAgdGhlIHdhdGNocG9pbnQgZmF1bHQgYWRkcmVzcyBkaXNjb3ZlcmVkIGJ5Ci0gICAgYWFyY2g2 NF9zdG9wcGVkX2RhdGFfYWRkcmVzcyBtYXkgYmUgb3V0c2lkZSBvZiB0aGUgb3JpZ2luYWwgd2F0 Y2hlZAotICAgIHJlZ2lvbiwgZXNwZWNpYWxseSB3aGVuIHRoZSB0cmlnZ2VyaW5nIGluc3RydWN0 aW9uIGlzIGFjY2Vzc2luZyBhCi0gICAgbGFyZ2VyIHJlZ2lvbi4gIFdoZW4gdGhlIGZhdWx0IGFk ZHJlc3MgaXMgbm90IHdpdGhpbiBhbnkga25vd24KLSAgICByYW5nZSwgd2F0Y2hwb2ludHNfdHJp Z2dlcmVkIGluIGdkYiB3aWxsIGdldCBjb25mdXNlZCwgYXMgdGhlCi0gICAgaGlnaGVyLWxldmVs IHdhdGNocG9pbnQgbWFuYWdlbWVudCBpcyBvbmx5IGF3YXJlIG9mIG9yaWdpbmFsCi0gICAgd2F0 Y2hlZCByZWdpb25zLCBhbmQgd2lsbCB0aGluayB0aGF0IHNvbWUgdW5rbm93biB3YXRjaHBvaW50 IGhhcwotLSAgIGJlZW4gdHJpZ2dlcmVkLiAgSW4gc3VjaCBhIGNhc2UsIGdkYiBtYXkgc3RvcCB3 aXRob3V0IGRpc3BsYXlpbmcKLS0gICBhbnkgZGV0YWlsZWQgaW5mb3JtYXRpb24uCi0tCi0tICAg T25jZSB0aGUga2VybmVsIHByb3ZpZGVzIHRoZSBmdWxsIHN1cHBvcnQgZm9yIEJ5dGUgQWRkcmVz cyBTZWxlY3QKLS0gICAoQkFTKSBpbiB0aGUgaGFyZHdhcmUgd2F0Y2hwb2ludCBjb250cm9sIHJl Z2lzdGVyLCB0aGVzZQotLSAgIGxpbWl0YXRpb25zIGNhbiBiZSBsYXJnZWx5IHJlbGF4ZWQgd2l0 aCBzb21lIGZ1cnRoZXIgd29yay4gICovCi0rICAgYmVlbiB0cmlnZ2VyZWQuICBUbyBwcmV2ZW50 IHN1Y2ggYSBjYXNlLAotKyAgIGFhcmNoNjRfc3RvcHBlZF9kYXRhX2FkZHJlc3MgaW1wbGVtZW50 YXRpb25zIGluIGdkYiBhbmQgZ2Ric2VydmVyCi0rICAgdHJ5IHRvIG1hdGNoIHRoZSB0cmFwcGVk IGFkZHJlc3Mgd2l0aCBhIHdhdGNoZWQgcmVnaW9uLCBhbmQgcmV0dXJuCi0rICAgYW4gYWRkcmVz cyB3aXRoaW4gdGhlIGxhdHRlci4gKi8KLSAKLSBzdGF0aWMgdm9pZAotIGFhcmNoNjRfYWxpZ25f d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIENPUkVfQUREUiAqYWxpZ25lZF9h ZGRyX3AsCi0tCQkJICBpbnQgKmFsaWduZWRfbGVuX3AsIENPUkVfQUREUiAqbmV4dF9hZGRyX3As Ci0tCQkJICBpbnQgKm5leHRfbGVuX3ApCi0rCQkJICBpbnQgKmFsaWduZWRfb2Zmc2V0X3AsIGlu dCAqYWxpZ25lZF9sZW5fcCwKLSsJCQkgIENPUkVfQUREUiAqbmV4dF9hZGRyX3AsIGludCAqbmV4 dF9sZW5fcCwKLSsJCQkgIENPUkVfQUREUiAqbmV4dF9hZGRyX29yaWdfcCkKLSB7Ci0gICBpbnQg YWxpZ25lZF9sZW47Ci0tICB1bnNpZ25lZCBpbnQgb2Zmc2V0OwotKyAgdW5zaWduZWQgaW50IG9m ZnNldCwgYWxpZ25lZF9vZmZzZXQ7Ci0gICBDT1JFX0FERFIgYWxpZ25lZF9hZGRyOwotICAgY29u c3QgdW5zaWduZWQgaW50IGFsaWdubWVudCA9IEFBUkNINjRfSFdQX0FMSUdOTUVOVDsKLSAgIGNv bnN0IHVuc2lnbmVkIGludCBtYXhfd3BfbGVuID0gQUFSQ0g2NF9IV1BfTUFYX0xFTl9QRVJfUkVH OwotQEAgLTE5NiwxMCArMjI5LDEyIEBAIGFhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoQ09SRV9B RERSIGFkZHIKLSAgIGlmIChsZW4gPD0gMCkKLSAgICAgcmV0dXJuOwotIAotLSAgLyogQWRkcmVz cyB0byBiZSBwdXQgaW50byB0aGUgaGFyZHdhcmUgd2F0Y2hwb2ludCB2YWx1ZSByZWdpc3Rlcgot LSAgICAgbXVzdCBiZSBhbGlnbmVkLiAgKi8KLSsgIC8qIFRoZSBhZGRyZXNzIHB1dCBpbnRvIHRo ZSBoYXJkd2FyZSB3YXRjaHBvaW50IHZhbHVlIHJlZ2lzdGVyIG11c3QKLSsgICAgIGJlIGFsaWdu ZWQuICAqLwotICAgb2Zmc2V0ID0gYWRkciAmIChhbGlnbm1lbnQgLSAxKTsKLSAgIGFsaWduZWRf YWRkciA9IGFkZHIgLSBvZmZzZXQ7Ci0rICBhbGlnbmVkX29mZnNldAotKyAgICA9IGtlcm5lbF9z dXBwb3J0c19hbnlfY29udGlndW91c19yYW5nZSA/IGFkZHIgJiAoYWxpZ25tZW50IC0gMSkgOiAw OwotIAotICAgZ2RiX2Fzc2VydCAob2Zmc2V0ID49IDAgJiYgb2Zmc2V0IDwgYWxpZ25tZW50KTsK LSAgIGdkYl9hc3NlcnQgKGFsaWduZWRfYWRkciA+PSAwICYmIGFsaWduZWRfYWRkciA8PSBhZGRy KTsKLUBAIC0yMDcsOSArMjQyLDEwIEBAIGFhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoQ09SRV9B RERSIGFkZHIKLSAKLSAgIGlmIChvZmZzZXQgKyBsZW4gPj0gbWF4X3dwX2xlbikKLSAgICAgewot LSAgICAgIC8qIE5lZWQgbW9yZSB0aGFuIG9uZSB3YXRjaHBvaW50IHJlZ2lzdGVyczsgdHJ1bmNh dGUgaXQgYXQgdGhlCi0rICAgICAgLyogTmVlZCBtb3JlIHRoYW4gb25lIHdhdGNocG9pbnQgcmVn aXN0ZXI7IHRydW5jYXRlIGF0IHRoZQotIAkgYWxpZ25tZW50IGJvdW5kYXJ5LiAgKi8KLS0gICAg ICBhbGlnbmVkX2xlbiA9IG1heF93cF9sZW47Ci0rICAgICAgYWxpZ25lZF9sZW4KLSsJPSBtYXhf d3BfbGVuIC0gKGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5nZSA/IG9mZnNldCA6 IDApOwotICAgICAgIGxlbiAtPSAobWF4X3dwX2xlbiAtIG9mZnNldCk7Ci0gICAgICAgYWRkciAr PSAobWF4X3dwX2xlbiAtIG9mZnNldCk7Ci0gICAgICAgZ2RiX2Fzc2VydCAoKGFkZHIgJiAoYWxp Z25tZW50IC0gMSkpID09IDApOwotQEAgLTIyMiwxOSArMjU4LDI0IEBAIGFhcmNoNjRfYWxpZ25f d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIKLSAJYWxpZ25lZF9sZW5fYXJyYXlbQUFSQ0g2NF9I V1BfTUFYX0xFTl9QRVJfUkVHXSA9Ci0gCXsgMSwgMiwgNCwgNCwgOCwgOCwgOCwgOCB9OwotIAot LSAgICAgIGFsaWduZWRfbGVuID0gYWxpZ25lZF9sZW5fYXJyYXlbb2Zmc2V0ICsgbGVuIC0gMV07 Ci0rICAgICAgYWxpZ25lZF9sZW4gPSAoa2VybmVsX3N1cHBvcnRzX2FueV9jb250aWd1b3VzX3Jh bmdlCi0rCQkgICAgID8gbGVuIDogYWxpZ25lZF9sZW5fYXJyYXlbb2Zmc2V0ICsgbGVuIC0gMV0p OwotICAgICAgIGFkZHIgKz0gbGVuOwotICAgICAgIGxlbiA9IDA7Ci0gICAgIH0KLSAKLSAgIGlm IChhbGlnbmVkX2FkZHJfcCkKLSAgICAgKmFsaWduZWRfYWRkcl9wID0gYWxpZ25lZF9hZGRyOwot KyAgaWYgKGFsaWduZWRfb2Zmc2V0X3ApCi0rICAgICphbGlnbmVkX29mZnNldF9wID0gYWxpZ25l ZF9vZmZzZXQ7Ci0gICBpZiAoYWxpZ25lZF9sZW5fcCkKLSAgICAgKmFsaWduZWRfbGVuX3AgPSBh bGlnbmVkX2xlbjsKLSAgIGlmIChuZXh0X2FkZHJfcCkKLSAgICAgKm5leHRfYWRkcl9wID0gYWRk cjsKLSAgIGlmIChuZXh0X2xlbl9wKQotICAgICAqbmV4dF9sZW5fcCA9IGxlbjsKLSsgIGlmIChu ZXh0X2FkZHJfb3JpZ19wKQotKyAgICAqbmV4dF9hZGRyX29yaWdfcCA9IGFsaWduX2Rvd24gKCpu ZXh0X2FkZHJfb3JpZ19wICsgYWxpZ25tZW50LCBhbGlnbm1lbnQpOwotIH0KLSAKLSBzdHJ1Y3Qg YWFyY2g2NF9kcl91cGRhdGVfY2FsbGJhY2tfcGFyYW0KLUBAIC0zMjQsMTcgKzM2NSw3MyBAQCBh YXJjaDY0X25vdGlmeV9kZWJ1Z19yZWdfY2hhbmdlIChjb25zdCBzCi0gICBpdGVyYXRlX292ZXJf bHdwcyAocGlkX3B0aWQsIGRlYnVnX3JlZ19jaGFuZ2VfY2FsbGJhY2ssICh2b2lkICopICZwYXJh bSk7Ci0gfQotIAotKy8qIFJlY29uZmlndXJlIFNUQVRFIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBM aW51eCBrZXJuZWxzIHdpdGggdGhlIFBSCi0rICAgZXh0ZXJuYWwvMjAyMDcgYnVnLiAgVGhpcyBp cyBjYWxsZWQgd2hlbgotKyAgIEtFUk5FTF9TVVBQT1JUU19BTllfQ09OVElHVU9VU19SQU5HRSB0 cmFuc2l0aW9ucyB0byBmYWxzZS4gIE5vdGUgd2UKLSsgICBkb24ndCB0cnkgdG8gc3VwcG9ydCBj b21iaW5pbmcgd2F0Y2hwb2ludHMgd2l0aCBtYXRjaGluZyAoYW5kIHRodXMKLSsgICBzaGFyZWQp IG1hc2tzLCBhcyBpdCdzIHRvbyBsYXRlIHdoZW4gd2UgZ2V0IGhlcmUuICBPbiBidWdneQotKyAg IGtlcm5lbHMsIEdEQiB3aWxsIHRyeSB0byBmaXJzdCBzZXR1cCB0aGUgcGVyZmVjdCBtYXRjaGlu ZyByYW5nZXMsCi0rICAgd2hpY2ggd2lsbCBydW4gb3V0IG9mIHJlZ2lzdGVycyBiZWZvcmUgdGhp cyBmdW5jdGlvbiBjYW4gbWVyZ2UKLSsgICB0aGVtLiAgSXQgZG9lc24ndCBsb29rIGxpa2Ugd29y dGggdGhlIGVmZm9ydCB0byBpbXByb3ZlIHRoYXQsIGdpdmVuCi0rICAgZXZlbnR1YWxseSBidWdn eSBrZXJuZWxzIHdpbGwgYmUgcGhhc2VkIG91dC4gICovCi0rCi0rc3RhdGljIHZvaWQKLSthYXJj aDY0X2Rvd25ncmFkZV9yZWdzIChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRl KQotK3sKLSsgIGZvciAoaW50IGkgPSAwOyBpIDwgYWFyY2g2NF9udW1fd3BfcmVnczsgKytpKQot KyAgICBpZiAoKHN0YXRlLT5kcl9jdHJsX3dwW2ldICYgMSkgIT0gMCkKLSsgICAgICB7Ci0rCWdk Yl9hc3NlcnQgKHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0gIT0gMCk7Ci0rCXVpbnQ4X3QgbWFz a19vcmlnID0gKHN0YXRlLT5kcl9jdHJsX3dwW2ldID4+IDUpICYgMHhmZjsKLSsJZ2RiX2Fzc2Vy dCAobWFza19vcmlnICE9IDApOwotKwlzdGF0aWMgY29uc3QgdWludDhfdCBvbGRfdmFsaWRbXSA9 IHsgMHgwMSwgMHgwMywgMHgwZiwgMHhmZiB9OwotKwl1aW50OF90IG1hc2sgPSAwOwotKwlmb3Ig KGNvbnN0IHVpbnQ4X3Qgb2xkX21hc2sgOiBvbGRfdmFsaWQpCi0rCSAgaWYgKG1hc2tfb3JpZyA8 PSBvbGRfbWFzaykKLSsJICAgIHsKLSsJICAgICAgbWFzayA9IG9sZF9tYXNrOwotKwkgICAgICBi cmVhazsKLSsJICAgIH0KLSsJZ2RiX2Fzc2VydCAobWFzayAhPSAwKTsKLSsKLSsJLyogTm8gdXBk YXRlIG5lZWRlZCBmb3IgdGhpcyB3YXRjaHBvaW50PyAgKi8KLSsJaWYgKG1hc2sgPT0gbWFza19v cmlnKQotKwkgIGNvbnRpbnVlOwotKwlzdGF0ZS0+ZHJfY3RybF93cFtpXSB8PSBtYXNrIDw8IDU7 Ci0rCXN0YXRlLT5kcl9hZGRyX3dwW2ldCi0rCSAgPSBhbGlnbl9kb3duIChzdGF0ZS0+ZHJfYWRk cl93cFtpXSwgQUFSQ0g2NF9IV1BfQUxJR05NRU5UKTsKLSsKLSsJLyogVHJ5IHRvIG1hdGNoIGR1 cGxpY2F0ZSBlbnRyaWVzLiAgKi8KLSsJZm9yIChpbnQgaiA9IDA7IGogPCBpOyArK2opCi0rCSAg aWYgKChzdGF0ZS0+ZHJfY3RybF93cFtqXSAmIDEpICE9IDAKLSsJICAgICAgJiYgc3RhdGUtPmRy X2FkZHJfd3Bbal0gPT0gc3RhdGUtPmRyX2FkZHJfd3BbaV0KLSsJICAgICAgJiYgc3RhdGUtPmRy X2FkZHJfb3JpZ193cFtqXSA9PSBzdGF0ZS0+ZHJfYWRkcl9vcmlnX3dwW2ldCi0rCSAgICAgICYm IHN0YXRlLT5kcl9jdHJsX3dwW2pdID09IHN0YXRlLT5kcl9jdHJsX3dwW2ldKQotKwkgICAgewot KwkgICAgICBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2pdICs9IHN0YXRlLT5kcl9yZWZfY291bnRf d3BbaV07Ci0rCSAgICAgIHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0gPSAwOwotKwkgICAgICBz dGF0ZS0+ZHJfYWRkcl93cFtpXSA9IDA7Ci0rCSAgICAgIHN0YXRlLT5kcl9hZGRyX29yaWdfd3Bb aV0gPSAwOwotKwkgICAgICBzdGF0ZS0+ZHJfY3RybF93cFtpXSAmPSB+MTsKLSsJICAgICAgYnJl YWs7Ci0rCSAgICB9Ci0rCi0rCWFhcmNoNjRfbm90aWZ5X2RlYnVnX3JlZ19jaGFuZ2UgKHN0YXRl LCAxIC8qIGlzX3dhdGNocG9pbnQgKi8sIGkpOwotKyAgICAgIH0KLSt9Ci0rCi0gLyogUmVjb3Jk IHRoZSBpbnNlcnRpb24gb2Ygb25lIGJyZWFrcG9pbnQvd2F0Y2hwb2ludCwgYXMgcmVwcmVzZW50 ZWQKLSAgICBieSBBRERSIGFuZCBDVFJMLCBpbiB0aGUgcHJvY2VzcycgYXJjaC1zcGVjaWZpYyBk YXRhIGFyZWEgKlNUQVRFLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0gYWFyY2g2NF9kcl9zdGF0ZV9p bnNlcnRfb25lX3BvaW50IChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAot IAkJCQkgICBlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsCi0tCQkJCSAgIENPUkVfQUREUiBh ZGRyLCBpbnQgbGVuKQotKwkJCQkgICBDT1JFX0FERFIgYWRkciwgaW50IG9mZnNldCwgaW50IGxl biwKLSsJCQkJICAgQ09SRV9BRERSIGFkZHJfb3JpZykKLSB7Ci0gICBpbnQgaSwgaWR4LCBudW1f cmVncywgaXNfd2F0Y2hwb2ludDsKLSAgIHVuc2lnbmVkIGludCBjdHJsLCAqZHJfY3RybF9wLCAq ZHJfcmVmX2NvdW50OwotLSAgQ09SRV9BRERSICpkcl9hZGRyX3A7Ci0rICBDT1JFX0FERFIgKmRy X2FkZHJfcCwgKmRyX2FkZHJfb3JpZ19wOwotIAotICAgLyogU2V0IHVwIHN0YXRlIHBvaW50ZXJz LiAgKi8KLSAgIGlzX3dhdGNocG9pbnQgPSAodHlwZSAhPSBod19leGVjdXRlKTsKLUBAIC0zNDMs NiArNDQwLDcgQEAgYWFyY2g2NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50IChzdHJ1YwotICAg ICB7Ci0gICAgICAgbnVtX3JlZ3MgPSBhYXJjaDY0X251bV93cF9yZWdzOwotICAgICAgIGRyX2Fk ZHJfcCA9IHN0YXRlLT5kcl9hZGRyX3dwOwotKyAgICAgIGRyX2FkZHJfb3JpZ19wID0gc3RhdGUt PmRyX2FkZHJfb3JpZ193cDsKLSAgICAgICBkcl9jdHJsX3AgPSBzdGF0ZS0+ZHJfY3RybF93cDsK LSAgICAgICBkcl9yZWZfY291bnQgPSBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwOwotICAgICB9Ci1A QCAtMzUwLDExICs0NDgsMTIgQEAgYWFyY2g2NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50IChz dHJ1YwotICAgICB7Ci0gICAgICAgbnVtX3JlZ3MgPSBhYXJjaDY0X251bV9icF9yZWdzOwotICAg ICAgIGRyX2FkZHJfcCA9IHN0YXRlLT5kcl9hZGRyX2JwOwotKyAgICAgIGRyX2FkZHJfb3JpZ19w ID0gbnVsbHB0cjsKLSAgICAgICBkcl9jdHJsX3AgPSBzdGF0ZS0+ZHJfY3RybF9icDsKLSAgICAg ICBkcl9yZWZfY291bnQgPSBzdGF0ZS0+ZHJfcmVmX2NvdW50X2JwOwotICAgICB9Ci0gCi0tICBj dHJsID0gYWFyY2g2NF9wb2ludF9lbmNvZGVfY3RybF9yZWcgKHR5cGUsIGxlbik7Ci0rICBjdHJs ID0gYWFyY2g2NF9wb2ludF9lbmNvZGVfY3RybF9yZWcgKHR5cGUsIG9mZnNldCwgbGVuKTsKLSAK LSAgIC8qIEZpbmQgYW4gZXhpc3Rpbmcgb3IgZnJlZSByZWdpc3RlciBpbiBvdXIgY2FjaGUuICAq LwotICAgaWR4ID0gLTE7Ci1AQCAtMzY2LDcgKzQ2NSw5IEBAIGFhcmNoNjRfZHJfc3RhdGVfaW5z ZXJ0X29uZV9wb2ludCAoc3RydWMKLSAJICBpZHggPSBpOwotIAkgIC8qIG5vIGJyZWFrOyBjb250 aW51ZSBodW50aW5nIGZvciBhbiBleGlzaW5nIG9uZS4gICovCi0gCX0KLS0gICAgICBlbHNlIGlm IChkcl9hZGRyX3BbaV0gPT0gYWRkciAmJiBkcl9jdHJsX3BbaV0gPT0gY3RybCkKLSsgICAgICBl bHNlIGlmIChkcl9hZGRyX3BbaV0gPT0gYWRkcgotKwkgICAgICAgJiYgKGRyX2FkZHJfb3JpZ19w ID09IG51bGxwdHIgfHwgZHJfYWRkcl9vcmlnX3BbaV0gPT0gYWRkcl9vcmlnKQotKwkgICAgICAg JiYgZHJfY3RybF9wW2ldID09IGN0cmwpCi0gCXsKLSAJICBnZGJfYXNzZXJ0IChkcl9yZWZfY291 bnRbaV0gIT0gMCk7Ci0gCSAgaWR4ID0gaTsKLUBAIC0zODMsNiArNDg0LDggQEAgYWFyY2g2NF9k cl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50IChzdHJ1YwotICAgICB7Ci0gICAgICAgLyogbmV3IGVu dHJ5ICovCi0gICAgICAgZHJfYWRkcl9wW2lkeF0gPSBhZGRyOwotKyAgICAgIGlmIChkcl9hZGRy X29yaWdfcCAhPSBudWxscHRyKQotKwlkcl9hZGRyX29yaWdfcFtpZHhdID0gYWRkcl9vcmlnOwot ICAgICAgIGRyX2N0cmxfcFtpZHhdID0gY3RybDsKLSAgICAgICBkcl9yZWZfY291bnRbaWR4XSA9 IDE7Ci0gICAgICAgLyogTm90aWZ5IHRoZSBjaGFuZ2UuICAqLwotQEAgLTQwMywxMSArNTA2LDEy IEBAIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWMKLSBzdGF0aWMgaW50 Ci0gYWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdHJ1Y3QgYWFyY2g2NF9kZWJ1 Z19yZWdfc3RhdGUgKnN0YXRlLAotIAkJCQkgICBlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUs Ci0tCQkJCSAgIENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQotKwkJCQkgICBDT1JFX0FERFIgYWRk ciwgaW50IG9mZnNldCwgaW50IGxlbiwKLSsJCQkJICAgQ09SRV9BRERSIGFkZHJfb3JpZykKLSB7 Ci0gICBpbnQgaSwgbnVtX3JlZ3MsIGlzX3dhdGNocG9pbnQ7Ci0gICB1bnNpZ25lZCBpbnQgY3Ry bCwgKmRyX2N0cmxfcCwgKmRyX3JlZl9jb3VudDsKLS0gIENPUkVfQUREUiAqZHJfYWRkcl9wOwot KyAgQ09SRV9BRERSICpkcl9hZGRyX3AsICpkcl9hZGRyX29yaWdfcDsKLSAKLSAgIC8qIFNldCB1 cCBzdGF0ZSBwb2ludGVycy4gICovCi0gICBpc193YXRjaHBvaW50ID0gKHR5cGUgIT0gaHdfZXhl Y3V0ZSk7Ci1AQCAtNDE1LDYgKzUxOSw3IEBAIGFhcmNoNjRfZHJfc3RhdGVfcmVtb3ZlX29uZV9w b2ludCAoc3RydWMKLSAgICAgewotICAgICAgIG51bV9yZWdzID0gYWFyY2g2NF9udW1fd3BfcmVn czsKLSAgICAgICBkcl9hZGRyX3AgPSBzdGF0ZS0+ZHJfYWRkcl93cDsKLSsgICAgICBkcl9hZGRy X29yaWdfcCA9IHN0YXRlLT5kcl9hZGRyX29yaWdfd3A7Ci0gICAgICAgZHJfY3RybF9wID0gc3Rh dGUtPmRyX2N0cmxfd3A7Ci0gICAgICAgZHJfcmVmX2NvdW50ID0gc3RhdGUtPmRyX3JlZl9jb3Vu dF93cDsKLSAgICAgfQotQEAgLTQyMiwxNSArNTI3LDE4IEBAIGFhcmNoNjRfZHJfc3RhdGVfcmVt b3ZlX29uZV9wb2ludCAoc3RydWMKLSAgICAgewotICAgICAgIG51bV9yZWdzID0gYWFyY2g2NF9u dW1fYnBfcmVnczsKLSAgICAgICBkcl9hZGRyX3AgPSBzdGF0ZS0+ZHJfYWRkcl9icDsKLSsgICAg ICBkcl9hZGRyX29yaWdfcCA9IG51bGxwdHI7Ci0gICAgICAgZHJfY3RybF9wID0gc3RhdGUtPmRy X2N0cmxfYnA7Ci0gICAgICAgZHJfcmVmX2NvdW50ID0gc3RhdGUtPmRyX3JlZl9jb3VudF9icDsK LSAgICAgfQotIAotLSAgY3RybCA9IGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0cmxfcmVnICh0eXBl LCBsZW4pOwotKyAgY3RybCA9IGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0cmxfcmVnICh0eXBlLCBv ZmZzZXQsIGxlbik7Ci0gCi0gICAvKiBGaW5kIHRoZSBlbnRyeSB0aGF0IG1hdGNoZXMgdGhlIEFE RFIgYW5kIENUUkwuICAqLwotICAgZm9yIChpID0gMDsgaSA8IG51bV9yZWdzOyArK2kpCi0tICAg IGlmIChkcl9hZGRyX3BbaV0gPT0gYWRkciAmJiBkcl9jdHJsX3BbaV0gPT0gY3RybCkKLSsgICAg aWYgKGRyX2FkZHJfcFtpXSA9PSBhZGRyCi0rCSYmIChkcl9hZGRyX29yaWdfcCA9PSBudWxscHRy IHx8IGRyX2FkZHJfb3JpZ19wW2ldID09IGFkZHJfb3JpZykKLSsJJiYgZHJfY3RybF9wW2ldID09 IGN0cmwpCi0gICAgICAgewotIAlnZGJfYXNzZXJ0IChkcl9yZWZfY291bnRbaV0gIT0gMCk7Ci0g CWJyZWFrOwotQEAgLTQ0Niw2ICs1NTQsOCBAQCBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVf cG9pbnQgKHN0cnVjCi0gICAgICAgLyogQ2xlYXIgdGhlIGVuYWJsZSBiaXQuICAqLwotICAgICAg IGN0cmwgJj0gfjE7Ci0gICAgICAgZHJfYWRkcl9wW2ldID0gMDsKLSsgICAgICBpZiAoZHJfYWRk cl9vcmlnX3AgIT0gbnVsbHB0cikKLSsJZHJfYWRkcl9vcmlnX3BbaV0gPSAwOwotICAgICAgIGRy X2N0cmxfcFtpXSA9IGN0cmw7Ci0gICAgICAgLyogTm90aWZ5IHRoZSBjaGFuZ2UuICAqLwotICAg ICAgIGFhcmNoNjRfbm90aWZ5X2RlYnVnX3JlZ19jaGFuZ2UgKHN0YXRlLCBpc193YXRjaHBvaW50 LCBpKTsKLUBAIC00NzIsMTAgKzU4MiwxMCBAQCBhYXJjaDY0X2hhbmRsZV9icmVha3BvaW50IChl bnVtIHRhcmdldF9oCi0gICAgICAgaWYgKCFhYXJjaDY0X3BvaW50X2lzX2FsaWduZWQgKDAgLyog aXNfd2F0Y2hwb2ludCAqLyAsIGFkZHIsIGxlbikpCi0gCXJldHVybiAtMTsKLSAKLS0gICAgICBy ZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWRk ciwgbGVuKTsKLSsgICAgICByZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50 IChzdGF0ZSwgdHlwZSwgYWRkciwgMCwgbGVuLCAtMSk7Ci0gICAgIH0KLSAgIGVsc2UKLS0gICAg cmV0dXJuIGFhcmNoNjRfZHJfc3RhdGVfcmVtb3ZlX29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFk ZHIsIGxlbik7Ci0rICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9pbnQg KHN0YXRlLCB0eXBlLCBhZGRyLCAwLCBsZW4sIC0xKTsKLSB9Ci0gCi0gLyogVGhpcyBpcyBlc3Nl bnRpYWxseSB0aGUgc2FtZSBhcyBhYXJjaDY0X2hhbmRsZV9icmVha3BvaW50LCBhcGFydAotQEAg LTQ4Nyw5ICs1OTcsOSBAQCBhYXJjaDY0X2hhbmRsZV9hbGlnbmVkX3dhdGNocG9pbnQgKGVudW0K LSAJCQkJICAgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSkKLSB7Ci0gICBp ZiAoaXNfaW5zZXJ0KQotLSAgICByZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3Bv aW50IChzdGF0ZSwgdHlwZSwgYWRkciwgbGVuKTsKLSsgICAgcmV0dXJuIGFhcmNoNjRfZHJfc3Rh dGVfaW5zZXJ0X29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFkZHIsIDAsIGxlbiwgYWRkcik7Ci0g ICBlbHNlCi0tICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9pbnQgKHN0 YXRlLCB0eXBlLCBhZGRyLCBsZW4pOwotKyAgICByZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9yZW1v dmVfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWRkciwgMCwgbGVuLCBhZGRyKTsKLSB9Ci0gCi0g LyogSW5zZXJ0L3JlbW92ZSB1bmFsaWduZWQgd2F0Y2hwb2ludCBieSBjYWxsaW5nCi1AQCAtNTA0 LDI5ICs2MTQsNDIgQEAgYWFyY2g2NF9oYW5kbGVfdW5hbGlnbmVkX3dhdGNocG9pbnQgKGVudQot IAkJCQkgICAgIENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgaXNfaW5zZXJ0LAotIAkJCQkg ICAgIHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUpCi0gewotKyAgQ09SRV9B RERSIGFkZHJfb3JpZyA9IGFkZHI7Ci0rCi0gICB3aGlsZSAobGVuID4gMCkKLSAgICAgewotICAg ICAgIENPUkVfQUREUiBhbGlnbmVkX2FkZHI7Ci0tICAgICAgaW50IGFsaWduZWRfbGVuLCByZXQ7 Ci0rICAgICAgaW50IGFsaWduZWRfb2Zmc2V0LCBhbGlnbmVkX2xlbiwgcmV0OwotKyAgICAgIENP UkVfQUREUiBhZGRyX29yaWdfbmV4dCA9IGFkZHJfb3JpZzsKLSAKLS0gICAgICBhYXJjaDY0X2Fs aWduX3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgJmFsaWduZWRfYWRkciwgJmFsaWduZWRfbGVuLAot LQkJCQkmYWRkciwgJmxlbik7Ci0rICAgICAgYWFyY2g2NF9hbGlnbl93YXRjaHBvaW50IChhZGRy LCBsZW4sICZhbGlnbmVkX2FkZHIsICZhbGlnbmVkX29mZnNldCwKLSsJCQkJJmFsaWduZWRfbGVu LCAmYWRkciwgJmxlbiwgJmFkZHJfb3JpZ19uZXh0KTsKLSAKLSAgICAgICBpZiAoaXNfaW5zZXJ0 KQotIAlyZXQgPSBhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9pbnQgKHN0YXRlLCB0eXBl LCBhbGlnbmVkX2FkZHIsCi0tCQkJCQkJIGFsaWduZWRfbGVuKTsKLSsJCQkJCQkgYWxpZ25lZF9v ZmZzZXQsCi0rCQkJCQkJIGFsaWduZWRfbGVuLCBhZGRyX29yaWcpOwotICAgICAgIGVsc2UKLSAJ cmV0ID0gYWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWxp Z25lZF9hZGRyLAotLQkJCQkJCSBhbGlnbmVkX2xlbik7Ci0rCQkJCQkJIGFsaWduZWRfb2Zmc2V0 LAotKwkJCQkJCSBhbGlnbmVkX2xlbiwgYWRkcl9vcmlnKTsKLSAKLSAgICAgICBpZiAoc2hvd19k ZWJ1Z19yZWdzKQotIAlkZWJ1Z19wcmludGYgKCJoYW5kbGVfdW5hbGlnbmVkX3dhdGNocG9pbnQ6 IGlzX2luc2VydDogJWRcbiIKLSAJCSAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIKLSAJCSAgICAgICJhbGlnbmVkX2FkZHI6ICVzLCBhbGlnbmVkX2xlbjogJWRcbiIKLSAJCSAg ICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLS0JCSAgICAgICJuZXh0X2Fk ZHI6ICVzLCAgICBuZXh0X2xlbjogJWRcbiIsCi0rCQkgICAgICAiYWRkcl9vcmlnOiAlc1xuIgot KwkJICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotKwkJICAgICAgIm5l eHRfYWRkcjogJXMsICAgIG5leHRfbGVuOiAlZFxuIgotKwkJICAgICAgIiAgICAgICAgICAgICAg ICAgICAgICAgICAgICIKLSsJCSAgICAgICJhZGRyX29yaWdfbmV4dDogJXNcbiIsCi0gCQkgICAg ICBpc19pbnNlcnQsIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFsaWduZWRfYWRkciksCi0tCQkg ICAgICBhbGlnbmVkX2xlbiwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoYWRkciksIGxlbik7Ci0r CQkgICAgICBhbGlnbmVkX2xlbiwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoYWRkcl9vcmlnKSwK LSsJCSAgICAgIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHIpLCBsZW4sCi0rCQkgICAgICBj b3JlX2FkZHJfdG9fc3RyaW5nX256IChhZGRyX29yaWdfbmV4dCkpOwotKwotKyAgICAgIGFkZHJf b3JpZyA9IGFkZHJfb3JpZ19uZXh0OwotIAotICAgICAgIGlmIChyZXQgIT0gMCkKLSAJcmV0dXJu IHJldDsKLUBAIC01NTIsNyArNjc1LDcgQEAgYWFyY2g2NF9oYW5kbGVfd2F0Y2hwb2ludCAoZW51 bSB0YXJnZXRfaAotICAgIHJlZ2lzdGVycyB3aXRoIGRhdGEgZnJvbSAqU1RBVEUuICAqLwotIAot IHZvaWQKLS1hYXJjaDY0X2xpbnV4X3NldF9kZWJ1Z19yZWdzIChjb25zdCBzdHJ1Y3QgYWFyY2g2 NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAotK2FhcmNoNjRfbGludXhfc2V0X2RlYnVnX3JlZ3Mg KHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCi0gCQkJICAgICAgaW50IHRp ZCwgaW50IHdhdGNocG9pbnQpCi0gewotICAgaW50IGksIGNvdW50OwotQEAgLTU4MCw3ICs3MDMs MTggQEAgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoY29uc3Qgc3RydQotICAgaWYgKHB0 cmFjZSAoUFRSQUNFX1NFVFJFR1NFVCwgdGlkLAotIAkgICAgICB3YXRjaHBvaW50ID8gTlRfQVJN X0hXX1dBVENIIDogTlRfQVJNX0hXX0JSRUFLLAotIAkgICAgICAodm9pZCAqKSAmaW92KSkKLS0g ICAgZXJyb3IgKF8oIlVuZXhwZWN0ZWQgZXJyb3Igc2V0dGluZyBoYXJkd2FyZSBkZWJ1ZyByZWdp c3RlcnMiKSk7Ci0rICAgIHsKLSsgICAgICAvKiBIYW5kbGUgTGludXgga2VybmVscyB3aXRoIHRo ZSBQUiBleHRlcm5hbC8yMDIwNyBidWcuICAqLwotKyAgICAgIGlmICh3YXRjaHBvaW50ICYmIGVy cm5vID09IEVJTlZBTAotKwkgICYmIGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5n ZSkKLSsJewotKwkgIGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5nZSA9IGZhbHNl OwotKwkgIGFhcmNoNjRfZG93bmdyYWRlX3JlZ3MgKHN0YXRlKTsKLSsJICBhYXJjaDY0X2xpbnV4 X3NldF9kZWJ1Z19yZWdzIChzdGF0ZSwgdGlkLCB3YXRjaHBvaW50KTsKLSsJICByZXR1cm47Ci0r CX0KLSsgICAgICBlcnJvciAoXygiVW5leHBlY3RlZCBlcnJvciBzZXR0aW5nIGhhcmR3YXJlIGRl YnVnIHJlZ2lzdGVycyIpKTsKLSsgICAgfQotIH0KLSAKLSAvKiBQcmludCB0aGUgdmFsdWVzIG9m IHRoZSBjYWNoZWQgYnJlYWtwb2ludC93YXRjaHBvaW50IHJlZ2lzdGVycy4gICovCi1AQCAtNjEx LDggKzc0NSw5IEBAIGFhcmNoNjRfc2hvd19kZWJ1Z19yZWdfc3RhdGUgKHN0cnVjdCBhYXIKLSAK LSAgIGRlYnVnX3ByaW50ZiAoIlx0V0FUQ0hQT0lOVHM6XG4iKTsKLSAgIGZvciAoaSA9IDA7IGkg PCBhYXJjaDY0X251bV93cF9yZWdzOyBpKyspCi0tICAgIGRlYnVnX3ByaW50ZiAoIlx0V1AlZDog YWRkcj0lcywgY3RybD0weCUwOHgsIHJlZi5jb3VudD0lZFxuIiwKLSsgICAgZGVidWdfcHJpbnRm ICgiXHRXUCVkOiBhZGRyPSVzIChvcmlnPSVzKSwgY3RybD0weCUwOHgsIHJlZi5jb3VudD0lZFxu IiwKLSAJCSAgaSwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoc3RhdGUtPmRyX2FkZHJfd3BbaV0p LAotKwkJICBjb3JlX2FkZHJfdG9fc3RyaW5nX256IChzdGF0ZS0+ZHJfYWRkcl9vcmlnX3dwW2ld KSwKLSAJCSAgc3RhdGUtPmRyX2N0cmxfd3BbaV0sIHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0p OwotIH0KLSAKLS0tLSAuL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5oCTIwMTgtMDEt MDUgMDU6MDc6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvbmF0L2FhcmNoNjQtbGludXgt aHctcG9pbnQuaAkyMDE4LTA1LTA1IDE3OjU0OjE0LjExMTE0ODE3OSArMDIwMAotQEAgLTc3LDEz ICs3NywxMyBAQAotIAotICAgIDMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMyAgICAg ICAgICA1ICAgICAgMyAgICAgIDEgICAgIDAKLSAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0rCi0tICAgfCAgICAgICAgIFJF U0VSVkVEIChTQlopICAgICAgICAgfCAgTEVOR1RIICB8IFRZUEUgfCBQUklWIHwgRU4gfAotKyAg IHwgICAgICAgICBSRVNFUlZFRCAoU0JaKSAgICAgICAgIHwgICBNQVNLICAgfCBUWVBFIHwgUFJJ ViB8IEVOIHwKLSAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0rLS0tLS0tKy0tLS0rCi0gCi0gICAgVGhlIFRZUEUgZmllbGQgaXMgaWdub3JlZCBm b3IgYnJlYWtwb2ludHMuICAqLwotIAotICNkZWZpbmUgRFJfQ09OVFJPTF9FTkFCTEVEKGN0cmwp CSgoKGN0cmwpICYgMHgxKSA9PSAxKQotLSNkZWZpbmUgRFJfQ09OVFJPTF9MRU5HVEgoY3RybCkJ CSgoKGN0cmwpID4+IDUpICYgMHhmZikKLSsjZGVmaW5lIERSX0NPTlRST0xfTUFTSyhjdHJsKQkJ KCgoY3RybCkgPj4gNSkgJiAweGZmKQotIAotIC8qIEVhY2ggYml0IG9mIGEgdmFyaWFibGUgb2Yg dGhpcyB0eXBlIGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciBhCi0gICAgaGFyZHdhcmUgYnJl YWtwb2ludCBvciB3YXRjaHBvaW50IHNldHRpbmcgaGFzIGJlZW4gY2hhbmdlZCBzaW5jZQotQEAg LTE0Nyw3ICsxNDcsMTAgQEAgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlCi0gICB1bnNp Z25lZCBpbnQgZHJfcmVmX2NvdW50X2JwW0FBUkNINjRfSEJQX01BWF9OVU1dOwotIAotICAgLyog aGFyZHdhcmUgd2F0Y2hwb2ludCAqLwotKyAgLyogQWRkcmVzcyBhbGlnbmVkIGRvd24gdG8gQUFS Q0g2NF9IV1BfQUxJR05NRU5ULiAgKi8KLSAgIENPUkVfQUREUiBkcl9hZGRyX3dwW0FBUkNINjRf SFdQX01BWF9OVU1dOwotKyAgLyogQWRkcmVzcyBhcyBlbnRlcmVkIGJ5IHVzZXIgd2l0aG91dCBh bnkgZm9yY2VkIGFsaWdubWVudC4gICovCi0rICBDT1JFX0FERFIgZHJfYWRkcl9vcmlnX3dwW0FB UkNINjRfSFdQX01BWF9OVU1dOwotICAgdW5zaWduZWQgaW50IGRyX2N0cmxfd3BbQUFSQ0g2NF9I V1BfTUFYX05VTV07Ci0gICB1bnNpZ25lZCBpbnQgZHJfcmVmX2NvdW50X3dwW0FBUkNINjRfSFdQ X01BWF9OVU1dOwotIH07Ci1AQCAtMTY2LDYgKzE2OSw3IEBAIHN0cnVjdCBhcmNoX2x3cF9pbmZv Ci0gZXh0ZXJuIGludCBhYXJjaDY0X251bV9icF9yZWdzOwotIGV4dGVybiBpbnQgYWFyY2g2NF9u dW1fd3BfcmVnczsKLSAKLSt1bnNpZ25lZCBpbnQgYWFyY2g2NF93YXRjaHBvaW50X29mZnNldCAo dW5zaWduZWQgaW50IGN0cmwpOwotIHVuc2lnbmVkIGludCBhYXJjaDY0X3dhdGNocG9pbnRfbGVu Z3RoICh1bnNpZ25lZCBpbnQgY3RybCk7Ci0gCi0gaW50IGFhcmNoNjRfaGFuZGxlX2JyZWFrcG9p bnQgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwgQ09SRV9BRERSIGFkZHIsCi1AQCAtMTc1 LDcgKzE3OSw3IEBAIGludCBhYXJjaDY0X2hhbmRsZV93YXRjaHBvaW50IChlbnVtIHRhcmcKLSAJ CQkgICAgICAgaW50IGxlbiwgaW50IGlzX2luc2VydCwKLSAJCQkgICAgICAgc3RydWN0IGFhcmNo NjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSk7Ci0gCi0tdm9pZCBhYXJjaDY0X2xpbnV4X3NldF9k ZWJ1Z19yZWdzIChjb25zdCBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAot K3ZvaWQgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoc3RydWN0IGFhcmNoNjRfZGVidWdf cmVnX3N0YXRlICpzdGF0ZSwKLSAJCQkJICAgaW50IHRpZCwgaW50IHdhdGNocG9pbnQpOwotIAot IHZvaWQgYWFyY2g2NF9zaG93X2RlYnVnX3JlZ19zdGF0ZSAoc3RydWN0IGFhcmNoNjRfZGVidWdf cmVnX3N0YXRlICpzdGF0ZSwKLS0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2lu dC11bmFsaWduZWQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4v Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5jCTIwMTgtMDUtMDUg MTc6NTQ6MTQuMTExMTQ4MTc5ICswMjAwCi1AQCAtMCwwICsxLDk2IEBACi0rLyogVGhpcyB0ZXN0 Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQg MjAxNy0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0r I2luY2x1ZGUgPGFzc2VydC5oPgotKwotK3N0YXRpYyBpbnQgYWdhaW47Ci0rCi0rc3RhdGljIHZv bGF0aWxlIHN0cnVjdAotK3sKLSsgIHVpbnQ2NF90IGFsaWdubWVudDsKLSsgIHVuaW9uCi0rICAg IHsKLSsgICAgICB1aW50NjRfdCBzaXplOFsxXTsKLSsgICAgICB1aW50MzJfdCBzaXplNFsyXTsK LSsgICAgICB1aW50MTZfdCBzaXplMls0XTsKLSsgICAgICB1aW50OF90IHNpemUxWzhdOwotKyAg ICAgIHVpbnQ2NF90IHNpemU4dHdpY2VbMl07Ci0rICAgIH0KLSsgIHU7Ci0rfSBkYXRhOwotKwot K3N0YXRpYyBpbnQgc2l6ZSA9IDA7Ci0rc3RhdGljIGludCBvZmZzZXQ7Ci0rCi0rc3RhdGljIHZv aWQKLSt3cml0ZV9zaXplOHR3aWNlICh2b2lkKQotK3sKLSsgIHN0YXRpYyBjb25zdCB1aW50NjRf dCBmaXJzdCA9IDE7Ci0rICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc2Vjb25kID0gMjsKLSsKLSsj aWZkZWYgX19hYXJjaDY0X18KLSsgIGFzbSB2b2xhdGlsZSAoInN0cCAlMSwgJTIsIFslMF0iCi0r CQk6IC8qIG91dHB1dCAqLwotKwkJOiAiciIgKGRhdGEudS5zaXplOHR3aWNlKSwgInIiIChmaXJz dCksICJyIiAoc2Vjb25kKSAvKiBpbnB1dCAqLwotKwkJOiAibWVtb3J5IiAvKiBjbG9iYmVyICov KTsKLSsjZWxzZQotKyAgZGF0YS51LnNpemU4dHdpY2VbMF0gPSBmaXJzdDsKLSsgIGRhdGEudS5z aXplOHR3aWNlWzFdID0gc2Vjb25kOwotKyNlbmRpZgotK30KLSsKLStpbnQKLSttYWluICh2b2lk KQotK3sKLSsgIHZvbGF0aWxlIHVpbnQ2NF90IGxvY2FsOwotKwotKyAgYXNzZXJ0IChzaXplb2Yg KGRhdGEpID09IDggKyAyICogOCk7Ci0rCi0rICB3cml0ZV9zaXplOHR3aWNlICgpOwotKwotKyAg d2hpbGUgKHNpemUpCi0rICAgIHsKLSsgICAgICBzd2l0Y2ggKHNpemUpCi0rCXsKLSsvKiBfX3Mz OTB4X18gYWxzbyBkZWZpbmVzIF9fczM5MF9fICovCi0rI2lmZGVmIF9fczM5MF9fCi0rIyBkZWZp bmUgQUNDRVNTKHZhcikgdmFyID0gfnZhcgotKyNlbHNlCi0rIyBkZWZpbmUgQUNDRVNTKHZhcikg bG9jYWwgPSB2YXIKLSsjZW5kaWYKLSsJY2FzZSA4OgotKwkgIEFDQ0VTUyAoZGF0YS51LnNpemU4 W29mZnNldF0pOwotKwkgIGJyZWFrOwotKwljYXNlIDQ6Ci0rCSAgQUNDRVNTIChkYXRhLnUuc2l6 ZTRbb2Zmc2V0XSk7Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgMjoKLSsJICBBQ0NFU1MgKGRhdGEudS5z aXplMltvZmZzZXRdKTsKLSsJICBicmVhazsKLSsJY2FzZSAxOgotKwkgIEFDQ0VTUyAoZGF0YS51 LnNpemUxW29mZnNldF0pOwotKwkgIGJyZWFrOwotKyN1bmRlZiBBQ0NFU1MKLSsJZGVmYXVsdDoK LSsJICBhc3NlcnQgKDApOwotKwl9Ci0rICAgICAgc2l6ZSA9IDA7Ci0rICAgICAgc2l6ZSA9IHNp emU7IC8qIHN0YXJ0X2FnYWluICovCi0rICAgIH0KLSsgIHJldHVybiAwOyAvKiBmaW5hbF9yZXR1 cm4gKi8KLSt9Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGln bmVkLmV4cAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHAJMjAxOC0wNS0wNSAxNzo1 NDoxNC4xMTExNDgxNzkgKzAyMDAKLUBAIC0wLDAgKzEsMTg0IEBACi0rIyBDb3B5cmlnaHQgMjAx Ny0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rIwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0 c3VpdGUuCi0rCi0rIyBUZXN0IGluc2VydGluZyByZWFkIHdhdGNocG9pbnRzIG9uIHVuYWxpZ25l ZCBhZGRyZXNzZXMuCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUKLStpZiB7IFtwcmVwYXJlX2Zvcl90 ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9XSB9IHsKLSsgICAg cmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCAiY291 bGQgbm90IHJ1biB0byBtYWluIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInN0YXJ0X2FnYWluIl0gIkJyZWFrcG9pbnQgJGRlY2lt YWwgYXQgJGhleCIgInN0YXJ0X2FnYWluIgotKwotK3NldCBzaXplcyB7MSAyIDQgOH0KLSthcnJh eSBzZXQgYWxpZ25lZGVuZCB7MSAxICAyIDIgIDMgNCAgNCA0ICA1IDggIDYgOCAgNyA4ICA4IDh9 Ci0rCi0rc2V0IHJ3YXRjaCAicndhdGNoIgotK3NldCByd2F0Y2hfZXhwICJIYXJkd2FyZSByZWFk IHdhdGNocG9pbnQiCi0raWYge1tpc3RhcmdldCAiczM5MCotKi0qIl19IHsKLSsgICAgIyBUYXJn ZXQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHR5cGUgb2YgaGFyZHdhcmUgd2F0Y2hwb2ludC4iCi0r ICAgIHNldCByd2F0Y2ggIndhdGNoIgotKyAgICBzZXQgcndhdGNoX2V4cCAiSGFyZHdhcmUgd2F0 Y2hwb2ludCIKLSt9Ci0rCi0rZm9yZWFjaCB3cHNpemUgJHNpemVzIHsKLSsgICAgZm9yIHtzZXQg d3BvZmZzZXQgMH0geyR3cG9mZnNldCA8IDggLyAkd3BzaXplfSB7aW5jciB3cG9mZnNldH0gewot KwlzZXQgd3BzdGFydCBbZXhwciAkd3BvZmZzZXQgKiAkd3BzaXplXQotKwlzZXQgd3BlbmQgW2V4 cHIgKCR3cG9mZnNldCArIDEpICogJHdwc2l6ZV0KLSsJc2V0IHdwZW5kYWxpZ25lZCAkYWxpZ25l ZGVuZCgkd3BlbmQpCi0rCWZvcmVhY2ggcmRzaXplICRzaXplcyB7Ci0rCSAgICBmb3Ige3NldCBy ZG9mZnNldCAwfSB7JHJkb2Zmc2V0IDwgOCAvICRyZHNpemV9IHtpbmNyIHJkb2Zmc2V0fSB7Ci0r CQlzZXQgcmRzdGFydCBbZXhwciAkcmRvZmZzZXQgKiAkcmRzaXplXQotKwkJc2V0IHJkZW5kIFtl eHByICgkcmRvZmZzZXQgKyAxKSAqICRyZHNpemVdCi0rCQlzZXQgZXhwZWN0X2hpdCBbZXhwciBt YXggKCR3cHN0YXJ0LCAkcmRzdGFydCkgPCBtaW4gKCR3cGVuZCwgJHJkZW5kKV0KLSsJCXNldCB0 ZXN0ICIkcndhdGNoIGRhdGEudS5zaXplJHdwc2l6ZVxbJHdwb2Zmc2V0XF0iCi0rCQlzZXQgd3Bu dW0gIiIKLSsJCWdkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsJCSAgICAtcmUgIiRy d2F0Y2hfZXhwIChcWzAtOVxdKyk6IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJCQlzZXQgd3Bu dW0gJGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rCQkgICAgfQotKwkJICAgIC1yZSAiRXhwcmVzc2lv biBjYW5ub3QgYmUgaW1wbGVtZW50ZWQgd2l0aCByZWFkL2FjY2VzcyB3YXRjaHBvaW50LlxyXG4k Z2RiX3Byb21wdCAkIiB7Ci0rCQkJaWYgeyR3cHNpemUgPT0gOCAmJiBbaXN0YXJnZXQgImFybSot Ki0qIl19IHsKLSsJCQkgICAgdW50ZXN0ZWQgJHRlc3QKLSsJCQkgICAgY29udGludWUKLSsJCQl9 Ci0rCQkJZmFpbCAkdGVzdAotKwkJICAgIH0KLSsJCX0KLSsJCWdkYl90ZXN0X25vX291dHB1dCAi c2V0IHZhcmlhYmxlIHNpemUgPSAkcmRzaXplIiAiIgotKwkJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJz ZXQgdmFyaWFibGUgb2Zmc2V0ID0gJHJkb2Zmc2V0IiAiIgotKwkJc2V0IHRlc3QgImNvbnRpbnVl IgotKwkJc2V0IGdvdF9oaXQgMAotKwkJZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3Qgewot KwkJICAgIC1yZSAiJHJ3YXRjaF9leHAgJHdwbnVtOi4qYWx1ZSA9IC4qXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJCQlzZXQgZ290X2hpdCAxCi0rCQkJc2VuZF9nZGIgImNvbnRpbnVlXG4iCi0rCQkJ ZXhwX2NvbnRpbnVlCi0rCQkgICAgfQotKwkJICAgIC1yZSAiIHN0YXJ0X2FnYWluIC4qXHJcbiRn ZGJfcHJvbXB0ICQiIHsKLSsJCSAgICB9Ci0rCQl9Ci0rCQlnZGJfdGVzdF9ub19vdXRwdXQgImRl bGV0ZSAkd3BudW0iICIiCi0rCQlzZXQgdGVzdCAid3Aoc2l6ZT0kd3BzaXplIG9mZnNldD0kd3Bv ZmZzZXQpIHJkKHNpemU9JHJkc2l6ZSBvZmZzZXQ9JHJkb2Zmc2V0KSBleHBlY3Q9JGV4cGVjdF9o aXQiCi0rCQlpZiB7JGV4cGVjdF9oaXQgPT0gJGdvdF9oaXR9IHsKLSsJCSAgICBwYXNzICR0ZXN0 Ci0rCQl9IGVsc2UgewotKwkJICAgICMgV2UgZG8gbm90IGtub3cgaWYgd2UgcnVuIG9uIGEgZml4 ZWQgTGludXgga2VybmVsCi0rCQkgICAgIyBvciBub3QuICBSZXBvcnQgWEZBSUwgb25seSBpbiB0 aGUgRkFJTCBjYXNlLgotKwkJICAgIGlmIHskZXhwZWN0X2hpdCA9PSAwICYmICRyZHN0YXJ0IDwg JHdwZW5kYWxpZ25lZH0gewotKwkJCXNldHVwX3hmYWlsIGV4dGVybmFsLzIwMjA3ICJhYXJjaDY0 Ki0qLWxpbnV4KiIKLSsJCSAgICB9Ci0rCQkgICAgaWYgeyEkZXhwZWN0X2hpdCAmJiBbZXhwciBt YXggKCR3cHN0YXJ0IC8gOCwgJHJkc3RhcnQgLyA4KSA8IG1pbiAoKCR3cGVuZCArIDcpIC8gOCwg KCRyZGVuZCArIDcpIC8gOCldfSB7Ci0rCQkJc2V0dXBfeGZhaWwgYnJlYWtwb2ludHMvMjMxMzEg InBvd2VycGMqLSotKiIKLSsJCSAgICB9Ci0rCQkgICAgZmFpbCAkdGVzdAotKwkJfQotKwkgICAg fQotKwl9Ci0rICAgIH0KLSt9Ci0rCi0rZm9yZWFjaCB3cGNvdW50IHs0IDd9IHsKLSsgICAgYXJy YXkgc2V0IHdwb2Zmc2V0X3RvX3dwbnVtIHt9Ci0rICAgIGZvciB7c2V0IHdwb2Zmc2V0IDF9IHsk d3BvZmZzZXQgPD0gJHdwY291bnR9IHtpbmNyIHdwb2Zmc2V0fSB7Ci0rCXNldCB0ZXN0ICIkcndh dGNoIGRhdGEudS5zaXplMVxbJHdwb2Zmc2V0XF0iCi0rCXNldCB3cG51bSAiIgotKwlnZGJfdGVz dF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rCSAgICAtcmUgIiRyd2F0Y2hfZXhwIChcWzAtOVxd Kyk6IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJCXNldCB3cG9mZnNldF90b193cG51bSgkd3Bv ZmZzZXQpICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwkgICAgfQotKwkgICAgLXJlICJUaGVyZSBh cmUgbm90IGVub3VnaCBhdmFpbGFibGUgaGFyZHdhcmUgcmVzb3VyY2VzIGZvciB0aGlzIHdhdGNo cG9pbnQuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJCWlmIHskd3BvZmZzZXQgPiAxfSB7Ci0rCQkg ICAgc2V0dXBfeGZhaWwgYnJlYWtwb2ludHMvMjMxMzEgInBvd2VycGMqLSotKiIKLSsJCSAgICBz ZXR1cF94ZmFpbCBicmVha3BvaW50cy8yMzEzMSAiYXJtKi0qLSoiCi0rCQl9Ci0rCQlmYWlsICR0 ZXN0Ci0rCQlzZXQgd3BvZmZzZXRfdG9fd3BudW0oJHdwb2Zmc2V0KSAwCi0rCSAgICB9Ci0rCX0K LSsgICAgfQotKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCB2YXJpYWJsZSBzaXplID0gMSIg IiIKLSsgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgdmFyaWFibGUgb2Zmc2V0ID0gMSIgIiIK LSsgICAgc2V0IHRlc3QgImNvbnRpbnVlIgotKyAgICBzZXQgZ290X2hpdCAwCi0rICAgIGdkYl90 ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsJLXJlICJcclxuQ291bGQgbm90IGluc2VydCBo YXJkd2FyZSB3YXRjaHBvaW50IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJfQotKwktcmUgIiRy d2F0Y2hfZXhwICR3cG9mZnNldF90b193cG51bSgxKTouKmFsdWUgPSAuKlxyXG4kZ2RiX3Byb21w dCAkIiB7Ci0rCSAgICBzZXQgZ290X2hpdCAxCi0rCSAgICBzZW5kX2dkYiAiY29udGludWVcbiIK LSsJICAgIGV4cF9jb250aW51ZQotKwl9Ci0rCS1yZSAiIHN0YXJ0X2FnYWluIC4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKLSsJfQotKyAgICB9Ci0rICAgIGZvciB7c2V0IHdwb2Zmc2V0IDF9IHskd3Bv ZmZzZXQgPD0gJHdwY291bnR9IHtpbmNyIHdwb2Zmc2V0fSB7Ci0rCWlmIHskd3BvZmZzZXRfdG9f d3BudW0oJHdwb2Zmc2V0KX0gewotKwkgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJkZWxldGUgJHdw b2Zmc2V0X3RvX3dwbnVtKCR3cG9mZnNldCkiICIiCi0rCX0KLSsgICAgfQotKyAgICBzZXQgdGVz dCAid3Bjb3VudCgkd3Bjb3VudCkiCi0rICAgIGlmIHshJHdwb2Zmc2V0X3RvX3dwbnVtKFtleHBy ICR3cGNvdW50IC0gMV0pfSB7Ci0rCXVudGVzdGVkICR0ZXN0Ci0rCWNvbnRpbnVlCi0rICAgIH0K LSsgICAgaWYgeyR3cGNvdW50ID4gNH0gewotKwlpZiB7IVtpc3RhcmdldCAiczM5MCotKi0qIl19 IHsKLSsJICAgIHNldHVwX2tmYWlsIHRkZXAvMjIzODkgKi0qLSoKLSsJfQotKyAgICB9Ci0rICAg IGdkYl9hc3NlcnQgJGdvdF9oaXQgJHRlc3QKLSt9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0r ICAgIHJldHVybiAtMQotK30KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi ZmluYWxfcmV0dXJuIl0gIkJyZWFrcG9pbnQgJGRlY2ltYWwgYXQgJGhleCIgImZpbmFsX3JldHVy biIKLStzZXQgdGVzdCB7d2F0Y2ggZGF0YS51LnNpemU4dHdpY2VbMV19Ci0rc2V0IHdwbnVtICIi Ci0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUgIkhhcmR3YXJlIHdh dGNocG9pbnQgKFxbMC05XF0rKTogLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlzZXQgd3BudW0g JGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rICAgIH0KLSsgICAgLXJlICJXYXRjaHBvaW50IChcWzAt OVxdKyk6IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJaWYge1tpc3RhcmdldCAiYXJtKi0qLSoi XX0gewotKwkgICAgdW50ZXN0ZWQgJHRlc3QKLSsJICAgIHNldCB3cG51bSAwCi0rCX0KLSsgICAg fQotK30KLStpZiB7JHdwbnVtfSB7Ci0rICAgIHNldCB0ZXN0ICJjb250aW51ZSIKLSsgICAgc2V0 IGdvdF9oaXQgMAotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rCS1yZSAi XHJcbkNvdWxkIG5vdCBpbnNlcnQgaGFyZHdhcmUgd2F0Y2hwb2ludCAuKlxyXG4kZ2RiX3Byb21w dCAkIiB7Ci0rCX0KLSsJLXJlICJIYXJkd2FyZSB3YXRjaHBvaW50ICR3cG51bTouKk5ldyB2YWx1 ZSA9IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHNldCBnb3RfaGl0IDEKLSsJICAgIHNl bmRfZ2RiICJjb250aW51ZVxuIgotKwkgICAgZXhwX2NvbnRpbnVlCi0rCX0KLSsJLXJlICIgZmlu YWxfcmV0dXJuIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJfQotKyAgICB9Ci0rICAgIGdkYl9h c3NlcnQgJGdvdF9oaXQgInNpemU4dHdpY2Ugd3JpdGUiCi0rfQotLS0tIC4vZ2RiL3V0aWxzLmMJ MjAxOC0wMS0wNSAwNTowNzoyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi91dGlscy5jCTIw MTgtMDUtMDUgMTc6NTQ6MTQuMTExMTQ4MTc5ICswMjAwCi1AQCAtMjk5MywyMiArMjk5Myw2IEBA IGdkYl9hYnNwYXRoIChjb25zdCBjaGFyICpwYXRoKQotIAkgICAgIHBhdGgsIChjaGFyICopIE5V TEwpKTsKLSB9Ci0gCi0tVUxPTkdFU1QKLS1hbGlnbl91cCAoVUxPTkdFU1QgdiwgaW50IG4pCi0t ewotLSAgLyogQ2hlY2sgdGhhdCBOIGlzIHJlYWxseSBhIHBvd2VyIG9mIHR3by4gICovCi0tICBn ZGJfYXNzZXJ0IChuICYmIChuICYgKG4tMSkpID09IDApOwotLSAgcmV0dXJuICh2ICsgbiAtIDEp ICYgLW47Ci0tfQotLQotLVVMT05HRVNUCi0tYWxpZ25fZG93biAoVUxPTkdFU1QgdiwgaW50IG4p Ci0tewotLSAgLyogQ2hlY2sgdGhhdCBOIGlzIHJlYWxseSBhIHBvd2VyIG9mIHR3by4gICovCi0t ICBnZGJfYXNzZXJ0IChuICYmIChuICYgKG4tMSkpID09IDApOwotLSAgcmV0dXJuICh2ICYgLW4p OwotLX0KLS0KLSAvKiBBbGxvY2F0aW9uIGZ1bmN0aW9uIGZvciB0aGUgbGliaWJlcnR5IGhhc2gg dGFibGUgd2hpY2ggdXNlcyBhbgotICAgIG9ic3RhY2suICBUaGUgb2JzdGFjayBpcyBwYXNzZWQg YXMgREFUQS4gICovCi0gCi0tLS0gLi9nZGIvdXRpbHMuaAkyMDE4LTAxLTA1IDA1OjA3OjIzLjAw MDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3V0aWxzLmgJMjAxOC0wNS0wNSAxNzo1NDoxNC4xMTIx NDgxODggKzAyMDAKLUBAIC00OTgsMzggKzQ5OCw2IEBAIGV4dGVybiBwaWRfdCB3YWl0X3RvX2Rp ZV93aXRoX3RpbWVvdXQgKHAKLSAKLSBleHRlcm4gaW50IG15cmVhZCAoaW50LCBjaGFyICosIGlu dCk7Ci0gCi0tLyogRW5zdXJlIHRoYXQgViBpcyBhbGlnbmVkIHRvIGFuIE4gYnl0ZSBib3VuZGFy eSAoQidzIGFzc3VtZWQgdG8gYmUgYQotLSAgIHBvd2VyIG9mIDIpLiAgUm91bmQgdXAvZG93biB3 aGVuIG5lY2Vzc2FyeS4gIEV4YW1wbGVzIG9mIGNvcnJlY3QKLS0gICB1c2UgaW5jbHVkZToKLS0K LS0gICBhZGRyID0gYWxpZ25fdXAgKGFkZHIsIDgpOyAtLSBWQUxVRSBuZWVkcyA4IGJ5dGUgYWxp Z25tZW50Ci0tICAgd3JpdGVfbWVtb3J5IChhZGRyLCB2YWx1ZSwgbGVuKTsKLS0gICBhZGRyICs9 IGxlbjsKLS0KLS0gICBhbmQ6Ci0tCi0tICAgc3AgPSBhbGlnbl9kb3duIChzcCAtIGxlbiwgMTYp OyAtLSBLZWVwIFNQIDE2IGJ5dGUgYWxpZ25lZAotLSAgIHdyaXRlX21lbW9yeSAoc3AsIHZhbHVl LCBsZW4pOwotLQotLSAgIE5vdGUgdGhhdCB1c2VzIHN1Y2ggYXM6Ci0tCi0tICAgd3JpdGVfbWVt b3J5IChhZGRyLCB2YWx1ZSwgbGVuKTsKLS0gICBhZGRyICs9IGFsaWduX3VwIChsZW4sIDgpOwot LQotLSAgIGFuZDoKLS0KLS0gICBzcCAtPSBhbGlnbl91cCAobGVuLCA4KTsKLS0gICB3cml0ZV9t ZW1vcnkgKHNwLCB2YWx1ZSwgbGVuKTsKLS0KLS0gICBhcmUgdHlwaWNhbGx5IG5vdCBjb3JyZWN0 IGFzIHRoZXkgZG9uJ3QgZW5zdXJlIHRoYXQgdGhlIGFkZHJlc3MgKFNQCi0tICAgb3IgQUREUikg aXMgY29ycmVjdGx5IGFsaWduZWQgKHJlbHlpbmcgb24gcHJldmlvdXMgYWxpZ25tZW50IHRvCi0t ICAga2VlcCB0aGluZ3MgcmlnaHQpLiAgVGhpcyBpcyBhbHNvIHdoeSB0aGUgbWV0aG9kcyBhcmUg Y2FsbGVkCi0tICAgImFsaWduXy4uLiIgaW5zdGVhZCBvZiAicm91bmRfLi4uIiBhcyB0aGUgbGF0 dGVyIHJlYWRzIGJldHRlciB3aXRoCi0tICAgdGhpcyBpbmNvcnJlY3QgY29kaW5nIHN0eWxlLiAg Ki8KLS0KLS1leHRlcm4gVUxPTkdFU1QgYWxpZ25fdXAgKFVMT05HRVNUIHYsIGludCBuKTsKLS1l eHRlcm4gVUxPTkdFU1QgYWxpZ25fZG93biAoVUxPTkdFU1QgdiwgaW50IG4pOwotLQotIC8qIFJl c291cmNlIGxpbWl0cyB1c2VkIGJ5IGdldHJsaW1pdCBhbmQgc2V0cmxpbWl0LiAgKi8KLSAKLSBl bnVtIHJlc291cmNlX2xpbWl0X2tpbmQKCmRpZmYgLS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRw b3MtMjJvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRjaAppbmRl eCAwMjE0YjgzLi4xYmQ2ZGNhIDEwMDY0NAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjJv ZjI1LnBhdGNoCisrKyBiL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMm9mMjUucGF0Y2gKQEAgLTEx NywxMSArMTE3LDExIEBAIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1l PWJpdHBvcy13cC5wYXRjaAogIGdkYi90YXJnZXQuaCAgICAgICAgICAgICAgICAgICAgIHwgIDQg KystLQogIDEwIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygt KQogCi1JbmRleDogZ2RiLTguMS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi04LjEub3JpZy9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwkyMDE4LTA1LTA1IDE3OjU4 OjMxLjA2MTQ5Njc0MSArMDIwMAotKysrIGdkYi04LjEvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMJ MjAxOC0wNS0wNSAxNzo1ODozMi40NDk1MDkzMTMgKzAyMDAKLUBAIC03ODksNyArNzg5LDcgQEAK K2RpZmYgLS1naXQgYS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYyBiL2dkYi9hYXJjaDY0LWxpbnV4 LW5hdC5jCitpbmRleCAwOGU2ZjRkNGZkLi5mMDhiZjAzOWU0IDEwMDY0NAorLS0tIGEvZ2RiL2Fh cmNoNjQtbGludXgtbmF0LmMKKysrKyBiL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jCitAQCAtNzY3 LDcgKzc2Nyw3IEBAIGFhcmNoNjRfbGludXhfc3RvcHBlZF9ieV93YXRjaHBvaW50IChzdHJ1Y3Qg dGFyZ2V0X29wcyAqb3BzKQogIHN0YXRpYyBpbnQKICBhYXJjaDY0X2xpbnV4X3dhdGNocG9pbnRf YWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsCiAgCQkJCQkgICAg Q09SRV9BRERSIGFkZHIsCkBAIC0xMzAsMTEgKzEzMCwxMSBAQCBJbmRleDogZ2RiLTguMS9nZGIv YWFyY2g2NC1saW51eC1uYXQuYwogIHsKICAgIHJldHVybiBzdGFydCA8PSBhZGRyICYmIHN0YXJ0 ICsgbGVuZ3RoIC0gMSA+PSBhZGRyOwogIH0KLUluZGV4OiBnZGItOC4xL2dkYi9hcm0tbGludXgt bmF0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItOC4xLm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwky MDE4LTA1LTA1IDE3OjU4OjMxLjA2MjQ5Njc1MCArMDIwMAotKysrIGdkYi04LjEvZ2RiL2FybS1s aW51eC1uYXQuYwkyMDE4LTA1LTA1IDE3OjU4OjMyLjQ0OTUwOTMxMyArMDIwMAotQEAgLTExNzcs NyArMTE3Nyw3IEBACitkaWZmIC0tZ2l0IGEvZ2RiL2FybS1saW51eC1uYXQuYyBiL2dkYi9hcm0t bGludXgtbmF0LmMKK2luZGV4IDNiN2FhNDBkYjguLjQ4ZGZlMjJjZTEgMTAwNjQ0CistLS0gYS9n ZGIvYXJtLWxpbnV4LW5hdC5jCisrKysgYi9nZGIvYXJtLWxpbnV4LW5hdC5jCitAQCAtMTE3Nyw3 ICsxMTc3LDcgQEAgYXJtX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdl dF9vcHMgKm9wcykKICBzdGF0aWMgaW50CiAgYXJtX2xpbnV4X3dhdGNocG9pbnRfYWRkcl93aXRo aW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsCiAgCQkJCQlDT1JFX0FERFIgYWRk ciwKQEAgLTE0MywxMSArMTQzLDExIEBAIEluZGV4OiBnZGItOC4xL2dkYi9hcm0tbGludXgtbmF0 LmMKICB7CiAgICByZXR1cm4gc3RhcnQgPD0gYWRkciAmJiBzdGFydCArIGxlbmd0aCAtIDEgPj0g YWRkcjsKICB9Ci1JbmRleDogZ2RiLTguMS9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi04LjEub3JpZy9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHct cG9pbnQuYwkyMDE4LTA1LTA1IDE3OjU4OjMxLjA2MjQ5Njc1MCArMDIwMAotKysrIGdkYi04LjEv Z2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMJMjAxOC0wNS0wNSAxNzo1OToxNi42MTY5 MDkzODIgKzAyMDAKLUBAIC0xMzcsNyArMTM3LDcgQEAKK2RpZmYgLS1naXQgYS9nZGIvbmF0L2Fh cmNoNjQtbGludXgtaHctcG9pbnQuYyBiL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5j CitpbmRleCBjZTI2ZjI4ZmFkLi5lOWViYzVmYmE4IDEwMDY0NAorLS0tIGEvZ2RiL25hdC9hYXJj aDY0LWxpbnV4LWh3LXBvaW50LmMKKysrKyBiL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2lu dC5jCitAQCAtMTExLDcgKzExMSw3IEBAIGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0cmxfcmVnIChl bnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsIGludCBsZW4pCiAgICAgUmV0dXJuIDAgZm9yIGFu eSBub24tY29tcGxpYW50IEFERFIgYW5kL29yIExFTjsgcmV0dXJuIDEgb3RoZXJ3aXNlLiAgKi8K ICAKICBzdGF0aWMgaW50CkBAIC0xNTYsMTkgKzE1NiwyMCBAQCBJbmRleDogZ2RiLTguMS9nZGIv bmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYwogIHsKICAgIHVuc2lnbmVkIGludCBhbGlnbm1l bnQgPSAwOwogIAotQEAgLTIxMiw5ICsyMTIsOSBAQAotICAgIGFuIGFkZHJlc3Mgd2l0aGluIHRo ZSBsYXR0ZXIuICovCitAQCAtMTgwLDkgKzE4MCwxMCBAQCBhYXJjaDY0X3BvaW50X2lzX2FsaWdu ZWQgKGludCBpc193YXRjaHBvaW50LCBDT1JFX0FERFIgYWRkciwgaW50IGxlbikKKyAgICBsaW1p dGF0aW9ucyBjYW4gYmUgbGFyZ2VseSByZWxheGVkIHdpdGggc29tZSBmdXJ0aGVyIHdvcmsuICAq LwogIAogIHN0YXRpYyB2b2lkCiAtYWFyY2g2NF9hbGlnbl93YXRjaHBvaW50IChDT1JFX0FERFIg YWRkciwgaW50IGxlbiwgQ09SRV9BRERSICphbGlnbmVkX2FkZHJfcCwKLSthYXJjaDY0X2FsaWdu X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgQ09SRV9BRERSICphbGln bmVkX2FkZHJfcCwKLSAJCQkgIGludCAqYWxpZ25lZF9vZmZzZXRfcCwgaW50ICphbGlnbmVkX2xl bl9wLAotLQkJCSAgQ09SRV9BRERSICpuZXh0X2FkZHJfcCwgaW50ICpuZXh0X2xlbl9wLAotKwkJ CSAgQ09SRV9BRERSICpuZXh0X2FkZHJfcCwgTE9OR0VTVCAqbmV4dF9sZW5fcCwKLSAJCQkgIENP UkVfQUREUiAqbmV4dF9hZGRyX29yaWdfcCkKKythYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwKKysJCQkgIENPUkVfQUREUiAqYWxpZ25lZF9hZGRy X3AsCisgCQkJICBpbnQgKmFsaWduZWRfbGVuX3AsIENPUkVfQUREUiAqbmV4dF9hZGRyX3AsCist CQkJICBpbnQgKm5leHRfbGVuX3ApCisrCQkJICBMT05HRVNUICpuZXh0X2xlbl9wKQogIHsKICAg IGludCBhbGlnbmVkX2xlbjsKLUBAIC02MTEsNyArNjExLDcgQEAKKyAgIHVuc2lnbmVkIGludCBv ZmZzZXQ7CitAQCAtNTAxLDcgKzUwMiw3IEBAIGFhcmNoNjRfaGFuZGxlX2FsaWduZWRfd2F0Y2hw b2ludCAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLAogIAogIHN0YXRpYyBpbnQKICBhYXJj aDY0X2hhbmRsZV91bmFsaWduZWRfd2F0Y2hwb2ludCAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0 eXBlLApAQCAtMTc2LDIzICsxNzcsMjAgQEAgSW5kZXg6IGdkYi04LjEvZ2RiL25hdC9hYXJjaDY0 LWxpbnV4LWh3LXBvaW50LmMKICsJCQkJICAgICBDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4s IGludCBpc19pbnNlcnQsCiAgCQkJCSAgICAgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRl ICpzdGF0ZSkKICB7Ci0gICBDT1JFX0FERFIgYWRkcl9vcmlnID0gYWRkcjsKLUBAIC02NDEsMTIg KzY0MSwxMiBAQAorICAgd2hpbGUgKGxlbiA+IDApCitAQCAtNTI0LDkgKzUyNSw5IEBAIGFhcmNo NjRfaGFuZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50IChlbnVtIHRhcmdldF9od19icF90eXBlIHR5 cGUsCisgCQkgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisgCQkgICAgICAi YWxpZ25lZF9hZGRyOiAlcywgYWxpZ25lZF9sZW46ICVkXG4iCiAgCQkgICAgICAiICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiCi0gCQkgICAgICAiYWRkcl9vcmlnOiAlc1xuIgotIAkJ ICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotLQkJICAgICAgIm5leHRf YWRkcjogJXMsICAgIG5leHRfbGVuOiAlZFxuIgotKwkJICAgICAgIm5leHRfYWRkcjogJXMsICAg IG5leHRfbGVuOiAlc1xuIgotIAkJICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICIK LSAJCSAgICAgICJhZGRyX29yaWdfbmV4dDogJXNcbiIsCistCQkgICAgICAibmV4dF9hZGRyOiAl cywgICAgbmV4dF9sZW46ICVkXG4iLAorKwkJICAgICAgIm5leHRfYWRkcjogJXMsICAgIG5leHRf bGVuOiAlc1xuIiwKICAJCSAgICAgIGlzX2luc2VydCwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAo YWxpZ25lZF9hZGRyKSwKLSAJCSAgICAgIGFsaWduZWRfbGVuLCBjb3JlX2FkZHJfdG9fc3RyaW5n X256IChhZGRyX29yaWcpLAotLQkJICAgICAgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoYWRkciks IGxlbiwKLSsJCSAgICAgIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHIpLCBwbG9uZ2VzdCAo bGVuKSwKLSAJCSAgICAgIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHJfb3JpZ19uZXh0KSk7 CistCQkgICAgICBhbGlnbmVkX2xlbiwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoYWRkciksIGxl bik7CisrCQkgICAgICBhbGlnbmVkX2xlbiwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoYWRkciks IHBsb25nZXN0IChsZW4pKTsKICAKLSAgICAgICBhZGRyX29yaWcgPSBhZGRyX29yaWdfbmV4dDsK LUBAIC02NjAsNyArNjYwLDcgQEAKKyAgICAgICBpZiAocmV0ICE9IDApCisgCXJldHVybiByZXQ7 CitAQCAtNTM3LDcgKzUzOCw3IEBAIGFhcmNoNjRfaGFuZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50 IChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsCiAgCiAgaW50CiAgYWFyY2g2NF9oYW5kbGVf d2F0Y2hwb2ludCAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLCBDT1JFX0FERFIgYWRkciwK QEAgLTIwMSw3ICsxOTksNyBAQCBJbmRleDogZ2RiLTguMS9nZGIvbmF0L2FhcmNoNjQtbGludXgt aHctcG9pbnQuYwogIAkJCSAgIHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUp CiAgewogICAgaWYgKGFhcmNoNjRfcG9pbnRfaXNfYWxpZ25lZCAoMSAvKiBpc193YXRjaHBvaW50 ICovICwgYWRkciwgbGVuKSkKLUBAIC03MjIsMTQgKzcyMiwxNCBAQAorQEAgLTU4OCwxNCArNTg5 LDE0IEBAIGFhcmNoNjRfbGludXhfc2V0X2RlYnVnX3JlZ3MgKGNvbnN0IHN0cnVjdCBhYXJjaDY0 X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCiAgdm9pZAogIGFhcmNoNjRfc2hvd19kZWJ1Z19yZWdf c3RhdGUgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCiAgCQkJICAgICAg Y29uc3QgY2hhciAqZnVuYywgQ09SRV9BRERSIGFkZHIsCkBAIC0yMTksMTEgKzIxNywxMSBAQCBJ bmRleDogZ2RiLTguMS9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYwogIAkJICB0eXBl ID09IGh3X3dyaXRlID8gImh3LXdyaXRlLXdhdGNocG9pbnQiCiAgCQkgIDogKHR5cGUgPT0gaHdf cmVhZCA/ICJody1yZWFkLXdhdGNocG9pbnQiCiAgCQkgICAgIDogKHR5cGUgPT0gaHdfYWNjZXNz ID8gImh3LWFjY2Vzcy13YXRjaHBvaW50IgotSW5kZXg6IGdkYi04LjEvZ2RiL25hdC9hYXJjaDY0 LWxpbnV4LWh3LXBvaW50LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItOC4xLm9yaWcvZ2RiL25hdC9h YXJjaDY0LWxpbnV4LWh3LXBvaW50LmgJMjAxOC0wNS0wNSAxNzo1ODozMS4wNjI0OTY3NTAgKzAy MDAKLSsrKyBnZGItOC4xL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5oCTIwMTgtMDUt MDUgMTc6NTg6MzIuNDUwNTA5MzIyICswMjAwCi1AQCAtMTc2LDcgKzE3Niw3IEBACitkaWZmIC0t Z2l0IGEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmggYi9nZGIvbmF0L2FhcmNoNjQt bGludXgtaHctcG9pbnQuaAoraW5kZXggN2M0MmI5NmQxYi4uZTFkNGZjOGRiYyAxMDA2NDQKKy0t LSBhL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5oCisrKysgYi9nZGIvbmF0L2FhcmNo NjQtbGludXgtaHctcG9pbnQuaAorQEAgLTE3Miw3ICsxNzIsNyBAQCBpbnQgYWFyY2g2NF9oYW5k bGVfYnJlYWtwb2ludCAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLCBDT1JFX0FERFIgYWRk ciwKICAJCQkgICAgICAgaW50IGxlbiwgaW50IGlzX2luc2VydCwKICAJCQkgICAgICAgc3RydWN0 IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSk7CiAgaW50IGFhcmNoNjRfaGFuZGxlX3dh dGNocG9pbnQgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwgQ09SRV9BRERSIGFkZHIsCkBA IC0yMzEsOCArMjI5LDggQEAgSW5kZXg6IGdkYi04LjEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3 LXBvaW50LmgKICsJCQkgICAgICAgTE9OR0VTVCBsZW4sIGludCBpc19pbnNlcnQsCiAgCQkJICAg ICAgIHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUpOwogIAotIHZvaWQgYWFy Y2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRl ICpzdGF0ZSwKLUBAIC0xODQsNyArMTg0LDcgQEAKKyB2b2lkIGFhcmNoNjRfbGludXhfc2V0X2Rl YnVnX3JlZ3MgKGNvbnN0IHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCitA QCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoY29u c3Qgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKICAKICB2b2lkIGFhcmNo NjRfc2hvd19kZWJ1Z19yZWdfc3RhdGUgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAq c3RhdGUsCiAgCQkJCSAgIGNvbnN0IGNoYXIgKmZ1bmMsIENPUkVfQUREUiBhZGRyLApAQCAtMjQx LDExICsyMzksMTEgQEAgSW5kZXg6IGdkYi04LjEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBv aW50LmgKICAKICB2b2lkIGFhcmNoNjRfbGludXhfZ2V0X2RlYnVnX3JlZ19jYXBhY2l0eSAoaW50 IHRpZCk7CiAgCi1JbmRleDogZ2RiLTguMS9nZGIvcHBjLWxpbnV4LW5hdC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTguMS5vcmlnL2dkYi9wcGMtbGludXgtbmF0LmMJMjAxOC0wNS0wNSAxNzo1ODoz MS4wNjM0OTY3NTkgKzAyMDAKLSsrKyBnZGItOC4xL2dkYi9wcGMtbGludXgtbmF0LmMJMjAxOC0w NS0wNSAxNzo1ODozMi40NTA1MDkzMjIgKzAyMDAKLUBAIC0xNzk4LDExICsxNzk4LDExIEBACitk aWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9wcGMtbGludXgtbmF0LmMKK2lu ZGV4IDRhODI0MzRjMGQuLjQ5YTI3ZDhkYWEgMTAwNjQ0CistLS0gYS9nZGIvcHBjLWxpbnV4LW5h dC5jCisrKysgYi9nZGIvcHBjLWxpbnV4LW5hdC5jCitAQCAtMTc5OCwxMSArMTc5OCwxMSBAQCBj YW5fdXNlX3dhdGNocG9pbnRfY29uZF9hY2NlbCAodm9pZCkKICAgICBDT05ESVRJT05fVkFMVUUg d2lsbCBob2xkIHRoZSB2YWx1ZSB3aGljaCBzaG91bGQgYmUgcHV0IGluIHRoZQogICAgIERWQyBy ZWdpc3Rlci4gICovCiAgc3RhdGljIHZvaWQKQEAgLTI2MCw3ICsyNTgsNyBAQCBJbmRleDogZ2Ri LTguMS9nZGIvcHBjLWxpbnV4LW5hdC5jCiAgICBDT1JFX0FERFIgYWRkcl9lbmRfZGF0YSwgYWRk cl9lbmRfZHZjOwogIAogICAgLyogVGhlIERWQyByZWdpc3RlciBjb21wYXJlcyBieXRlcyB3aXRo aW4gZml4ZWQtbGVuZ3RoIHdpbmRvd3Mgd2hpY2gKLUBAIC0xODg5LDcgKzE4ODksNyBAQAorQEAg LTE4ODksNyArMTg4OSw3IEBAIG51bV9tZW1vcnlfYWNjZXNzZXMgKHN0cnVjdCB2YWx1ZSAqdikK ICAgICBvZiB0aGUgY29uc3RhbnQuICAqLwogIHN0YXRpYyBpbnQKICBjaGVja19jb25kaXRpb24g KENPUkVfQUREUiB3YXRjaF9hZGRyLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCwKQEAgLTI2OSw3 ICsyNjcsNyBAQCBJbmRleDogZ2RiLTguMS9nZGIvcHBjLWxpbnV4LW5hdC5jCiAgewogICAgaW50 IHBjID0gMSwgbnVtX2FjY2Vzc2VzX2xlZnQsIG51bV9hY2Nlc3Nlc19yaWdodDsKICAgIHN0cnVj dCB2YWx1ZSAqbGVmdF92YWwsICpyaWdodF92YWwsICpsZWZ0X2NoYWluLCAqcmlnaHRfY2hhaW47 Ci1AQCAtMTk1Nyw3ICsxOTU3LDcgQEAKK0BAIC0xOTU3LDcgKzE5NTcsNyBAQCBjaGVja19jb25k aXRpb24gKENPUkVfQUREUiB3YXRjaF9hZGRyLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCwKICAg ICB0cnVlLiAgKi8KICBzdGF0aWMgaW50CiAgcHBjX2xpbnV4X2Nhbl9hY2NlbF93YXRjaHBvaW50 X2NvbmRpdGlvbiAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCkBAIC0yNzgsNyArMjc2LDcgQEAg SW5kZXg6IGdkYi04LjEvZ2RiL3BwYy1saW51eC1uYXQuYwogIAkJCQkJICBzdHJ1Y3QgZXhwcmVz c2lvbiAqY29uZCkKICB7CiAgICBDT1JFX0FERFIgZGF0YV92YWx1ZTsKLUBAIC0xOTc0LDcgKzE5 NzQsNyBAQAorQEAgLTE5NzQsNyArMTk3NCw3IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hw b2ludF9jb25kaXRpb24gKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLAogIAogIHN0YXRpYyB2b2lk CiAgY3JlYXRlX3dhdGNocG9pbnRfcmVxdWVzdCAoc3RydWN0IHBwY19od19icmVha3BvaW50ICpw LCBDT1JFX0FERFIgYWRkciwKQEAgLTI4Nyw3ICsyODUsNyBAQCBJbmRleDogZ2RiLTguMS9nZGIv cHBjLWxpbnV4LW5hdC5jCiAgCQkJICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQsIGludCBpbnNl cnQpCiAgewogICAgaWYgKGxlbiA9PSAxCi1AQCAtMjI0MCw3ICsyMjQwLDcgQEAKK0BAIC0yMjQw LDcgKzIyNDAsNyBAQCBwcGNfbGludXhfc3RvcHBlZF9ieV93YXRjaHBvaW50IChzdHJ1Y3QgdGFy Z2V0X29wcyAqb3BzKQogIHN0YXRpYyBpbnQKICBwcGNfbGludXhfd2F0Y2hwb2ludF9hZGRyX3dp dGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwKICAJCQkJCUNPUkVfQUREUiBh ZGRyLApAQCAtMjk2LDExICsyOTQsMTEgQEAgSW5kZXg6IGdkYi04LjEvZ2RiL3BwYy1saW51eC1u YXQuYwogIHsKICAgIGludCBtYXNrOwogIAotSW5kZXg6IGdkYi04LjEvZ2RiL3Byb2Nmcy5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTguMS5vcmlnL2dkYi9wcm9jZnMuYwkyMDE4LTA1LTA1IDE3OjU4 OjMxLjA2NDQ5Njc2OCArMDIwMAotKysrIGdkYi04LjEvZ2RiL3Byb2Nmcy5jCTIwMTgtMDUtMDUg MTc6NTg6MzIuNDUxNTA5MzMxICswMjAwCi1AQCAtMTU2Myw3ICsxNTYzLDcgQEAKK2RpZmYgLS1n aXQgYS9nZGIvcHJvY2ZzLmMgYi9nZGIvcHJvY2ZzLmMKK2luZGV4IDg4N2YxMjAxZmUuLmVkZDFi ZTYzMmEgMTAwNjQ0CistLS0gYS9nZGIvcHJvY2ZzLmMKKysrKyBiL2dkYi9wcm9jZnMuYworQEAg LTE1NjMsNyArMTU2Myw3IEBAIHByb2Nmc19hZGRyZXNzX3RvX2hvc3RfcG9pbnRlciAoQ09SRV9B RERSIGFkZHIpCiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTMwOSw3ICszMDcsNyBAQCBJbmRleDog Z2RiLTguMS9nZGIvcHJvY2ZzLmMKICB7CiAgICBzdHJ1Y3QgewogICAgICBwcm9jZnNfY3RsX3Qg Y21kOwotQEAgLTMyNTAsNyArMzI1MCw3IEBACitAQCAtMzI1MCw3ICszMjUwLDcgQEAgcHJvY2Zz X3BpZF90b19zdHIgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIHB0aWRfdCBwdGlkKQogIC8qIElu c2VydCBhIHdhdGNocG9pbnQuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTMxOCwxMSArMzE2LDEx IEBAIEluZGV4OiBnZGItOC4xL2dkYi9wcm9jZnMuYwogIAkJICAgICAgIGludCBhZnRlcikKICB7 CiAgICBpbnQgICAgICAgcGZsYWdzID0gMDsKLUluZGV4OiBnZGItOC4xL2dkYi9yZW1vdGUuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi04LjEub3JpZy9nZGIvcmVtb3RlLmMJMjAxOC0wNS0wNSAxNzo1 ODozMS4wNjY0OTY3ODYgKzAyMDAKLSsrKyBnZGItOC4xL2dkYi9yZW1vdGUuYwkyMDE4LTA1LTA1 IDE3OjU4OjMyLjQ1MjUwOTM0MCArMDIwMAotQEAgLTk4OTcsNyArOTg5Nyw3IEBACitkaWZmIC0t Z2l0IGEvZ2RiL3JlbW90ZS5jIGIvZ2RiL3JlbW90ZS5jCitpbmRleCA5NGQ1NTk0MTc1Li44Njc3 N2YxZTVlIDEwMDY0NAorLS0tIGEvZ2RiL3JlbW90ZS5jCisrKysgYi9nZGIvcmVtb3RlLmMKK0BA IC05ODk3LDcgKzk4OTcsNyBAQCByZW1vdGVfaW5zZXJ0X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJn ZXRfb3BzICpzZWxmLCBDT1JFX0FERFIgYWRkciwgaW50IGxlbiwKICAgIHAgPSBzdHJjaHIgKHJz LT5idWYsICdcMCcpOwogICAgYWRkciA9IHJlbW90ZV9hZGRyZXNzX21hc2tlZCAoYWRkcik7CiAg ICBwICs9IGhleG51bXN0ciAocCwgKFVMT05HRVNUKSBhZGRyKTsKQEAgLTMzMSw3ICszMjksNyBA QCBJbmRleDogZ2RiLTguMS9nZGIvcmVtb3RlLmMKICAKICAgIHB1dHBrdCAocnMtPmJ1Zik7CiAg ICBnZXRwa3QgKCZycy0+YnVmLCAmcnMtPmJ1Zl9zaXplLCAwKTsKLUBAIC05OTE3LDcgKzk5MTcs NyBAQAorQEAgLTk5MTcsNyArOTkxNyw3IEBAIHJlbW90ZV9pbnNlcnRfd2F0Y2hwb2ludCAoc3Ry dWN0IHRhcmdldF9vcHMgKnNlbGYsIENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLAogIAogIHN0YXRp YyBpbnQKICByZW1vdGVfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdl dF9vcHMgKnRhcmdldCwgQ09SRV9BRERSIGFkZHIsCkBAIC0zNDAsNyArMzM4LDcgQEAgSW5kZXg6 IGdkYi04LjEvZ2RiL3JlbW90ZS5jCiAgewogICAgQ09SRV9BRERSIGRpZmYgPSByZW1vdGVfYWRk cmVzc19tYXNrZWQgKGFkZHIgLSBzdGFydCk7CiAgCi1AQCAtOTk0Niw3ICs5OTQ2LDcgQEAKK0BA IC05OTQ2LDcgKzk5NDYsNyBAQCByZW1vdGVfcmVtb3ZlX3dhdGNocG9pbnQgKHN0cnVjdCB0YXJn ZXRfb3BzICpzZWxmLCBDT1JFX0FERFIgYWRkciwgaW50IGxlbiwKICAgIHAgPSBzdHJjaHIgKHJz LT5idWYsICdcMCcpOwogICAgYWRkciA9IHJlbW90ZV9hZGRyZXNzX21hc2tlZCAoYWRkcik7CiAg ICBwICs9IGhleG51bXN0ciAocCwgKFVMT05HRVNUKSBhZGRyKTsKQEAgLTM0OSwxMSArMzQ3LDEx IEBAIEluZGV4OiBnZGItOC4xL2dkYi9yZW1vdGUuYwogICAgcHV0cGt0IChycy0+YnVmKTsKICAg IGdldHBrdCAoJnJzLT5idWYsICZycy0+YnVmX3NpemUsIDApOwogIAotSW5kZXg6IGdkYi04LjEv Z2RiL3RhcmdldC1kZWxlZ2F0ZXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi04LjEub3JpZy9nZGIv dGFyZ2V0LWRlbGVnYXRlcy5jCTIwMTgtMDUtMDUgMTc6NTg6MjUuMzIxNDQ0NzQ3ICswMjAwCi0r KysgZ2RiLTguMS9nZGIvdGFyZ2V0LWRlbGVnYXRlcy5jCTIwMTgtMDUtMDUgMTc6NTg6MzIuNDUz NTA5MzQ5ICswMjAwCi1AQCAtNzMzLDE0ICs3MzMsMTQgQEAKK2RpZmYgLS1naXQgYS9nZGIvdGFy Z2V0LWRlbGVnYXRlcy5jIGIvZ2RiL3RhcmdldC1kZWxlZ2F0ZXMuYworaW5kZXggMmI0NDljYmYw MS4uZjcyNTIxNWZmZiAxMDA2NDQKKy0tLSBhL2dkYi90YXJnZXQtZGVsZWdhdGVzLmMKKysrKyBi L2dkYi90YXJnZXQtZGVsZWdhdGVzLmMKK0BAIC03MzMsMTQgKzczMywxNCBAQCBkZWJ1Z19zdG9w cGVkX2RhdGFfYWRkcmVzcyAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsIENPUkVfQUREUiAqYXJn MSkKICB9CiAgCiAgc3RhdGljIGludApAQCAtMzcwLDcgKzM2OCw3IEBAIEluZGV4OiBnZGItOC4x L2dkYi90YXJnZXQtZGVsZWdhdGVzLmMKICB7CiAgICBpbnQgcmVzdWx0OwogICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiLT4gJXMtPnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5f cmFuZ2UgKC4uLilcbiIsIGRlYnVnX3RhcmdldC50b19zaG9ydG5hbWUpOwotQEAgLTc1Miw3ICs3 NTIsNyBAQAorQEAgLTc1Miw3ICs3NTIsNyBAQCBkZWJ1Z193YXRjaHBvaW50X2FkZHJfd2l0aGlu X3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwgQ09SRV9BRERSIGFyZzEsIENPUgogICAg ZnB1dHNfdW5maWx0ZXJlZCAoIiwgIiwgZ2RiX3N0ZGxvZyk7CiAgICB0YXJnZXRfZGVidWdfcHJp bnRfQ09SRV9BRERSIChhcmcyKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIsICIsIGdkYl9zdGRs b2cpOwpAQCAtMzc5LDcgKzM3Nyw3IEBAIEluZGV4OiBnZGItOC4xL2dkYi90YXJnZXQtZGVsZWdh dGVzLmMKICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIpID0gIiwgZ2RiX3N0ZGxvZyk7CiAgICB0YXJn ZXRfZGVidWdfcHJpbnRfaW50IChyZXN1bHQpOwogICAgZnB1dHNfdW5maWx0ZXJlZCAoIlxuIiwg Z2RiX3N0ZGxvZyk7Ci1AQCAtNzg1LDIwICs3ODUsMjAgQEAKK0BAIC03ODUsMjAgKzc4NSwyMCBA QCBkZWJ1Z19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpz ZWxmLCBDT1JFX0FERFIgYXJnMSwgTE9ORwogIH0KICAKICBzdGF0aWMgaW50CkBAIC00MDMsNyAr NDAxLDcgQEAgSW5kZXg6IGdkYi04LjEvZ2RiL3RhcmdldC1kZWxlZ2F0ZXMuYwogIHsKICAgIGlu dCByZXN1bHQ7CiAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICItPiAlcy0+dG9f Y2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uICguLi4pXG4iLCBkZWJ1Z190YXJnZXQudG9f c2hvcnRuYW1lKTsKLUBAIC04MDgsNyArODA4LDcgQEAKK0BAIC04MDgsNyArODA4LDcgQEAgZGVi dWdfY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2Vs ZiwgQ09SRV9BRERSIGFyZzEsIGkKICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIsICIsIGdkYl9zdGRs b2cpOwogICAgdGFyZ2V0X2RlYnVnX3ByaW50X0NPUkVfQUREUiAoYXJnMSk7CiAgICBmcHV0c191 bmZpbHRlcmVkICgiLCAiLCBnZGJfc3RkbG9nKTsKQEAgLTQxMiwxMSArNDEwLDExIEBAIEluZGV4 OiBnZGItOC4xL2dkYi90YXJnZXQtZGVsZWdhdGVzLmMKICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIs ICIsIGdkYl9zdGRsb2cpOwogICAgdGFyZ2V0X2RlYnVnX3ByaW50X2ludCAoYXJnMyk7CiAgICBm cHV0c191bmZpbHRlcmVkICgiLCAiLCBnZGJfc3RkbG9nKTsKLUluZGV4OiBnZGItOC4xL2dkYi90 YXJnZXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi04LjEub3JpZy9nZGIvdGFyZ2V0LmMJMjAxOC0w NS0wNSAxNzo1ODozMS4wNjg0OTY4MDQgKzAyMDAKLSsrKyBnZGItOC4xL2dkYi90YXJnZXQuYwky MDE4LTA1LTA1IDE3OjU4OjMyLjQ1MzUwOTM0OSArMDIwMAotQEAgLTUzLDcgKzUzLDcgQEAKK2Rp ZmYgLS1naXQgYS9nZGIvdGFyZ2V0LmMgYi9nZGIvdGFyZ2V0LmMKK2luZGV4IGExYWM2ZDA2OTcu LmViMDUzOGNiODIgMTAwNjQ0CistLS0gYS9nZGIvdGFyZ2V0LmMKKysrKyBiL2dkYi90YXJnZXQu YworQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJpY190bHNfZXJyb3IgKHZvaWQp IEFUVFJJQlVURV9OT1JFVFVSTjsKICBzdGF0aWMgdm9pZCBkZWZhdWx0X3Rlcm1pbmFsX2luZm8g KHN0cnVjdCB0YXJnZXRfb3BzICosIGNvbnN0IGNoYXIgKiwgaW50KTsKICAKICBzdGF0aWMgaW50 IGRlZmF1bHRfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMg KiwKQEAgLTQyNSw3ICs0MjMsNyBAQCBJbmRleDogZ2RiLTguMS9nZGIvdGFyZ2V0LmMKICAKICBz dGF0aWMgaW50IGRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFy Z2V0X29wcyAqLAogIAkJCQkJCUNPUkVfQUREUiwgTE9OR0VTVCk7Ci1AQCAtMzEyMCw3ICszMTIw LDcgQEAKK0BAIC0zMTIwLDcgKzMxMjAsNyBAQCBkZWZhdWx0X3JlZ2lvbl9va19mb3JfaHdfd2F0 Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCiAgc3RhdGljIGludAogIGRlZmF1bHRf d2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwK ICAJCQkJICAgICAgQ09SRV9BRERSIGFkZHIsCkBAIC00MzQsMTEgKzQzMiwxMSBAQCBJbmRleDog Z2RiLTguMS9nZGIvdGFyZ2V0LmMKICB7CiAgICByZXR1cm4gYWRkciA+PSBzdGFydCAmJiBhZGRy IDwgc3RhcnQgKyBsZW5ndGg7CiAgfQotSW5kZXg6IGdkYi04LjEvZ2RiL3RhcmdldC5oCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTguMS5vcmlnL2dkYi90YXJnZXQuaAkyMDE4LTA1LTA1IDE3OjU4OjMx LjA2ODQ5NjgwNCArMDIwMAotKysrIGdkYi04LjEvZ2RiL3RhcmdldC5oCTIwMTgtMDUtMDUgMTc6 NTg6MzIuNDU0NTA5MzU4ICswMjAwCi1AQCAtNTM1LDcgKzUzNSw3IEBACitkaWZmIC0tZ2l0IGEv Z2RiL3RhcmdldC5oIGIvZ2RiL3RhcmdldC5oCitpbmRleCA3YTcwYzNmNmRhLi4zNWVlZTkxYTgz IDEwMDY0NAorLS0tIGEvZ2RiL3RhcmdldC5oCisrKysgYi9nZGIvdGFyZ2V0LmgKK0BAIC01MzUs NyArNTM1LDcgQEAgc3RydWN0IHRhcmdldF9vcHMKICAgICAgaW50ICgqdG9fc3RvcHBlZF9kYXRh X2FkZHJlc3MpIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBDT1JFX0FERFIgKikKICAgICAgICBUQVJH RVRfREVGQVVMVF9SRVRVUk4gKDApOwogICAgICBpbnQgKCp0b193YXRjaHBvaW50X2FkZHJfd2l0 aGluX3JhbmdlKSAoc3RydWN0IHRhcmdldF9vcHMgKiwKQEAgLTQ0Nyw3ICs0NDUsNyBAQCBJbmRl eDogZ2RiLTguMS9nZGIvdGFyZ2V0LmgKICAgICAgICBUQVJHRVRfREVGQVVMVF9GVU5DIChkZWZh dWx0X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UpOwogIAogICAgICAvKiBEb2N1bWVudGF0 aW9uIG9mIHRoaXMgcm91dGluZSBpcyBwcm92aWRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nCi1A QCAtNTQ1LDcgKzU0NSw3IEBACitAQCAtNTQ1LDcgKzU0NSw3IEBAIHN0cnVjdCB0YXJnZXRfb3Bz CiAgICAgICAgVEFSR0VUX0RFRkFVTFRfRlVOQyAoZGVmYXVsdF9yZWdpb25fb2tfZm9yX2h3X3dh dGNocG9pbnQpOwogIAogICAgICBpbnQgKCp0b19jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRp b24pIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLApAQCAtNDU2LDMgKzQ1NCw2IEBAIEluZGV4OiBnZGIt OC4xL2dkYi90YXJnZXQuaAogIAkJCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKikKICAgICAg ICBUQVJHRVRfREVGQVVMVF9SRVRVUk4gKDApOwogICAgICBpbnQgKCp0b19tYXNrZWRfd2F0Y2hf bnVtX3JlZ2lzdGVycykgKHN0cnVjdCB0YXJnZXRfb3BzICosCistLSAKKzIuMTQuMworCgpkaWZm IC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCA2NmUzNTI4Li5lMjU4MDAxIDEwMDY0 NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMjYsNyArMjYsNyBAQCBWZXJzaW9u OiA4LjEKIAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVk IG51bWJlciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBu YW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRl c3RpbmcuCi1SZWxlYXNlOiAxNSV7P2Rpc3R9CitSZWxlYXNlOiAxNCV7P2Rpc3R9CiAKIExpY2Vu c2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2 Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBMR1BMdjMrIGFuZCBC U0QgYW5kIFB1YmxpYyBEb21haW4gYW5kIEdGREwKIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dl cnMKQEAgLTE4OCw5ICsxODgsNiBAQCBQYXRjaDEwNDQ6IGdkYi1wYWhvbGUtcHl0aG9uMi5wYXRj aAogIyM9ZmVkb3JhdGVzdAogUGF0Y2gxMTE5OiBnZGItdGVzdHN1aXRlLXJlYWRsaW5lNjMtc2ln aW50LXJldmVydC5wYXRjaAogCi0jIFthYXJjaDY0XSBGaXggbWlzc2VkIHVuYWxpZ25lZCBoYXJk d2FyZSB3YXRjaHBvaW50cyAoUkggQlogMTM0Nzk5MykuCi1QYXRjaDEyNzg6IGdkYi1yaGJ6MTM0 Nzk5My1hYXJjaDY0LWh3LXdhdGNocG9pbnQucGF0Y2gKLQogIyBJbmNsdWRlIHRoZSBhdXRvLWdl bmVyYXRlZCBmaWxlIGNvbnRhaW5pbmcgdGhlICJQYXRjaDoiIGRpcmVjdGl2ZXMuCiAjIFNlZSBS RUFETUUubG9jYWwtcGF0Y2hlcyBmb3IgbW9yZSBkZXRhaWxzLgogU291cmNlODogX2dkYi5zcGVj LlBhdGNoLmluY2x1ZGUKQEAgLTQxNiw4ICs0MTMsNiBAQCB0YXIgeHpmICV7U09VUkNFN30KICkK ICVlbmRpZgogCi0lcGF0Y2gxMjc4IC1wMQotCiAjIEZpbGVzIGhhdmUgYCMgPG51bWJlcj4gPGZp bGU+JyBzdGF0ZW1lbnRzIGJyZWFraW5nIFZQQVRIIC8gZmluZC1kZWJ1Z2luZm8uc2ggLgogKGNk IGdkYjtybSAtZnYgJChwZXJsIC1wZSAncy9cXFxuLyAvJyA8TWFrZWZpbGUuaW58c2VkIC1uICdz L15ZWUZJTEVTID0gLy9wJykpCiAKQEAgLTEwMzEsOSArMTAyNiw2IEBAIHRoZW4KIGZpCiAKICVj aGFuZ2Vsb2cKLSogU2F0IE1heSAgNSAyMDE4IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPiAtIDguMS0xNS5mYzI4Ci0tIFthYXJjaDY0XSBGaXggbWlzc2VkIHVuYWxp Z25lZCBoYXJkd2FyZSB3YXRjaHBvaW50cyAoUkggQlogMTM0Nzk5MykuCi0KICogTW9uIEFwciAg MiAyMDE4IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDguMS0x NC5mYzI4CiAtIFJldmVydCAnRml4IFBERiBidWlsZCBvbiBSYXdoaWRlL0YtMjknLCBybSAtcmYg dGV4aW5mby8gKGZyb20gUkggQlogMTU2MjU4MCkuCiAK