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] gdb-17.2-rebase-f44: Revert "[aarch64] Fix missed unaligned hardware watchpoints (RH BZ 1347993)." Date: Sat, 27 Jun 2026 23:58:36 GMT Message-ID: <178260471628.1.17446350850823924908.rpms-gdb-9736ebfbb03f@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 9736ebfbb03f5cdeaf95b2229bcccd37403e82aa ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogOTczNmViZmJiMDNmNWNkZWFmOTViMjIyOWJjY2NkMzc0MDNl ODJhYQogICAgICAgICAgICBBdXRob3IgOiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2Rq QHJlZGhhdC5jb20+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTgtMDUtMTdUMTQ6NTI6NTMtMDQ6 MDAKICAgICAgICAgICAgU3RhdHMgIDogKzg5Ly0xMjg0IGluIDMgZmlsZShzKQogICAgICAgICAg ICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzk3MzZl YmZiYjAzZjVjZGVhZjk1YjIyMjliY2NjZDM3NDAzZTgyYWE/YnJhbmNoPWdkYi0xNy4yLXJlYmFz ZS1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgUmV2ZXJ0ICJbYWFyY2g2NF0gRml4 IG1pc3NlZCB1bmFsaWduZWQgaGFyZHdhcmUgd2F0Y2hwb2ludHMgKFJIIEJaIDEzNDc5OTMpLiIK ClRoaXMgcmV2ZXJ0cyBjb21taXQgMzk3YzhhNTkyMjM0Zjg4OGViYWRjYTliM2M1YzYyOGNiMTU0 MDc1NC4KCi0tLQpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxMzQ3OTkzLWFhcmNoNjQtaHctd2F0Y2hw b2ludC5wYXRjaCBiL2dkYi1yaGJ6MTM0Nzk5My1hYXJjaDY0LWh3LXdhdGNocG9pbnQucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1YmQwNDYuLjAwMDAwMDAKLS0tIGEvZ2Ri LXJoYnoxMzQ3OTkzLWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDExODggKzAsMCBAQAotY29tbWl0IGEzYjYwZTQ1ODg2MDYzNTRiOTM1MDhhMDAwOGE1Y2Ew NGI2OGZhZDgKLUF1dGhvcjogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci1EYXRlOiAgIEZyaSBNYXkgNCAyMjoyMjowNCAyMDE4ICswMjAwCi0KLSAgICBhYXJjaDY0 OiBQUiAxOTgwNjogd2F0Y2hwb2ludHM6IGZhbHNlIG5lZ2F0aXZlcyArIFBSIDIwMjA3IGNvbnRp Z3VvdXMgb25lcwotICAgIAotICAgIFNvbWUgdW5hbGlnbmVkIHdhdGNocG9pbnRzIHdlcmUgY3Vy cmVudGx5IG1pc3NlZC4KLSAgICAKLSAgICBPbiBvbGQga2VybmVscyBhcyBzcGVjaWZpZWQgaW4K LSAgICAgICAgICAgIGtlcm5lbCBSRkU6IGFhcmNoNjQ6IHB0cmFjZTogQkFTOiBTdXBwb3J0IGFu eSBjb250aWd1b3VzIHJhbmdlIChlZGl0KQotICAgICAgICAgICAgaHR0cHM6Ly9zb3VyY2V3YXJl Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDcKLSAgICBhZnRlciB0aGlzIHBhdGNo IHNvbWUgb3RoZXIgdW5hbGlnbmVkIHdhdGNocG9pbnRzIHdpbGwgZ2V0IHJlcG9ydGVkIGFzIGZh bHNlCi0gICAgcG9zaXRpdmVzLgotICAgIAotICAgIFdpdGggbmV3IGtlcm5lbHMgYWxsIHRoZSB3 YXRjaHBvaW50cyBzaG91bGQgd29yayBleGFjdGx5LgotICAgIAotICAgIFRoZXJlIG1heSBiZSBh IHJlZ3Jlc2lvbiB0aGF0IGl0IG5vdyBsZXNzIG1lcmdlcyB3YXRjaHBvaW50cyBzbyB0aGF0IHdp dGgKLSAgICBtdWx0aXBsZSBvdmVybGFwcGluZyB3YXRjaHBvaW50cyBpdCBtYXkgcnVuIG91dCBv ZiB0aGUgNCBoYXJkd2FyZSB3YXRjaHBvaW50Ci0gICAgcmVnaXN0ZXJzLiAgQnV0IGFzIGRpc2N1 c3NlZCBpbiB0aGUgb3JpZ2luYWwgdGhyZWFkIEdEQiBuZWVkcyBzb21lIGdlbmVyaWMKLSAgICB3 YXRjaHBvaW50cyBtZXJnaW5nIGZyYW1ld29yayB0byBiZSB1c2VkIGJ5IGFsbCB0aGUgdGFyZ2V0 IHNwZWNpZmljIGNvZGUuCi0gICAgRXZlbiBjdXJyZW50IEZTRiBHREIgY29kZSBkb2VzIG5vdCBt ZXJnZSBpdCBwZXJmZWN0bHkuICBBbHNvIHdpdGggdGhlIG1vcmUKLSAgICBwcmVjaXNlIHdhdGNo cG9pbnRzIG9uZSBjYW4gdGVjaG5pY2FsbHkgbWVyZ2UgdGhlbSBsZXNzLiAgQW5kIEkgZG8gbm90 IHRoaW5rCi0gICAgaXQgbWF0dGVycyB0b28gbXVjaCB0byBpbXByb3ZlIG1lcmdlYWJpbGl0eSBv bmx5IGZvciBvbGQga2VybmVscy4KLSAgICBTdGlsbCBldmVuIG9uIG5ldyBrZXJuZWxzIHNvbWUg YmV0dGVyIG1lcmdpbmcgbG9naWMgd291bGQgbWFrZSBzZW5zZS4KLSAgICAKLSAgICBUaGVyZSBy ZW1haW5zIG9uZSBpc3N1ZToKLSAgICAgICAgICAgIGtlcm5lbC00LjE1LjE0LTMwMC5mYzI3LmFy bXY3aGwKLSAgICAgICAgICAgIEZBSUw6IGdkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmV4 cDogY29udGludWUKLSAgICAgICAgICAgIEZBSUw6IGdkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGln bmVkLmV4cDogY29udGludWUKLSAgICAgICAgICAgIChnZGIpIGNvbnRpbnVlCi0gICAgICAgICAg ICBDb250aW51aW5nLgotICAgICAgICAgICAgVW5leHBlY3RlZCBlcnJvciBzZXR0aW5nIHdhdGNo cG9pbnQ6IEludmFsaWQgYXJndW1lbnQuCi0gICAgICAgICAgICAoZ2RiKSBGQUlMOiBnZGIuYmFz ZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHA6IGNvbnRpbnVlCi0gICAgQnV0IHRoYXQgbG9va3Mg YXMgYSBrZXJuZWwgYnVnIHRvIG1lLgotICAgICgxKSBJdCBpcyBub3QgYSByZWdyZXNzaW9uIGJ5 IHRoaXMgcGF0Y2guCi0gICAgKDIpIEl0IGlzIHVucmVsYXRlZCB0byB0aGlzIHBhdGNoLgotICAg IAotICAgIGdkYi9DaGFuZ2VMb2cKLSAgICAyMDE4LTA1LTA0ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gICAgICAgICAgICAgICAgUGVkcm8gQWx2ZXMgPHBh bHZlc0ByZWRoYXQuY29tPgotICAgIAotICAgICAgICAgICAgUFIgYnJlYWtwb2ludHMvMTk4MDYg YW5kIHN1cHBvcnQgZm9yIFBSIGV4dGVybmFsLzIwMjA3LgotICAgICAgICAgICAgKiBORVdTOiBN ZW50aW9uIEFhcmNoNjQgd2F0Y2hwb2ludCBpbXByb3ZlbWVudHMuCi0gICAgICAgICAgICAqIGFh cmNoNjQtbGludXgtbmF0LmMgKGFhcmNoNjRfbGludXhfc3RvcHBlZF9kYXRhX2FkZHJlc3MpOiBG aXggbWlzc2VkCi0gICAgICAgICAgICB3YXRjaHBvaW50cyBhbmQgUFIgZXh0ZXJuYWwvMjAyMDcg d2F0Y2hwb2ludHMuCi0gICAgICAgICAgICAqIG5hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMK LSAgICAgICAgICAgIChrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UpOiBOZXcu Ci0gICAgICAgICAgICAoYWFyY2g2NF93YXRjaHBvaW50X29mZnNldCk6IE5ldy4KLSAgICAgICAg ICAgIChhYXJjaDY0X3dhdGNocG9pbnRfbGVuZ3RoKTogU3VwcG9ydCBQUiBleHRlcm5hbC8yMDIw NyB3YXRjaHBvaW50cy4KLSAgICAgICAgICAgIChhYXJjaDY0X3BvaW50X2VuY29kZV9jdHJsX3Jl Zyk6IE5ldyBwYXJhbWV0ZXIgb2Zmc2V0LCBuZXcgYXNzZXJ0cy4KLSAgICAgICAgICAgIChhYXJj aDY0X3BvaW50X2lzX2FsaWduZWQpOiBTdXBwb3J0IFBSIGV4dGVybmFsLzIwMjA3IHdhdGNocG9p bnRzLgotICAgICAgICAgICAgKGFhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCk6IE5ldyBwYXJhbWV0 ZXJzIGFsaWduZWRfb2Zmc2V0X3AgYW5kCi0gICAgICAgICAgICBuZXh0X2FkZHJfb3JpZ19wLiAg U3VwcG9ydCBQUiBleHRlcm5hbC8yMDIwNyB3YXRjaHBvaW50cy4KLSAgICAgICAgICAgIChhYXJj aDY0X2Rvd25ncmFkZV9yZWdzKTogTmV3LgotICAgICAgICAgICAgKGFhcmNoNjRfZHJfc3RhdGVf aW5zZXJ0X29uZV9wb2ludCk6IE5ldyBwYXJhbWV0ZXJzIG9mZnNldCBhbmQKLSAgICAgICAgICAg IGFkZHJfb3JpZy4KLSAgICAgICAgICAgIChhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9p bnQpOiBMaWtld2lzZS4KLSAgICAgICAgICAgIChhYXJjaDY0X2hhbmRsZV9icmVha3BvaW50KTog VXBkYXRlIGNhbGxlci4KLSAgICAgICAgICAgIChhYXJjaDY0X2hhbmRsZV9hbGlnbmVkX3dhdGNo cG9pbnQpOiBMaWtld2lzZS4KLSAgICAgICAgICAgIChhYXJjaDY0X2hhbmRsZV91bmFsaWduZWRf d2F0Y2hwb2ludCk6IFN1cHBvcnQgYWRkcl9vcmlnIGFuZAotICAgICAgICAgICAgYWxpZ25lZF9v ZmZzZXQuCi0gICAgICAgICAgICAoYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyk6IFJlbW92 ZSBjb25zdCBmcm9tIHN0YXRlLiAgQ2FsbAotICAgICAgICAgICAgYWFyY2g2NF9kb3duZ3JhZGVf cmVncy4KLSAgICAgICAgICAgIChhYXJjaDY0X3Nob3dfZGVidWdfcmVnX3N0YXRlKTogUHJpbnQg YWxzbyBkcl9hZGRyX29yaWdfd3AuCi0gICAgICAgICAgICAqIG5hdC9hYXJjaDY0LWxpbnV4LWh3 LXBvaW50LmggKERSX0NPTlRST0xfTEVOR1RIKTogUmVuYW1lIHRvIC4uLgotICAgICAgICAgICAg KERSX0NPTlRST0xfTUFTSyk6IC4uLiB0aGlzLgotICAgICAgICAgICAgKHN0cnVjdCBhYXJjaDY0 X2RlYnVnX3JlZ19zdGF0ZSk6IE5ldyBmaWVsZCBkcl9hZGRyX29yaWdfd3AuCi0gICAgICAgICAg ICAodW5zaWduZWQgaW50IGFhcmNoNjRfd2F0Y2hwb2ludF9vZmZzZXQpOiBOZXcgcHJvdG90eXBl LgotICAgICAgICAgICAgKGFhcmNoNjRfbGludXhfc2V0X2RlYnVnX3JlZ3MpOiBSZW1vdmUgY29u c3QgZnJvbSBzdGF0ZS4KLSAgICAgICAgICAgICogdXRpbHMuYyAoYWxpZ25fdXAsIGFsaWduX2Rv d24pOiBNb3ZlIHRvIC4uLgotICAgICAgICAgICAgKiBjb21tb24vY29tbW9uLXV0aWxzLmMgKGFs aWduX3VwLCBhbGlnbl9kb3duKTogLi4uIGhlcmUuCi0gICAgICAgICAgICAqIHV0aWxzLmggKGFs aWduX3VwLCBhbGlnbl9kb3duKTogTW92ZSB0byAuLi4KLSAgICAgICAgICAgICogY29tbW9uL2Nv bW1vbi11dGlscy5oIChhbGlnbl91cCwgYWxpZ25fZG93bik6IC4uLiBoZXJlLgotICAgIAotICAg IGdkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCi0gICAgMjAxOC0wNS0wNCAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotICAgICAgICAgICAgICAgIFBlZHJvIEFsdmVz IDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSAgICAKLSAgICAgICAgICAgICogbGludXgtYWFyY2g2NC1s b3cuYyAoYWFyY2g2NF9zdG9wcGVkX2RhdGFfYWRkcmVzcyk6Ci0gICAgICAgICAgICBMaWtld2lz ZS4KLSAgICAKLSAgICBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotICAgIDIwMTgtMDUtMDQgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAgICAgICAgICAgICAg ICBQZWRybyBBbHZlcyA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gICAgCi0gICAgICAgICAgICBQUiBi cmVha3BvaW50cy8xOTgwNiBhbmQgc3VwcG9ydCBmb3IgUFIgZXh0ZXJuYWwvMjAyMDcuCi0gICAg ICAgICAgICAqIGdkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmM6IE5ldyBmaWxlLgotICAg ICAgICAgICAgKiBnZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHA6IE5ldyBmaWxlLgot Ci0tLS0gLi9nZGIvTkVXUwkyMDE4LTAxLTMxIDAzOjU4OjUwLjAwMDAwMDAwMCArMDEwMAotKysr IC4vZ2RiL05FV1MJMjAxOC0wNS0wNSAxNzo1NDoxNC4xMDgxNDgxNTIgKzAyMDAKLUBAIC0xLDYg KzEsMTYgQEAKLSAJCVdoYXQgaGFzIGNoYW5nZWQgaW4gR0RCPwotIAkgICAgIChPcmdhbml6ZWQg cmVsZWFzZSBieSByZWxlYXNlKQotIAotKyogQWFyY2g2NC9MaW51eCBoYXJkd2FyZSB3YXRjaHBv aW50cyBpbXByb3ZlbWVudHMKLSsKLSsgIEhhcmR3YXJlIHdhdGNocG9pbnRzIG9uIHVuYWxpZ25l ZCBhZGRyZXNzZXMgYXJlIG5vdyBwcm9wZXJseQotKyAgc3VwcG9ydGVkIHdoZW4gcnVubmluZyBM aW51eCBrZXJuZWwgNC4xMCBvciBoaWdoZXI6IHJlYWQgYW5kIGFjY2VzcwotKyAgd2F0Y2hwb2lu dHMgYXJlIG5vIGxvbmdlciBzcHVyaW91c2x5IG1pc3NlZCwgYW5kIGFsbCB3YXRjaHBvaW50cwot KyAgbGVuZ3RocyBiZXR3ZWVuIDEgYW5kIDggYnl0ZXMgYXJlIHN1cHBvcnRlZC4gIE9uIG9sZGVy IGtlcm5lbHMsCi0rICB3YXRjaHBvaW50cyBzZXQgb24gdW5hbGlnbmVkIGFkZHJlc3NlcyBhcmUg bm8gbG9uZ2VyIG1pc3NlZCwgd2l0aAotKyAgdGhlIHRyYWRlb2ZmIHRoYXQgdGhlcmUgaXMgYSBw b3NzaWJpbGl0eSBvZiBmYWxzZSBoaXRzIGJlaW5nCi0rICByZXBvcnRlZC4KLSsKLSAqKiogQ2hh bmdlcyBpbiBHREIgOC4xCi0gCi0gKiBHREIgbm93IHN1cHBvcnRzIGR5bmFtaWNhbGx5IGNyZWF0 aW5nIGFyYml0cmFyeSByZWdpc3RlciBncm91cHMgc3BlY2lmaWVkCi0tLS0gLi9nZGIvYWFyY2g2 NC1saW51eC1uYXQuYwkyMDE4LTAxLTA1IDA1OjA3OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIC4v Z2RiL2FhcmNoNjQtbGludXgtbmF0LmMJMjAxOC0wNS0wNSAxNzo1NDo1My4yMjg1MDY4MjIgKzAy MDAKLUBAIC03MzUsMTYgKzczNSwzOCBAQCBhYXJjaDY0X2xpbnV4X3N0b3BwZWRfZGF0YV9hZGRy ZXNzIChzdHJ1Ci0gICBzdGF0ZSA9IGFhcmNoNjRfZ2V0X2RlYnVnX3JlZ19zdGF0ZSAocHRpZF9n ZXRfcGlkIChpbmZlcmlvcl9wdGlkKSk7Ci0gICBmb3IgKGkgPSBhYXJjaDY0X251bV93cF9yZWdz IC0gMTsgaSA+PSAwOyAtLWkpCi0gICAgIHsKLSsgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgb2Zm c2V0Ci0rCT0gYWFyY2g2NF93YXRjaHBvaW50X29mZnNldCAoc3RhdGUtPmRyX2N0cmxfd3BbaV0p OwotICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBsZW4gPSBhYXJjaDY0X3dhdGNocG9pbnRfbGVu Z3RoIChzdGF0ZS0+ZHJfY3RybF93cFtpXSk7Ci0gICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJf dHJhcCA9IChDT1JFX0FERFIpIHNpZ2luZm8uc2lfYWRkcjsKLS0gICAgICBjb25zdCBDT1JFX0FE RFIgYWRkcl93YXRjaCA9IHN0YXRlLT5kcl9hZGRyX3dwW2ldOwotKyAgICAgIGNvbnN0IENPUkVf QUREUiBhZGRyX3dhdGNoID0gc3RhdGUtPmRyX2FkZHJfd3BbaV0gKyBvZmZzZXQ7Ci0rICAgICAg Y29uc3QgQ09SRV9BRERSIGFkZHJfd2F0Y2hfYWxpZ25lZCA9IGFsaWduX2Rvd24gKHN0YXRlLT5k cl9hZGRyX3dwW2ldLCA4KTsKLSsgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl9vcmlnID0gc3Rh dGUtPmRyX2FkZHJfb3JpZ193cFtpXTsKLSAKLSAgICAgICBpZiAoc3RhdGUtPmRyX3JlZl9jb3Vu dF93cFtpXQotIAkgICYmIERSX0NPTlRST0xfRU5BQkxFRCAoc3RhdGUtPmRyX2N0cmxfd3BbaV0p Ci0tCSAgJiYgYWRkcl90cmFwID49IGFkZHJfd2F0Y2gKLSsJICAmJiBhZGRyX3RyYXAgPj0gYWRk cl93YXRjaF9hbGlnbmVkCi0gCSAgJiYgYWRkcl90cmFwIDwgYWRkcl93YXRjaCArIGxlbikKLSAJ ewotLQkgICphZGRyX3AgPSBhZGRyX3RyYXA7Ci0rCSAgLyogQUREUl9UUkFQIHJlcG9ydHMgdGhl IGZpcnN0IGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSByYW5nZQotKwkgICAgIGFjY2Vzc2VkIGJ5IHRo ZSBDUFUsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB3YXMgdGhlIG1lbW9yeQotKwkgICAgIHJhbmdlIHdh dGNoZWQuICBUaHVzLCBhIGxhcmdlIENQVSBhY2Nlc3MgdGhhdCBzdHJhZGRsZXMKLSsJICAgICB0 aGUgQUREUl9XQVRDSC4uQUREUl9XQVRDSCtMRU4gcmFuZ2UgbWF5IHJlc3VsdCBpbiBhbgotKwkg ICAgIEFERFJfVFJBUCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlCi0rCSAgICAgQUREUl9XQVRDSC4u QUREUl9XQVRDSCtMRU4gcmFuZ2UuICBFLmcuOgotKwotKwkgICAgIGFkZHI6IHwgICA0ICAgfCAg IDUgICB8ICAgNiAgIHwgICA3ICAgfCAgIDggICB8Ci0rCQkJCSAgIHwtLS0tIHJhbmdlIHdhdGNo ZWQgLS0tLXwKLSsJCSAgIHwtLS0tLS0tLS0tLSByYW5nZSBhY2Nlc3NlZCAtLS0tLS0tLS0tLS18 Ci0rCi0rCSAgICAgSW4gdGhpcyBjYXNlLCBBRERSX1RSQVAgd2lsbCBiZSA0LgotKwotKwkgICAg IFRvIG1hdGNoIGEgd2F0Y2hwb2ludCBrbm93biB0byBHREIgY29yZSwgd2UgbXVzdCBuZXZlcgot KwkgICAgIHJlcG9ydCAqQUREUl9QIG91dHNpZGUgb2YgYW55IEFERFJfV0FUQ0guLkFERFJfV0FU Q0grTEVOCi0rCSAgICAgcmFuZ2UuICBBRERSX1dBVENIIDw9IEFERFJfVFJBUCA8IEFERFJfT1JJ RyBpcyBhIGZhbHNlCi0rCSAgICAgcG9zaXRpdmUgb24ga2VybmVscyBvbGRlciB0aGFuIDQuMTAu ICBTZWUgUFIKLSsJICAgICBleHRlcm5hbC8yMDIwNy4gICovCi0rCSAgKmFkZHJfcCA9IGFkZHJf b3JpZzsKLSAJICByZXR1cm4gMTsKLSAJfQotICAgICB9Ci0tLS0gLi9nZGIvY29tbW9uL2NvbW1v bi11dGlscy5jCTIwMTgtMDEtMDUgMDU6MDc6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIv Y29tbW9uL2NvbW1vbi11dGlscy5jCTIwMTgtMDUtMDUgMTc6NTQ6MTQuMTA5MTQ4MTYxICswMjAw Ci1AQCAtNDA4LDMgKzQwOCwyMyBAQCBzdHJpbmdpZnlfYXJndiAoY29uc3Qgc3RkOjp2ZWN0b3I8 Y2hhciAqCi0gCi0gICByZXR1cm4gcmV0OwotIH0KLSsKLSsvKiBTZWUgY29tbW9uL2NvbW1vbi11 dGlscy5oLiAgKi8KLSsKLStVTE9OR0VTVAotK2FsaWduX3VwIChVTE9OR0VTVCB2LCBpbnQgbikK LSt7Ci0rICAvKiBDaGVjayB0aGF0IE4gaXMgcmVhbGx5IGEgcG93ZXIgb2YgdHdvLiAgKi8KLSsg IGdkYl9hc3NlcnQgKG4gJiYgKG4gJiAobi0xKSkgPT0gMCk7Ci0rICByZXR1cm4gKHYgKyBuIC0g MSkgJiAtbjsKLSt9Ci0rCi0rLyogU2VlIGNvbW1vbi9jb21tb24tdXRpbHMuaC4gICovCi0rCi0r VUxPTkdFU1QKLSthbGlnbl9kb3duIChVTE9OR0VTVCB2LCBpbnQgbikKLSt7Ci0rICAvKiBDaGVj ayB0aGF0IE4gaXMgcmVhbGx5IGEgcG93ZXIgb2YgdHdvLiAgKi8KLSsgIGdkYl9hc3NlcnQgKG4g JiYgKG4gJiAobi0xKSkgPT0gMCk7Ci0rICByZXR1cm4gKHYgJiAtbik7Ci0rfQotLS0tIC4vZ2Ri L2NvbW1vbi9jb21tb24tdXRpbHMuaAkyMDE4LTAxLTA1IDA1OjA3OjIzLjAwMDAwMDAwMCArMDEw MAotKysrIC4vZ2RiL2NvbW1vbi9jb21tb24tdXRpbHMuaAkyMDE4LTA1LTA1IDE3OjU0OjE0LjEx MDE0ODE3MCArMDIwMAotQEAgLTE0Niw0ICsxNDYsMzYgQEAgaW5faW5jbHVzaXZlX3JhbmdlIChU IHZhbHVlLCBUIGxvdywgVCBoaQotICAgcmV0dXJuIHZhbHVlID49IGxvdyAmJiB2YWx1ZSA8PSBo aWdoOwotIH0KLSAKLSsvKiBFbnN1cmUgdGhhdCBWIGlzIGFsaWduZWQgdG8gYW4gTiBieXRlIGJv dW5kYXJ5IChCJ3MgYXNzdW1lZCB0byBiZSBhCi0rICAgcG93ZXIgb2YgMikuICBSb3VuZCB1cC9k b3duIHdoZW4gbmVjZXNzYXJ5LiAgRXhhbXBsZXMgb2YgY29ycmVjdAotKyAgIHVzZSBpbmNsdWRl OgotKwotKyAgICBhZGRyID0gYWxpZ25fdXAgKGFkZHIsIDgpOyAtLSBWQUxVRSBuZWVkcyA4IGJ5 dGUgYWxpZ25tZW50Ci0rICAgIHdyaXRlX21lbW9yeSAoYWRkciwgdmFsdWUsIGxlbik7Ci0rICAg IGFkZHIgKz0gbGVuOwotKwotKyAgIGFuZDoKLSsKLSsgICAgc3AgPSBhbGlnbl9kb3duIChzcCAt IGxlbiwgMTYpOyAtLSBLZWVwIFNQIDE2IGJ5dGUgYWxpZ25lZAotKyAgICB3cml0ZV9tZW1vcnkg KHNwLCB2YWx1ZSwgbGVuKTsKLSsKLSsgICBOb3RlIHRoYXQgdXNlcyBzdWNoIGFzOgotKwotKyAg ICB3cml0ZV9tZW1vcnkgKGFkZHIsIHZhbHVlLCBsZW4pOwotKyAgICBhZGRyICs9IGFsaWduX3Vw IChsZW4sIDgpOwotKwotKyAgIGFuZDoKLSsKLSsgICAgc3AgLT0gYWxpZ25fdXAgKGxlbiwgOCk7 Ci0rICAgIHdyaXRlX21lbW9yeSAoc3AsIHZhbHVlLCBsZW4pOwotKwotKyAgIGFyZSB0eXBpY2Fs bHkgbm90IGNvcnJlY3QgYXMgdGhleSBkb24ndCBlbnN1cmUgdGhhdCB0aGUgYWRkcmVzcyAoU1AK LSsgICBvciBBRERSKSBpcyBjb3JyZWN0bHkgYWxpZ25lZCAocmVseWluZyBvbiBwcmV2aW91cyBh bGlnbm1lbnQgdG8KLSsgICBrZWVwIHRoaW5ncyByaWdodCkuICBUaGlzIGlzIGFsc28gd2h5IHRo ZSBtZXRob2RzIGFyZSBjYWxsZWQKLSsgICAiYWxpZ25fLi4uIiBpbnN0ZWFkIG9mICJyb3VuZF8u Li4iIGFzIHRoZSBsYXR0ZXIgcmVhZHMgYmV0dGVyIHdpdGgKLSsgICB0aGlzIGluY29ycmVjdCBj b2Rpbmcgc3R5bGUuICAqLwotKwotK2V4dGVybiBVTE9OR0VTVCBhbGlnbl91cCAoVUxPTkdFU1Qg diwgaW50IG4pOwotK2V4dGVybiBVTE9OR0VTVCBhbGlnbl9kb3duIChVTE9OR0VTVCB2LCBpbnQg bik7Ci0rCi0gI2VuZGlmCi0tLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFhcmNoNjQtbG93LmMJ MjAxOC0wMS0wNSAwNTowNzoyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIv bGludXgtYWFyY2g2NC1sb3cuYwkyMDE4LTA1LTA1IDE3OjU0OjE0LjExMDE0ODE3MCArMDIwMAot QEAgLTM2MCwxNCArMzYwLDM5IEBAIGFhcmNoNjRfc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHZvaWQp Ci0gICBzdGF0ZSA9IGFhcmNoNjRfZ2V0X2RlYnVnX3JlZ19zdGF0ZSAocGlkX29mIChjdXJyZW50 X3RocmVhZCkpOwotICAgZm9yIChpID0gYWFyY2g2NF9udW1fd3BfcmVncyAtIDE7IGkgPj0gMDsg LS1pKQotICAgICB7Ci0rICAgICAgY29uc3QgdW5zaWduZWQgaW50IG9mZnNldAotKwk9IGFhcmNo NjRfd2F0Y2hwb2ludF9vZmZzZXQgKHN0YXRlLT5kcl9jdHJsX3dwW2ldKTsKLSAgICAgICBjb25z dCB1bnNpZ25lZCBpbnQgbGVuID0gYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCAoc3RhdGUtPmRy X2N0cmxfd3BbaV0pOwotICAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3RyYXAgPSAoQ09SRV9B RERSKSBzaWdpbmZvLnNpX2FkZHI7Ci0tICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJfd2F0Y2gg PSBzdGF0ZS0+ZHJfYWRkcl93cFtpXTsKLSsgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl93YXRj aCA9IHN0YXRlLT5kcl9hZGRyX3dwW2ldICsgb2Zmc2V0OwotKyAgICAgIGNvbnN0IENPUkVfQURE UiBhZGRyX3dhdGNoX2FsaWduZWQgPSBhbGlnbl9kb3duIChzdGF0ZS0+ZHJfYWRkcl93cFtpXSwg OCk7Ci0rICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJfb3JpZyA9IHN0YXRlLT5kcl9hZGRyX29y aWdfd3BbaV07Ci0rCi0gICAgICAgaWYgKHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0KLSAJICAm JiBEUl9DT05UUk9MX0VOQUJMRUQgKHN0YXRlLT5kcl9jdHJsX3dwW2ldKQotLQkgICYmIGFkZHJf dHJhcCA+PSBhZGRyX3dhdGNoCi0rCSAgJiYgYWRkcl90cmFwID49IGFkZHJfd2F0Y2hfYWxpZ25l ZAotIAkgICYmIGFkZHJfdHJhcCA8IGFkZHJfd2F0Y2ggKyBsZW4pCi0tCXJldHVybiBhZGRyX3Ry YXA7Ci0rCXsKLSsJICAvKiBBRERSX1RSQVAgcmVwb3J0cyB0aGUgZmlyc3QgYWRkcmVzcyBvZiB0 aGUgbWVtb3J5IHJhbmdlCi0rCSAgICAgYWNjZXNzZWQgYnkgdGhlIENQVSwgcmVnYXJkbGVzcyBv ZiB3aGF0IHdhcyB0aGUgbWVtb3J5Ci0rCSAgICAgcmFuZ2Ugd2F0Y2hlZC4gIFRodXMsIGEgbGFy Z2UgQ1BVIGFjY2VzcyB0aGF0IHN0cmFkZGxlcwotKwkgICAgIHRoZSBBRERSX1dBVENILi5BRERS X1dBVENIK0xFTiByYW5nZSBtYXkgcmVzdWx0IGluIGFuCi0rCSAgICAgQUREUl9UUkFQIHRoYXQg aXMgbG93ZXIgdGhhbiB0aGUKLSsJICAgICBBRERSX1dBVENILi5BRERSX1dBVENIK0xFTiByYW5n ZS4gIEUuZy46Ci0rCi0rCSAgICAgYWRkcjogfCAgIDQgICB8ICAgNSAgIHwgICA2ICAgfCAgIDcg ICB8ICAgOCAgIHwKLSsJCQkJICAgfC0tLS0gcmFuZ2Ugd2F0Y2hlZCAtLS0tfAotKwkJICAgfC0t LS0tLS0tLS0tIHJhbmdlIGFjY2Vzc2VkIC0tLS0tLS0tLS0tLXwKLSsKLSsJICAgICBJbiB0aGlz IGNhc2UsIEFERFJfVFJBUCB3aWxsIGJlIDQuCi0rCi0rCSAgICAgVG8gbWF0Y2ggYSB3YXRjaHBv aW50IGtub3duIHRvIEdEQiBjb3JlLCB3ZSBtdXN0IG5ldmVyCi0rCSAgICAgcmVwb3J0ICpBRERS X1Agb3V0c2lkZSBvZiBhbnkgQUREUl9XQVRDSC4uQUREUl9XQVRDSCtMRU4KLSsJICAgICByYW5n ZS4gIEFERFJfV0FUQ0ggPD0gQUREUl9UUkFQIDwgQUREUl9PUklHIGlzIGEgZmFsc2UKLSsJICAg ICBwb3NpdGl2ZSBvbiBrZXJuZWxzIG9sZGVyIHRoYW4gNC4xMC4gIFNlZSBQUgotKwkgICAgIGV4 dGVybmFsLzIwMjA3LiAgKi8KLSsJICByZXR1cm4gYWRkcl9vcmlnOwotKwl9Ci0gICAgIH0KLSAK LSAgIHJldHVybiAoQ09SRV9BRERSKSAwOwotLS0tIC4vZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3 LXBvaW50LmMJMjAxOC0wMS0wNSAwNTowNzoyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9u YXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jCTIwMTgtMDUtMDUgMTc6NTQ6MTQuMTEwMTQ4MTcw ICswMjAwCi1AQCAtMzQsMjkgKzM0LDUyIEBACi0gaW50IGFhcmNoNjRfbnVtX2JwX3JlZ3M7Ci0g aW50IGFhcmNoNjRfbnVtX3dwX3JlZ3M7Ci0gCi0rLyogVHJ1ZSBpZiB0aGlzIGtlcm5lbCBkb2Vz IG5vdCBoYXZlIHRoZSBidWcgZGVzY3JpYmVkIGJ5IFBSCi0rICAgZXh0ZXJuYWwvMjAyMDcgKExp bnV4ID49IDQuMTApLiAgQSBmaXhlZCBrZXJuZWwgc3VwcG9ydHMgYW55Ci0rICAgY29udGlndW91 cyByYW5nZSBvZiBiaXRzIGluIDgtYml0IGJ5dGUgRFJfQ09OVFJPTF9NQVNLLiAgQSBidWdneQot KyAgIGtlcm5lbCBzdXBwb3J0cyBvbmx5IDB4MDEsIDB4MDMsIDB4MGYgYW5kIDB4ZmYuICBXZSBz dGFydCBieQotKyAgIGFzc3VtaW5nIHRoZSBidWcgaXMgZml4ZWQsIGFuZCB0aGVuIGRldGVjdCB0 aGUgYnVnIGF0Ci0rICAgUFRSQUNFX1NFVFJFR1NFVCB0aW1lLiAgKi8KLStzdGF0aWMgYm9vbCBr ZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UgPSB0cnVlOwotKwotKy8qIFJldHVy biBzdGFydGluZyBieXRlIDAuLjcgaW5jbC4gb2YgYSB3YXRjaHBvaW50IGVuY29kZWQgYnkgQ1RS TC4gICovCi0rCi0rdW5zaWduZWQgaW50Ci0rYWFyY2g2NF93YXRjaHBvaW50X29mZnNldCAodW5z aWduZWQgaW50IGN0cmwpCi0rewotKyAgdWludDhfdCBtYXNrID0gRFJfQ09OVFJPTF9NQVNLIChj dHJsKTsKLSsgIHVuc2lnbmVkIHJldHZhbDsKLSsKLSsgIC8qIFNoaWZ0IG91dCBib3R0b20gemVy b3MuICAqLwotKyAgZm9yIChyZXR2YWwgPSAwOyBtYXNrICYmIChtYXNrICYgMSkgPT0gMDsgKyty ZXR2YWwpCi0rICAgIG1hc2sgPj49IDE7Ci0rCi0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSAv KiBVdGlsaXR5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbGVuZ3RoIGluIGJ5dGVzIG9mIGEg d2F0Y2hwb2ludAotICAgIGFjY29yZGluZyB0byB0aGUgY29udGVudCBvZiBhIGhhcmR3YXJlIGRl YnVnIGNvbnRyb2wgcmVnaXN0ZXIgQ1RSTC4KLS0gICBOb3RlIHRoYXQgdGhlIGtlcm5lbCBjdXJy ZW50bHkgb25seSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIEJ5dGUKLS0gICBBZGRyZXNzIFNlbGVj dCAoQkFTKSB2YWx1ZXM6IDB4MSwgMHgzLCAweGYgYW5kIDB4ZmYsIHdoaWNoIG1lYW5zCi0tICAg dGhhdCBmb3IgYSBoYXJkd2FyZSB3YXRjaHBvaW50LCBpdHMgdmFsaWQgbGVuZ3RoIGNhbiBvbmx5 IGJlIDEKLS0gICBieXRlLCAyIGJ5dGVzLCA0IGJ5dGVzIG9yIDggYnl0ZXMuICAqLwotKyAgIEFu eSBjb250aWd1b3VzIHJhbmdlIG9mIGJ5dGVzIGluIENUUkwgaXMgc3VwcG9ydGVkLiAgVGhlIHJl dHVybmVkCi0rICAgdmFsdWUgY2FuIGJlIGJldHdlZW4gMC4uOCAoaW5jbHVzaXZlKS4gICovCi0g Ci0gdW5zaWduZWQgaW50Ci0gYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCAodW5zaWduZWQgaW50 IGN0cmwpCi0gewotLSAgc3dpdGNoIChEUl9DT05UUk9MX0xFTkdUSCAoY3RybCkpCi0tICAgIHsK LS0gICAgY2FzZSAweDAxOgotLSAgICAgIHJldHVybiAxOwotLSAgICBjYXNlIDB4MDM6Ci0tICAg ICAgcmV0dXJuIDI7Ci0tICAgIGNhc2UgMHgwZjoKLS0gICAgICByZXR1cm4gNDsKLS0gICAgY2Fz ZSAweGZmOgotLSAgICAgIHJldHVybiA4OwotLSAgICBkZWZhdWx0OgotLSAgICAgIHJldHVybiAw OwotLSAgICB9Ci0rICB1aW50OF90IG1hc2sgPSBEUl9DT05UUk9MX01BU0sgKGN0cmwpOwotKyAg dW5zaWduZWQgcmV0dmFsOwotKwotKyAgLyogU2hpZnQgb3V0IGJvdHRvbSB6ZXJvcy4gICovCi0r ICBtYXNrID4+PSBhYXJjaDY0X3dhdGNocG9pbnRfb2Zmc2V0IChjdHJsKTsKLSsKLSsgIC8qIENv dW50IGJvdHRvbSBvbmVzLiAgKi8KLSsgIGZvciAocmV0dmFsID0gMDsgKG1hc2sgJiAxKSAhPSAw OyArK3JldHZhbCkKLSsgICAgbWFzayA+Pj0gMTsKLSsKLSsgIGlmIChtYXNrICE9IDApCi0rICAg IGVycm9yIChfKCJVbmV4cGVjdGVkIGhhcmR3YXJlIHdhdGNocG9pbnQgbGVuZ3RoIHJlZ2lzdGVy IHZhbHVlIDB4JXgiKSwKLSsJICAgRFJfQ09OVFJPTF9NQVNLIChjdHJsKSk7Ci0rCi0rICByZXR1 cm4gcmV0dmFsOwotIH0KLSAKLSAvKiBHaXZlbiB0aGUgaGFyZHdhcmUgYnJlYWtwb2ludCBvciB3 YXRjaHBvaW50IHR5cGUgVFlQRSBhbmQgaXRzCi1AQCAtNjQsMTAgKzg3LDEzIEBAIGFhcmNoNjRf d2F0Y2hwb2ludF9sZW5ndGggKHVuc2lnbmVkIGludAotICAgIGJyZWFrcG9pbnQvd2F0Y2hwb2lu dCBjb250cm9sIHJlZ2lzdGVyLiAgKi8KLSAKLSBzdGF0aWMgdW5zaWduZWQgaW50Ci0tYWFyY2g2 NF9wb2ludF9lbmNvZGVfY3RybF9yZWcgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwgaW50 IGxlbikKLSthYXJjaDY0X3BvaW50X2VuY29kZV9jdHJsX3JlZyAoZW51bSB0YXJnZXRfaHdfYnBf dHlwZSB0eXBlLCBpbnQgb2Zmc2V0LCBpbnQgbGVuKQotIHsKLSAgIHVuc2lnbmVkIGludCBjdHJs LCB0dHlwZTsKLSAKLSsgIGdkYl9hc3NlcnQgKG9mZnNldCA9PSAwIHx8IGtlcm5lbF9zdXBwb3J0 c19hbnlfY29udGlndW91c19yYW5nZSk7Ci0rICBnZGJfYXNzZXJ0IChvZmZzZXQgKyBsZW4gPD0g QUFSQ0g2NF9IV1BfTUFYX0xFTl9QRVJfUkVHKTsKLSsKLSAgIC8qIHR5cGUgKi8KLSAgIHN3aXRj aCAodHlwZSkKLSAgICAgewotQEAgLTg5LDggKzExNSw4IEBAIGFhcmNoNjRfcG9pbnRfZW5jb2Rl X2N0cmxfcmVnIChlbnVtIHRhcmcKLSAKLSAgIGN0cmwgPSB0dHlwZSA8PCAzOwotIAotLSAgLyog bGVuZ3RoIGJpdG1hc2sgKi8KLS0gIGN0cmwgfD0gKCgxIDw8IGxlbikgLSAxKSA8PCA1OwotKyAg Lyogb2Zmc2V0IGFuZCBsZW5ndGggYml0bWFzayAqLwotKyAgY3RybCB8PSAoKDEgPDwgbGVuKSAt IDEpIDw8ICg1ICsgb2Zmc2V0KTsKLSAgIC8qIGVuYWJsZWQgYXQgZWwwICovCi0gICBjdHJsIHw9 ICgyIDw8IDEpIHwgMTsKLSAKLUBAIC0xMzQsNTggKzE2MCw2NSBAQCBhYXJjaDY0X3BvaW50X2lz X2FsaWduZWQgKGludCBpc193YXRjaHBvCi0gICBpZiAoYWRkciAmIChhbGlnbm1lbnQgLSAxKSkK LSAgICAgcmV0dXJuIDA7Ci0gCi0tICBpZiAobGVuICE9IDggJiYgbGVuICE9IDQgJiYgbGVuICE9 IDIgJiYgbGVuICE9IDEpCi0rICBpZiAoKCFrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNf cmFuZ2UKLSsgICAgICAgJiYgbGVuICE9IDggJiYgbGVuICE9IDQgJiYgbGVuICE9IDIgJiYgbGVu ICE9IDEpCi0rICAgICAgfHwgKGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5nZQot KwkgICYmIChsZW4gPCAxIHx8IGxlbiA+IDgpKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi0gICByZXR1 cm4gMTsKLSB9Ci0gCi0gLyogR2l2ZW4gdGhlIChwb3RlbnRpYWxseSB1bmFsaWduZWQpIHdhdGNo cG9pbnQgYWRkcmVzcyBpbiBBRERSIGFuZAotLSAgIGxlbmd0aCBpbiBMRU4sIHJldHVybiB0aGUg YWxpZ25lZCBhZGRyZXNzIGFuZCBhbGlnbmVkIGxlbmd0aCBpbgotLSAgICpBTElHTkVEX0FERFJf UCBhbmQgKkFMSUdORURfTEVOX1AsIHJlc3BlY3RpdmVseS4gIFRoZSByZXR1cm5lZAotLSAgIGFs aWduZWQgYWRkcmVzcyBhbmQgbGVuZ3RoIHdpbGwgYmUgdmFsaWQgdmFsdWVzIHRvIHdyaXRlIHRv IHRoZQotLSAgIGhhcmR3YXJlIHdhdGNocG9pbnQgdmFsdWUgYW5kIGNvbnRyb2wgcmVnaXN0ZXJz LgotKyAgIGxlbmd0aCBpbiBMRU4sIHJldHVybiB0aGUgYWxpZ25lZCBhZGRyZXNzLCBvZmZzZXQg ZnJvbSB0aGF0IGJhc2UKLSsgICBhZGRyZXNzLCBhbmQgYWxpZ25lZCBsZW5ndGggaW4gKkFMSUdO RURfQUREUl9QLCAqQUxJR05FRF9PRkZTRVRfUAotKyAgIGFuZCAqQUxJR05FRF9MRU5fUCwgcmVz cGVjdGl2ZWx5LiAgVGhlIHJldHVybmVkIHZhbHVlcyB3aWxsIGJlCi0rICAgdmFsaWQgdmFsdWVz IHRvIHdyaXRlIHRvIHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50IHZhbHVlIGFuZCBjb250cm9sCi0r ICAgcmVnaXN0ZXJzLgotIAotICAgIFRoZSBnaXZlbiB3YXRjaHBvaW50IG1heSBnZXQgdHJ1bmNh dGVkIGlmIG1vcmUgdGhhbiBvbmUgaGFyZHdhcmUKLSAgICByZWdpc3RlciBpcyBuZWVkZWQgdG8g Y292ZXIgdGhlIHdhdGNoZWQgcmVnaW9uLiAgKk5FWFRfQUREUl9QCi0gICAgYW5kICpORVhUX0xF Tl9QLCBpZiBub24tTlVMTCwgd2lsbCByZXR1cm4gdGhlIGFkZHJlc3MgYW5kIGxlbmd0aAotICAg IG9mIHRoZSByZW1haW5pbmcgcGFydCBvZiB0aGUgd2F0Y2hwb2ludCAod2hpY2ggY2FuIGJlIHBy b2Nlc3NlZAotLSAgIGJ5IGNhbGxpbmcgdGhpcyByb3V0aW5lIGFnYWluIHRvIGdlbmVyYXRlIGFu b3RoZXIgYWxpZ25lZCBhZGRyZXNzCi0tICAgYW5kIGxlbmd0aCBwYWlyLgotKyAgIGJ5IGNhbGxp bmcgdGhpcyByb3V0aW5lIGFnYWluIHRvIGdlbmVyYXRlIGFub3RoZXIgYWxpZ25lZCBhZGRyZXNz LAotKyAgIG9mZnNldCBhbmQgbGVuZ3RoIHR1cGxlLgotIAotICAgIEVzc2VudGlhbGx5LCB1bmFs aWduZWQgd2F0Y2hwb2ludCBpcyBhY2hpZXZlZCBieSBtaW5pbWFsbHkKLSAgICBlbmxhcmdpbmcg dGhlIHdhdGNoZWQgYXJlYSB0byBtZWV0IHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnQsIGFuZAot ICAgIGlmIG5lY2Vzc2FyeSwgc3BsaXR0aW5nIHRoZSB3YXRjaHBvaW50IG92ZXIgc2V2ZXJhbCBo YXJkd2FyZQotLSAgIHdhdGNocG9pbnQgcmVnaXN0ZXJzLiAgVGhlIHRyYWRlLW9mZiBpcyB0aGF0 IHRoZXJlIHdpbGwgYmUKLS0gICBmYWxzZS1wb3NpdGl2ZSBoaXRzIGZvciB0aGUgcmVhZC10eXBl IG9yIHRoZSBhY2Nlc3MtdHlwZSBoYXJkd2FyZQotLSAgIHdhdGNocG9pbnRzOyBmb3IgdGhlIHdy aXRlIHR5cGUsIHdoaWNoIGlzIG1vcmUgY29tbW9ubHkgdXNlZCwgdGhlcmUKLS0gICB3aWxsIGJl IG5vIHN1Y2ggaXNzdWVzLCBhcyB0aGUgaGlnaGVyLWxldmVsIGJyZWFrcG9pbnQgbWFuYWdlbWVu dAotLSAgIGluIGdkYiBhbHdheXMgZXhhbWluZXMgdGhlIGV4YWN0IHdhdGNoZWQgcmVnaW9uIGZv ciBhbnkgY29udGVudAotLSAgIGNoYW5nZSwgYW5kIHRyYW5zcGFyZW50bHkgcmVzdW1lcyBhIHRo cmVhZCBmcm9tIGEgd2F0Y2hwb2ludCB0cmFwCi0tICAgaWYgdGhlcmUgaXMgbm8gY2hhbmdlIHRv IHRoZSB3YXRjaGVkIHJlZ2lvbi4KLSsgICB3YXRjaHBvaW50IHJlZ2lzdGVycy4KLSsKLSsgICBP biBrZXJuZWxzIHRoYXQgcHJlZGF0ZSB0aGUgc3VwcG9ydCBmb3IgQnl0ZSBBZGRyZXNzIFNlbGVj dCAoQkFTKQotKyAgIGluIHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50IGNvbnRyb2wgcmVnaXN0ZXIs IHRoZSBvZmZzZXQgZnJvbSB0aGUKLSsgICBiYXNlIGFkZHJlc3MgaXMgYWx3YXlzIHplcm8sIGFu ZCBzbyBpbiB0aGF0IGNhc2UgdGhlIHRyYWRlLW9mZiBpcwotKyAgIHRoYXQgdGhlcmUgd2lsbCBi ZSBmYWxzZS1wb3NpdGl2ZSBoaXRzIGZvciB0aGUgcmVhZC10eXBlIG9yIHRoZQotKyAgIGFjY2Vz cy10eXBlIGhhcmR3YXJlIHdhdGNocG9pbnRzOyBmb3IgdGhlIHdyaXRlIHR5cGUsIHdoaWNoIGlz IG1vcmUKLSsgICBjb21tb25seSB1c2VkLCB0aGVyZSB3aWxsIGJlIG5vIHN1Y2ggaXNzdWVzLCBh cyB0aGUgaGlnaGVyLWxldmVsCi0rICAgYnJlYWtwb2ludCBtYW5hZ2VtZW50IGluIGdkYiBhbHdh eXMgZXhhbWluZXMgdGhlIGV4YWN0IHdhdGNoZWQKLSsgICByZWdpb24gZm9yIGFueSBjb250ZW50 IGNoYW5nZSwgYW5kIHRyYW5zcGFyZW50bHkgcmVzdW1lcyBhIHRocmVhZAotKyAgIGZyb20gYSB3 YXRjaHBvaW50IHRyYXAgaWYgdGhlcmUgaXMgbm8gY2hhbmdlIHRvIHRoZSB3YXRjaGVkIHJlZ2lv bi4KLSAKLSAgICBBbm90aGVyIGxpbWl0YXRpb24gaXMgdGhhdCBiZWNhdXNlIHRoZSB3YXRjaGVk IHJlZ2lvbiBpcyBlbmxhcmdlZCwKLS0gICB0aGUgd2F0Y2hwb2ludCBmYXVsdCBhZGRyZXNzIHJl dHVybmVkIGJ5Ci0rICAgdGhlIHdhdGNocG9pbnQgZmF1bHQgYWRkcmVzcyBkaXNjb3ZlcmVkIGJ5 Ci0gICAgYWFyY2g2NF9zdG9wcGVkX2RhdGFfYWRkcmVzcyBtYXkgYmUgb3V0c2lkZSBvZiB0aGUg b3JpZ2luYWwgd2F0Y2hlZAotICAgIHJlZ2lvbiwgZXNwZWNpYWxseSB3aGVuIHRoZSB0cmlnZ2Vy aW5nIGluc3RydWN0aW9uIGlzIGFjY2Vzc2luZyBhCi0gICAgbGFyZ2VyIHJlZ2lvbi4gIFdoZW4g dGhlIGZhdWx0IGFkZHJlc3MgaXMgbm90IHdpdGhpbiBhbnkga25vd24KLSAgICByYW5nZSwgd2F0 Y2hwb2ludHNfdHJpZ2dlcmVkIGluIGdkYiB3aWxsIGdldCBjb25mdXNlZCwgYXMgdGhlCi0gICAg aGlnaGVyLWxldmVsIHdhdGNocG9pbnQgbWFuYWdlbWVudCBpcyBvbmx5IGF3YXJlIG9mIG9yaWdp bmFsCi0gICAgd2F0Y2hlZCByZWdpb25zLCBhbmQgd2lsbCB0aGluayB0aGF0IHNvbWUgdW5rbm93 biB3YXRjaHBvaW50IGhhcwotLSAgIGJlZW4gdHJpZ2dlcmVkLiAgSW4gc3VjaCBhIGNhc2UsIGdk YiBtYXkgc3RvcCB3aXRob3V0IGRpc3BsYXlpbmcKLS0gICBhbnkgZGV0YWlsZWQgaW5mb3JtYXRp b24uCi0tCi0tICAgT25jZSB0aGUga2VybmVsIHByb3ZpZGVzIHRoZSBmdWxsIHN1cHBvcnQgZm9y IEJ5dGUgQWRkcmVzcyBTZWxlY3QKLS0gICAoQkFTKSBpbiB0aGUgaGFyZHdhcmUgd2F0Y2hwb2lu dCBjb250cm9sIHJlZ2lzdGVyLCB0aGVzZQotLSAgIGxpbWl0YXRpb25zIGNhbiBiZSBsYXJnZWx5 IHJlbGF4ZWQgd2l0aCBzb21lIGZ1cnRoZXIgd29yay4gICovCi0rICAgYmVlbiB0cmlnZ2VyZWQu ICBUbyBwcmV2ZW50IHN1Y2ggYSBjYXNlLAotKyAgIGFhcmNoNjRfc3RvcHBlZF9kYXRhX2FkZHJl c3MgaW1wbGVtZW50YXRpb25zIGluIGdkYiBhbmQgZ2Ric2VydmVyCi0rICAgdHJ5IHRvIG1hdGNo IHRoZSB0cmFwcGVkIGFkZHJlc3Mgd2l0aCBhIHdhdGNoZWQgcmVnaW9uLCBhbmQgcmV0dXJuCi0r ICAgYW4gYWRkcmVzcyB3aXRoaW4gdGhlIGxhdHRlci4gKi8KLSAKLSBzdGF0aWMgdm9pZAotIGFh cmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIENPUkVfQURE UiAqYWxpZ25lZF9hZGRyX3AsCi0tCQkJICBpbnQgKmFsaWduZWRfbGVuX3AsIENPUkVfQUREUiAq bmV4dF9hZGRyX3AsCi0tCQkJICBpbnQgKm5leHRfbGVuX3ApCi0rCQkJICBpbnQgKmFsaWduZWRf b2Zmc2V0X3AsIGludCAqYWxpZ25lZF9sZW5fcCwKLSsJCQkgIENPUkVfQUREUiAqbmV4dF9hZGRy X3AsIGludCAqbmV4dF9sZW5fcCwKLSsJCQkgIENPUkVfQUREUiAqbmV4dF9hZGRyX29yaWdfcCkK LSB7Ci0gICBpbnQgYWxpZ25lZF9sZW47Ci0tICB1bnNpZ25lZCBpbnQgb2Zmc2V0OwotKyAgdW5z aWduZWQgaW50IG9mZnNldCwgYWxpZ25lZF9vZmZzZXQ7Ci0gICBDT1JFX0FERFIgYWxpZ25lZF9h ZGRyOwotICAgY29uc3QgdW5zaWduZWQgaW50IGFsaWdubWVudCA9IEFBUkNINjRfSFdQX0FMSUdO TUVOVDsKLSAgIGNvbnN0IHVuc2lnbmVkIGludCBtYXhfd3BfbGVuID0gQUFSQ0g2NF9IV1BfTUFY X0xFTl9QRVJfUkVHOwotQEAgLTE5NiwxMCArMjI5LDEyIEBAIGFhcmNoNjRfYWxpZ25fd2F0Y2hw b2ludCAoQ09SRV9BRERSIGFkZHIKLSAgIGlmIChsZW4gPD0gMCkKLSAgICAgcmV0dXJuOwotIAot LSAgLyogQWRkcmVzcyB0byBiZSBwdXQgaW50byB0aGUgaGFyZHdhcmUgd2F0Y2hwb2ludCB2YWx1 ZSByZWdpc3RlcgotLSAgICAgbXVzdCBiZSBhbGlnbmVkLiAgKi8KLSsgIC8qIFRoZSBhZGRyZXNz IHB1dCBpbnRvIHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50IHZhbHVlIHJlZ2lzdGVyIG11c3QKLSsg ICAgIGJlIGFsaWduZWQuICAqLwotICAgb2Zmc2V0ID0gYWRkciAmIChhbGlnbm1lbnQgLSAxKTsK LSAgIGFsaWduZWRfYWRkciA9IGFkZHIgLSBvZmZzZXQ7Ci0rICBhbGlnbmVkX29mZnNldAotKyAg ICA9IGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5nZSA/IGFkZHIgJiAoYWxpZ25t ZW50IC0gMSkgOiAwOwotIAotICAgZ2RiX2Fzc2VydCAob2Zmc2V0ID49IDAgJiYgb2Zmc2V0IDwg YWxpZ25tZW50KTsKLSAgIGdkYl9hc3NlcnQgKGFsaWduZWRfYWRkciA+PSAwICYmIGFsaWduZWRf YWRkciA8PSBhZGRyKTsKLUBAIC0yMDcsOSArMjQyLDEwIEBAIGFhcmNoNjRfYWxpZ25fd2F0Y2hw b2ludCAoQ09SRV9BRERSIGFkZHIKLSAKLSAgIGlmIChvZmZzZXQgKyBsZW4gPj0gbWF4X3dwX2xl bikKLSAgICAgewotLSAgICAgIC8qIE5lZWQgbW9yZSB0aGFuIG9uZSB3YXRjaHBvaW50IHJlZ2lz dGVyczsgdHJ1bmNhdGUgaXQgYXQgdGhlCi0rICAgICAgLyogTmVlZCBtb3JlIHRoYW4gb25lIHdh dGNocG9pbnQgcmVnaXN0ZXI7IHRydW5jYXRlIGF0IHRoZQotIAkgYWxpZ25tZW50IGJvdW5kYXJ5 LiAgKi8KLS0gICAgICBhbGlnbmVkX2xlbiA9IG1heF93cF9sZW47Ci0rICAgICAgYWxpZ25lZF9s ZW4KLSsJPSBtYXhfd3BfbGVuIC0gKGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5n ZSA/IG9mZnNldCA6IDApOwotICAgICAgIGxlbiAtPSAobWF4X3dwX2xlbiAtIG9mZnNldCk7Ci0g ICAgICAgYWRkciArPSAobWF4X3dwX2xlbiAtIG9mZnNldCk7Ci0gICAgICAgZ2RiX2Fzc2VydCAo KGFkZHIgJiAoYWxpZ25tZW50IC0gMSkpID09IDApOwotQEAgLTIyMiwxOSArMjU4LDI0IEBAIGFh cmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIKLSAJYWxpZ25lZF9sZW5fYXJy YXlbQUFSQ0g2NF9IV1BfTUFYX0xFTl9QRVJfUkVHXSA9Ci0gCXsgMSwgMiwgNCwgNCwgOCwgOCwg OCwgOCB9OwotIAotLSAgICAgIGFsaWduZWRfbGVuID0gYWxpZ25lZF9sZW5fYXJyYXlbb2Zmc2V0 ICsgbGVuIC0gMV07Ci0rICAgICAgYWxpZ25lZF9sZW4gPSAoa2VybmVsX3N1cHBvcnRzX2FueV9j b250aWd1b3VzX3JhbmdlCi0rCQkgICAgID8gbGVuIDogYWxpZ25lZF9sZW5fYXJyYXlbb2Zmc2V0 ICsgbGVuIC0gMV0pOwotICAgICAgIGFkZHIgKz0gbGVuOwotICAgICAgIGxlbiA9IDA7Ci0gICAg IH0KLSAKLSAgIGlmIChhbGlnbmVkX2FkZHJfcCkKLSAgICAgKmFsaWduZWRfYWRkcl9wID0gYWxp Z25lZF9hZGRyOwotKyAgaWYgKGFsaWduZWRfb2Zmc2V0X3ApCi0rICAgICphbGlnbmVkX29mZnNl dF9wID0gYWxpZ25lZF9vZmZzZXQ7Ci0gICBpZiAoYWxpZ25lZF9sZW5fcCkKLSAgICAgKmFsaWdu ZWRfbGVuX3AgPSBhbGlnbmVkX2xlbjsKLSAgIGlmIChuZXh0X2FkZHJfcCkKLSAgICAgKm5leHRf YWRkcl9wID0gYWRkcjsKLSAgIGlmIChuZXh0X2xlbl9wKQotICAgICAqbmV4dF9sZW5fcCA9IGxl bjsKLSsgIGlmIChuZXh0X2FkZHJfb3JpZ19wKQotKyAgICAqbmV4dF9hZGRyX29yaWdfcCA9IGFs aWduX2Rvd24gKCpuZXh0X2FkZHJfb3JpZ19wICsgYWxpZ25tZW50LCBhbGlnbm1lbnQpOwotIH0K LSAKLSBzdHJ1Y3QgYWFyY2g2NF9kcl91cGRhdGVfY2FsbGJhY2tfcGFyYW0KLUBAIC0zMjQsMTcg KzM2NSw3MyBAQCBhYXJjaDY0X25vdGlmeV9kZWJ1Z19yZWdfY2hhbmdlIChjb25zdCBzCi0gICBp dGVyYXRlX292ZXJfbHdwcyAocGlkX3B0aWQsIGRlYnVnX3JlZ19jaGFuZ2VfY2FsbGJhY2ssICh2 b2lkICopICZwYXJhbSk7Ci0gfQotIAotKy8qIFJlY29uZmlndXJlIFNUQVRFIHRvIGJlIGNvbXBh dGlibGUgd2l0aCBMaW51eCBrZXJuZWxzIHdpdGggdGhlIFBSCi0rICAgZXh0ZXJuYWwvMjAyMDcg YnVnLiAgVGhpcyBpcyBjYWxsZWQgd2hlbgotKyAgIEtFUk5FTF9TVVBQT1JUU19BTllfQ09OVElH VU9VU19SQU5HRSB0cmFuc2l0aW9ucyB0byBmYWxzZS4gIE5vdGUgd2UKLSsgICBkb24ndCB0cnkg dG8gc3VwcG9ydCBjb21iaW5pbmcgd2F0Y2hwb2ludHMgd2l0aCBtYXRjaGluZyAoYW5kIHRodXMK LSsgICBzaGFyZWQpIG1hc2tzLCBhcyBpdCdzIHRvbyBsYXRlIHdoZW4gd2UgZ2V0IGhlcmUuICBP biBidWdneQotKyAgIGtlcm5lbHMsIEdEQiB3aWxsIHRyeSB0byBmaXJzdCBzZXR1cCB0aGUgcGVy ZmVjdCBtYXRjaGluZyByYW5nZXMsCi0rICAgd2hpY2ggd2lsbCBydW4gb3V0IG9mIHJlZ2lzdGVy cyBiZWZvcmUgdGhpcyBmdW5jdGlvbiBjYW4gbWVyZ2UKLSsgICB0aGVtLiAgSXQgZG9lc24ndCBs b29rIGxpa2Ugd29ydGggdGhlIGVmZm9ydCB0byBpbXByb3ZlIHRoYXQsIGdpdmVuCi0rICAgZXZl bnR1YWxseSBidWdneSBrZXJuZWxzIHdpbGwgYmUgcGhhc2VkIG91dC4gICovCi0rCi0rc3RhdGlj IHZvaWQKLSthYXJjaDY0X2Rvd25ncmFkZV9yZWdzIChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdf c3RhdGUgKnN0YXRlKQotK3sKLSsgIGZvciAoaW50IGkgPSAwOyBpIDwgYWFyY2g2NF9udW1fd3Bf cmVnczsgKytpKQotKyAgICBpZiAoKHN0YXRlLT5kcl9jdHJsX3dwW2ldICYgMSkgIT0gMCkKLSsg ICAgICB7Ci0rCWdkYl9hc3NlcnQgKHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0gIT0gMCk7Ci0r CXVpbnQ4X3QgbWFza19vcmlnID0gKHN0YXRlLT5kcl9jdHJsX3dwW2ldID4+IDUpICYgMHhmZjsK LSsJZ2RiX2Fzc2VydCAobWFza19vcmlnICE9IDApOwotKwlzdGF0aWMgY29uc3QgdWludDhfdCBv bGRfdmFsaWRbXSA9IHsgMHgwMSwgMHgwMywgMHgwZiwgMHhmZiB9OwotKwl1aW50OF90IG1hc2sg PSAwOwotKwlmb3IgKGNvbnN0IHVpbnQ4X3Qgb2xkX21hc2sgOiBvbGRfdmFsaWQpCi0rCSAgaWYg KG1hc2tfb3JpZyA8PSBvbGRfbWFzaykKLSsJICAgIHsKLSsJICAgICAgbWFzayA9IG9sZF9tYXNr OwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJZ2RiX2Fzc2VydCAobWFzayAhPSAwKTsKLSsK LSsJLyogTm8gdXBkYXRlIG5lZWRlZCBmb3IgdGhpcyB3YXRjaHBvaW50PyAgKi8KLSsJaWYgKG1h c2sgPT0gbWFza19vcmlnKQotKwkgIGNvbnRpbnVlOwotKwlzdGF0ZS0+ZHJfY3RybF93cFtpXSB8 PSBtYXNrIDw8IDU7Ci0rCXN0YXRlLT5kcl9hZGRyX3dwW2ldCi0rCSAgPSBhbGlnbl9kb3duIChz dGF0ZS0+ZHJfYWRkcl93cFtpXSwgQUFSQ0g2NF9IV1BfQUxJR05NRU5UKTsKLSsKLSsJLyogVHJ5 IHRvIG1hdGNoIGR1cGxpY2F0ZSBlbnRyaWVzLiAgKi8KLSsJZm9yIChpbnQgaiA9IDA7IGogPCBp OyArK2opCi0rCSAgaWYgKChzdGF0ZS0+ZHJfY3RybF93cFtqXSAmIDEpICE9IDAKLSsJICAgICAg JiYgc3RhdGUtPmRyX2FkZHJfd3Bbal0gPT0gc3RhdGUtPmRyX2FkZHJfd3BbaV0KLSsJICAgICAg JiYgc3RhdGUtPmRyX2FkZHJfb3JpZ193cFtqXSA9PSBzdGF0ZS0+ZHJfYWRkcl9vcmlnX3dwW2ld Ci0rCSAgICAgICYmIHN0YXRlLT5kcl9jdHJsX3dwW2pdID09IHN0YXRlLT5kcl9jdHJsX3dwW2ld KQotKwkgICAgewotKwkgICAgICBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2pdICs9IHN0YXRlLT5k cl9yZWZfY291bnRfd3BbaV07Ci0rCSAgICAgIHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0gPSAw OwotKwkgICAgICBzdGF0ZS0+ZHJfYWRkcl93cFtpXSA9IDA7Ci0rCSAgICAgIHN0YXRlLT5kcl9h ZGRyX29yaWdfd3BbaV0gPSAwOwotKwkgICAgICBzdGF0ZS0+ZHJfY3RybF93cFtpXSAmPSB+MTsK LSsJICAgICAgYnJlYWs7Ci0rCSAgICB9Ci0rCi0rCWFhcmNoNjRfbm90aWZ5X2RlYnVnX3JlZ19j aGFuZ2UgKHN0YXRlLCAxIC8qIGlzX3dhdGNocG9pbnQgKi8sIGkpOwotKyAgICAgIH0KLSt9Ci0r Ci0gLyogUmVjb3JkIHRoZSBpbnNlcnRpb24gb2Ygb25lIGJyZWFrcG9pbnQvd2F0Y2hwb2ludCwg YXMgcmVwcmVzZW50ZWQKLSAgICBieSBBRERSIGFuZCBDVFJMLCBpbiB0aGUgcHJvY2VzcycgYXJj aC1zcGVjaWZpYyBkYXRhIGFyZWEgKlNUQVRFLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0gYWFyY2g2 NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50IChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3Rh dGUgKnN0YXRlLAotIAkJCQkgICBlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsCi0tCQkJCSAg IENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQotKwkJCQkgICBDT1JFX0FERFIgYWRkciwgaW50IG9m ZnNldCwgaW50IGxlbiwKLSsJCQkJICAgQ09SRV9BRERSIGFkZHJfb3JpZykKLSB7Ci0gICBpbnQg aSwgaWR4LCBudW1fcmVncywgaXNfd2F0Y2hwb2ludDsKLSAgIHVuc2lnbmVkIGludCBjdHJsLCAq ZHJfY3RybF9wLCAqZHJfcmVmX2NvdW50OwotLSAgQ09SRV9BRERSICpkcl9hZGRyX3A7Ci0rICBD T1JFX0FERFIgKmRyX2FkZHJfcCwgKmRyX2FkZHJfb3JpZ19wOwotIAotICAgLyogU2V0IHVwIHN0 YXRlIHBvaW50ZXJzLiAgKi8KLSAgIGlzX3dhdGNocG9pbnQgPSAodHlwZSAhPSBod19leGVjdXRl KTsKLUBAIC0zNDMsNiArNDQwLDcgQEAgYWFyY2g2NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50 IChzdHJ1YwotICAgICB7Ci0gICAgICAgbnVtX3JlZ3MgPSBhYXJjaDY0X251bV93cF9yZWdzOwot ICAgICAgIGRyX2FkZHJfcCA9IHN0YXRlLT5kcl9hZGRyX3dwOwotKyAgICAgIGRyX2FkZHJfb3Jp Z19wID0gc3RhdGUtPmRyX2FkZHJfb3JpZ193cDsKLSAgICAgICBkcl9jdHJsX3AgPSBzdGF0ZS0+ ZHJfY3RybF93cDsKLSAgICAgICBkcl9yZWZfY291bnQgPSBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dw OwotICAgICB9Ci1AQCAtMzUwLDExICs0NDgsMTIgQEAgYWFyY2g2NF9kcl9zdGF0ZV9pbnNlcnRf b25lX3BvaW50IChzdHJ1YwotICAgICB7Ci0gICAgICAgbnVtX3JlZ3MgPSBhYXJjaDY0X251bV9i cF9yZWdzOwotICAgICAgIGRyX2FkZHJfcCA9IHN0YXRlLT5kcl9hZGRyX2JwOwotKyAgICAgIGRy X2FkZHJfb3JpZ19wID0gbnVsbHB0cjsKLSAgICAgICBkcl9jdHJsX3AgPSBzdGF0ZS0+ZHJfY3Ry bF9icDsKLSAgICAgICBkcl9yZWZfY291bnQgPSBzdGF0ZS0+ZHJfcmVmX2NvdW50X2JwOwotICAg ICB9Ci0gCi0tICBjdHJsID0gYWFyY2g2NF9wb2ludF9lbmNvZGVfY3RybF9yZWcgKHR5cGUsIGxl bik7Ci0rICBjdHJsID0gYWFyY2g2NF9wb2ludF9lbmNvZGVfY3RybF9yZWcgKHR5cGUsIG9mZnNl dCwgbGVuKTsKLSAKLSAgIC8qIEZpbmQgYW4gZXhpc3Rpbmcgb3IgZnJlZSByZWdpc3RlciBpbiBv dXIgY2FjaGUuICAqLwotICAgaWR4ID0gLTE7Ci1AQCAtMzY2LDcgKzQ2NSw5IEBAIGFhcmNoNjRf ZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWMKLSAJICBpZHggPSBpOwotIAkgIC8qIG5v IGJyZWFrOyBjb250aW51ZSBodW50aW5nIGZvciBhbiBleGlzaW5nIG9uZS4gICovCi0gCX0KLS0g ICAgICBlbHNlIGlmIChkcl9hZGRyX3BbaV0gPT0gYWRkciAmJiBkcl9jdHJsX3BbaV0gPT0gY3Ry bCkKLSsgICAgICBlbHNlIGlmIChkcl9hZGRyX3BbaV0gPT0gYWRkcgotKwkgICAgICAgJiYgKGRy X2FkZHJfb3JpZ19wID09IG51bGxwdHIgfHwgZHJfYWRkcl9vcmlnX3BbaV0gPT0gYWRkcl9vcmln KQotKwkgICAgICAgJiYgZHJfY3RybF9wW2ldID09IGN0cmwpCi0gCXsKLSAJICBnZGJfYXNzZXJ0 IChkcl9yZWZfY291bnRbaV0gIT0gMCk7Ci0gCSAgaWR4ID0gaTsKLUBAIC0zODMsNiArNDg0LDgg QEAgYWFyY2g2NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50IChzdHJ1YwotICAgICB7Ci0gICAg ICAgLyogbmV3IGVudHJ5ICovCi0gICAgICAgZHJfYWRkcl9wW2lkeF0gPSBhZGRyOwotKyAgICAg IGlmIChkcl9hZGRyX29yaWdfcCAhPSBudWxscHRyKQotKwlkcl9hZGRyX29yaWdfcFtpZHhdID0g YWRkcl9vcmlnOwotICAgICAgIGRyX2N0cmxfcFtpZHhdID0gY3RybDsKLSAgICAgICBkcl9yZWZf Y291bnRbaWR4XSA9IDE7Ci0gICAgICAgLyogTm90aWZ5IHRoZSBjaGFuZ2UuICAqLwotQEAgLTQw MywxMSArNTA2LDEyIEBAIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWMK LSBzdGF0aWMgaW50Ci0gYWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdHJ1Y3Qg YWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAotIAkJCQkgICBlbnVtIHRhcmdldF9od19i cF90eXBlIHR5cGUsCi0tCQkJCSAgIENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQotKwkJCQkgICBD T1JFX0FERFIgYWRkciwgaW50IG9mZnNldCwgaW50IGxlbiwKLSsJCQkJICAgQ09SRV9BRERSIGFk ZHJfb3JpZykKLSB7Ci0gICBpbnQgaSwgbnVtX3JlZ3MsIGlzX3dhdGNocG9pbnQ7Ci0gICB1bnNp Z25lZCBpbnQgY3RybCwgKmRyX2N0cmxfcCwgKmRyX3JlZl9jb3VudDsKLS0gIENPUkVfQUREUiAq ZHJfYWRkcl9wOwotKyAgQ09SRV9BRERSICpkcl9hZGRyX3AsICpkcl9hZGRyX29yaWdfcDsKLSAK LSAgIC8qIFNldCB1cCBzdGF0ZSBwb2ludGVycy4gICovCi0gICBpc193YXRjaHBvaW50ID0gKHR5 cGUgIT0gaHdfZXhlY3V0ZSk7Ci1AQCAtNDE1LDYgKzUxOSw3IEBAIGFhcmNoNjRfZHJfc3RhdGVf cmVtb3ZlX29uZV9wb2ludCAoc3RydWMKLSAgICAgewotICAgICAgIG51bV9yZWdzID0gYWFyY2g2 NF9udW1fd3BfcmVnczsKLSAgICAgICBkcl9hZGRyX3AgPSBzdGF0ZS0+ZHJfYWRkcl93cDsKLSsg ICAgICBkcl9hZGRyX29yaWdfcCA9IHN0YXRlLT5kcl9hZGRyX29yaWdfd3A7Ci0gICAgICAgZHJf Y3RybF9wID0gc3RhdGUtPmRyX2N0cmxfd3A7Ci0gICAgICAgZHJfcmVmX2NvdW50ID0gc3RhdGUt PmRyX3JlZl9jb3VudF93cDsKLSAgICAgfQotQEAgLTQyMiwxNSArNTI3LDE4IEBAIGFhcmNoNjRf ZHJfc3RhdGVfcmVtb3ZlX29uZV9wb2ludCAoc3RydWMKLSAgICAgewotICAgICAgIG51bV9yZWdz ID0gYWFyY2g2NF9udW1fYnBfcmVnczsKLSAgICAgICBkcl9hZGRyX3AgPSBzdGF0ZS0+ZHJfYWRk cl9icDsKLSsgICAgICBkcl9hZGRyX29yaWdfcCA9IG51bGxwdHI7Ci0gICAgICAgZHJfY3RybF9w ID0gc3RhdGUtPmRyX2N0cmxfYnA7Ci0gICAgICAgZHJfcmVmX2NvdW50ID0gc3RhdGUtPmRyX3Jl Zl9jb3VudF9icDsKLSAgICAgfQotIAotLSAgY3RybCA9IGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0 cmxfcmVnICh0eXBlLCBsZW4pOwotKyAgY3RybCA9IGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0cmxf cmVnICh0eXBlLCBvZmZzZXQsIGxlbik7Ci0gCi0gICAvKiBGaW5kIHRoZSBlbnRyeSB0aGF0IG1h dGNoZXMgdGhlIEFERFIgYW5kIENUUkwuICAqLwotICAgZm9yIChpID0gMDsgaSA8IG51bV9yZWdz OyArK2kpCi0tICAgIGlmIChkcl9hZGRyX3BbaV0gPT0gYWRkciAmJiBkcl9jdHJsX3BbaV0gPT0g Y3RybCkKLSsgICAgaWYgKGRyX2FkZHJfcFtpXSA9PSBhZGRyCi0rCSYmIChkcl9hZGRyX29yaWdf cCA9PSBudWxscHRyIHx8IGRyX2FkZHJfb3JpZ19wW2ldID09IGFkZHJfb3JpZykKLSsJJiYgZHJf Y3RybF9wW2ldID09IGN0cmwpCi0gICAgICAgewotIAlnZGJfYXNzZXJ0IChkcl9yZWZfY291bnRb aV0gIT0gMCk7Ci0gCWJyZWFrOwotQEAgLTQ0Niw2ICs1NTQsOCBAQCBhYXJjaDY0X2RyX3N0YXRl X3JlbW92ZV9vbmVfcG9pbnQgKHN0cnVjCi0gICAgICAgLyogQ2xlYXIgdGhlIGVuYWJsZSBiaXQu ICAqLwotICAgICAgIGN0cmwgJj0gfjE7Ci0gICAgICAgZHJfYWRkcl9wW2ldID0gMDsKLSsgICAg ICBpZiAoZHJfYWRkcl9vcmlnX3AgIT0gbnVsbHB0cikKLSsJZHJfYWRkcl9vcmlnX3BbaV0gPSAw OwotICAgICAgIGRyX2N0cmxfcFtpXSA9IGN0cmw7Ci0gICAgICAgLyogTm90aWZ5IHRoZSBjaGFu Z2UuICAqLwotICAgICAgIGFhcmNoNjRfbm90aWZ5X2RlYnVnX3JlZ19jaGFuZ2UgKHN0YXRlLCBp c193YXRjaHBvaW50LCBpKTsKLUBAIC00NzIsMTAgKzU4MiwxMCBAQCBhYXJjaDY0X2hhbmRsZV9i cmVha3BvaW50IChlbnVtIHRhcmdldF9oCi0gICAgICAgaWYgKCFhYXJjaDY0X3BvaW50X2lzX2Fs aWduZWQgKDAgLyogaXNfd2F0Y2hwb2ludCAqLyAsIGFkZHIsIGxlbikpCi0gCXJldHVybiAtMTsK LSAKLS0gICAgICByZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50IChzdGF0 ZSwgdHlwZSwgYWRkciwgbGVuKTsKLSsgICAgICByZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9pbnNl cnRfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWRkciwgMCwgbGVuLCAtMSk7Ci0gICAgIH0KLSAg IGVsc2UKLS0gICAgcmV0dXJuIGFhcmNoNjRfZHJfc3RhdGVfcmVtb3ZlX29uZV9wb2ludCAoc3Rh dGUsIHR5cGUsIGFkZHIsIGxlbik7Ci0rICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX3JlbW92 ZV9vbmVfcG9pbnQgKHN0YXRlLCB0eXBlLCBhZGRyLCAwLCBsZW4sIC0xKTsKLSB9Ci0gCi0gLyog VGhpcyBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyBhYXJjaDY0X2hhbmRsZV9icmVha3BvaW50 LCBhcGFydAotQEAgLTQ4Nyw5ICs1OTcsOSBAQCBhYXJjaDY0X2hhbmRsZV9hbGlnbmVkX3dhdGNo cG9pbnQgKGVudW0KLSAJCQkJICAgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0 ZSkKLSB7Ci0gICBpZiAoaXNfaW5zZXJ0KQotLSAgICByZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9p bnNlcnRfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWRkciwgbGVuKTsKLSsgICAgcmV0dXJuIGFh cmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFkZHIsIDAsIGxl biwgYWRkcik7Ci0gICBlbHNlCi0tICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9v bmVfcG9pbnQgKHN0YXRlLCB0eXBlLCBhZGRyLCBsZW4pOwotKyAgICByZXR1cm4gYWFyY2g2NF9k cl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWRkciwgMCwgbGVuLCBhZGRy KTsKLSB9Ci0gCi0gLyogSW5zZXJ0L3JlbW92ZSB1bmFsaWduZWQgd2F0Y2hwb2ludCBieSBjYWxs aW5nCi1AQCAtNTA0LDI5ICs2MTQsNDIgQEAgYWFyY2g2NF9oYW5kbGVfdW5hbGlnbmVkX3dhdGNo cG9pbnQgKGVudQotIAkJCQkgICAgIENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgaXNfaW5z ZXJ0LAotIAkJCQkgICAgIHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUpCi0g ewotKyAgQ09SRV9BRERSIGFkZHJfb3JpZyA9IGFkZHI7Ci0rCi0gICB3aGlsZSAobGVuID4gMCkK LSAgICAgewotICAgICAgIENPUkVfQUREUiBhbGlnbmVkX2FkZHI7Ci0tICAgICAgaW50IGFsaWdu ZWRfbGVuLCByZXQ7Ci0rICAgICAgaW50IGFsaWduZWRfb2Zmc2V0LCBhbGlnbmVkX2xlbiwgcmV0 OwotKyAgICAgIENPUkVfQUREUiBhZGRyX29yaWdfbmV4dCA9IGFkZHJfb3JpZzsKLSAKLS0gICAg ICBhYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgJmFsaWduZWRfYWRkciwgJmFs aWduZWRfbGVuLAotLQkJCQkmYWRkciwgJmxlbik7Ci0rICAgICAgYWFyY2g2NF9hbGlnbl93YXRj aHBvaW50IChhZGRyLCBsZW4sICZhbGlnbmVkX2FkZHIsICZhbGlnbmVkX29mZnNldCwKLSsJCQkJ JmFsaWduZWRfbGVuLCAmYWRkciwgJmxlbiwgJmFkZHJfb3JpZ19uZXh0KTsKLSAKLSAgICAgICBp ZiAoaXNfaW5zZXJ0KQotIAlyZXQgPSBhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9pbnQg KHN0YXRlLCB0eXBlLCBhbGlnbmVkX2FkZHIsCi0tCQkJCQkJIGFsaWduZWRfbGVuKTsKLSsJCQkJ CQkgYWxpZ25lZF9vZmZzZXQsCi0rCQkJCQkJIGFsaWduZWRfbGVuLCBhZGRyX29yaWcpOwotICAg ICAgIGVsc2UKLSAJcmV0ID0gYWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdGF0 ZSwgdHlwZSwgYWxpZ25lZF9hZGRyLAotLQkJCQkJCSBhbGlnbmVkX2xlbik7Ci0rCQkJCQkJIGFs aWduZWRfb2Zmc2V0LAotKwkJCQkJCSBhbGlnbmVkX2xlbiwgYWRkcl9vcmlnKTsKLSAKLSAgICAg ICBpZiAoc2hvd19kZWJ1Z19yZWdzKQotIAlkZWJ1Z19wcmludGYgKCJoYW5kbGVfdW5hbGlnbmVk X3dhdGNocG9pbnQ6IGlzX2luc2VydDogJWRcbiIKLSAJCSAgICAgICIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIKLSAJCSAgICAgICJhbGlnbmVkX2FkZHI6ICVzLCBhbGlnbmVkX2xlbjog JWRcbiIKLSAJCSAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLS0JCSAg ICAgICJuZXh0X2FkZHI6ICVzLCAgICBuZXh0X2xlbjogJWRcbiIsCi0rCQkgICAgICAiYWRkcl9v cmlnOiAlc1xuIgotKwkJICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgot KwkJICAgICAgIm5leHRfYWRkcjogJXMsICAgIG5leHRfbGVuOiAlZFxuIgotKwkJICAgICAgIiAg ICAgICAgICAgICAgICAgICAgICAgICAgICIKLSsJCSAgICAgICJhZGRyX29yaWdfbmV4dDogJXNc biIsCi0gCQkgICAgICBpc19pbnNlcnQsIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFsaWduZWRf YWRkciksCi0tCQkgICAgICBhbGlnbmVkX2xlbiwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoYWRk ciksIGxlbik7Ci0rCQkgICAgICBhbGlnbmVkX2xlbiwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAo YWRkcl9vcmlnKSwKLSsJCSAgICAgIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHIpLCBsZW4s Ci0rCQkgICAgICBjb3JlX2FkZHJfdG9fc3RyaW5nX256IChhZGRyX29yaWdfbmV4dCkpOwotKwot KyAgICAgIGFkZHJfb3JpZyA9IGFkZHJfb3JpZ19uZXh0OwotIAotICAgICAgIGlmIChyZXQgIT0g MCkKLSAJcmV0dXJuIHJldDsKLUBAIC01NTIsNyArNjc1LDcgQEAgYWFyY2g2NF9oYW5kbGVfd2F0 Y2hwb2ludCAoZW51bSB0YXJnZXRfaAotICAgIHJlZ2lzdGVycyB3aXRoIGRhdGEgZnJvbSAqU1RB VEUuICAqLwotIAotIHZvaWQKLS1hYXJjaDY0X2xpbnV4X3NldF9kZWJ1Z19yZWdzIChjb25zdCBz dHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAotK2FhcmNoNjRfbGludXhfc2V0 X2RlYnVnX3JlZ3MgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCi0gCQkJ ICAgICAgaW50IHRpZCwgaW50IHdhdGNocG9pbnQpCi0gewotICAgaW50IGksIGNvdW50OwotQEAg LTU4MCw3ICs3MDMsMTggQEAgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoY29uc3Qgc3Ry dQotICAgaWYgKHB0cmFjZSAoUFRSQUNFX1NFVFJFR1NFVCwgdGlkLAotIAkgICAgICB3YXRjaHBv aW50ID8gTlRfQVJNX0hXX1dBVENIIDogTlRfQVJNX0hXX0JSRUFLLAotIAkgICAgICAodm9pZCAq KSAmaW92KSkKLS0gICAgZXJyb3IgKF8oIlVuZXhwZWN0ZWQgZXJyb3Igc2V0dGluZyBoYXJkd2Fy ZSBkZWJ1ZyByZWdpc3RlcnMiKSk7Ci0rICAgIHsKLSsgICAgICAvKiBIYW5kbGUgTGludXgga2Vy bmVscyB3aXRoIHRoZSBQUiBleHRlcm5hbC8yMDIwNyBidWcuICAqLwotKyAgICAgIGlmICh3YXRj aHBvaW50ICYmIGVycm5vID09IEVJTlZBTAotKwkgICYmIGtlcm5lbF9zdXBwb3J0c19hbnlfY29u dGlndW91c19yYW5nZSkKLSsJewotKwkgIGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19y YW5nZSA9IGZhbHNlOwotKwkgIGFhcmNoNjRfZG93bmdyYWRlX3JlZ3MgKHN0YXRlKTsKLSsJICBh YXJjaDY0X2xpbnV4X3NldF9kZWJ1Z19yZWdzIChzdGF0ZSwgdGlkLCB3YXRjaHBvaW50KTsKLSsJ ICByZXR1cm47Ci0rCX0KLSsgICAgICBlcnJvciAoXygiVW5leHBlY3RlZCBlcnJvciBzZXR0aW5n IGhhcmR3YXJlIGRlYnVnIHJlZ2lzdGVycyIpKTsKLSsgICAgfQotIH0KLSAKLSAvKiBQcmludCB0 aGUgdmFsdWVzIG9mIHRoZSBjYWNoZWQgYnJlYWtwb2ludC93YXRjaHBvaW50IHJlZ2lzdGVycy4g ICovCi1AQCAtNjExLDggKzc0NSw5IEBAIGFhcmNoNjRfc2hvd19kZWJ1Z19yZWdfc3RhdGUgKHN0 cnVjdCBhYXIKLSAKLSAgIGRlYnVnX3ByaW50ZiAoIlx0V0FUQ0hQT0lOVHM6XG4iKTsKLSAgIGZv ciAoaSA9IDA7IGkgPCBhYXJjaDY0X251bV93cF9yZWdzOyBpKyspCi0tICAgIGRlYnVnX3ByaW50 ZiAoIlx0V1AlZDogYWRkcj0lcywgY3RybD0weCUwOHgsIHJlZi5jb3VudD0lZFxuIiwKLSsgICAg ZGVidWdfcHJpbnRmICgiXHRXUCVkOiBhZGRyPSVzIChvcmlnPSVzKSwgY3RybD0weCUwOHgsIHJl Zi5jb3VudD0lZFxuIiwKLSAJCSAgaSwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoc3RhdGUtPmRy X2FkZHJfd3BbaV0pLAotKwkJICBjb3JlX2FkZHJfdG9fc3RyaW5nX256IChzdGF0ZS0+ZHJfYWRk cl9vcmlnX3dwW2ldKSwKLSAJCSAgc3RhdGUtPmRyX2N0cmxfd3BbaV0sIHN0YXRlLT5kcl9yZWZf Y291bnRfd3BbaV0pOwotIH0KLSAKLS0tLSAuL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2lu dC5oCTIwMTgtMDEtMDUgMDU6MDc6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvbmF0L2Fh cmNoNjQtbGludXgtaHctcG9pbnQuaAkyMDE4LTA1LTA1IDE3OjU0OjE0LjExMTE0ODE3OSArMDIw MAotQEAgLTc3LDEzICs3NywxMyBAQAotIAotICAgIDMxICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxMyAgICAgICAgICA1ICAgICAgMyAgICAgIDEgICAgIDAKLSAgICArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0rCi0tICAg fCAgICAgICAgIFJFU0VSVkVEIChTQlopICAgICAgICAgfCAgTEVOR1RIICB8IFRZUEUgfCBQUklW IHwgRU4gfAotKyAgIHwgICAgICAgICBSRVNFUlZFRCAoU0JaKSAgICAgICAgIHwgICBNQVNLICAg fCBUWVBFIHwgUFJJViB8IEVOIHwKLSAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0rCi0gCi0gICAgVGhlIFRZUEUgZmllbGQg aXMgaWdub3JlZCBmb3IgYnJlYWtwb2ludHMuICAqLwotIAotICNkZWZpbmUgRFJfQ09OVFJPTF9F TkFCTEVEKGN0cmwpCSgoKGN0cmwpICYgMHgxKSA9PSAxKQotLSNkZWZpbmUgRFJfQ09OVFJPTF9M RU5HVEgoY3RybCkJCSgoKGN0cmwpID4+IDUpICYgMHhmZikKLSsjZGVmaW5lIERSX0NPTlRST0xf TUFTSyhjdHJsKQkJKCgoY3RybCkgPj4gNSkgJiAweGZmKQotIAotIC8qIEVhY2ggYml0IG9mIGEg dmFyaWFibGUgb2YgdGhpcyB0eXBlIGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciBhCi0gICAg aGFyZHdhcmUgYnJlYWtwb2ludCBvciB3YXRjaHBvaW50IHNldHRpbmcgaGFzIGJlZW4gY2hhbmdl ZCBzaW5jZQotQEAgLTE0Nyw3ICsxNDcsMTAgQEAgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0 YXRlCi0gICB1bnNpZ25lZCBpbnQgZHJfcmVmX2NvdW50X2JwW0FBUkNINjRfSEJQX01BWF9OVU1d OwotIAotICAgLyogaGFyZHdhcmUgd2F0Y2hwb2ludCAqLwotKyAgLyogQWRkcmVzcyBhbGlnbmVk IGRvd24gdG8gQUFSQ0g2NF9IV1BfQUxJR05NRU5ULiAgKi8KLSAgIENPUkVfQUREUiBkcl9hZGRy X3dwW0FBUkNINjRfSFdQX01BWF9OVU1dOwotKyAgLyogQWRkcmVzcyBhcyBlbnRlcmVkIGJ5IHVz ZXIgd2l0aG91dCBhbnkgZm9yY2VkIGFsaWdubWVudC4gICovCi0rICBDT1JFX0FERFIgZHJfYWRk cl9vcmlnX3dwW0FBUkNINjRfSFdQX01BWF9OVU1dOwotICAgdW5zaWduZWQgaW50IGRyX2N0cmxf d3BbQUFSQ0g2NF9IV1BfTUFYX05VTV07Ci0gICB1bnNpZ25lZCBpbnQgZHJfcmVmX2NvdW50X3dw W0FBUkNINjRfSFdQX01BWF9OVU1dOwotIH07Ci1AQCAtMTY2LDYgKzE2OSw3IEBAIHN0cnVjdCBh cmNoX2x3cF9pbmZvCi0gZXh0ZXJuIGludCBhYXJjaDY0X251bV9icF9yZWdzOwotIGV4dGVybiBp bnQgYWFyY2g2NF9udW1fd3BfcmVnczsKLSAKLSt1bnNpZ25lZCBpbnQgYWFyY2g2NF93YXRjaHBv aW50X29mZnNldCAodW5zaWduZWQgaW50IGN0cmwpOwotIHVuc2lnbmVkIGludCBhYXJjaDY0X3dh dGNocG9pbnRfbGVuZ3RoICh1bnNpZ25lZCBpbnQgY3RybCk7Ci0gCi0gaW50IGFhcmNoNjRfaGFu ZGxlX2JyZWFrcG9pbnQgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwgQ09SRV9BRERSIGFk ZHIsCi1AQCAtMTc1LDcgKzE3OSw3IEBAIGludCBhYXJjaDY0X2hhbmRsZV93YXRjaHBvaW50IChl bnVtIHRhcmcKLSAJCQkgICAgICAgaW50IGxlbiwgaW50IGlzX2luc2VydCwKLSAJCQkgICAgICAg c3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSk7Ci0gCi0tdm9pZCBhYXJjaDY0 X2xpbnV4X3NldF9kZWJ1Z19yZWdzIChjb25zdCBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3Rh dGUgKnN0YXRlLAotK3ZvaWQgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoc3RydWN0IGFh cmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKLSAJCQkJICAgaW50IHRpZCwgaW50IHdhdGNo cG9pbnQpOwotIAotIHZvaWQgYWFyY2g2NF9zaG93X2RlYnVnX3JlZ19zdGF0ZSAoc3RydWN0IGFh cmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKLS0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvd2F0Y2hwb2ludC11bmFsaWduZWQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCAr MDEwMAotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5j CTIwMTgtMDUtMDUgMTc6NTQ6MTQuMTExMTQ4MTc5ICswMjAwCi1AQCAtMCwwICsxLDk2IEBACi0r LyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsg ICBDb3B5cmlnaHQgMjAxNy0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwot KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8 c3RkaW50Lmg+Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKwotK3N0YXRpYyBpbnQgYWdhaW47Ci0r Ci0rc3RhdGljIHZvbGF0aWxlIHN0cnVjdAotK3sKLSsgIHVpbnQ2NF90IGFsaWdubWVudDsKLSsg IHVuaW9uCi0rICAgIHsKLSsgICAgICB1aW50NjRfdCBzaXplOFsxXTsKLSsgICAgICB1aW50MzJf dCBzaXplNFsyXTsKLSsgICAgICB1aW50MTZfdCBzaXplMls0XTsKLSsgICAgICB1aW50OF90IHNp emUxWzhdOwotKyAgICAgIHVpbnQ2NF90IHNpemU4dHdpY2VbMl07Ci0rICAgIH0KLSsgIHU7Ci0r fSBkYXRhOwotKwotK3N0YXRpYyBpbnQgc2l6ZSA9IDA7Ci0rc3RhdGljIGludCBvZmZzZXQ7Ci0r Ci0rc3RhdGljIHZvaWQKLSt3cml0ZV9zaXplOHR3aWNlICh2b2lkKQotK3sKLSsgIHN0YXRpYyBj b25zdCB1aW50NjRfdCBmaXJzdCA9IDE7Ci0rICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc2Vjb25k ID0gMjsKLSsKLSsjaWZkZWYgX19hYXJjaDY0X18KLSsgIGFzbSB2b2xhdGlsZSAoInN0cCAlMSwg JTIsIFslMF0iCi0rCQk6IC8qIG91dHB1dCAqLwotKwkJOiAiciIgKGRhdGEudS5zaXplOHR3aWNl KSwgInIiIChmaXJzdCksICJyIiAoc2Vjb25kKSAvKiBpbnB1dCAqLwotKwkJOiAibWVtb3J5IiAv KiBjbG9iYmVyICovKTsKLSsjZWxzZQotKyAgZGF0YS51LnNpemU4dHdpY2VbMF0gPSBmaXJzdDsK LSsgIGRhdGEudS5zaXplOHR3aWNlWzFdID0gc2Vjb25kOwotKyNlbmRpZgotK30KLSsKLStpbnQK LSttYWluICh2b2lkKQotK3sKLSsgIHZvbGF0aWxlIHVpbnQ2NF90IGxvY2FsOwotKwotKyAgYXNz ZXJ0IChzaXplb2YgKGRhdGEpID09IDggKyAyICogOCk7Ci0rCi0rICB3cml0ZV9zaXplOHR3aWNl ICgpOwotKwotKyAgd2hpbGUgKHNpemUpCi0rICAgIHsKLSsgICAgICBzd2l0Y2ggKHNpemUpCi0r CXsKLSsvKiBfX3MzOTB4X18gYWxzbyBkZWZpbmVzIF9fczM5MF9fICovCi0rI2lmZGVmIF9fczM5 MF9fCi0rIyBkZWZpbmUgQUNDRVNTKHZhcikgdmFyID0gfnZhcgotKyNlbHNlCi0rIyBkZWZpbmUg QUNDRVNTKHZhcikgbG9jYWwgPSB2YXIKLSsjZW5kaWYKLSsJY2FzZSA4OgotKwkgIEFDQ0VTUyAo ZGF0YS51LnNpemU4W29mZnNldF0pOwotKwkgIGJyZWFrOwotKwljYXNlIDQ6Ci0rCSAgQUNDRVNT IChkYXRhLnUuc2l6ZTRbb2Zmc2V0XSk7Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgMjoKLSsJICBBQ0NF U1MgKGRhdGEudS5zaXplMltvZmZzZXRdKTsKLSsJICBicmVhazsKLSsJY2FzZSAxOgotKwkgIEFD Q0VTUyAoZGF0YS51LnNpemUxW29mZnNldF0pOwotKwkgIGJyZWFrOwotKyN1bmRlZiBBQ0NFU1MK LSsJZGVmYXVsdDoKLSsJICBhc3NlcnQgKDApOwotKwl9Ci0rICAgICAgc2l6ZSA9IDA7Ci0rICAg ICAgc2l6ZSA9IHNpemU7IC8qIHN0YXJ0X2FnYWluICovCi0rICAgIH0KLSsgIHJldHVybiAwOyAv KiBmaW5hbF9yZXR1cm4gKi8KLSt9Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNo cG9pbnQtdW5hbGlnbmVkLmV4cAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAot KysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHAJMjAx OC0wNS0wNSAxNzo1NDoxNC4xMTExNDgxNzkgKzAyMDAKLUBAIC0wLDAgKzEsMTg0IEBACi0rIyBD b3B5cmlnaHQgMjAxNy0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rIwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIGdkYiB0ZXN0c3VpdGUuCi0rCi0rIyBUZXN0IGluc2VydGluZyByZWFkIHdhdGNocG9pbnRz IG9uIHVuYWxpZ25lZCBhZGRyZXNzZXMuCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUKLStpZiB7IFtw cmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9 XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1 bnRlc3RlZCAiY291bGQgbm90IHJ1biB0byBtYWluIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0r Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInN0YXJ0X2FnYWluIl0gIkJyZWFr cG9pbnQgJGRlY2ltYWwgYXQgJGhleCIgInN0YXJ0X2FnYWluIgotKwotK3NldCBzaXplcyB7MSAy IDQgOH0KLSthcnJheSBzZXQgYWxpZ25lZGVuZCB7MSAxICAyIDIgIDMgNCAgNCA0ICA1IDggIDYg OCAgNyA4ICA4IDh9Ci0rCi0rc2V0IHJ3YXRjaCAicndhdGNoIgotK3NldCByd2F0Y2hfZXhwICJI YXJkd2FyZSByZWFkIHdhdGNocG9pbnQiCi0raWYge1tpc3RhcmdldCAiczM5MCotKi0qIl19IHsK LSsgICAgIyBUYXJnZXQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHR5cGUgb2YgaGFyZHdhcmUgd2F0 Y2hwb2ludC4iCi0rICAgIHNldCByd2F0Y2ggIndhdGNoIgotKyAgICBzZXQgcndhdGNoX2V4cCAi SGFyZHdhcmUgd2F0Y2hwb2ludCIKLSt9Ci0rCi0rZm9yZWFjaCB3cHNpemUgJHNpemVzIHsKLSsg ICAgZm9yIHtzZXQgd3BvZmZzZXQgMH0geyR3cG9mZnNldCA8IDggLyAkd3BzaXplfSB7aW5jciB3 cG9mZnNldH0gewotKwlzZXQgd3BzdGFydCBbZXhwciAkd3BvZmZzZXQgKiAkd3BzaXplXQotKwlz ZXQgd3BlbmQgW2V4cHIgKCR3cG9mZnNldCArIDEpICogJHdwc2l6ZV0KLSsJc2V0IHdwZW5kYWxp Z25lZCAkYWxpZ25lZGVuZCgkd3BlbmQpCi0rCWZvcmVhY2ggcmRzaXplICRzaXplcyB7Ci0rCSAg ICBmb3Ige3NldCByZG9mZnNldCAwfSB7JHJkb2Zmc2V0IDwgOCAvICRyZHNpemV9IHtpbmNyIHJk b2Zmc2V0fSB7Ci0rCQlzZXQgcmRzdGFydCBbZXhwciAkcmRvZmZzZXQgKiAkcmRzaXplXQotKwkJ c2V0IHJkZW5kIFtleHByICgkcmRvZmZzZXQgKyAxKSAqICRyZHNpemVdCi0rCQlzZXQgZXhwZWN0 X2hpdCBbZXhwciBtYXggKCR3cHN0YXJ0LCAkcmRzdGFydCkgPCBtaW4gKCR3cGVuZCwgJHJkZW5k KV0KLSsJCXNldCB0ZXN0ICIkcndhdGNoIGRhdGEudS5zaXplJHdwc2l6ZVxbJHdwb2Zmc2V0XF0i Ci0rCQlzZXQgd3BudW0gIiIKLSsJCWdkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsJ CSAgICAtcmUgIiRyd2F0Y2hfZXhwIChcWzAtOVxdKyk6IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsK LSsJCQlzZXQgd3BudW0gJGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rCQkgICAgfQotKwkJICAgIC1y ZSAiRXhwcmVzc2lvbiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQgd2l0aCByZWFkL2FjY2VzcyB3YXRj aHBvaW50LlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCQkJaWYgeyR3cHNpemUgPT0gOCAmJiBbaXN0 YXJnZXQgImFybSotKi0qIl19IHsKLSsJCQkgICAgdW50ZXN0ZWQgJHRlc3QKLSsJCQkgICAgY29u dGludWUKLSsJCQl9Ci0rCQkJZmFpbCAkdGVzdAotKwkJICAgIH0KLSsJCX0KLSsJCWdkYl90ZXN0 X25vX291dHB1dCAic2V0IHZhcmlhYmxlIHNpemUgPSAkcmRzaXplIiAiIgotKwkJZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJzZXQgdmFyaWFibGUgb2Zmc2V0ID0gJHJkb2Zmc2V0IiAiIgotKwkJc2V0IHRl c3QgImNvbnRpbnVlIgotKwkJc2V0IGdvdF9oaXQgMAotKwkJZ2RiX3Rlc3RfbXVsdGlwbGUgJHRl c3QgJHRlc3QgewotKwkJICAgIC1yZSAiJHJ3YXRjaF9leHAgJHdwbnVtOi4qYWx1ZSA9IC4qXHJc biRnZGJfcHJvbXB0ICQiIHsKLSsJCQlzZXQgZ290X2hpdCAxCi0rCQkJc2VuZF9nZGIgImNvbnRp bnVlXG4iCi0rCQkJZXhwX2NvbnRpbnVlCi0rCQkgICAgfQotKwkJICAgIC1yZSAiIHN0YXJ0X2Fn YWluIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJCSAgICB9Ci0rCQl9Ci0rCQlnZGJfdGVzdF9u b19vdXRwdXQgImRlbGV0ZSAkd3BudW0iICIiCi0rCQlzZXQgdGVzdCAid3Aoc2l6ZT0kd3BzaXpl IG9mZnNldD0kd3BvZmZzZXQpIHJkKHNpemU9JHJkc2l6ZSBvZmZzZXQ9JHJkb2Zmc2V0KSBleHBl Y3Q9JGV4cGVjdF9oaXQiCi0rCQlpZiB7JGV4cGVjdF9oaXQgPT0gJGdvdF9oaXR9IHsKLSsJCSAg ICBwYXNzICR0ZXN0Ci0rCQl9IGVsc2UgewotKwkJICAgICMgV2UgZG8gbm90IGtub3cgaWYgd2Ug cnVuIG9uIGEgZml4ZWQgTGludXgga2VybmVsCi0rCQkgICAgIyBvciBub3QuICBSZXBvcnQgWEZB SUwgb25seSBpbiB0aGUgRkFJTCBjYXNlLgotKwkJICAgIGlmIHskZXhwZWN0X2hpdCA9PSAwICYm ICRyZHN0YXJ0IDwgJHdwZW5kYWxpZ25lZH0gewotKwkJCXNldHVwX3hmYWlsIGV4dGVybmFsLzIw MjA3ICJhYXJjaDY0Ki0qLWxpbnV4KiIKLSsJCSAgICB9Ci0rCQkgICAgaWYgeyEkZXhwZWN0X2hp dCAmJiBbZXhwciBtYXggKCR3cHN0YXJ0IC8gOCwgJHJkc3RhcnQgLyA4KSA8IG1pbiAoKCR3cGVu ZCArIDcpIC8gOCwgKCRyZGVuZCArIDcpIC8gOCldfSB7Ci0rCQkJc2V0dXBfeGZhaWwgYnJlYWtw b2ludHMvMjMxMzEgInBvd2VycGMqLSotKiIKLSsJCSAgICB9Ci0rCQkgICAgZmFpbCAkdGVzdAot KwkJfQotKwkgICAgfQotKwl9Ci0rICAgIH0KLSt9Ci0rCi0rZm9yZWFjaCB3cGNvdW50IHs0IDd9 IHsKLSsgICAgYXJyYXkgc2V0IHdwb2Zmc2V0X3RvX3dwbnVtIHt9Ci0rICAgIGZvciB7c2V0IHdw b2Zmc2V0IDF9IHskd3BvZmZzZXQgPD0gJHdwY291bnR9IHtpbmNyIHdwb2Zmc2V0fSB7Ci0rCXNl dCB0ZXN0ICIkcndhdGNoIGRhdGEudS5zaXplMVxbJHdwb2Zmc2V0XF0iCi0rCXNldCB3cG51bSAi IgotKwlnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rCSAgICAtcmUgIiRyd2F0Y2hf ZXhwIChcWzAtOVxdKyk6IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJCXNldCB3cG9mZnNldF90 b193cG51bSgkd3BvZmZzZXQpICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwkgICAgfQotKwkgICAg LXJlICJUaGVyZSBhcmUgbm90IGVub3VnaCBhdmFpbGFibGUgaGFyZHdhcmUgcmVzb3VyY2VzIGZv ciB0aGlzIHdhdGNocG9pbnQuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJCWlmIHskd3BvZmZzZXQg PiAxfSB7Ci0rCQkgICAgc2V0dXBfeGZhaWwgYnJlYWtwb2ludHMvMjMxMzEgInBvd2VycGMqLSot KiIKLSsJCSAgICBzZXR1cF94ZmFpbCBicmVha3BvaW50cy8yMzEzMSAiYXJtKi0qLSoiCi0rCQl9 Ci0rCQlmYWlsICR0ZXN0Ci0rCQlzZXQgd3BvZmZzZXRfdG9fd3BudW0oJHdwb2Zmc2V0KSAwCi0r CSAgICB9Ci0rCX0KLSsgICAgfQotKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCB2YXJpYWJs ZSBzaXplID0gMSIgIiIKLSsgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgdmFyaWFibGUgb2Zm c2V0ID0gMSIgIiIKLSsgICAgc2V0IHRlc3QgImNvbnRpbnVlIgotKyAgICBzZXQgZ290X2hpdCAw Ci0rICAgIGdkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsJLXJlICJcclxuQ291bGQg bm90IGluc2VydCBoYXJkd2FyZSB3YXRjaHBvaW50IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJ fQotKwktcmUgIiRyd2F0Y2hfZXhwICR3cG9mZnNldF90b193cG51bSgxKTouKmFsdWUgPSAuKlxy XG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBzZXQgZ290X2hpdCAxCi0rCSAgICBzZW5kX2dkYiAi Y29udGludWVcbiIKLSsJICAgIGV4cF9jb250aW51ZQotKwl9Ci0rCS1yZSAiIHN0YXJ0X2FnYWlu IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJfQotKyAgICB9Ci0rICAgIGZvciB7c2V0IHdwb2Zm c2V0IDF9IHskd3BvZmZzZXQgPD0gJHdwY291bnR9IHtpbmNyIHdwb2Zmc2V0fSB7Ci0rCWlmIHsk d3BvZmZzZXRfdG9fd3BudW0oJHdwb2Zmc2V0KX0gewotKwkgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0 ICJkZWxldGUgJHdwb2Zmc2V0X3RvX3dwbnVtKCR3cG9mZnNldCkiICIiCi0rCX0KLSsgICAgfQot KyAgICBzZXQgdGVzdCAid3Bjb3VudCgkd3Bjb3VudCkiCi0rICAgIGlmIHshJHdwb2Zmc2V0X3Rv X3dwbnVtKFtleHByICR3cGNvdW50IC0gMV0pfSB7Ci0rCXVudGVzdGVkICR0ZXN0Ci0rCWNvbnRp bnVlCi0rICAgIH0KLSsgICAgaWYgeyR3cGNvdW50ID4gNH0gewotKwlpZiB7IVtpc3RhcmdldCAi czM5MCotKi0qIl19IHsKLSsJICAgIHNldHVwX2tmYWlsIHRkZXAvMjIzODkgKi0qLSoKLSsJfQot KyAgICB9Ci0rICAgIGdkYl9hc3NlcnQgJGdvdF9oaXQgJHRlc3QKLSt9Ci0rCi0raWYgIVtydW50 b19tYWluXSB7Ci0rICAgIHJldHVybiAtMQotK30KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiZmluYWxfcmV0dXJuIl0gIkJyZWFrcG9pbnQgJGRlY2ltYWwgYXQgJGhleCIg ImZpbmFsX3JldHVybiIKLStzZXQgdGVzdCB7d2F0Y2ggZGF0YS51LnNpemU4dHdpY2VbMV19Ci0r c2V0IHdwbnVtICIiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUg IkhhcmR3YXJlIHdhdGNocG9pbnQgKFxbMC05XF0rKTogLipcclxuJGdkYl9wcm9tcHQgJCIgewot KwlzZXQgd3BudW0gJGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rICAgIH0KLSsgICAgLXJlICJXYXRj aHBvaW50IChcWzAtOVxdKyk6IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJaWYge1tpc3Rhcmdl dCAiYXJtKi0qLSoiXX0gewotKwkgICAgdW50ZXN0ZWQgJHRlc3QKLSsJICAgIHNldCB3cG51bSAw Ci0rCX0KLSsgICAgfQotK30KLStpZiB7JHdwbnVtfSB7Ci0rICAgIHNldCB0ZXN0ICJjb250aW51 ZSIKLSsgICAgc2V0IGdvdF9oaXQgMAotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVz dCB7Ci0rCS1yZSAiXHJcbkNvdWxkIG5vdCBpbnNlcnQgaGFyZHdhcmUgd2F0Y2hwb2ludCAuKlxy XG4kZ2RiX3Byb21wdCAkIiB7Ci0rCX0KLSsJLXJlICJIYXJkd2FyZSB3YXRjaHBvaW50ICR3cG51 bTouKk5ldyB2YWx1ZSA9IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHNldCBnb3RfaGl0 IDEKLSsJICAgIHNlbmRfZ2RiICJjb250aW51ZVxuIgotKwkgICAgZXhwX2NvbnRpbnVlCi0rCX0K LSsJLXJlICIgZmluYWxfcmV0dXJuIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJfQotKyAgICB9 Ci0rICAgIGdkYl9hc3NlcnQgJGdvdF9oaXQgInNpemU4dHdpY2Ugd3JpdGUiCi0rfQotLS0tIC4v Z2RiL3V0aWxzLmMJMjAxOC0wMS0wNSAwNTowNzoyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dk Yi91dGlscy5jCTIwMTgtMDUtMDUgMTc6NTQ6MTQuMTExMTQ4MTc5ICswMjAwCi1AQCAtMjk5Mywy MiArMjk5Myw2IEBAIGdkYl9hYnNwYXRoIChjb25zdCBjaGFyICpwYXRoKQotIAkgICAgIHBhdGgs IChjaGFyICopIE5VTEwpKTsKLSB9Ci0gCi0tVUxPTkdFU1QKLS1hbGlnbl91cCAoVUxPTkdFU1Qg diwgaW50IG4pCi0tewotLSAgLyogQ2hlY2sgdGhhdCBOIGlzIHJlYWxseSBhIHBvd2VyIG9mIHR3 by4gICovCi0tICBnZGJfYXNzZXJ0IChuICYmIChuICYgKG4tMSkpID09IDApOwotLSAgcmV0dXJu ICh2ICsgbiAtIDEpICYgLW47Ci0tfQotLQotLVVMT05HRVNUCi0tYWxpZ25fZG93biAoVUxPTkdF U1QgdiwgaW50IG4pCi0tewotLSAgLyogQ2hlY2sgdGhhdCBOIGlzIHJlYWxseSBhIHBvd2VyIG9m IHR3by4gICovCi0tICBnZGJfYXNzZXJ0IChuICYmIChuICYgKG4tMSkpID09IDApOwotLSAgcmV0 dXJuICh2ICYgLW4pOwotLX0KLS0KLSAvKiBBbGxvY2F0aW9uIGZ1bmN0aW9uIGZvciB0aGUgbGli aWJlcnR5IGhhc2ggdGFibGUgd2hpY2ggdXNlcyBhbgotICAgIG9ic3RhY2suICBUaGUgb2JzdGFj ayBpcyBwYXNzZWQgYXMgREFUQS4gICovCi0gCi0tLS0gLi9nZGIvdXRpbHMuaAkyMDE4LTAxLTA1 IDA1OjA3OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3V0aWxzLmgJMjAxOC0wNS0wNSAx Nzo1NDoxNC4xMTIxNDgxODggKzAyMDAKLUBAIC00OTgsMzggKzQ5OCw2IEBAIGV4dGVybiBwaWRf dCB3YWl0X3RvX2RpZV93aXRoX3RpbWVvdXQgKHAKLSAKLSBleHRlcm4gaW50IG15cmVhZCAoaW50 LCBjaGFyICosIGludCk7Ci0gCi0tLyogRW5zdXJlIHRoYXQgViBpcyBhbGlnbmVkIHRvIGFuIE4g Ynl0ZSBib3VuZGFyeSAoQidzIGFzc3VtZWQgdG8gYmUgYQotLSAgIHBvd2VyIG9mIDIpLiAgUm91 bmQgdXAvZG93biB3aGVuIG5lY2Vzc2FyeS4gIEV4YW1wbGVzIG9mIGNvcnJlY3QKLS0gICB1c2Ug aW5jbHVkZToKLS0KLS0gICBhZGRyID0gYWxpZ25fdXAgKGFkZHIsIDgpOyAtLSBWQUxVRSBuZWVk cyA4IGJ5dGUgYWxpZ25tZW50Ci0tICAgd3JpdGVfbWVtb3J5IChhZGRyLCB2YWx1ZSwgbGVuKTsK LS0gICBhZGRyICs9IGxlbjsKLS0KLS0gICBhbmQ6Ci0tCi0tICAgc3AgPSBhbGlnbl9kb3duIChz cCAtIGxlbiwgMTYpOyAtLSBLZWVwIFNQIDE2IGJ5dGUgYWxpZ25lZAotLSAgIHdyaXRlX21lbW9y eSAoc3AsIHZhbHVlLCBsZW4pOwotLQotLSAgIE5vdGUgdGhhdCB1c2VzIHN1Y2ggYXM6Ci0tCi0t ICAgd3JpdGVfbWVtb3J5IChhZGRyLCB2YWx1ZSwgbGVuKTsKLS0gICBhZGRyICs9IGFsaWduX3Vw IChsZW4sIDgpOwotLQotLSAgIGFuZDoKLS0KLS0gICBzcCAtPSBhbGlnbl91cCAobGVuLCA4KTsK LS0gICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZSwgbGVuKTsKLS0KLS0gICBhcmUgdHlwaWNhbGx5 IG5vdCBjb3JyZWN0IGFzIHRoZXkgZG9uJ3QgZW5zdXJlIHRoYXQgdGhlIGFkZHJlc3MgKFNQCi0t ICAgb3IgQUREUikgaXMgY29ycmVjdGx5IGFsaWduZWQgKHJlbHlpbmcgb24gcHJldmlvdXMgYWxp Z25tZW50IHRvCi0tICAga2VlcCB0aGluZ3MgcmlnaHQpLiAgVGhpcyBpcyBhbHNvIHdoeSB0aGUg bWV0aG9kcyBhcmUgY2FsbGVkCi0tICAgImFsaWduXy4uLiIgaW5zdGVhZCBvZiAicm91bmRfLi4u IiBhcyB0aGUgbGF0dGVyIHJlYWRzIGJldHRlciB3aXRoCi0tICAgdGhpcyBpbmNvcnJlY3QgY29k aW5nIHN0eWxlLiAgKi8KLS0KLS1leHRlcm4gVUxPTkdFU1QgYWxpZ25fdXAgKFVMT05HRVNUIHYs IGludCBuKTsKLS1leHRlcm4gVUxPTkdFU1QgYWxpZ25fZG93biAoVUxPTkdFU1QgdiwgaW50IG4p OwotLQotIC8qIFJlc291cmNlIGxpbWl0cyB1c2VkIGJ5IGdldHJsaW1pdCBhbmQgc2V0cmxpbWl0 LiAgKi8KLSAKLSBlbnVtIHJlc291cmNlX2xpbWl0X2tpbmQKCmRpZmYgLS1naXQgYS9nZGItcmhi ejc5NTQyNC1iaXRwb3MtMjJvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIyb2Yy NS5wYXRjaAppbmRleCAwMjE0YjgzLi4xYmQ2ZGNhIDEwMDY0NAotLS0gYS9nZGItcmhiejc5NTQy NC1iaXRwb3MtMjJvZjI1LnBhdGNoCisrKyBiL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMm9mMjUu cGF0Y2gKQEAgLTExNywxMSArMTE3LDExIEBAIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1l bnQ7IGZpbGVuYW1lPWJpdHBvcy13cC5wYXRjaAogIGdkYi90YXJnZXQuaCAgICAgICAgICAgICAg ICAgICAgIHwgIDQgKystLQogIDEwIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDM3 IGRlbGV0aW9ucygtKQogCi1JbmRleDogZ2RiLTguMS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi04LjEub3JpZy9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwkyMDE4 LTA1LTA1IDE3OjU4OjMxLjA2MTQ5Njc0MSArMDIwMAotKysrIGdkYi04LjEvZ2RiL2FhcmNoNjQt bGludXgtbmF0LmMJMjAxOC0wNS0wNSAxNzo1ODozMi40NDk1MDkzMTMgKzAyMDAKLUBAIC03ODks NyArNzg5LDcgQEAKK2RpZmYgLS1naXQgYS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYyBiL2dkYi9h YXJjaDY0LWxpbnV4LW5hdC5jCitpbmRleCAwOGU2ZjRkNGZkLi5mMDhiZjAzOWU0IDEwMDY0NAor LS0tIGEvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKKysrKyBiL2dkYi9hYXJjaDY0LWxpbnV4LW5h dC5jCitAQCAtNzY3LDcgKzc2Nyw3IEBAIGFhcmNoNjRfbGludXhfc3RvcHBlZF9ieV93YXRjaHBv aW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzKQogIHN0YXRpYyBpbnQKICBhYXJjaDY0X2xpbnV4 X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQs CiAgCQkJCQkgICAgQ09SRV9BRERSIGFkZHIsCkBAIC0xMzAsMTEgKzEzMCwxMSBAQCBJbmRleDog Z2RiLTguMS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwogIHsKICAgIHJldHVybiBzdGFydCA8PSBh ZGRyICYmIHN0YXJ0ICsgbGVuZ3RoIC0gMSA+PSBhZGRyOwogIH0KLUluZGV4OiBnZGItOC4xL2dk Yi9hcm0tbGludXgtbmF0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItOC4xLm9yaWcvZ2RiL2FybS1s aW51eC1uYXQuYwkyMDE4LTA1LTA1IDE3OjU4OjMxLjA2MjQ5Njc1MCArMDIwMAotKysrIGdkYi04 LjEvZ2RiL2FybS1saW51eC1uYXQuYwkyMDE4LTA1LTA1IDE3OjU4OjMyLjQ0OTUwOTMxMyArMDIw MAotQEAgLTExNzcsNyArMTE3Nyw3IEBACitkaWZmIC0tZ2l0IGEvZ2RiL2FybS1saW51eC1uYXQu YyBiL2dkYi9hcm0tbGludXgtbmF0LmMKK2luZGV4IDNiN2FhNDBkYjguLjQ4ZGZlMjJjZTEgMTAw NjQ0CistLS0gYS9nZGIvYXJtLWxpbnV4LW5hdC5jCisrKysgYi9nZGIvYXJtLWxpbnV4LW5hdC5j CitAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgYXJtX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAo c3RydWN0IHRhcmdldF9vcHMgKm9wcykKICBzdGF0aWMgaW50CiAgYXJtX2xpbnV4X3dhdGNocG9p bnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsCiAgCQkJCQlD T1JFX0FERFIgYWRkciwKQEAgLTE0MywxMSArMTQzLDExIEBAIEluZGV4OiBnZGItOC4xL2dkYi9h cm0tbGludXgtbmF0LmMKICB7CiAgICByZXR1cm4gc3RhcnQgPD0gYWRkciAmJiBzdGFydCArIGxl bmd0aCAtIDEgPj0gYWRkcjsKICB9Ci1JbmRleDogZ2RiLTguMS9nZGIvbmF0L2FhcmNoNjQtbGlu dXgtaHctcG9pbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi04LjEub3JpZy9nZGIvbmF0L2FhcmNo NjQtbGludXgtaHctcG9pbnQuYwkyMDE4LTA1LTA1IDE3OjU4OjMxLjA2MjQ5Njc1MCArMDIwMAot KysrIGdkYi04LjEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMJMjAxOC0wNS0wNSAx Nzo1OToxNi42MTY5MDkzODIgKzAyMDAKLUBAIC0xMzcsNyArMTM3LDcgQEAKK2RpZmYgLS1naXQg YS9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYyBiL2dkYi9uYXQvYWFyY2g2NC1saW51 eC1ody1wb2ludC5jCitpbmRleCBjZTI2ZjI4ZmFkLi5lOWViYzVmYmE4IDEwMDY0NAorLS0tIGEv Z2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMKKysrKyBiL2dkYi9uYXQvYWFyY2g2NC1s aW51eC1ody1wb2ludC5jCitAQCAtMTExLDcgKzExMSw3IEBAIGFhcmNoNjRfcG9pbnRfZW5jb2Rl X2N0cmxfcmVnIChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsIGludCBsZW4pCiAgICAgUmV0 dXJuIDAgZm9yIGFueSBub24tY29tcGxpYW50IEFERFIgYW5kL29yIExFTjsgcmV0dXJuIDEgb3Ro ZXJ3aXNlLiAgKi8KICAKICBzdGF0aWMgaW50CkBAIC0xNTYsMTkgKzE1NiwyMCBAQCBJbmRleDog Z2RiLTguMS9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYwogIHsKICAgIHVuc2lnbmVk IGludCBhbGlnbm1lbnQgPSAwOwogIAotQEAgLTIxMiw5ICsyMTIsOSBAQAotICAgIGFuIGFkZHJl c3Mgd2l0aGluIHRoZSBsYXR0ZXIuICovCitAQCAtMTgwLDkgKzE4MCwxMCBAQCBhYXJjaDY0X3Bv aW50X2lzX2FsaWduZWQgKGludCBpc193YXRjaHBvaW50LCBDT1JFX0FERFIgYWRkciwgaW50IGxl bikKKyAgICBsaW1pdGF0aW9ucyBjYW4gYmUgbGFyZ2VseSByZWxheGVkIHdpdGggc29tZSBmdXJ0 aGVyIHdvcmsuICAqLwogIAogIHN0YXRpYyB2b2lkCiAtYWFyY2g2NF9hbGlnbl93YXRjaHBvaW50 IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgQ09SRV9BRERSICphbGlnbmVkX2FkZHJfcCwKLSth YXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgQ09S RV9BRERSICphbGlnbmVkX2FkZHJfcCwKLSAJCQkgIGludCAqYWxpZ25lZF9vZmZzZXRfcCwgaW50 ICphbGlnbmVkX2xlbl9wLAotLQkJCSAgQ09SRV9BRERSICpuZXh0X2FkZHJfcCwgaW50ICpuZXh0 X2xlbl9wLAotKwkJCSAgQ09SRV9BRERSICpuZXh0X2FkZHJfcCwgTE9OR0VTVCAqbmV4dF9sZW5f cCwKLSAJCQkgIENPUkVfQUREUiAqbmV4dF9hZGRyX29yaWdfcCkKKythYXJjaDY0X2FsaWduX3dh dGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwKKysJCQkgIENPUkVfQUREUiAq YWxpZ25lZF9hZGRyX3AsCisgCQkJICBpbnQgKmFsaWduZWRfbGVuX3AsIENPUkVfQUREUiAqbmV4 dF9hZGRyX3AsCistCQkJICBpbnQgKm5leHRfbGVuX3ApCisrCQkJICBMT05HRVNUICpuZXh0X2xl bl9wKQogIHsKICAgIGludCBhbGlnbmVkX2xlbjsKLUBAIC02MTEsNyArNjExLDcgQEAKKyAgIHVu c2lnbmVkIGludCBvZmZzZXQ7CitAQCAtNTAxLDcgKzUwMiw3IEBAIGFhcmNoNjRfaGFuZGxlX2Fs aWduZWRfd2F0Y2hwb2ludCAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLAogIAogIHN0YXRp YyBpbnQKICBhYXJjaDY0X2hhbmRsZV91bmFsaWduZWRfd2F0Y2hwb2ludCAoZW51bSB0YXJnZXRf aHdfYnBfdHlwZSB0eXBlLApAQCAtMTc2LDIzICsxNzcsMjAgQEAgSW5kZXg6IGdkYi04LjEvZ2Ri L25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMKICsJCQkJICAgICBDT1JFX0FERFIgYWRkciwg TE9OR0VTVCBsZW4sIGludCBpc19pbnNlcnQsCiAgCQkJCSAgICAgc3RydWN0IGFhcmNoNjRfZGVi dWdfcmVnX3N0YXRlICpzdGF0ZSkKICB7Ci0gICBDT1JFX0FERFIgYWRkcl9vcmlnID0gYWRkcjsK LUBAIC02NDEsMTIgKzY0MSwxMiBAQAorICAgd2hpbGUgKGxlbiA+IDApCitAQCAtNTI0LDkgKzUy NSw5IEBAIGFhcmNoNjRfaGFuZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50IChlbnVtIHRhcmdldF9o d19icF90eXBlIHR5cGUsCisgCQkgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi CisgCQkgICAgICAiYWxpZ25lZF9hZGRyOiAlcywgYWxpZ25lZF9sZW46ICVkXG4iCiAgCQkgICAg ICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0gCQkgICAgICAiYWRkcl9vcmln OiAlc1xuIgotIAkJICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotLQkJ ICAgICAgIm5leHRfYWRkcjogJXMsICAgIG5leHRfbGVuOiAlZFxuIgotKwkJICAgICAgIm5leHRf YWRkcjogJXMsICAgIG5leHRfbGVuOiAlc1xuIgotIAkJICAgICAgIiAgICAgICAgICAgICAgICAg ICAgICAgICAgICIKLSAJCSAgICAgICJhZGRyX29yaWdfbmV4dDogJXNcbiIsCistCQkgICAgICAi bmV4dF9hZGRyOiAlcywgICAgbmV4dF9sZW46ICVkXG4iLAorKwkJICAgICAgIm5leHRfYWRkcjog JXMsICAgIG5leHRfbGVuOiAlc1xuIiwKICAJCSAgICAgIGlzX2luc2VydCwgY29yZV9hZGRyX3Rv X3N0cmluZ19ueiAoYWxpZ25lZF9hZGRyKSwKLSAJCSAgICAgIGFsaWduZWRfbGVuLCBjb3JlX2Fk ZHJfdG9fc3RyaW5nX256IChhZGRyX29yaWcpLAotLQkJICAgICAgY29yZV9hZGRyX3RvX3N0cmlu Z19ueiAoYWRkciksIGxlbiwKLSsJCSAgICAgIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHIp LCBwbG9uZ2VzdCAobGVuKSwKLSAJCSAgICAgIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHJf b3JpZ19uZXh0KSk7CistCQkgICAgICBhbGlnbmVkX2xlbiwgY29yZV9hZGRyX3RvX3N0cmluZ19u eiAoYWRkciksIGxlbik7CisrCQkgICAgICBhbGlnbmVkX2xlbiwgY29yZV9hZGRyX3RvX3N0cmlu Z19ueiAoYWRkciksIHBsb25nZXN0IChsZW4pKTsKICAKLSAgICAgICBhZGRyX29yaWcgPSBhZGRy X29yaWdfbmV4dDsKLUBAIC02NjAsNyArNjYwLDcgQEAKKyAgICAgICBpZiAocmV0ICE9IDApCisg CXJldHVybiByZXQ7CitAQCAtNTM3LDcgKzUzOCw3IEBAIGFhcmNoNjRfaGFuZGxlX3VuYWxpZ25l ZF93YXRjaHBvaW50IChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsCiAgCiAgaW50CiAgYWFy Y2g2NF9oYW5kbGVfd2F0Y2hwb2ludCAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLCBDT1JF X0FERFIgYWRkciwKQEAgLTIwMSw3ICsxOTksNyBAQCBJbmRleDogZ2RiLTguMS9nZGIvbmF0L2Fh cmNoNjQtbGludXgtaHctcG9pbnQuYwogIAkJCSAgIHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19z dGF0ZSAqc3RhdGUpCiAgewogICAgaWYgKGFhcmNoNjRfcG9pbnRfaXNfYWxpZ25lZCAoMSAvKiBp c193YXRjaHBvaW50ICovICwgYWRkciwgbGVuKSkKLUBAIC03MjIsMTQgKzcyMiwxNCBAQAorQEAg LTU4OCwxNCArNTg5LDE0IEBAIGFhcmNoNjRfbGludXhfc2V0X2RlYnVnX3JlZ3MgKGNvbnN0IHN0 cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCiAgdm9pZAogIGFhcmNoNjRfc2hv d19kZWJ1Z19yZWdfc3RhdGUgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUs CiAgCQkJICAgICAgY29uc3QgY2hhciAqZnVuYywgQ09SRV9BRERSIGFkZHIsCkBAIC0yMTksMTEg KzIxNywxMSBAQCBJbmRleDogZ2RiLTguMS9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQu YwogIAkJICB0eXBlID09IGh3X3dyaXRlID8gImh3LXdyaXRlLXdhdGNocG9pbnQiCiAgCQkgIDog KHR5cGUgPT0gaHdfcmVhZCA/ICJody1yZWFkLXdhdGNocG9pbnQiCiAgCQkgICAgIDogKHR5cGUg PT0gaHdfYWNjZXNzID8gImh3LWFjY2Vzcy13YXRjaHBvaW50IgotSW5kZXg6IGdkYi04LjEvZ2Ri L25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItOC4xLm9y aWcvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmgJMjAxOC0wNS0wNSAxNzo1ODozMS4w NjI0OTY3NTAgKzAyMDAKLSsrKyBnZGItOC4xL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2lu dC5oCTIwMTgtMDUtMDUgMTc6NTg6MzIuNDUwNTA5MzIyICswMjAwCi1AQCAtMTc2LDcgKzE3Niw3 IEBACitkaWZmIC0tZ2l0IGEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmggYi9nZGIv bmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaAoraW5kZXggN2M0MmI5NmQxYi4uZTFkNGZjOGRi YyAxMDA2NDQKKy0tLSBhL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5oCisrKysgYi9n ZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaAorQEAgLTE3Miw3ICsxNzIsNyBAQCBpbnQg YWFyY2g2NF9oYW5kbGVfYnJlYWtwb2ludCAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLCBD T1JFX0FERFIgYWRkciwKICAJCQkgICAgICAgaW50IGxlbiwgaW50IGlzX2luc2VydCwKICAJCQkg ICAgICAgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSk7CiAgaW50IGFhcmNo NjRfaGFuZGxlX3dhdGNocG9pbnQgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwgQ09SRV9B RERSIGFkZHIsCkBAIC0yMzEsOCArMjI5LDggQEAgSW5kZXg6IGdkYi04LjEvZ2RiL25hdC9hYXJj aDY0LWxpbnV4LWh3LXBvaW50LmgKICsJCQkgICAgICAgTE9OR0VTVCBsZW4sIGludCBpc19pbnNl cnQsCiAgCQkJICAgICAgIHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUpOwog IAotIHZvaWQgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoc3RydWN0IGFhcmNoNjRfZGVi dWdfcmVnX3N0YXRlICpzdGF0ZSwKLUBAIC0xODQsNyArMTg0LDcgQEAKKyB2b2lkIGFhcmNoNjRf bGludXhfc2V0X2RlYnVnX3JlZ3MgKGNvbnN0IHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0 ZSAqc3RhdGUsCitAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgYWFyY2g2NF9saW51eF9zZXRfZGVi dWdfcmVncyAoY29uc3Qgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKICAK ICB2b2lkIGFhcmNoNjRfc2hvd19kZWJ1Z19yZWdfc3RhdGUgKHN0cnVjdCBhYXJjaDY0X2RlYnVn X3JlZ19zdGF0ZSAqc3RhdGUsCiAgCQkJCSAgIGNvbnN0IGNoYXIgKmZ1bmMsIENPUkVfQUREUiBh ZGRyLApAQCAtMjQxLDExICsyMzksMTEgQEAgSW5kZXg6IGdkYi04LjEvZ2RiL25hdC9hYXJjaDY0 LWxpbnV4LWh3LXBvaW50LmgKICAKICB2b2lkIGFhcmNoNjRfbGludXhfZ2V0X2RlYnVnX3JlZ19j YXBhY2l0eSAoaW50IHRpZCk7CiAgCi1JbmRleDogZ2RiLTguMS9nZGIvcHBjLWxpbnV4LW5hdC5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTguMS5vcmlnL2dkYi9wcGMtbGludXgtbmF0LmMJMjAxOC0w NS0wNSAxNzo1ODozMS4wNjM0OTY3NTkgKzAyMDAKLSsrKyBnZGItOC4xL2dkYi9wcGMtbGludXgt bmF0LmMJMjAxOC0wNS0wNSAxNzo1ODozMi40NTA1MDkzMjIgKzAyMDAKLUBAIC0xNzk4LDExICsx Nzk4LDExIEBACitkaWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9wcGMtbGlu dXgtbmF0LmMKK2luZGV4IDRhODI0MzRjMGQuLjQ5YTI3ZDhkYWEgMTAwNjQ0CistLS0gYS9nZGIv cHBjLWxpbnV4LW5hdC5jCisrKysgYi9nZGIvcHBjLWxpbnV4LW5hdC5jCitAQCAtMTc5OCwxMSAr MTc5OCwxMSBAQCBjYW5fdXNlX3dhdGNocG9pbnRfY29uZF9hY2NlbCAodm9pZCkKICAgICBDT05E SVRJT05fVkFMVUUgd2lsbCBob2xkIHRoZSB2YWx1ZSB3aGljaCBzaG91bGQgYmUgcHV0IGluIHRo ZQogICAgIERWQyByZWdpc3Rlci4gICovCiAgc3RhdGljIHZvaWQKQEAgLTI2MCw3ICsyNTgsNyBA QCBJbmRleDogZ2RiLTguMS9nZGIvcHBjLWxpbnV4LW5hdC5jCiAgICBDT1JFX0FERFIgYWRkcl9l bmRfZGF0YSwgYWRkcl9lbmRfZHZjOwogIAogICAgLyogVGhlIERWQyByZWdpc3RlciBjb21wYXJl cyBieXRlcyB3aXRoaW4gZml4ZWQtbGVuZ3RoIHdpbmRvd3Mgd2hpY2gKLUBAIC0xODg5LDcgKzE4 ODksNyBAQAorQEAgLTE4ODksNyArMTg4OSw3IEBAIG51bV9tZW1vcnlfYWNjZXNzZXMgKHN0cnVj dCB2YWx1ZSAqdikKICAgICBvZiB0aGUgY29uc3RhbnQuICAqLwogIHN0YXRpYyBpbnQKICBjaGVj a19jb25kaXRpb24gKENPUkVfQUREUiB3YXRjaF9hZGRyLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29u ZCwKQEAgLTI2OSw3ICsyNjcsNyBAQCBJbmRleDogZ2RiLTguMS9nZGIvcHBjLWxpbnV4LW5hdC5j CiAgewogICAgaW50IHBjID0gMSwgbnVtX2FjY2Vzc2VzX2xlZnQsIG51bV9hY2Nlc3Nlc19yaWdo dDsKICAgIHN0cnVjdCB2YWx1ZSAqbGVmdF92YWwsICpyaWdodF92YWwsICpsZWZ0X2NoYWluLCAq cmlnaHRfY2hhaW47Ci1AQCAtMTk1Nyw3ICsxOTU3LDcgQEAKK0BAIC0xOTU3LDcgKzE5NTcsNyBA QCBjaGVja19jb25kaXRpb24gKENPUkVfQUREUiB3YXRjaF9hZGRyLCBzdHJ1Y3QgZXhwcmVzc2lv biAqY29uZCwKICAgICB0cnVlLiAgKi8KICBzdGF0aWMgaW50CiAgcHBjX2xpbnV4X2Nhbl9hY2Nl bF93YXRjaHBvaW50X2NvbmRpdGlvbiAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCkBAIC0yNzgs NyArMjc2LDcgQEAgSW5kZXg6IGdkYi04LjEvZ2RiL3BwYy1saW51eC1uYXQuYwogIAkJCQkJICBz dHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBDT1JFX0FERFIgZGF0YV92YWx1ZTsKLUBA IC0xOTc0LDcgKzE5NzQsNyBAQAorQEAgLTE5NzQsNyArMTk3NCw3IEBAIHBwY19saW51eF9jYW5f YWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLAogIAog IHN0YXRpYyB2b2lkCiAgY3JlYXRlX3dhdGNocG9pbnRfcmVxdWVzdCAoc3RydWN0IHBwY19od19i cmVha3BvaW50ICpwLCBDT1JFX0FERFIgYWRkciwKQEAgLTI4Nyw3ICsyODUsNyBAQCBJbmRleDog Z2RiLTguMS9nZGIvcHBjLWxpbnV4LW5hdC5jCiAgCQkJICAgc3RydWN0IGV4cHJlc3Npb24gKmNv bmQsIGludCBpbnNlcnQpCiAgewogICAgaWYgKGxlbiA9PSAxCi1AQCAtMjI0MCw3ICsyMjQwLDcg QEAKK0BAIC0yMjQwLDcgKzIyNDAsNyBAQCBwcGNfbGludXhfc3RvcHBlZF9ieV93YXRjaHBvaW50 IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzKQogIHN0YXRpYyBpbnQKICBwcGNfbGludXhfd2F0Y2hw b2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwKICAJCQkJ CUNPUkVfQUREUiBhZGRyLApAQCAtMjk2LDExICsyOTQsMTEgQEAgSW5kZXg6IGdkYi04LjEvZ2Ri L3BwYy1saW51eC1uYXQuYwogIHsKICAgIGludCBtYXNrOwogIAotSW5kZXg6IGdkYi04LjEvZ2Ri L3Byb2Nmcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTguMS5vcmlnL2dkYi9wcm9jZnMuYwkyMDE4 LTA1LTA1IDE3OjU4OjMxLjA2NDQ5Njc2OCArMDIwMAotKysrIGdkYi04LjEvZ2RiL3Byb2Nmcy5j CTIwMTgtMDUtMDUgMTc6NTg6MzIuNDUxNTA5MzMxICswMjAwCi1AQCAtMTU2Myw3ICsxNTYzLDcg QEAKK2RpZmYgLS1naXQgYS9nZGIvcHJvY2ZzLmMgYi9nZGIvcHJvY2ZzLmMKK2luZGV4IDg4N2Yx MjAxZmUuLmVkZDFiZTYzMmEgMTAwNjQ0CistLS0gYS9nZGIvcHJvY2ZzLmMKKysrKyBiL2dkYi9w cm9jZnMuYworQEAgLTE1NjMsNyArMTU2Myw3IEBAIHByb2Nmc19hZGRyZXNzX3RvX2hvc3RfcG9p bnRlciAoQ09SRV9BRERSIGFkZHIpCiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTMwOSw3ICszMDcs NyBAQCBJbmRleDogZ2RiLTguMS9nZGIvcHJvY2ZzLmMKICB7CiAgICBzdHJ1Y3QgewogICAgICBw cm9jZnNfY3RsX3QgY21kOwotQEAgLTMyNTAsNyArMzI1MCw3IEBACitAQCAtMzI1MCw3ICszMjUw LDcgQEAgcHJvY2ZzX3BpZF90b19zdHIgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIHB0aWRfdCBw dGlkKQogIC8qIEluc2VydCBhIHdhdGNocG9pbnQuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTMx OCwxMSArMzE2LDExIEBAIEluZGV4OiBnZGItOC4xL2dkYi9wcm9jZnMuYwogIAkJICAgICAgIGlu dCBhZnRlcikKICB7CiAgICBpbnQgICAgICAgcGZsYWdzID0gMDsKLUluZGV4OiBnZGItOC4xL2dk Yi9yZW1vdGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi04LjEub3JpZy9nZGIvcmVtb3RlLmMJMjAx OC0wNS0wNSAxNzo1ODozMS4wNjY0OTY3ODYgKzAyMDAKLSsrKyBnZGItOC4xL2dkYi9yZW1vdGUu YwkyMDE4LTA1LTA1IDE3OjU4OjMyLjQ1MjUwOTM0MCArMDIwMAotQEAgLTk4OTcsNyArOTg5Nyw3 IEBACitkaWZmIC0tZ2l0IGEvZ2RiL3JlbW90ZS5jIGIvZ2RiL3JlbW90ZS5jCitpbmRleCA5NGQ1 NTk0MTc1Li44Njc3N2YxZTVlIDEwMDY0NAorLS0tIGEvZ2RiL3JlbW90ZS5jCisrKysgYi9nZGIv cmVtb3RlLmMKK0BAIC05ODk3LDcgKzk4OTcsNyBAQCByZW1vdGVfaW5zZXJ0X3dhdGNocG9pbnQg KHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLCBDT1JFX0FERFIgYWRkciwgaW50IGxlbiwKICAgIHAg PSBzdHJjaHIgKHJzLT5idWYsICdcMCcpOwogICAgYWRkciA9IHJlbW90ZV9hZGRyZXNzX21hc2tl ZCAoYWRkcik7CiAgICBwICs9IGhleG51bXN0ciAocCwgKFVMT05HRVNUKSBhZGRyKTsKQEAgLTMz MSw3ICszMjksNyBAQCBJbmRleDogZ2RiLTguMS9nZGIvcmVtb3RlLmMKICAKICAgIHB1dHBrdCAo cnMtPmJ1Zik7CiAgICBnZXRwa3QgKCZycy0+YnVmLCAmcnMtPmJ1Zl9zaXplLCAwKTsKLUBAIC05 OTE3LDcgKzk5MTcsNyBAQAorQEAgLTk5MTcsNyArOTkxNyw3IEBAIHJlbW90ZV9pbnNlcnRfd2F0 Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsIENPUkVfQUREUiBhZGRyLCBpbnQgbGVu LAogIAogIHN0YXRpYyBpbnQKICByZW1vdGVfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAo c3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwgQ09SRV9BRERSIGFkZHIsCkBAIC0zNDAsNyArMzM4 LDcgQEAgSW5kZXg6IGdkYi04LjEvZ2RiL3JlbW90ZS5jCiAgewogICAgQ09SRV9BRERSIGRpZmYg PSByZW1vdGVfYWRkcmVzc19tYXNrZWQgKGFkZHIgLSBzdGFydCk7CiAgCi1AQCAtOTk0Niw3ICs5 OTQ2LDcgQEAKK0BAIC05OTQ2LDcgKzk5NDYsNyBAQCByZW1vdGVfcmVtb3ZlX3dhdGNocG9pbnQg KHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLCBDT1JFX0FERFIgYWRkciwgaW50IGxlbiwKICAgIHAg PSBzdHJjaHIgKHJzLT5idWYsICdcMCcpOwogICAgYWRkciA9IHJlbW90ZV9hZGRyZXNzX21hc2tl ZCAoYWRkcik7CiAgICBwICs9IGhleG51bXN0ciAocCwgKFVMT05HRVNUKSBhZGRyKTsKQEAgLTM0 OSwxMSArMzQ3LDExIEBAIEluZGV4OiBnZGItOC4xL2dkYi9yZW1vdGUuYwogICAgcHV0cGt0IChy cy0+YnVmKTsKICAgIGdldHBrdCAoJnJzLT5idWYsICZycy0+YnVmX3NpemUsIDApOwogIAotSW5k ZXg6IGdkYi04LjEvZ2RiL3RhcmdldC1kZWxlZ2F0ZXMuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi04 LjEub3JpZy9nZGIvdGFyZ2V0LWRlbGVnYXRlcy5jCTIwMTgtMDUtMDUgMTc6NTg6MjUuMzIxNDQ0 NzQ3ICswMjAwCi0rKysgZ2RiLTguMS9nZGIvdGFyZ2V0LWRlbGVnYXRlcy5jCTIwMTgtMDUtMDUg MTc6NTg6MzIuNDUzNTA5MzQ5ICswMjAwCi1AQCAtNzMzLDE0ICs3MzMsMTQgQEAKK2RpZmYgLS1n aXQgYS9nZGIvdGFyZ2V0LWRlbGVnYXRlcy5jIGIvZ2RiL3RhcmdldC1kZWxlZ2F0ZXMuYworaW5k ZXggMmI0NDljYmYwMS4uZjcyNTIxNWZmZiAxMDA2NDQKKy0tLSBhL2dkYi90YXJnZXQtZGVsZWdh dGVzLmMKKysrKyBiL2dkYi90YXJnZXQtZGVsZWdhdGVzLmMKK0BAIC03MzMsMTQgKzczMywxNCBA QCBkZWJ1Z19zdG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsIENP UkVfQUREUiAqYXJnMSkKICB9CiAgCiAgc3RhdGljIGludApAQCAtMzcwLDcgKzM2OCw3IEBAIElu ZGV4OiBnZGItOC4xL2dkYi90YXJnZXQtZGVsZWdhdGVzLmMKICB7CiAgICBpbnQgcmVzdWx0Owog ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiLT4gJXMtPnRvX3dhdGNocG9pbnRf YWRkcl93aXRoaW5fcmFuZ2UgKC4uLilcbiIsIGRlYnVnX3RhcmdldC50b19zaG9ydG5hbWUpOwot QEAgLTc1Miw3ICs3NTIsNyBAQAorQEAgLTc1Miw3ICs3NTIsNyBAQCBkZWJ1Z193YXRjaHBvaW50 X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwgQ09SRV9BRERSIGFy ZzEsIENPUgogICAgZnB1dHNfdW5maWx0ZXJlZCAoIiwgIiwgZ2RiX3N0ZGxvZyk7CiAgICB0YXJn ZXRfZGVidWdfcHJpbnRfQ09SRV9BRERSIChhcmcyKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIs ICIsIGdkYl9zdGRsb2cpOwpAQCAtMzc5LDcgKzM3Nyw3IEBAIEluZGV4OiBnZGItOC4xL2dkYi90 YXJnZXQtZGVsZWdhdGVzLmMKICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIpID0gIiwgZ2RiX3N0ZGxv Zyk7CiAgICB0YXJnZXRfZGVidWdfcHJpbnRfaW50IChyZXN1bHQpOwogICAgZnB1dHNfdW5maWx0 ZXJlZCAoIlxuIiwgZ2RiX3N0ZGxvZyk7Ci1AQCAtNzg1LDIwICs3ODUsMjAgQEAKK0BAIC03ODUs MjAgKzc4NSwyMCBAQCBkZWJ1Z19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0 YXJnZXRfb3BzICpzZWxmLCBDT1JFX0FERFIgYXJnMSwgTE9ORwogIH0KICAKICBzdGF0aWMgaW50 CkBAIC00MDMsNyArNDAxLDcgQEAgSW5kZXg6IGdkYi04LjEvZ2RiL3RhcmdldC1kZWxlZ2F0ZXMu YwogIHsKICAgIGludCByZXN1bHQ7CiAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs ICItPiAlcy0+dG9fY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uICguLi4pXG4iLCBkZWJ1 Z190YXJnZXQudG9fc2hvcnRuYW1lKTsKLUBAIC04MDgsNyArODA4LDcgQEAKK0BAIC04MDgsNyAr ODA4LDcgQEAgZGVidWdfY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChzdHJ1Y3QgdGFy Z2V0X29wcyAqc2VsZiwgQ09SRV9BRERSIGFyZzEsIGkKICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIs ICIsIGdkYl9zdGRsb2cpOwogICAgdGFyZ2V0X2RlYnVnX3ByaW50X0NPUkVfQUREUiAoYXJnMSk7 CiAgICBmcHV0c191bmZpbHRlcmVkICgiLCAiLCBnZGJfc3RkbG9nKTsKQEAgLTQxMiwxMSArNDEw LDExIEBAIEluZGV4OiBnZGItOC4xL2dkYi90YXJnZXQtZGVsZWdhdGVzLmMKICAgIGZwdXRzX3Vu ZmlsdGVyZWQgKCIsICIsIGdkYl9zdGRsb2cpOwogICAgdGFyZ2V0X2RlYnVnX3ByaW50X2ludCAo YXJnMyk7CiAgICBmcHV0c191bmZpbHRlcmVkICgiLCAiLCBnZGJfc3RkbG9nKTsKLUluZGV4OiBn ZGItOC4xL2dkYi90YXJnZXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi04LjEub3JpZy9nZGIvdGFy Z2V0LmMJMjAxOC0wNS0wNSAxNzo1ODozMS4wNjg0OTY4MDQgKzAyMDAKLSsrKyBnZGItOC4xL2dk Yi90YXJnZXQuYwkyMDE4LTA1LTA1IDE3OjU4OjMyLjQ1MzUwOTM0OSArMDIwMAotQEAgLTUzLDcg KzUzLDcgQEAKK2RpZmYgLS1naXQgYS9nZGIvdGFyZ2V0LmMgYi9nZGIvdGFyZ2V0LmMKK2luZGV4 IGExYWM2ZDA2OTcuLmViMDUzOGNiODIgMTAwNjQ0CistLS0gYS9nZGIvdGFyZ2V0LmMKKysrKyBi L2dkYi90YXJnZXQuYworQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJpY190bHNf ZXJyb3IgKHZvaWQpIEFUVFJJQlVURV9OT1JFVFVSTjsKICBzdGF0aWMgdm9pZCBkZWZhdWx0X3Rl cm1pbmFsX2luZm8gKHN0cnVjdCB0YXJnZXRfb3BzICosIGNvbnN0IGNoYXIgKiwgaW50KTsKICAK ICBzdGF0aWMgaW50IGRlZmF1bHRfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0 IHRhcmdldF9vcHMgKiwKQEAgLTQyNSw3ICs0MjMsNyBAQCBJbmRleDogZ2RiLTguMS9nZGIvdGFy Z2V0LmMKICAKICBzdGF0aWMgaW50IGRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50 IChzdHJ1Y3QgdGFyZ2V0X29wcyAqLAogIAkJCQkJCUNPUkVfQUREUiwgTE9OR0VTVCk7Ci1AQCAt MzEyMCw3ICszMTIwLDcgQEAKK0BAIC0zMTIwLDcgKzMxMjAsNyBAQCBkZWZhdWx0X3JlZ2lvbl9v a19mb3JfaHdfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCiAgc3RhdGljIGlu dAogIGRlZmF1bHRfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9v cHMgKnRhcmdldCwKICAJCQkJICAgICAgQ09SRV9BRERSIGFkZHIsCkBAIC00MzQsMTEgKzQzMiwx MSBAQCBJbmRleDogZ2RiLTguMS9nZGIvdGFyZ2V0LmMKICB7CiAgICByZXR1cm4gYWRkciA+PSBz dGFydCAmJiBhZGRyIDwgc3RhcnQgKyBsZW5ndGg7CiAgfQotSW5kZXg6IGdkYi04LjEvZ2RiL3Rh cmdldC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTguMS5vcmlnL2dkYi90YXJnZXQuaAkyMDE4LTA1 LTA1IDE3OjU4OjMxLjA2ODQ5NjgwNCArMDIwMAotKysrIGdkYi04LjEvZ2RiL3RhcmdldC5oCTIw MTgtMDUtMDUgMTc6NTg6MzIuNDU0NTA5MzU4ICswMjAwCi1AQCAtNTM1LDcgKzUzNSw3IEBACitk aWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5oIGIvZ2RiL3RhcmdldC5oCitpbmRleCA3YTcwYzNmNmRh Li4zNWVlZTkxYTgzIDEwMDY0NAorLS0tIGEvZ2RiL3RhcmdldC5oCisrKysgYi9nZGIvdGFyZ2V0 LmgKK0BAIC01MzUsNyArNTM1LDcgQEAgc3RydWN0IHRhcmdldF9vcHMKICAgICAgaW50ICgqdG9f c3RvcHBlZF9kYXRhX2FkZHJlc3MpIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBDT1JFX0FERFIgKikK ICAgICAgICBUQVJHRVRfREVGQVVMVF9SRVRVUk4gKDApOwogICAgICBpbnQgKCp0b193YXRjaHBv aW50X2FkZHJfd2l0aGluX3JhbmdlKSAoc3RydWN0IHRhcmdldF9vcHMgKiwKQEAgLTQ0Nyw3ICs0 NDUsNyBAQCBJbmRleDogZ2RiLTguMS9nZGIvdGFyZ2V0LmgKICAgICAgICBUQVJHRVRfREVGQVVM VF9GVU5DIChkZWZhdWx0X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UpOwogIAogICAgICAv KiBEb2N1bWVudGF0aW9uIG9mIHRoaXMgcm91dGluZSBpcyBwcm92aWRlZCB3aXRoIHRoZSBjb3Jy ZXNwb25kaW5nCi1AQCAtNTQ1LDcgKzU0NSw3IEBACitAQCAtNTQ1LDcgKzU0NSw3IEBAIHN0cnVj dCB0YXJnZXRfb3BzCiAgICAgICAgVEFSR0VUX0RFRkFVTFRfRlVOQyAoZGVmYXVsdF9yZWdpb25f b2tfZm9yX2h3X3dhdGNocG9pbnQpOwogIAogICAgICBpbnQgKCp0b19jYW5fYWNjZWxfd2F0Y2hw b2ludF9jb25kaXRpb24pIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLApAQCAtNDU2LDMgKzQ1NCw2IEBA IEluZGV4OiBnZGItOC4xL2dkYi90YXJnZXQuaAogIAkJCQkJICAgICAgc3RydWN0IGV4cHJlc3Np b24gKikKICAgICAgICBUQVJHRVRfREVGQVVMVF9SRVRVUk4gKDApOwogICAgICBpbnQgKCp0b19t YXNrZWRfd2F0Y2hfbnVtX3JlZ2lzdGVycykgKHN0cnVjdCB0YXJnZXRfb3BzICosCistLSAKKzIu MTQuMworCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCA2NmUzNTI4Li5l MjU4MDAxIDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMjYsNyArMjYs NyBAQCBWZXJzaW9uOiA4LjEKIAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFk aW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3Qg YSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJs ZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiAxNSV7P2Rpc3R9CitSZWxlYXNlOiAxNCV7P2Rp c3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BM djIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBM R1BMdjMrIGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4gYW5kIEdGREwKIEdyb3VwOiBEZXZlbG9w bWVudC9EZWJ1Z2dlcnMKQEAgLTE4OCw5ICsxODgsNiBAQCBQYXRjaDEwNDQ6IGdkYi1wYWhvbGUt cHl0aG9uMi5wYXRjaAogIyM9ZmVkb3JhdGVzdAogUGF0Y2gxMTE5OiBnZGItdGVzdHN1aXRlLXJl YWRsaW5lNjMtc2lnaW50LXJldmVydC5wYXRjaAogCi0jIFthYXJjaDY0XSBGaXggbWlzc2VkIHVu YWxpZ25lZCBoYXJkd2FyZSB3YXRjaHBvaW50cyAoUkggQlogMTM0Nzk5MykuCi1QYXRjaDEyNzg6 IGdkYi1yaGJ6MTM0Nzk5My1hYXJjaDY0LWh3LXdhdGNocG9pbnQucGF0Y2gKLQogIyBJbmNsdWRl IHRoZSBhdXRvLWdlbmVyYXRlZCBmaWxlIGNvbnRhaW5pbmcgdGhlICJQYXRjaDoiIGRpcmVjdGl2 ZXMuCiAjIFNlZSBSRUFETUUubG9jYWwtcGF0Y2hlcyBmb3IgbW9yZSBkZXRhaWxzLgogU291cmNl ODogX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKQEAgLTQxNiw4ICs0MTMsNiBAQCB0YXIgeHpmICV7 U09VUkNFN30KICkKICVlbmRpZgogCi0lcGF0Y2gxMjc4IC1wMQotCiAjIEZpbGVzIGhhdmUgYCMg PG51bWJlcj4gPGZpbGU+JyBzdGF0ZW1lbnRzIGJyZWFraW5nIFZQQVRIIC8gZmluZC1kZWJ1Z2lu Zm8uc2ggLgogKGNkIGdkYjtybSAtZnYgJChwZXJsIC1wZSAncy9cXFxuLyAvJyA8TWFrZWZpbGUu aW58c2VkIC1uICdzL15ZWUZJTEVTID0gLy9wJykpCiAKQEAgLTEwMzEsOSArMTAyNiw2IEBAIHRo ZW4KIGZpCiAKICVjaGFuZ2Vsb2cKLSogU2F0IE1heSAgNSAyMDE4IEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDguMS0xNS5mYzI4Ci0tIFthYXJjaDY0XSBGaXgg bWlzc2VkIHVuYWxpZ25lZCBoYXJkd2FyZSB3YXRjaHBvaW50cyAoUkggQlogMTM0Nzk5MykuCi0K ICogTW9uIEFwciAgMiAyMDE4IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPiAtIDguMS0xNC5mYzI4CiAtIFJldmVydCAnRml4IFBERiBidWlsZCBvbiBSYXdoaWRlL0Yt MjknLCBybSAtcmYgdGV4aW5mby8gKGZyb20gUkggQlogMTU2MjU4MCkuCiAK