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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: [aarch64] Fix missed unaligned hardware watchpoints (RH BZ 1347993). Date: Thu, 23 Jul 2026 18:33:15 GMT Message-ID: <178483159550.1.14501244759041322150.rpms-gdb-397c8a592234@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 397c8a592234f888ebadca9b3c5c628cb1540754 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogMzk3YzhhNTkyMjM0Zjg4OGViYWRjYTliM2M1YzYyOGNi MTU0MDc1NApBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxOC0wNS0wNVQxODo1NDoyOCswMjowMApTdGF0cyAgOiArMTI4NC8tODkg aW4gMyBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMv Z2RiL2MvMzk3YzhhNTkyMjM0Zjg4OGViYWRjYTliM2M1YzYyOGNiMTU0MDc1ND9icmFuY2g9Zml4 LWR1cC1wYXRjaAoKTG9nOgpbYWFyY2g2NF0gRml4IG1pc3NlZCB1bmFsaWduZWQgaGFyZHdhcmUg d2F0Y2hwb2ludHMgKFJIIEJaIDEzNDc5OTMpLgoKLS0tCmRpZmYgLS1naXQgYS9nZGItcmhiejEz NDc5OTMtYWFyY2g2NC1ody13YXRjaHBvaW50LnBhdGNoIGIvZ2RiLXJoYnoxMzQ3OTkzLWFhcmNo NjQtaHctd2F0Y2hwb2ludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li43NWJkMDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJoYnoxMzQ3OTkzLWFhcmNoNjQtaHct d2F0Y2hwb2ludC5wYXRjaApAQCAtMCwwICsxLDExODggQEAKK2NvbW1pdCBhM2I2MGU0NTg4NjA2 MzU0YjkzNTA4YTAwMDhhNWNhMDRiNjhmYWQ4CitBdXRob3I6IEphbiBLcmF0b2NodmlsIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgorRGF0ZTogICBGcmkgTWF5IDQgMjI6MjI6MDQgMjAxOCAr MDIwMAorCisgICAgYWFyY2g2NDogUFIgMTk4MDY6IHdhdGNocG9pbnRzOiBmYWxzZSBuZWdhdGl2 ZXMgKyBQUiAyMDIwNyBjb250aWd1b3VzIG9uZXMKKyAgICAKKyAgICBTb21lIHVuYWxpZ25lZCB3 YXRjaHBvaW50cyB3ZXJlIGN1cnJlbnRseSBtaXNzZWQuCisgICAgCisgICAgT24gb2xkIGtlcm5l bHMgYXMgc3BlY2lmaWVkIGluCisgICAgICAgICAgICBrZXJuZWwgUkZFOiBhYXJjaDY0OiBwdHJh Y2U6IEJBUzogU3VwcG9ydCBhbnkgY29udGlndW91cyByYW5nZSAoZWRpdCkKKyAgICAgICAgICAg IGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIwMjA3Cisg ICAgYWZ0ZXIgdGhpcyBwYXRjaCBzb21lIG90aGVyIHVuYWxpZ25lZCB3YXRjaHBvaW50cyB3aWxs IGdldCByZXBvcnRlZCBhcyBmYWxzZQorICAgIHBvc2l0aXZlcy4KKyAgICAKKyAgICBXaXRoIG5l dyBrZXJuZWxzIGFsbCB0aGUgd2F0Y2hwb2ludHMgc2hvdWxkIHdvcmsgZXhhY3RseS4KKyAgICAK KyAgICBUaGVyZSBtYXkgYmUgYSByZWdyZXNpb24gdGhhdCBpdCBub3cgbGVzcyBtZXJnZXMgd2F0 Y2hwb2ludHMgc28gdGhhdCB3aXRoCisgICAgbXVsdGlwbGUgb3ZlcmxhcHBpbmcgd2F0Y2hwb2lu dHMgaXQgbWF5IHJ1biBvdXQgb2YgdGhlIDQgaGFyZHdhcmUgd2F0Y2hwb2ludAorICAgIHJlZ2lz dGVycy4gIEJ1dCBhcyBkaXNjdXNzZWQgaW4gdGhlIG9yaWdpbmFsIHRocmVhZCBHREIgbmVlZHMg c29tZSBnZW5lcmljCisgICAgd2F0Y2hwb2ludHMgbWVyZ2luZyBmcmFtZXdvcmsgdG8gYmUgdXNl ZCBieSBhbGwgdGhlIHRhcmdldCBzcGVjaWZpYyBjb2RlLgorICAgIEV2ZW4gY3VycmVudCBGU0Yg R0RCIGNvZGUgZG9lcyBub3QgbWVyZ2UgaXQgcGVyZmVjdGx5LiAgQWxzbyB3aXRoIHRoZSBtb3Jl CisgICAgcHJlY2lzZSB3YXRjaHBvaW50cyBvbmUgY2FuIHRlY2huaWNhbGx5IG1lcmdlIHRoZW0g bGVzcy4gIEFuZCBJIGRvIG5vdCB0aGluaworICAgIGl0IG1hdHRlcnMgdG9vIG11Y2ggdG8gaW1w cm92ZSBtZXJnZWFiaWxpdHkgb25seSBmb3Igb2xkIGtlcm5lbHMuCisgICAgU3RpbGwgZXZlbiBv biBuZXcga2VybmVscyBzb21lIGJldHRlciBtZXJnaW5nIGxvZ2ljIHdvdWxkIG1ha2Ugc2Vuc2Uu CisgICAgCisgICAgVGhlcmUgcmVtYWlucyBvbmUgaXNzdWU6CisgICAgICAgICAgICBrZXJuZWwt NC4xNS4xNC0zMDAuZmMyNy5hcm12N2hsCisgICAgICAgICAgICBGQUlMOiBnZGIuYmFzZS93YXRj aHBvaW50LXVuYWxpZ25lZC5leHA6IGNvbnRpbnVlCisgICAgICAgICAgICBGQUlMOiBnZGIuYmFz ZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHA6IGNvbnRpbnVlCisgICAgICAgICAgICAoZ2RiKSBj b250aW51ZQorICAgICAgICAgICAgQ29udGludWluZy4KKyAgICAgICAgICAgIFVuZXhwZWN0ZWQg ZXJyb3Igc2V0dGluZyB3YXRjaHBvaW50OiBJbnZhbGlkIGFyZ3VtZW50LgorICAgICAgICAgICAg KGdkYikgRkFJTDogZ2RiLmJhc2Uvd2F0Y2hwb2ludC11bmFsaWduZWQuZXhwOiBjb250aW51ZQor ICAgIEJ1dCB0aGF0IGxvb2tzIGFzIGEga2VybmVsIGJ1ZyB0byBtZS4KKyAgICAoMSkgSXQgaXMg bm90IGEgcmVncmVzc2lvbiBieSB0aGlzIHBhdGNoLgorICAgICgyKSBJdCBpcyB1bnJlbGF0ZWQg dG8gdGhpcyBwYXRjaC4KKyAgICAKKyAgICBnZGIvQ2hhbmdlTG9nCisgICAgMjAxOC0wNS0wNCAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorICAgICAgICAgICAg ICAgIFBlZHJvIEFsdmVzIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKyAgICAKKyAgICAgICAgICAgIFBS IGJyZWFrcG9pbnRzLzE5ODA2IGFuZCBzdXBwb3J0IGZvciBQUiBleHRlcm5hbC8yMDIwNy4KKyAg ICAgICAgICAgICogTkVXUzogTWVudGlvbiBBYXJjaDY0IHdhdGNocG9pbnQgaW1wcm92ZW1lbnRz LgorICAgICAgICAgICAgKiBhYXJjaDY0LWxpbnV4LW5hdC5jIChhYXJjaDY0X2xpbnV4X3N0b3Bw ZWRfZGF0YV9hZGRyZXNzKTogRml4IG1pc3NlZAorICAgICAgICAgICAgd2F0Y2hwb2ludHMgYW5k IFBSIGV4dGVybmFsLzIwMjA3IHdhdGNocG9pbnRzLgorICAgICAgICAgICAgKiBuYXQvYWFyY2g2 NC1saW51eC1ody1wb2ludC5jCisgICAgICAgICAgICAoa2VybmVsX3N1cHBvcnRzX2FueV9jb250 aWd1b3VzX3JhbmdlKTogTmV3LgorICAgICAgICAgICAgKGFhcmNoNjRfd2F0Y2hwb2ludF9vZmZz ZXQpOiBOZXcuCisgICAgICAgICAgICAoYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCk6IFN1cHBv cnQgUFIgZXh0ZXJuYWwvMjAyMDcgd2F0Y2hwb2ludHMuCisgICAgICAgICAgICAoYWFyY2g2NF9w b2ludF9lbmNvZGVfY3RybF9yZWcpOiBOZXcgcGFyYW1ldGVyIG9mZnNldCwgbmV3IGFzc2VydHMu CisgICAgICAgICAgICAoYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkKTogU3VwcG9ydCBQUiBleHRl cm5hbC8yMDIwNyB3YXRjaHBvaW50cy4KKyAgICAgICAgICAgIChhYXJjaDY0X2FsaWduX3dhdGNo cG9pbnQpOiBOZXcgcGFyYW1ldGVycyBhbGlnbmVkX29mZnNldF9wIGFuZAorICAgICAgICAgICAg bmV4dF9hZGRyX29yaWdfcC4gIFN1cHBvcnQgUFIgZXh0ZXJuYWwvMjAyMDcgd2F0Y2hwb2ludHMu CisgICAgICAgICAgICAoYWFyY2g2NF9kb3duZ3JhZGVfcmVncyk6IE5ldy4KKyAgICAgICAgICAg IChhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9pbnQpOiBOZXcgcGFyYW1ldGVycyBvZmZz ZXQgYW5kCisgICAgICAgICAgICBhZGRyX29yaWcuCisgICAgICAgICAgICAoYWFyY2g2NF9kcl9z dGF0ZV9yZW1vdmVfb25lX3BvaW50KTogTGlrZXdpc2UuCisgICAgICAgICAgICAoYWFyY2g2NF9o YW5kbGVfYnJlYWtwb2ludCk6IFVwZGF0ZSBjYWxsZXIuCisgICAgICAgICAgICAoYWFyY2g2NF9o YW5kbGVfYWxpZ25lZF93YXRjaHBvaW50KTogTGlrZXdpc2UuCisgICAgICAgICAgICAoYWFyY2g2 NF9oYW5kbGVfdW5hbGlnbmVkX3dhdGNocG9pbnQpOiBTdXBwb3J0IGFkZHJfb3JpZyBhbmQKKyAg ICAgICAgICAgIGFsaWduZWRfb2Zmc2V0LgorICAgICAgICAgICAgKGFhcmNoNjRfbGludXhfc2V0 X2RlYnVnX3JlZ3MpOiBSZW1vdmUgY29uc3QgZnJvbSBzdGF0ZS4gIENhbGwKKyAgICAgICAgICAg IGFhcmNoNjRfZG93bmdyYWRlX3JlZ3MuCisgICAgICAgICAgICAoYWFyY2g2NF9zaG93X2RlYnVn X3JlZ19zdGF0ZSk6IFByaW50IGFsc28gZHJfYWRkcl9vcmlnX3dwLgorICAgICAgICAgICAgKiBu YXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5oIChEUl9DT05UUk9MX0xFTkdUSCk6IFJlbmFtZSB0 byAuLi4KKyAgICAgICAgICAgIChEUl9DT05UUk9MX01BU0spOiAuLi4gdGhpcy4KKyAgICAgICAg ICAgIChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUpOiBOZXcgZmllbGQgZHJfYWRkcl9v cmlnX3dwLgorICAgICAgICAgICAgKHVuc2lnbmVkIGludCBhYXJjaDY0X3dhdGNocG9pbnRfb2Zm c2V0KTogTmV3IHByb3RvdHlwZS4KKyAgICAgICAgICAgIChhYXJjaDY0X2xpbnV4X3NldF9kZWJ1 Z19yZWdzKTogUmVtb3ZlIGNvbnN0IGZyb20gc3RhdGUuCisgICAgICAgICAgICAqIHV0aWxzLmMg KGFsaWduX3VwLCBhbGlnbl9kb3duKTogTW92ZSB0byAuLi4KKyAgICAgICAgICAgICogY29tbW9u L2NvbW1vbi11dGlscy5jIChhbGlnbl91cCwgYWxpZ25fZG93bik6IC4uLiBoZXJlLgorICAgICAg ICAgICAgKiB1dGlscy5oIChhbGlnbl91cCwgYWxpZ25fZG93bik6IE1vdmUgdG8gLi4uCisgICAg ICAgICAgICAqIGNvbW1vbi9jb21tb24tdXRpbHMuaCAoYWxpZ25fdXAsIGFsaWduX2Rvd24pOiAu Li4gaGVyZS4KKyAgICAKKyAgICBnZGIvZ2Ric2VydmVyL0NoYW5nZUxvZworICAgIDIwMTgtMDUt MDQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAgICAgICAg ICAgICAgICBQZWRybyBBbHZlcyA8cGFsdmVzQHJlZGhhdC5jb20+CisgICAgCisgICAgICAgICAg ICAqIGxpbnV4LWFhcmNoNjQtbG93LmMgKGFhcmNoNjRfc3RvcHBlZF9kYXRhX2FkZHJlc3MpOgor ICAgICAgICAgICAgTGlrZXdpc2UuCisgICAgCisgICAgZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cK KyAgICAyMDE4LTA1LTA0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+CisgICAgICAgICAgICAgICAgUGVkcm8gQWx2ZXMgPHBhbHZlc0ByZWRoYXQuY29tPgorICAg IAorICAgICAgICAgICAgUFIgYnJlYWtwb2ludHMvMTk4MDYgYW5kIHN1cHBvcnQgZm9yIFBSIGV4 dGVybmFsLzIwMjA3LgorICAgICAgICAgICAgKiBnZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25l ZC5jOiBOZXcgZmlsZS4KKyAgICAgICAgICAgICogZ2RiLmJhc2Uvd2F0Y2hwb2ludC11bmFsaWdu ZWQuZXhwOiBOZXcgZmlsZS4KKworLS0tIC4vZ2RiL05FV1MJMjAxOC0wMS0zMSAwMzo1ODo1MC4w MDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9ORVdTCTIwMTgtMDUtMDUgMTc6NTQ6MTQuMTA4MTQ4 MTUyICswMjAwCitAQCAtMSw2ICsxLDE2IEBACisgCQlXaGF0IGhhcyBjaGFuZ2VkIGluIEdEQj8K KyAJICAgICAoT3JnYW5pemVkIHJlbGVhc2UgYnkgcmVsZWFzZSkKKyAKKysqIEFhcmNoNjQvTGlu dXggaGFyZHdhcmUgd2F0Y2hwb2ludHMgaW1wcm92ZW1lbnRzCisrCisrICBIYXJkd2FyZSB3YXRj aHBvaW50cyBvbiB1bmFsaWduZWQgYWRkcmVzc2VzIGFyZSBub3cgcHJvcGVybHkKKysgIHN1cHBv cnRlZCB3aGVuIHJ1bm5pbmcgTGludXgga2VybmVsIDQuMTAgb3IgaGlnaGVyOiByZWFkIGFuZCBh Y2Nlc3MKKysgIHdhdGNocG9pbnRzIGFyZSBubyBsb25nZXIgc3B1cmlvdXNseSBtaXNzZWQsIGFu ZCBhbGwgd2F0Y2hwb2ludHMKKysgIGxlbmd0aHMgYmV0d2VlbiAxIGFuZCA4IGJ5dGVzIGFyZSBz dXBwb3J0ZWQuICBPbiBvbGRlciBrZXJuZWxzLAorKyAgd2F0Y2hwb2ludHMgc2V0IG9uIHVuYWxp Z25lZCBhZGRyZXNzZXMgYXJlIG5vIGxvbmdlciBtaXNzZWQsIHdpdGgKKysgIHRoZSB0cmFkZW9m ZiB0aGF0IHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgb2YgZmFsc2UgaGl0cyBiZWluZworKyAgcmVw b3J0ZWQuCisrCisgKioqIENoYW5nZXMgaW4gR0RCIDguMQorIAorICogR0RCIG5vdyBzdXBwb3J0 cyBkeW5hbWljYWxseSBjcmVhdGluZyBhcmJpdHJhcnkgcmVnaXN0ZXIgZ3JvdXBzIHNwZWNpZmll ZAorLS0tIC4vZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMJMjAxOC0wMS0wNSAwNTowNzoyMy4wMDAw MDAwMDAgKzAxMDAKKysrKyAuL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jCTIwMTgtMDUtMDUgMTc6 NTQ6NTMuMjI4NTA2ODIyICswMjAwCitAQCAtNzM1LDE2ICs3MzUsMzggQEAgYWFyY2g2NF9saW51 eF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydQorICAgc3RhdGUgPSBhYXJjaDY0X2dldF9kZWJ1 Z19yZWdfc3RhdGUgKHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOworICAgZm9yIChpID0g YWFyY2g2NF9udW1fd3BfcmVncyAtIDE7IGkgPj0gMDsgLS1pKQorICAgICB7CisrICAgICAgY29u c3QgdW5zaWduZWQgaW50IG9mZnNldAorKwk9IGFhcmNoNjRfd2F0Y2hwb2ludF9vZmZzZXQgKHN0 YXRlLT5kcl9jdHJsX3dwW2ldKTsKKyAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgbGVuID0gYWFy Y2g2NF93YXRjaHBvaW50X2xlbmd0aCAoc3RhdGUtPmRyX2N0cmxfd3BbaV0pOworICAgICAgIGNv bnN0IENPUkVfQUREUiBhZGRyX3RyYXAgPSAoQ09SRV9BRERSKSBzaWdpbmZvLnNpX2FkZHI7Cist ICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJfd2F0Y2ggPSBzdGF0ZS0+ZHJfYWRkcl93cFtpXTsK KysgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl93YXRjaCA9IHN0YXRlLT5kcl9hZGRyX3dwW2ld ICsgb2Zmc2V0OworKyAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3dhdGNoX2FsaWduZWQgPSBh bGlnbl9kb3duIChzdGF0ZS0+ZHJfYWRkcl93cFtpXSwgOCk7CisrICAgICAgY29uc3QgQ09SRV9B RERSIGFkZHJfb3JpZyA9IHN0YXRlLT5kcl9hZGRyX29yaWdfd3BbaV07CisgCisgICAgICAgaWYg KHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0KKyAJICAmJiBEUl9DT05UUk9MX0VOQUJMRUQgKHN0 YXRlLT5kcl9jdHJsX3dwW2ldKQorLQkgICYmIGFkZHJfdHJhcCA+PSBhZGRyX3dhdGNoCisrCSAg JiYgYWRkcl90cmFwID49IGFkZHJfd2F0Y2hfYWxpZ25lZAorIAkgICYmIGFkZHJfdHJhcCA8IGFk ZHJfd2F0Y2ggKyBsZW4pCisgCXsKKy0JICAqYWRkcl9wID0gYWRkcl90cmFwOworKwkgIC8qIEFE RFJfVFJBUCByZXBvcnRzIHRoZSBmaXJzdCBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgcmFuZ2UKKysJ ICAgICBhY2Nlc3NlZCBieSB0aGUgQ1BVLCByZWdhcmRsZXNzIG9mIHdoYXQgd2FzIHRoZSBtZW1v cnkKKysJICAgICByYW5nZSB3YXRjaGVkLiAgVGh1cywgYSBsYXJnZSBDUFUgYWNjZXNzIHRoYXQg c3RyYWRkbGVzCisrCSAgICAgdGhlIEFERFJfV0FUQ0guLkFERFJfV0FUQ0grTEVOIHJhbmdlIG1h eSByZXN1bHQgaW4gYW4KKysJICAgICBBRERSX1RSQVAgdGhhdCBpcyBsb3dlciB0aGFuIHRoZQor KwkgICAgIEFERFJfV0FUQ0guLkFERFJfV0FUQ0grTEVOIHJhbmdlLiAgRS5nLjoKKysKKysJICAg ICBhZGRyOiB8ICAgNCAgIHwgICA1ICAgfCAgIDYgICB8ICAgNyAgIHwgICA4ICAgfAorKwkJCQkg ICB8LS0tLSByYW5nZSB3YXRjaGVkIC0tLS18CisrCQkgICB8LS0tLS0tLS0tLS0gcmFuZ2UgYWNj ZXNzZWQgLS0tLS0tLS0tLS0tfAorKworKwkgICAgIEluIHRoaXMgY2FzZSwgQUREUl9UUkFQIHdp bGwgYmUgNC4KKysKKysJICAgICBUbyBtYXRjaCBhIHdhdGNocG9pbnQga25vd24gdG8gR0RCIGNv cmUsIHdlIG11c3QgbmV2ZXIKKysJICAgICByZXBvcnQgKkFERFJfUCBvdXRzaWRlIG9mIGFueSBB RERSX1dBVENILi5BRERSX1dBVENIK0xFTgorKwkgICAgIHJhbmdlLiAgQUREUl9XQVRDSCA8PSBB RERSX1RSQVAgPCBBRERSX09SSUcgaXMgYSBmYWxzZQorKwkgICAgIHBvc2l0aXZlIG9uIGtlcm5l bHMgb2xkZXIgdGhhbiA0LjEwLiAgU2VlIFBSCisrCSAgICAgZXh0ZXJuYWwvMjAyMDcuICAqLwor KwkgICphZGRyX3AgPSBhZGRyX29yaWc7CisgCSAgcmV0dXJuIDE7CisgCX0KKyAgICAgfQorLS0t IC4vZ2RiL2NvbW1vbi9jb21tb24tdXRpbHMuYwkyMDE4LTAxLTA1IDA1OjA3OjIzLjAwMDAwMDAw MCArMDEwMAorKysrIC4vZ2RiL2NvbW1vbi9jb21tb24tdXRpbHMuYwkyMDE4LTA1LTA1IDE3OjU0 OjE0LjEwOTE0ODE2MSArMDIwMAorQEAgLTQwOCwzICs0MDgsMjMgQEAgc3RyaW5naWZ5X2FyZ3Yg KGNvbnN0IHN0ZDo6dmVjdG9yPGNoYXIgKgorIAorICAgcmV0dXJuIHJldDsKKyB9CisrCisrLyog U2VlIGNvbW1vbi9jb21tb24tdXRpbHMuaC4gICovCisrCisrVUxPTkdFU1QKKythbGlnbl91cCAo VUxPTkdFU1QgdiwgaW50IG4pCisreworKyAgLyogQ2hlY2sgdGhhdCBOIGlzIHJlYWxseSBhIHBv d2VyIG9mIHR3by4gICovCisrICBnZGJfYXNzZXJ0IChuICYmIChuICYgKG4tMSkpID09IDApOwor KyAgcmV0dXJuICh2ICsgbiAtIDEpICYgLW47CisrfQorKworKy8qIFNlZSBjb21tb24vY29tbW9u LXV0aWxzLmguICAqLworKworK1VMT05HRVNUCisrYWxpZ25fZG93biAoVUxPTkdFU1QgdiwgaW50 IG4pCisreworKyAgLyogQ2hlY2sgdGhhdCBOIGlzIHJlYWxseSBhIHBvd2VyIG9mIHR3by4gICov CisrICBnZGJfYXNzZXJ0IChuICYmIChuICYgKG4tMSkpID09IDApOworKyAgcmV0dXJuICh2ICYg LW4pOworK30KKy0tLSAuL2dkYi9jb21tb24vY29tbW9uLXV0aWxzLmgJMjAxOC0wMS0wNSAwNTow NzoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9jb21tb24vY29tbW9uLXV0aWxzLmgJMjAx OC0wNS0wNSAxNzo1NDoxNC4xMTAxNDgxNzAgKzAyMDAKK0BAIC0xNDYsNCArMTQ2LDM2IEBAIGlu X2luY2x1c2l2ZV9yYW5nZSAoVCB2YWx1ZSwgVCBsb3csIFQgaGkKKyAgIHJldHVybiB2YWx1ZSA+ PSBsb3cgJiYgdmFsdWUgPD0gaGlnaDsKKyB9CisgCisrLyogRW5zdXJlIHRoYXQgViBpcyBhbGln bmVkIHRvIGFuIE4gYnl0ZSBib3VuZGFyeSAoQidzIGFzc3VtZWQgdG8gYmUgYQorKyAgIHBvd2Vy IG9mIDIpLiAgUm91bmQgdXAvZG93biB3aGVuIG5lY2Vzc2FyeS4gIEV4YW1wbGVzIG9mIGNvcnJl Y3QKKysgICB1c2UgaW5jbHVkZToKKysKKysgICAgYWRkciA9IGFsaWduX3VwIChhZGRyLCA4KTsg LS0gVkFMVUUgbmVlZHMgOCBieXRlIGFsaWdubWVudAorKyAgICB3cml0ZV9tZW1vcnkgKGFkZHIs IHZhbHVlLCBsZW4pOworKyAgICBhZGRyICs9IGxlbjsKKysKKysgICBhbmQ6CisrCisrICAgIHNw ID0gYWxpZ25fZG93biAoc3AgLSBsZW4sIDE2KTsgLS0gS2VlcCBTUCAxNiBieXRlIGFsaWduZWQK KysgICAgd3JpdGVfbWVtb3J5IChzcCwgdmFsdWUsIGxlbik7CisrCisrICAgTm90ZSB0aGF0IHVz ZXMgc3VjaCBhczoKKysKKysgICAgd3JpdGVfbWVtb3J5IChhZGRyLCB2YWx1ZSwgbGVuKTsKKysg ICAgYWRkciArPSBhbGlnbl91cCAobGVuLCA4KTsKKysKKysgICBhbmQ6CisrCisrICAgIHNwIC09 IGFsaWduX3VwIChsZW4sIDgpOworKyAgICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZSwgbGVuKTsK KysKKysgICBhcmUgdHlwaWNhbGx5IG5vdCBjb3JyZWN0IGFzIHRoZXkgZG9uJ3QgZW5zdXJlIHRo YXQgdGhlIGFkZHJlc3MgKFNQCisrICAgb3IgQUREUikgaXMgY29ycmVjdGx5IGFsaWduZWQgKHJl bHlpbmcgb24gcHJldmlvdXMgYWxpZ25tZW50IHRvCisrICAga2VlcCB0aGluZ3MgcmlnaHQpLiAg VGhpcyBpcyBhbHNvIHdoeSB0aGUgbWV0aG9kcyBhcmUgY2FsbGVkCisrICAgImFsaWduXy4uLiIg aW5zdGVhZCBvZiAicm91bmRfLi4uIiBhcyB0aGUgbGF0dGVyIHJlYWRzIGJldHRlciB3aXRoCisr ICAgdGhpcyBpbmNvcnJlY3QgY29kaW5nIHN0eWxlLiAgKi8KKysKKytleHRlcm4gVUxPTkdFU1Qg YWxpZ25fdXAgKFVMT05HRVNUIHYsIGludCBuKTsKKytleHRlcm4gVUxPTkdFU1QgYWxpZ25fZG93 biAoVUxPTkdFU1QgdiwgaW50IG4pOworKworICNlbmRpZgorLS0tIC4vZ2RiL2dkYnNlcnZlci9s aW51eC1hYXJjaDY0LWxvdy5jCTIwMTgtMDEtMDUgMDU6MDc6MjMuMDAwMDAwMDAwICswMTAwCisr KysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFhcmNoNjQtbG93LmMJMjAxOC0wNS0wNSAxNzo1NDox NC4xMTAxNDgxNzAgKzAyMDAKK0BAIC0zNjAsMTQgKzM2MCwzOSBAQCBhYXJjaDY0X3N0b3BwZWRf ZGF0YV9hZGRyZXNzICh2b2lkKQorICAgc3RhdGUgPSBhYXJjaDY0X2dldF9kZWJ1Z19yZWdfc3Rh dGUgKHBpZF9vZiAoY3VycmVudF90aHJlYWQpKTsKKyAgIGZvciAoaSA9IGFhcmNoNjRfbnVtX3dw X3JlZ3MgLSAxOyBpID49IDA7IC0taSkKKyAgICAgeworKyAgICAgIGNvbnN0IHVuc2lnbmVkIGlu dCBvZmZzZXQKKysJPSBhYXJjaDY0X3dhdGNocG9pbnRfb2Zmc2V0IChzdGF0ZS0+ZHJfY3RybF93 cFtpXSk7CisgICAgICAgY29uc3QgdW5zaWduZWQgaW50IGxlbiA9IGFhcmNoNjRfd2F0Y2hwb2lu dF9sZW5ndGggKHN0YXRlLT5kcl9jdHJsX3dwW2ldKTsKKyAgICAgICBjb25zdCBDT1JFX0FERFIg YWRkcl90cmFwID0gKENPUkVfQUREUikgc2lnaW5mby5zaV9hZGRyOworLSAgICAgIGNvbnN0IENP UkVfQUREUiBhZGRyX3dhdGNoID0gc3RhdGUtPmRyX2FkZHJfd3BbaV07CisrICAgICAgY29uc3Qg Q09SRV9BRERSIGFkZHJfd2F0Y2ggPSBzdGF0ZS0+ZHJfYWRkcl93cFtpXSArIG9mZnNldDsKKysg ICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl93YXRjaF9hbGlnbmVkID0gYWxpZ25fZG93biAoc3Rh dGUtPmRyX2FkZHJfd3BbaV0sIDgpOworKyAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX29yaWcg PSBzdGF0ZS0+ZHJfYWRkcl9vcmlnX3dwW2ldOworKworICAgICAgIGlmIChzdGF0ZS0+ZHJfcmVm X2NvdW50X3dwW2ldCisgCSAgJiYgRFJfQ09OVFJPTF9FTkFCTEVEIChzdGF0ZS0+ZHJfY3RybF93 cFtpXSkKKy0JICAmJiBhZGRyX3RyYXAgPj0gYWRkcl93YXRjaAorKwkgICYmIGFkZHJfdHJhcCA+ PSBhZGRyX3dhdGNoX2FsaWduZWQKKyAJICAmJiBhZGRyX3RyYXAgPCBhZGRyX3dhdGNoICsgbGVu KQorLQlyZXR1cm4gYWRkcl90cmFwOworKwl7CisrCSAgLyogQUREUl9UUkFQIHJlcG9ydHMgdGhl IGZpcnN0IGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSByYW5nZQorKwkgICAgIGFjY2Vzc2VkIGJ5IHRo ZSBDUFUsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB3YXMgdGhlIG1lbW9yeQorKwkgICAgIHJhbmdlIHdh dGNoZWQuICBUaHVzLCBhIGxhcmdlIENQVSBhY2Nlc3MgdGhhdCBzdHJhZGRsZXMKKysJICAgICB0 aGUgQUREUl9XQVRDSC4uQUREUl9XQVRDSCtMRU4gcmFuZ2UgbWF5IHJlc3VsdCBpbiBhbgorKwkg ICAgIEFERFJfVFJBUCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlCisrCSAgICAgQUREUl9XQVRDSC4u QUREUl9XQVRDSCtMRU4gcmFuZ2UuICBFLmcuOgorKworKwkgICAgIGFkZHI6IHwgICA0ICAgfCAg IDUgICB8ICAgNiAgIHwgICA3ICAgfCAgIDggICB8CisrCQkJCSAgIHwtLS0tIHJhbmdlIHdhdGNo ZWQgLS0tLXwKKysJCSAgIHwtLS0tLS0tLS0tLSByYW5nZSBhY2Nlc3NlZCAtLS0tLS0tLS0tLS18 CisrCisrCSAgICAgSW4gdGhpcyBjYXNlLCBBRERSX1RSQVAgd2lsbCBiZSA0LgorKworKwkgICAg IFRvIG1hdGNoIGEgd2F0Y2hwb2ludCBrbm93biB0byBHREIgY29yZSwgd2UgbXVzdCBuZXZlcgor KwkgICAgIHJlcG9ydCAqQUREUl9QIG91dHNpZGUgb2YgYW55IEFERFJfV0FUQ0guLkFERFJfV0FU Q0grTEVOCisrCSAgICAgcmFuZ2UuICBBRERSX1dBVENIIDw9IEFERFJfVFJBUCA8IEFERFJfT1JJ RyBpcyBhIGZhbHNlCisrCSAgICAgcG9zaXRpdmUgb24ga2VybmVscyBvbGRlciB0aGFuIDQuMTAu ICBTZWUgUFIKKysJICAgICBleHRlcm5hbC8yMDIwNy4gICovCisrCSAgcmV0dXJuIGFkZHJfb3Jp ZzsKKysJfQorICAgICB9CisgCisgICByZXR1cm4gKENPUkVfQUREUikgMDsKKy0tLSAuL2dkYi9u YXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jCTIwMTgtMDEtMDUgMDU6MDc6MjMuMDAwMDAwMDAw ICswMTAwCisrKysgLi9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYwkyMDE4LTA1LTA1 IDE3OjU0OjE0LjExMDE0ODE3MCArMDIwMAorQEAgLTM0LDI5ICszNCw1MiBAQAorIGludCBhYXJj aDY0X251bV9icF9yZWdzOworIGludCBhYXJjaDY0X251bV93cF9yZWdzOworIAorKy8qIFRydWUg aWYgdGhpcyBrZXJuZWwgZG9lcyBub3QgaGF2ZSB0aGUgYnVnIGRlc2NyaWJlZCBieSBQUgorKyAg IGV4dGVybmFsLzIwMjA3IChMaW51eCA+PSA0LjEwKS4gIEEgZml4ZWQga2VybmVsIHN1cHBvcnRz IGFueQorKyAgIGNvbnRpZ3VvdXMgcmFuZ2Ugb2YgYml0cyBpbiA4LWJpdCBieXRlIERSX0NPTlRS T0xfTUFTSy4gIEEgYnVnZ3kKKysgICBrZXJuZWwgc3VwcG9ydHMgb25seSAweDAxLCAweDAzLCAw eDBmIGFuZCAweGZmLiAgV2Ugc3RhcnQgYnkKKysgICBhc3N1bWluZyB0aGUgYnVnIGlzIGZpeGVk LCBhbmQgdGhlbiBkZXRlY3QgdGhlIGJ1ZyBhdAorKyAgIFBUUkFDRV9TRVRSRUdTRVQgdGltZS4g ICovCisrc3RhdGljIGJvb2wga2VybmVsX3N1cHBvcnRzX2FueV9jb250aWd1b3VzX3JhbmdlID0g dHJ1ZTsKKysKKysvKiBSZXR1cm4gc3RhcnRpbmcgYnl0ZSAwLi43IGluY2wuIG9mIGEgd2F0Y2hw b2ludCBlbmNvZGVkIGJ5IENUUkwuICAqLworKworK3Vuc2lnbmVkIGludAorK2FhcmNoNjRfd2F0 Y2hwb2ludF9vZmZzZXQgKHVuc2lnbmVkIGludCBjdHJsKQorK3sKKysgIHVpbnQ4X3QgbWFzayA9 IERSX0NPTlRST0xfTUFTSyAoY3RybCk7CisrICB1bnNpZ25lZCByZXR2YWw7CisrCisrICAvKiBT aGlmdCBvdXQgYm90dG9tIHplcm9zLiAgKi8KKysgIGZvciAocmV0dmFsID0gMDsgbWFzayAmJiAo bWFzayAmIDEpID09IDA7ICsrcmV0dmFsKQorKyAgICBtYXNrID4+PSAxOworKworKyAgcmV0dXJu IHJldHZhbDsKKyt9CisrCisgLyogVXRpbGl0eSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGxl bmd0aCBpbiBieXRlcyBvZiBhIHdhdGNocG9pbnQKKyAgICBhY2NvcmRpbmcgdG8gdGhlIGNvbnRl bnQgb2YgYSBoYXJkd2FyZSBkZWJ1ZyBjb250cm9sIHJlZ2lzdGVyIENUUkwuCistICAgTm90ZSB0 aGF0IHRoZSBrZXJuZWwgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBCeXRl CistICAgQWRkcmVzcyBTZWxlY3QgKEJBUykgdmFsdWVzOiAweDEsIDB4MywgMHhmIGFuZCAweGZm LCB3aGljaCBtZWFucworLSAgIHRoYXQgZm9yIGEgaGFyZHdhcmUgd2F0Y2hwb2ludCwgaXRzIHZh bGlkIGxlbmd0aCBjYW4gb25seSBiZSAxCistICAgYnl0ZSwgMiBieXRlcywgNCBieXRlcyBvciA4 IGJ5dGVzLiAgKi8KKysgICBBbnkgY29udGlndW91cyByYW5nZSBvZiBieXRlcyBpbiBDVFJMIGlz IHN1cHBvcnRlZC4gIFRoZSByZXR1cm5lZAorKyAgIHZhbHVlIGNhbiBiZSBiZXR3ZWVuIDAuLjgg KGluY2x1c2l2ZSkuICAqLworIAorIHVuc2lnbmVkIGludAorIGFhcmNoNjRfd2F0Y2hwb2ludF9s ZW5ndGggKHVuc2lnbmVkIGludCBjdHJsKQorIHsKKy0gIHN3aXRjaCAoRFJfQ09OVFJPTF9MRU5H VEggKGN0cmwpKQorLSAgICB7CistICAgIGNhc2UgMHgwMToKKy0gICAgICByZXR1cm4gMTsKKy0g ICAgY2FzZSAweDAzOgorLSAgICAgIHJldHVybiAyOworLSAgICBjYXNlIDB4MGY6CistICAgICAg cmV0dXJuIDQ7CistICAgIGNhc2UgMHhmZjoKKy0gICAgICByZXR1cm4gODsKKy0gICAgZGVmYXVs dDoKKy0gICAgICByZXR1cm4gMDsKKy0gICAgfQorKyAgdWludDhfdCBtYXNrID0gRFJfQ09OVFJP TF9NQVNLIChjdHJsKTsKKysgIHVuc2lnbmVkIHJldHZhbDsKKysKKysgIC8qIFNoaWZ0IG91dCBi b3R0b20gemVyb3MuICAqLworKyAgbWFzayA+Pj0gYWFyY2g2NF93YXRjaHBvaW50X29mZnNldCAo Y3RybCk7CisrCisrICAvKiBDb3VudCBib3R0b20gb25lcy4gICovCisrICBmb3IgKHJldHZhbCA9 IDA7IChtYXNrICYgMSkgIT0gMDsgKytyZXR2YWwpCisrICAgIG1hc2sgPj49IDE7CisrCisrICBp ZiAobWFzayAhPSAwKQorKyAgICBlcnJvciAoXygiVW5leHBlY3RlZCBoYXJkd2FyZSB3YXRjaHBv aW50IGxlbmd0aCByZWdpc3RlciB2YWx1ZSAweCV4IiksCisrCSAgIERSX0NPTlRST0xfTUFTSyAo Y3RybCkpOworKworKyAgcmV0dXJuIHJldHZhbDsKKyB9CisgCisgLyogR2l2ZW4gdGhlIGhhcmR3 YXJlIGJyZWFrcG9pbnQgb3Igd2F0Y2hwb2ludCB0eXBlIFRZUEUgYW5kIGl0cworQEAgLTY0LDEw ICs4NywxMyBAQCBhYXJjaDY0X3dhdGNocG9pbnRfbGVuZ3RoICh1bnNpZ25lZCBpbnQKKyAgICBi cmVha3BvaW50L3dhdGNocG9pbnQgY29udHJvbCByZWdpc3Rlci4gICovCisgCisgc3RhdGljIHVu c2lnbmVkIGludAorLWFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0cmxfcmVnIChlbnVtIHRhcmdldF9o d19icF90eXBlIHR5cGUsIGludCBsZW4pCisrYWFyY2g2NF9wb2ludF9lbmNvZGVfY3RybF9yZWcg KGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwgaW50IG9mZnNldCwgaW50IGxlbikKKyB7Cisg ICB1bnNpZ25lZCBpbnQgY3RybCwgdHR5cGU7CisgCisrICBnZGJfYXNzZXJ0IChvZmZzZXQgPT0g MCB8fCBrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UpOworKyAgZ2RiX2Fzc2Vy dCAob2Zmc2V0ICsgbGVuIDw9IEFBUkNINjRfSFdQX01BWF9MRU5fUEVSX1JFRyk7CisrCisgICAv KiB0eXBlICovCisgICBzd2l0Y2ggKHR5cGUpCisgICAgIHsKK0BAIC04OSw4ICsxMTUsOCBAQCBh YXJjaDY0X3BvaW50X2VuY29kZV9jdHJsX3JlZyAoZW51bSB0YXJnCisgCisgICBjdHJsID0gdHR5 cGUgPDwgMzsKKyAKKy0gIC8qIGxlbmd0aCBiaXRtYXNrICovCistICBjdHJsIHw9ICgoMSA8PCBs ZW4pIC0gMSkgPDwgNTsKKysgIC8qIG9mZnNldCBhbmQgbGVuZ3RoIGJpdG1hc2sgKi8KKysgIGN0 cmwgfD0gKCgxIDw8IGxlbikgLSAxKSA8PCAoNSArIG9mZnNldCk7CisgICAvKiBlbmFibGVkIGF0 IGVsMCAqLworICAgY3RybCB8PSAoMiA8PCAxKSB8IDE7CisgCitAQCAtMTM0LDU4ICsxNjAsNjUg QEAgYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkIChpbnQgaXNfd2F0Y2hwbworICAgaWYgKGFkZHIg JiAoYWxpZ25tZW50IC0gMSkpCisgICAgIHJldHVybiAwOworIAorLSAgaWYgKGxlbiAhPSA4ICYm IGxlbiAhPSA0ICYmIGxlbiAhPSAyICYmIGxlbiAhPSAxKQorKyAgaWYgKCgha2VybmVsX3N1cHBv cnRzX2FueV9jb250aWd1b3VzX3JhbmdlCisrICAgICAgICYmIGxlbiAhPSA4ICYmIGxlbiAhPSA0 ICYmIGxlbiAhPSAyICYmIGxlbiAhPSAxKQorKyAgICAgIHx8IChrZXJuZWxfc3VwcG9ydHNfYW55 X2NvbnRpZ3VvdXNfcmFuZ2UKKysJICAmJiAobGVuIDwgMSB8fCBsZW4gPiA4KSkpCisgICAgIHJl dHVybiAwOworIAorICAgcmV0dXJuIDE7CisgfQorIAorIC8qIEdpdmVuIHRoZSAocG90ZW50aWFs bHkgdW5hbGlnbmVkKSB3YXRjaHBvaW50IGFkZHJlc3MgaW4gQUREUiBhbmQKKy0gICBsZW5ndGgg aW4gTEVOLCByZXR1cm4gdGhlIGFsaWduZWQgYWRkcmVzcyBhbmQgYWxpZ25lZCBsZW5ndGggaW4K Ky0gICAqQUxJR05FRF9BRERSX1AgYW5kICpBTElHTkVEX0xFTl9QLCByZXNwZWN0aXZlbHkuICBU aGUgcmV0dXJuZWQKKy0gICBhbGlnbmVkIGFkZHJlc3MgYW5kIGxlbmd0aCB3aWxsIGJlIHZhbGlk IHZhbHVlcyB0byB3cml0ZSB0byB0aGUKKy0gICBoYXJkd2FyZSB3YXRjaHBvaW50IHZhbHVlIGFu ZCBjb250cm9sIHJlZ2lzdGVycy4KKysgICBsZW5ndGggaW4gTEVOLCByZXR1cm4gdGhlIGFsaWdu ZWQgYWRkcmVzcywgb2Zmc2V0IGZyb20gdGhhdCBiYXNlCisrICAgYWRkcmVzcywgYW5kIGFsaWdu ZWQgbGVuZ3RoIGluICpBTElHTkVEX0FERFJfUCwgKkFMSUdORURfT0ZGU0VUX1AKKysgICBhbmQg KkFMSUdORURfTEVOX1AsIHJlc3BlY3RpdmVseS4gIFRoZSByZXR1cm5lZCB2YWx1ZXMgd2lsbCBi ZQorKyAgIHZhbGlkIHZhbHVlcyB0byB3cml0ZSB0byB0aGUgaGFyZHdhcmUgd2F0Y2hwb2ludCB2 YWx1ZSBhbmQgY29udHJvbAorKyAgIHJlZ2lzdGVycy4KKyAKKyAgICBUaGUgZ2l2ZW4gd2F0Y2hw b2ludCBtYXkgZ2V0IHRydW5jYXRlZCBpZiBtb3JlIHRoYW4gb25lIGhhcmR3YXJlCisgICAgcmVn aXN0ZXIgaXMgbmVlZGVkIHRvIGNvdmVyIHRoZSB3YXRjaGVkIHJlZ2lvbi4gICpORVhUX0FERFJf UAorICAgIGFuZCAqTkVYVF9MRU5fUCwgaWYgbm9uLU5VTEwsIHdpbGwgcmV0dXJuIHRoZSBhZGRy ZXNzIGFuZCBsZW5ndGgKKyAgICBvZiB0aGUgcmVtYWluaW5nIHBhcnQgb2YgdGhlIHdhdGNocG9p bnQgKHdoaWNoIGNhbiBiZSBwcm9jZXNzZWQKKy0gICBieSBjYWxsaW5nIHRoaXMgcm91dGluZSBh Z2FpbiB0byBnZW5lcmF0ZSBhbm90aGVyIGFsaWduZWQgYWRkcmVzcworLSAgIGFuZCBsZW5ndGgg cGFpci4KKysgICBieSBjYWxsaW5nIHRoaXMgcm91dGluZSBhZ2FpbiB0byBnZW5lcmF0ZSBhbm90 aGVyIGFsaWduZWQgYWRkcmVzcywKKysgICBvZmZzZXQgYW5kIGxlbmd0aCB0dXBsZS4KKyAKKyAg ICBFc3NlbnRpYWxseSwgdW5hbGlnbmVkIHdhdGNocG9pbnQgaXMgYWNoaWV2ZWQgYnkgbWluaW1h bGx5CisgICAgZW5sYXJnaW5nIHRoZSB3YXRjaGVkIGFyZWEgdG8gbWVldCB0aGUgYWxpZ25tZW50 IHJlcXVpcmVtZW50LCBhbmQKKyAgICBpZiBuZWNlc3NhcnksIHNwbGl0dGluZyB0aGUgd2F0Y2hw b2ludCBvdmVyIHNldmVyYWwgaGFyZHdhcmUKKy0gICB3YXRjaHBvaW50IHJlZ2lzdGVycy4gIFRo ZSB0cmFkZS1vZmYgaXMgdGhhdCB0aGVyZSB3aWxsIGJlCistICAgZmFsc2UtcG9zaXRpdmUgaGl0 cyBmb3IgdGhlIHJlYWQtdHlwZSBvciB0aGUgYWNjZXNzLXR5cGUgaGFyZHdhcmUKKy0gICB3YXRj aHBvaW50czsgZm9yIHRoZSB3cml0ZSB0eXBlLCB3aGljaCBpcyBtb3JlIGNvbW1vbmx5IHVzZWQs IHRoZXJlCistICAgd2lsbCBiZSBubyBzdWNoIGlzc3VlcywgYXMgdGhlIGhpZ2hlci1sZXZlbCBi cmVha3BvaW50IG1hbmFnZW1lbnQKKy0gICBpbiBnZGIgYWx3YXlzIGV4YW1pbmVzIHRoZSBleGFj dCB3YXRjaGVkIHJlZ2lvbiBmb3IgYW55IGNvbnRlbnQKKy0gICBjaGFuZ2UsIGFuZCB0cmFuc3Bh cmVudGx5IHJlc3VtZXMgYSB0aHJlYWQgZnJvbSBhIHdhdGNocG9pbnQgdHJhcAorLSAgIGlmIHRo ZXJlIGlzIG5vIGNoYW5nZSB0byB0aGUgd2F0Y2hlZCByZWdpb24uCisrICAgd2F0Y2hwb2ludCBy ZWdpc3RlcnMuCisrCisrICAgT24ga2VybmVscyB0aGF0IHByZWRhdGUgdGhlIHN1cHBvcnQgZm9y IEJ5dGUgQWRkcmVzcyBTZWxlY3QgKEJBUykKKysgICBpbiB0aGUgaGFyZHdhcmUgd2F0Y2hwb2lu dCBjb250cm9sIHJlZ2lzdGVyLCB0aGUgb2Zmc2V0IGZyb20gdGhlCisrICAgYmFzZSBhZGRyZXNz IGlzIGFsd2F5cyB6ZXJvLCBhbmQgc28gaW4gdGhhdCBjYXNlIHRoZSB0cmFkZS1vZmYgaXMKKysg ICB0aGF0IHRoZXJlIHdpbGwgYmUgZmFsc2UtcG9zaXRpdmUgaGl0cyBmb3IgdGhlIHJlYWQtdHlw ZSBvciB0aGUKKysgICBhY2Nlc3MtdHlwZSBoYXJkd2FyZSB3YXRjaHBvaW50czsgZm9yIHRoZSB3 cml0ZSB0eXBlLCB3aGljaCBpcyBtb3JlCisrICAgY29tbW9ubHkgdXNlZCwgdGhlcmUgd2lsbCBi ZSBubyBzdWNoIGlzc3VlcywgYXMgdGhlIGhpZ2hlci1sZXZlbAorKyAgIGJyZWFrcG9pbnQgbWFu YWdlbWVudCBpbiBnZGIgYWx3YXlzIGV4YW1pbmVzIHRoZSBleGFjdCB3YXRjaGVkCisrICAgcmVn aW9uIGZvciBhbnkgY29udGVudCBjaGFuZ2UsIGFuZCB0cmFuc3BhcmVudGx5IHJlc3VtZXMgYSB0 aHJlYWQKKysgICBmcm9tIGEgd2F0Y2hwb2ludCB0cmFwIGlmIHRoZXJlIGlzIG5vIGNoYW5nZSB0 byB0aGUgd2F0Y2hlZCByZWdpb24uCisgCisgICAgQW5vdGhlciBsaW1pdGF0aW9uIGlzIHRoYXQg YmVjYXVzZSB0aGUgd2F0Y2hlZCByZWdpb24gaXMgZW5sYXJnZWQsCistICAgdGhlIHdhdGNocG9p bnQgZmF1bHQgYWRkcmVzcyByZXR1cm5lZCBieQorKyAgIHRoZSB3YXRjaHBvaW50IGZhdWx0IGFk ZHJlc3MgZGlzY292ZXJlZCBieQorICAgIGFhcmNoNjRfc3RvcHBlZF9kYXRhX2FkZHJlc3MgbWF5 IGJlIG91dHNpZGUgb2YgdGhlIG9yaWdpbmFsIHdhdGNoZWQKKyAgICByZWdpb24sIGVzcGVjaWFs bHkgd2hlbiB0aGUgdHJpZ2dlcmluZyBpbnN0cnVjdGlvbiBpcyBhY2Nlc3NpbmcgYQorICAgIGxh cmdlciByZWdpb24uICBXaGVuIHRoZSBmYXVsdCBhZGRyZXNzIGlzIG5vdCB3aXRoaW4gYW55IGtu b3duCisgICAgcmFuZ2UsIHdhdGNocG9pbnRzX3RyaWdnZXJlZCBpbiBnZGIgd2lsbCBnZXQgY29u ZnVzZWQsIGFzIHRoZQorICAgIGhpZ2hlci1sZXZlbCB3YXRjaHBvaW50IG1hbmFnZW1lbnQgaXMg b25seSBhd2FyZSBvZiBvcmlnaW5hbAorICAgIHdhdGNoZWQgcmVnaW9ucywgYW5kIHdpbGwgdGhp bmsgdGhhdCBzb21lIHVua25vd24gd2F0Y2hwb2ludCBoYXMKKy0gICBiZWVuIHRyaWdnZXJlZC4g IEluIHN1Y2ggYSBjYXNlLCBnZGIgbWF5IHN0b3Agd2l0aG91dCBkaXNwbGF5aW5nCistICAgYW55 IGRldGFpbGVkIGluZm9ybWF0aW9uLgorLQorLSAgIE9uY2UgdGhlIGtlcm5lbCBwcm92aWRlcyB0 aGUgZnVsbCBzdXBwb3J0IGZvciBCeXRlIEFkZHJlc3MgU2VsZWN0CistICAgKEJBUykgaW4gdGhl IGhhcmR3YXJlIHdhdGNocG9pbnQgY29udHJvbCByZWdpc3RlciwgdGhlc2UKKy0gICBsaW1pdGF0 aW9ucyBjYW4gYmUgbGFyZ2VseSByZWxheGVkIHdpdGggc29tZSBmdXJ0aGVyIHdvcmsuICAqLwor KyAgIGJlZW4gdHJpZ2dlcmVkLiAgVG8gcHJldmVudCBzdWNoIGEgY2FzZSwKKysgICBhYXJjaDY0 X3N0b3BwZWRfZGF0YV9hZGRyZXNzIGltcGxlbWVudGF0aW9ucyBpbiBnZGIgYW5kIGdkYnNlcnZl cgorKyAgIHRyeSB0byBtYXRjaCB0aGUgdHJhcHBlZCBhZGRyZXNzIHdpdGggYSB3YXRjaGVkIHJl Z2lvbiwgYW5kIHJldHVybgorKyAgIGFuIGFkZHJlc3Mgd2l0aGluIHRoZSBsYXR0ZXIuICovCisg Cisgc3RhdGljIHZvaWQKKyBhYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCBpbnQgbGVuLCBDT1JFX0FERFIgKmFsaWduZWRfYWRkcl9wLAorLQkJCSAgaW50ICphbGlnbmVk X2xlbl9wLCBDT1JFX0FERFIgKm5leHRfYWRkcl9wLAorLQkJCSAgaW50ICpuZXh0X2xlbl9wKQor KwkJCSAgaW50ICphbGlnbmVkX29mZnNldF9wLCBpbnQgKmFsaWduZWRfbGVuX3AsCisrCQkJICBD T1JFX0FERFIgKm5leHRfYWRkcl9wLCBpbnQgKm5leHRfbGVuX3AsCisrCQkJICBDT1JFX0FERFIg Km5leHRfYWRkcl9vcmlnX3ApCisgeworICAgaW50IGFsaWduZWRfbGVuOworLSAgdW5zaWduZWQg aW50IG9mZnNldDsKKysgIHVuc2lnbmVkIGludCBvZmZzZXQsIGFsaWduZWRfb2Zmc2V0OworICAg Q09SRV9BRERSIGFsaWduZWRfYWRkcjsKKyAgIGNvbnN0IHVuc2lnbmVkIGludCBhbGlnbm1lbnQg PSBBQVJDSDY0X0hXUF9BTElHTk1FTlQ7CisgICBjb25zdCB1bnNpZ25lZCBpbnQgbWF4X3dwX2xl biA9IEFBUkNINjRfSFdQX01BWF9MRU5fUEVSX1JFRzsKK0BAIC0xOTYsMTAgKzIyOSwxMiBAQCBh YXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyCisgICBpZiAobGVuIDw9IDAp CisgICAgIHJldHVybjsKKyAKKy0gIC8qIEFkZHJlc3MgdG8gYmUgcHV0IGludG8gdGhlIGhhcmR3 YXJlIHdhdGNocG9pbnQgdmFsdWUgcmVnaXN0ZXIKKy0gICAgIG11c3QgYmUgYWxpZ25lZC4gICov CisrICAvKiBUaGUgYWRkcmVzcyBwdXQgaW50byB0aGUgaGFyZHdhcmUgd2F0Y2hwb2ludCB2YWx1 ZSByZWdpc3RlciBtdXN0CisrICAgICBiZSBhbGlnbmVkLiAgKi8KKyAgIG9mZnNldCA9IGFkZHIg JiAoYWxpZ25tZW50IC0gMSk7CisgICBhbGlnbmVkX2FkZHIgPSBhZGRyIC0gb2Zmc2V0OworKyAg YWxpZ25lZF9vZmZzZXQKKysgICAgPSBrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFu Z2UgPyBhZGRyICYgKGFsaWdubWVudCAtIDEpIDogMDsKKyAKKyAgIGdkYl9hc3NlcnQgKG9mZnNl dCA+PSAwICYmIG9mZnNldCA8IGFsaWdubWVudCk7CisgICBnZGJfYXNzZXJ0IChhbGlnbmVkX2Fk ZHIgPj0gMCAmJiBhbGlnbmVkX2FkZHIgPD0gYWRkcik7CitAQCAtMjA3LDkgKzI0MiwxMCBAQCBh YXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyCisgCisgICBpZiAob2Zmc2V0 ICsgbGVuID49IG1heF93cF9sZW4pCisgICAgIHsKKy0gICAgICAvKiBOZWVkIG1vcmUgdGhhbiBv bmUgd2F0Y2hwb2ludCByZWdpc3RlcnM7IHRydW5jYXRlIGl0IGF0IHRoZQorKyAgICAgIC8qIE5l ZWQgbW9yZSB0aGFuIG9uZSB3YXRjaHBvaW50IHJlZ2lzdGVyOyB0cnVuY2F0ZSBhdCB0aGUKKyAJ IGFsaWdubWVudCBib3VuZGFyeS4gICovCistICAgICAgYWxpZ25lZF9sZW4gPSBtYXhfd3BfbGVu OworKyAgICAgIGFsaWduZWRfbGVuCisrCT0gbWF4X3dwX2xlbiAtIChrZXJuZWxfc3VwcG9ydHNf YW55X2NvbnRpZ3VvdXNfcmFuZ2UgPyBvZmZzZXQgOiAwKTsKKyAgICAgICBsZW4gLT0gKG1heF93 cF9sZW4gLSBvZmZzZXQpOworICAgICAgIGFkZHIgKz0gKG1heF93cF9sZW4gLSBvZmZzZXQpOwor ICAgICAgIGdkYl9hc3NlcnQgKChhZGRyICYgKGFsaWdubWVudCAtIDEpKSA9PSAwKTsKK0BAIC0y MjIsMTkgKzI1OCwyNCBAQCBhYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy CisgCWFsaWduZWRfbGVuX2FycmF5W0FBUkNINjRfSFdQX01BWF9MRU5fUEVSX1JFR10gPQorIAl7 IDEsIDIsIDQsIDQsIDgsIDgsIDgsIDggfTsKKyAKKy0gICAgICBhbGlnbmVkX2xlbiA9IGFsaWdu ZWRfbGVuX2FycmF5W29mZnNldCArIGxlbiAtIDFdOworKyAgICAgIGFsaWduZWRfbGVuID0gKGtl cm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5nZQorKwkJICAgICA/IGxlbiA6IGFsaWdu ZWRfbGVuX2FycmF5W29mZnNldCArIGxlbiAtIDFdKTsKKyAgICAgICBhZGRyICs9IGxlbjsKKyAg ICAgICBsZW4gPSAwOworICAgICB9CisgCisgICBpZiAoYWxpZ25lZF9hZGRyX3ApCisgICAgICph bGlnbmVkX2FkZHJfcCA9IGFsaWduZWRfYWRkcjsKKysgIGlmIChhbGlnbmVkX29mZnNldF9wKQor KyAgICAqYWxpZ25lZF9vZmZzZXRfcCA9IGFsaWduZWRfb2Zmc2V0OworICAgaWYgKGFsaWduZWRf bGVuX3ApCisgICAgICphbGlnbmVkX2xlbl9wID0gYWxpZ25lZF9sZW47CisgICBpZiAobmV4dF9h ZGRyX3ApCisgICAgICpuZXh0X2FkZHJfcCA9IGFkZHI7CisgICBpZiAobmV4dF9sZW5fcCkKKyAg ICAgKm5leHRfbGVuX3AgPSBsZW47CisrICBpZiAobmV4dF9hZGRyX29yaWdfcCkKKysgICAgKm5l eHRfYWRkcl9vcmlnX3AgPSBhbGlnbl9kb3duICgqbmV4dF9hZGRyX29yaWdfcCArIGFsaWdubWVu dCwgYWxpZ25tZW50KTsKKyB9CisgCisgc3RydWN0IGFhcmNoNjRfZHJfdXBkYXRlX2NhbGxiYWNr X3BhcmFtCitAQCAtMzI0LDE3ICszNjUsNzMgQEAgYWFyY2g2NF9ub3RpZnlfZGVidWdfcmVnX2No YW5nZSAoY29uc3QgcworICAgaXRlcmF0ZV9vdmVyX2x3cHMgKHBpZF9wdGlkLCBkZWJ1Z19yZWdf Y2hhbmdlX2NhbGxiYWNrLCAodm9pZCAqKSAmcGFyYW0pOworIH0KKyAKKysvKiBSZWNvbmZpZ3Vy ZSBTVEFURSB0byBiZSBjb21wYXRpYmxlIHdpdGggTGludXgga2VybmVscyB3aXRoIHRoZSBQUgor KyAgIGV4dGVybmFsLzIwMjA3IGJ1Zy4gIFRoaXMgaXMgY2FsbGVkIHdoZW4KKysgICBLRVJORUxf U1VQUE9SVFNfQU5ZX0NPTlRJR1VPVVNfUkFOR0UgdHJhbnNpdGlvbnMgdG8gZmFsc2UuICBOb3Rl IHdlCisrICAgZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgY29tYmluaW5nIHdhdGNocG9pbnRzIHdpdGgg bWF0Y2hpbmcgKGFuZCB0aHVzCisrICAgc2hhcmVkKSBtYXNrcywgYXMgaXQncyB0b28gbGF0ZSB3 aGVuIHdlIGdldCBoZXJlLiAgT24gYnVnZ3kKKysgICBrZXJuZWxzLCBHREIgd2lsbCB0cnkgdG8g Zmlyc3Qgc2V0dXAgdGhlIHBlcmZlY3QgbWF0Y2hpbmcgcmFuZ2VzLAorKyAgIHdoaWNoIHdpbGwg cnVuIG91dCBvZiByZWdpc3RlcnMgYmVmb3JlIHRoaXMgZnVuY3Rpb24gY2FuIG1lcmdlCisrICAg dGhlbS4gIEl0IGRvZXNuJ3QgbG9vayBsaWtlIHdvcnRoIHRoZSBlZmZvcnQgdG8gaW1wcm92ZSB0 aGF0LCBnaXZlbgorKyAgIGV2ZW50dWFsbHkgYnVnZ3kga2VybmVscyB3aWxsIGJlIHBoYXNlZCBv dXQuICAqLworKworK3N0YXRpYyB2b2lkCisrYWFyY2g2NF9kb3duZ3JhZGVfcmVncyAoc3RydWN0 IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSkKKyt7CisrICBmb3IgKGludCBpID0gMDsg aSA8IGFhcmNoNjRfbnVtX3dwX3JlZ3M7ICsraSkKKysgICAgaWYgKChzdGF0ZS0+ZHJfY3RybF93 cFtpXSAmIDEpICE9IDApCisrICAgICAgeworKwlnZGJfYXNzZXJ0IChzdGF0ZS0+ZHJfcmVmX2Nv dW50X3dwW2ldICE9IDApOworKwl1aW50OF90IG1hc2tfb3JpZyA9IChzdGF0ZS0+ZHJfY3RybF93 cFtpXSA+PiA1KSAmIDB4ZmY7CisrCWdkYl9hc3NlcnQgKG1hc2tfb3JpZyAhPSAwKTsKKysJc3Rh dGljIGNvbnN0IHVpbnQ4X3Qgb2xkX3ZhbGlkW10gPSB7IDB4MDEsIDB4MDMsIDB4MGYsIDB4ZmYg fTsKKysJdWludDhfdCBtYXNrID0gMDsKKysJZm9yIChjb25zdCB1aW50OF90IG9sZF9tYXNrIDog b2xkX3ZhbGlkKQorKwkgIGlmIChtYXNrX29yaWcgPD0gb2xkX21hc2spCisrCSAgICB7CisrCSAg ICAgIG1hc2sgPSBvbGRfbWFzazsKKysJICAgICAgYnJlYWs7CisrCSAgICB9CisrCWdkYl9hc3Nl cnQgKG1hc2sgIT0gMCk7CisrCisrCS8qIE5vIHVwZGF0ZSBuZWVkZWQgZm9yIHRoaXMgd2F0Y2hw b2ludD8gICovCisrCWlmIChtYXNrID09IG1hc2tfb3JpZykKKysJICBjb250aW51ZTsKKysJc3Rh dGUtPmRyX2N0cmxfd3BbaV0gfD0gbWFzayA8PCA1OworKwlzdGF0ZS0+ZHJfYWRkcl93cFtpXQor KwkgID0gYWxpZ25fZG93biAoc3RhdGUtPmRyX2FkZHJfd3BbaV0sIEFBUkNINjRfSFdQX0FMSUdO TUVOVCk7CisrCisrCS8qIFRyeSB0byBtYXRjaCBkdXBsaWNhdGUgZW50cmllcy4gICovCisrCWZv ciAoaW50IGogPSAwOyBqIDwgaTsgKytqKQorKwkgIGlmICgoc3RhdGUtPmRyX2N0cmxfd3Bbal0g JiAxKSAhPSAwCisrCSAgICAgICYmIHN0YXRlLT5kcl9hZGRyX3dwW2pdID09IHN0YXRlLT5kcl9h ZGRyX3dwW2ldCisrCSAgICAgICYmIHN0YXRlLT5kcl9hZGRyX29yaWdfd3Bbal0gPT0gc3RhdGUt PmRyX2FkZHJfb3JpZ193cFtpXQorKwkgICAgICAmJiBzdGF0ZS0+ZHJfY3RybF93cFtqXSA9PSBz dGF0ZS0+ZHJfY3RybF93cFtpXSkKKysJICAgIHsKKysJICAgICAgc3RhdGUtPmRyX3JlZl9jb3Vu dF93cFtqXSArPSBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldOworKwkgICAgICBzdGF0ZS0+ZHJf cmVmX2NvdW50X3dwW2ldID0gMDsKKysJICAgICAgc3RhdGUtPmRyX2FkZHJfd3BbaV0gPSAwOwor KwkgICAgICBzdGF0ZS0+ZHJfYWRkcl9vcmlnX3dwW2ldID0gMDsKKysJICAgICAgc3RhdGUtPmRy X2N0cmxfd3BbaV0gJj0gfjE7CisrCSAgICAgIGJyZWFrOworKwkgICAgfQorKworKwlhYXJjaDY0 X25vdGlmeV9kZWJ1Z19yZWdfY2hhbmdlIChzdGF0ZSwgMSAvKiBpc193YXRjaHBvaW50ICovLCBp KTsKKysgICAgICB9CisrfQorKworIC8qIFJlY29yZCB0aGUgaW5zZXJ0aW9uIG9mIG9uZSBicmVh a3BvaW50L3dhdGNocG9pbnQsIGFzIHJlcHJlc2VudGVkCisgICAgYnkgQUREUiBhbmQgQ1RSTCwg aW4gdGhlIHByb2Nlc3MnIGFyY2gtc3BlY2lmaWMgZGF0YSBhcmVhICpTVEFURS4gICovCisgCisg c3RhdGljIGludAorIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWN0IGFh cmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyAJCQkJICAgZW51bSB0YXJnZXRfaHdfYnBf dHlwZSB0eXBlLAorLQkJCQkgICBDT1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJICAgQ09S RV9BRERSIGFkZHIsIGludCBvZmZzZXQsIGludCBsZW4sCisrCQkJCSAgIENPUkVfQUREUiBhZGRy X29yaWcpCisgeworICAgaW50IGksIGlkeCwgbnVtX3JlZ3MsIGlzX3dhdGNocG9pbnQ7CisgICB1 bnNpZ25lZCBpbnQgY3RybCwgKmRyX2N0cmxfcCwgKmRyX3JlZl9jb3VudDsKKy0gIENPUkVfQURE UiAqZHJfYWRkcl9wOworKyAgQ09SRV9BRERSICpkcl9hZGRyX3AsICpkcl9hZGRyX29yaWdfcDsK KyAKKyAgIC8qIFNldCB1cCBzdGF0ZSBwb2ludGVycy4gICovCisgICBpc193YXRjaHBvaW50ID0g KHR5cGUgIT0gaHdfZXhlY3V0ZSk7CitAQCAtMzQzLDYgKzQ0MCw3IEBAIGFhcmNoNjRfZHJfc3Rh dGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWMKKyAgICAgeworICAgICAgIG51bV9yZWdzID0gYWFy Y2g2NF9udW1fd3BfcmVnczsKKyAgICAgICBkcl9hZGRyX3AgPSBzdGF0ZS0+ZHJfYWRkcl93cDsK KysgICAgICBkcl9hZGRyX29yaWdfcCA9IHN0YXRlLT5kcl9hZGRyX29yaWdfd3A7CisgICAgICAg ZHJfY3RybF9wID0gc3RhdGUtPmRyX2N0cmxfd3A7CisgICAgICAgZHJfcmVmX2NvdW50ID0gc3Rh dGUtPmRyX3JlZl9jb3VudF93cDsKKyAgICAgfQorQEAgLTM1MCwxMSArNDQ4LDEyIEBAIGFhcmNo NjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWMKKyAgICAgeworICAgICAgIG51bV9y ZWdzID0gYWFyY2g2NF9udW1fYnBfcmVnczsKKyAgICAgICBkcl9hZGRyX3AgPSBzdGF0ZS0+ZHJf YWRkcl9icDsKKysgICAgICBkcl9hZGRyX29yaWdfcCA9IG51bGxwdHI7CisgICAgICAgZHJfY3Ry bF9wID0gc3RhdGUtPmRyX2N0cmxfYnA7CisgICAgICAgZHJfcmVmX2NvdW50ID0gc3RhdGUtPmRy X3JlZl9jb3VudF9icDsKKyAgICAgfQorIAorLSAgY3RybCA9IGFhcmNoNjRfcG9pbnRfZW5jb2Rl X2N0cmxfcmVnICh0eXBlLCBsZW4pOworKyAgY3RybCA9IGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0 cmxfcmVnICh0eXBlLCBvZmZzZXQsIGxlbik7CisgCisgICAvKiBGaW5kIGFuIGV4aXN0aW5nIG9y IGZyZWUgcmVnaXN0ZXIgaW4gb3VyIGNhY2hlLiAgKi8KKyAgIGlkeCA9IC0xOworQEAgLTM2Niw3 ICs0NjUsOSBAQCBhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9pbnQgKHN0cnVjCisgCSAg aWR4ID0gaTsKKyAJICAvKiBubyBicmVhazsgY29udGludWUgaHVudGluZyBmb3IgYW4gZXhpc2lu ZyBvbmUuICAqLworIAl9CistICAgICAgZWxzZSBpZiAoZHJfYWRkcl9wW2ldID09IGFkZHIgJiYg ZHJfY3RybF9wW2ldID09IGN0cmwpCisrICAgICAgZWxzZSBpZiAoZHJfYWRkcl9wW2ldID09IGFk ZHIKKysJICAgICAgICYmIChkcl9hZGRyX29yaWdfcCA9PSBudWxscHRyIHx8IGRyX2FkZHJfb3Jp Z19wW2ldID09IGFkZHJfb3JpZykKKysJICAgICAgICYmIGRyX2N0cmxfcFtpXSA9PSBjdHJsKQor IAl7CisgCSAgZ2RiX2Fzc2VydCAoZHJfcmVmX2NvdW50W2ldICE9IDApOworIAkgIGlkeCA9IGk7 CitAQCAtMzgzLDYgKzQ4NCw4IEBAIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAo c3RydWMKKyAgICAgeworICAgICAgIC8qIG5ldyBlbnRyeSAqLworICAgICAgIGRyX2FkZHJfcFtp ZHhdID0gYWRkcjsKKysgICAgICBpZiAoZHJfYWRkcl9vcmlnX3AgIT0gbnVsbHB0cikKKysJZHJf YWRkcl9vcmlnX3BbaWR4XSA9IGFkZHJfb3JpZzsKKyAgICAgICBkcl9jdHJsX3BbaWR4XSA9IGN0 cmw7CisgICAgICAgZHJfcmVmX2NvdW50W2lkeF0gPSAxOworICAgICAgIC8qIE5vdGlmeSB0aGUg Y2hhbmdlLiAgKi8KK0BAIC00MDMsMTEgKzUwNiwxMiBAQCBhYXJjaDY0X2RyX3N0YXRlX2luc2Vy dF9vbmVfcG9pbnQgKHN0cnVjCisgc3RhdGljIGludAorIGFhcmNoNjRfZHJfc3RhdGVfcmVtb3Zl X29uZV9wb2ludCAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyAJCQkJ ICAgZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLAorLQkJCQkgICBDT1JFX0FERFIgYWRkciwg aW50IGxlbikKKysJCQkJICAgQ09SRV9BRERSIGFkZHIsIGludCBvZmZzZXQsIGludCBsZW4sCisr CQkJCSAgIENPUkVfQUREUiBhZGRyX29yaWcpCisgeworICAgaW50IGksIG51bV9yZWdzLCBpc193 YXRjaHBvaW50OworICAgdW5zaWduZWQgaW50IGN0cmwsICpkcl9jdHJsX3AsICpkcl9yZWZfY291 bnQ7CistICBDT1JFX0FERFIgKmRyX2FkZHJfcDsKKysgIENPUkVfQUREUiAqZHJfYWRkcl9wLCAq ZHJfYWRkcl9vcmlnX3A7CisgCisgICAvKiBTZXQgdXAgc3RhdGUgcG9pbnRlcnMuICAqLworICAg aXNfd2F0Y2hwb2ludCA9ICh0eXBlICE9IGh3X2V4ZWN1dGUpOworQEAgLTQxNSw2ICs1MTksNyBA QCBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9pbnQgKHN0cnVjCisgICAgIHsKKyAgICAg ICBudW1fcmVncyA9IGFhcmNoNjRfbnVtX3dwX3JlZ3M7CisgICAgICAgZHJfYWRkcl9wID0gc3Rh dGUtPmRyX2FkZHJfd3A7CisrICAgICAgZHJfYWRkcl9vcmlnX3AgPSBzdGF0ZS0+ZHJfYWRkcl9v cmlnX3dwOworICAgICAgIGRyX2N0cmxfcCA9IHN0YXRlLT5kcl9jdHJsX3dwOworICAgICAgIGRy X3JlZl9jb3VudCA9IHN0YXRlLT5kcl9yZWZfY291bnRfd3A7CisgICAgIH0KK0BAIC00MjIsMTUg KzUyNywxOCBAQCBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9pbnQgKHN0cnVjCisgICAg IHsKKyAgICAgICBudW1fcmVncyA9IGFhcmNoNjRfbnVtX2JwX3JlZ3M7CisgICAgICAgZHJfYWRk cl9wID0gc3RhdGUtPmRyX2FkZHJfYnA7CisrICAgICAgZHJfYWRkcl9vcmlnX3AgPSBudWxscHRy OworICAgICAgIGRyX2N0cmxfcCA9IHN0YXRlLT5kcl9jdHJsX2JwOworICAgICAgIGRyX3JlZl9j b3VudCA9IHN0YXRlLT5kcl9yZWZfY291bnRfYnA7CisgICAgIH0KKyAKKy0gIGN0cmwgPSBhYXJj aDY0X3BvaW50X2VuY29kZV9jdHJsX3JlZyAodHlwZSwgbGVuKTsKKysgIGN0cmwgPSBhYXJjaDY0 X3BvaW50X2VuY29kZV9jdHJsX3JlZyAodHlwZSwgb2Zmc2V0LCBsZW4pOworIAorICAgLyogRmlu ZCB0aGUgZW50cnkgdGhhdCBtYXRjaGVzIHRoZSBBRERSIGFuZCBDVFJMLiAgKi8KKyAgIGZvciAo aSA9IDA7IGkgPCBudW1fcmVnczsgKytpKQorLSAgICBpZiAoZHJfYWRkcl9wW2ldID09IGFkZHIg JiYgZHJfY3RybF9wW2ldID09IGN0cmwpCisrICAgIGlmIChkcl9hZGRyX3BbaV0gPT0gYWRkcgor KwkmJiAoZHJfYWRkcl9vcmlnX3AgPT0gbnVsbHB0ciB8fCBkcl9hZGRyX29yaWdfcFtpXSA9PSBh ZGRyX29yaWcpCisrCSYmIGRyX2N0cmxfcFtpXSA9PSBjdHJsKQorICAgICAgIHsKKyAJZ2RiX2Fz c2VydCAoZHJfcmVmX2NvdW50W2ldICE9IDApOworIAlicmVhazsKK0BAIC00NDYsNiArNTU0LDgg QEAgYWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdHJ1YworICAgICAgIC8qIENs ZWFyIHRoZSBlbmFibGUgYml0LiAgKi8KKyAgICAgICBjdHJsICY9IH4xOworICAgICAgIGRyX2Fk ZHJfcFtpXSA9IDA7CisrICAgICAgaWYgKGRyX2FkZHJfb3JpZ19wICE9IG51bGxwdHIpCisrCWRy X2FkZHJfb3JpZ19wW2ldID0gMDsKKyAgICAgICBkcl9jdHJsX3BbaV0gPSBjdHJsOworICAgICAg IC8qIE5vdGlmeSB0aGUgY2hhbmdlLiAgKi8KKyAgICAgICBhYXJjaDY0X25vdGlmeV9kZWJ1Z19y ZWdfY2hhbmdlIChzdGF0ZSwgaXNfd2F0Y2hwb2ludCwgaSk7CitAQCAtNDcyLDEwICs1ODIsMTAg QEAgYWFyY2g2NF9oYW5kbGVfYnJlYWtwb2ludCAoZW51bSB0YXJnZXRfaAorICAgICAgIGlmICgh YWFyY2g2NF9wb2ludF9pc19hbGlnbmVkICgwIC8qIGlzX3dhdGNocG9pbnQgKi8gLCBhZGRyLCBs ZW4pKQorIAlyZXR1cm4gLTE7CisgCistICAgICAgcmV0dXJuIGFhcmNoNjRfZHJfc3RhdGVfaW5z ZXJ0X29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFkZHIsIGxlbik7CisrICAgICAgcmV0dXJuIGFh cmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFkZHIsIDAsIGxl biwgLTEpOworICAgICB9CisgICBlbHNlCistICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX3Jl bW92ZV9vbmVfcG9pbnQgKHN0YXRlLCB0eXBlLCBhZGRyLCBsZW4pOworKyAgICByZXR1cm4gYWFy Y2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWRkciwgMCwgbGVu LCAtMSk7CisgfQorIAorIC8qIFRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgYXMgYWFyY2g2 NF9oYW5kbGVfYnJlYWtwb2ludCwgYXBhcnQKK0BAIC00ODcsOSArNTk3LDkgQEAgYWFyY2g2NF9o YW5kbGVfYWxpZ25lZF93YXRjaHBvaW50IChlbnVtCisgCQkJCSAgIHN0cnVjdCBhYXJjaDY0X2Rl YnVnX3JlZ19zdGF0ZSAqc3RhdGUpCisgeworICAgaWYgKGlzX2luc2VydCkKKy0gICAgcmV0dXJu IGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFkZHIsIGxl bik7CisrICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9pbnQgKHN0YXRl LCB0eXBlLCBhZGRyLCAwLCBsZW4sIGFkZHIpOworICAgZWxzZQorLSAgICByZXR1cm4gYWFyY2g2 NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWRkciwgbGVuKTsKKysg ICAgcmV0dXJuIGFhcmNoNjRfZHJfc3RhdGVfcmVtb3ZlX29uZV9wb2ludCAoc3RhdGUsIHR5cGUs IGFkZHIsIDAsIGxlbiwgYWRkcik7CisgfQorIAorIC8qIEluc2VydC9yZW1vdmUgdW5hbGlnbmVk IHdhdGNocG9pbnQgYnkgY2FsbGluZworQEAgLTUwNCwyOSArNjE0LDQyIEBAIGFhcmNoNjRfaGFu ZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50IChlbnUKKyAJCQkJICAgICBDT1JFX0FERFIgYWRkciwg aW50IGxlbiwgaW50IGlzX2luc2VydCwKKyAJCQkJICAgICBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19y ZWdfc3RhdGUgKnN0YXRlKQorIHsKKysgIENPUkVfQUREUiBhZGRyX29yaWcgPSBhZGRyOworKwor ICAgd2hpbGUgKGxlbiA+IDApCisgICAgIHsKKyAgICAgICBDT1JFX0FERFIgYWxpZ25lZF9hZGRy OworLSAgICAgIGludCBhbGlnbmVkX2xlbiwgcmV0OworKyAgICAgIGludCBhbGlnbmVkX29mZnNl dCwgYWxpZ25lZF9sZW4sIHJldDsKKysgICAgICBDT1JFX0FERFIgYWRkcl9vcmlnX25leHQgPSBh ZGRyX29yaWc7CisgCistICAgICAgYWFyY2g2NF9hbGlnbl93YXRjaHBvaW50IChhZGRyLCBsZW4s ICZhbGlnbmVkX2FkZHIsICZhbGlnbmVkX2xlbiwKKy0JCQkJJmFkZHIsICZsZW4pOworKyAgICAg IGFhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoYWRkciwgbGVuLCAmYWxpZ25lZF9hZGRyLCAmYWxp Z25lZF9vZmZzZXQsCisrCQkJCSZhbGlnbmVkX2xlbiwgJmFkZHIsICZsZW4sICZhZGRyX29yaWdf bmV4dCk7CisgCisgICAgICAgaWYgKGlzX2luc2VydCkKKyAJcmV0ID0gYWFyY2g2NF9kcl9zdGF0 ZV9pbnNlcnRfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWxpZ25lZF9hZGRyLAorLQkJCQkJCSBh bGlnbmVkX2xlbik7CisrCQkJCQkJIGFsaWduZWRfb2Zmc2V0LAorKwkJCQkJCSBhbGlnbmVkX2xl biwgYWRkcl9vcmlnKTsKKyAgICAgICBlbHNlCisgCXJldCA9IGFhcmNoNjRfZHJfc3RhdGVfcmVt b3ZlX29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFsaWduZWRfYWRkciwKKy0JCQkJCQkgYWxpZ25l ZF9sZW4pOworKwkJCQkJCSBhbGlnbmVkX29mZnNldCwKKysJCQkJCQkgYWxpZ25lZF9sZW4sIGFk ZHJfb3JpZyk7CisgCisgICAgICAgaWYgKHNob3dfZGVidWdfcmVncykKKyAJZGVidWdfcHJpbnRm ICgiaGFuZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50OiBpc19pbnNlcnQ6ICVkXG4iCisgCQkgICAg ICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisgCQkgICAgICAiYWxpZ25lZF9hZGRy OiAlcywgYWxpZ25lZF9sZW46ICVkXG4iCisgCQkgICAgICAiICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiCistCQkgICAgICAibmV4dF9hZGRyOiAlcywgICAgbmV4dF9sZW46ICVkXG4i LAorKwkJICAgICAgImFkZHJfb3JpZzogJXNcbiIKKysJCSAgICAgICIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIKKysJCSAgICAgICJuZXh0X2FkZHI6ICVzLCAgICBuZXh0X2xlbjog JWRcbiIKKysJCSAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisrCQkgICAgICAi YWRkcl9vcmlnX25leHQ6ICVzXG4iLAorIAkJICAgICAgaXNfaW5zZXJ0LCBjb3JlX2FkZHJfdG9f c3RyaW5nX256IChhbGlnbmVkX2FkZHIpLAorLQkJICAgICAgYWxpZ25lZF9sZW4sIGNvcmVfYWRk cl90b19zdHJpbmdfbnogKGFkZHIpLCBsZW4pOworKwkJICAgICAgYWxpZ25lZF9sZW4sIGNvcmVf YWRkcl90b19zdHJpbmdfbnogKGFkZHJfb3JpZyksCisrCQkgICAgICBjb3JlX2FkZHJfdG9fc3Ry aW5nX256IChhZGRyKSwgbGVuLAorKwkJICAgICAgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoYWRk cl9vcmlnX25leHQpKTsKKysKKysgICAgICBhZGRyX29yaWcgPSBhZGRyX29yaWdfbmV4dDsKKyAK KyAgICAgICBpZiAocmV0ICE9IDApCisgCXJldHVybiByZXQ7CitAQCAtNTUyLDcgKzY3NSw3IEBA IGFhcmNoNjRfaGFuZGxlX3dhdGNocG9pbnQgKGVudW0gdGFyZ2V0X2gKKyAgICByZWdpc3RlcnMg d2l0aCBkYXRhIGZyb20gKlNUQVRFLiAgKi8KKyAKKyB2b2lkCistYWFyY2g2NF9saW51eF9zZXRf ZGVidWdfcmVncyAoY29uc3Qgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwK KythYXJjaDY0X2xpbnV4X3NldF9kZWJ1Z19yZWdzIChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdf c3RhdGUgKnN0YXRlLAorIAkJCSAgICAgIGludCB0aWQsIGludCB3YXRjaHBvaW50KQorIHsKKyAg IGludCBpLCBjb3VudDsKK0BAIC01ODAsNyArNzAzLDE4IEBAIGFhcmNoNjRfbGludXhfc2V0X2Rl YnVnX3JlZ3MgKGNvbnN0IHN0cnUKKyAgIGlmIChwdHJhY2UgKFBUUkFDRV9TRVRSRUdTRVQsIHRp ZCwKKyAJICAgICAgd2F0Y2hwb2ludCA/IE5UX0FSTV9IV19XQVRDSCA6IE5UX0FSTV9IV19CUkVB SywKKyAJICAgICAgKHZvaWQgKikgJmlvdikpCistICAgIGVycm9yIChfKCJVbmV4cGVjdGVkIGVy cm9yIHNldHRpbmcgaGFyZHdhcmUgZGVidWcgcmVnaXN0ZXJzIikpOworKyAgICB7CisrICAgICAg LyogSGFuZGxlIExpbnV4IGtlcm5lbHMgd2l0aCB0aGUgUFIgZXh0ZXJuYWwvMjAyMDcgYnVnLiAg Ki8KKysgICAgICBpZiAod2F0Y2hwb2ludCAmJiBlcnJubyA9PSBFSU5WQUwKKysJICAmJiBrZXJu ZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UpCisrCXsKKysJICBrZXJuZWxfc3VwcG9y dHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UgPSBmYWxzZTsKKysJICBhYXJjaDY0X2Rvd25ncmFkZV9y ZWdzIChzdGF0ZSk7CisrCSAgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoc3RhdGUsIHRp ZCwgd2F0Y2hwb2ludCk7CisrCSAgcmV0dXJuOworKwl9CisrICAgICAgZXJyb3IgKF8oIlVuZXhw ZWN0ZWQgZXJyb3Igc2V0dGluZyBoYXJkd2FyZSBkZWJ1ZyByZWdpc3RlcnMiKSk7CisrICAgIH0K KyB9CisgCisgLyogUHJpbnQgdGhlIHZhbHVlcyBvZiB0aGUgY2FjaGVkIGJyZWFrcG9pbnQvd2F0 Y2hwb2ludCByZWdpc3RlcnMuICAqLworQEAgLTYxMSw4ICs3NDUsOSBAQCBhYXJjaDY0X3Nob3df ZGVidWdfcmVnX3N0YXRlIChzdHJ1Y3QgYWFyCisgCisgICBkZWJ1Z19wcmludGYgKCJcdFdBVENI UE9JTlRzOlxuIik7CisgICBmb3IgKGkgPSAwOyBpIDwgYWFyY2g2NF9udW1fd3BfcmVnczsgaSsr KQorLSAgICBkZWJ1Z19wcmludGYgKCJcdFdQJWQ6IGFkZHI9JXMsIGN0cmw9MHglMDh4LCByZWYu Y291bnQ9JWRcbiIsCisrICAgIGRlYnVnX3ByaW50ZiAoIlx0V1AlZDogYWRkcj0lcyAob3JpZz0l cyksIGN0cmw9MHglMDh4LCByZWYuY291bnQ9JWRcbiIsCisgCQkgIGksIGNvcmVfYWRkcl90b19z dHJpbmdfbnogKHN0YXRlLT5kcl9hZGRyX3dwW2ldKSwKKysJCSAgY29yZV9hZGRyX3RvX3N0cmlu Z19ueiAoc3RhdGUtPmRyX2FkZHJfb3JpZ193cFtpXSksCisgCQkgIHN0YXRlLT5kcl9jdHJsX3dw W2ldLCBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldKTsKKyB9CisgCistLS0gLi9nZGIvbmF0L2Fh cmNoNjQtbGludXgtaHctcG9pbnQuaAkyMDE4LTAxLTA1IDA1OjA3OjIzLjAwMDAwMDAwMCArMDEw MAorKysrIC4vZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmgJMjAxOC0wNS0wNSAxNzo1 NDoxNC4xMTExNDgxNzkgKzAyMDAKK0BAIC03NywxMyArNzcsMTMgQEAKKyAKKyAgICAzMSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMTMgICAgICAgICAgNSAgICAgIDMgICAgICAxICAgICAw CisgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t Ky0tLS0tLSstLS0tKworLSAgIHwgICAgICAgICBSRVNFUlZFRCAoU0JaKSAgICAgICAgIHwgIExF TkdUSCAgfCBUWVBFIHwgUFJJViB8IEVOIHwKKysgICB8ICAgICAgICAgUkVTRVJWRUQgKFNCWikg ICAgICAgICB8ICAgTUFTSyAgIHwgVFlQRSB8IFBSSVYgfCBFTiB8CisgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tKworIAor ICAgIFRoZSBUWVBFIGZpZWxkIGlzIGlnbm9yZWQgZm9yIGJyZWFrcG9pbnRzLiAgKi8KKyAKKyAj ZGVmaW5lIERSX0NPTlRST0xfRU5BQkxFRChjdHJsKQkoKChjdHJsKSAmIDB4MSkgPT0gMSkKKy0j ZGVmaW5lIERSX0NPTlRST0xfTEVOR1RIKGN0cmwpCQkoKChjdHJsKSA+PiA1KSAmIDB4ZmYpCisr I2RlZmluZSBEUl9DT05UUk9MX01BU0soY3RybCkJCSgoKGN0cmwpID4+IDUpICYgMHhmZikKKyAK KyAvKiBFYWNoIGJpdCBvZiBhIHZhcmlhYmxlIG9mIHRoaXMgdHlwZSBpcyB1c2VkIHRvIGluZGlj YXRlIHdoZXRoZXIgYQorICAgIGhhcmR3YXJlIGJyZWFrcG9pbnQgb3Igd2F0Y2hwb2ludCBzZXR0 aW5nIGhhcyBiZWVuIGNoYW5nZWQgc2luY2UKK0BAIC0xNDcsNyArMTQ3LDEwIEBAIHN0cnVjdCBh YXJjaDY0X2RlYnVnX3JlZ19zdGF0ZQorICAgdW5zaWduZWQgaW50IGRyX3JlZl9jb3VudF9icFtB QVJDSDY0X0hCUF9NQVhfTlVNXTsKKyAKKyAgIC8qIGhhcmR3YXJlIHdhdGNocG9pbnQgKi8KKysg IC8qIEFkZHJlc3MgYWxpZ25lZCBkb3duIHRvIEFBUkNINjRfSFdQX0FMSUdOTUVOVC4gICovCisg ICBDT1JFX0FERFIgZHJfYWRkcl93cFtBQVJDSDY0X0hXUF9NQVhfTlVNXTsKKysgIC8qIEFkZHJl c3MgYXMgZW50ZXJlZCBieSB1c2VyIHdpdGhvdXQgYW55IGZvcmNlZCBhbGlnbm1lbnQuICAqLwor KyAgQ09SRV9BRERSIGRyX2FkZHJfb3JpZ193cFtBQVJDSDY0X0hXUF9NQVhfTlVNXTsKKyAgIHVu c2lnbmVkIGludCBkcl9jdHJsX3dwW0FBUkNINjRfSFdQX01BWF9OVU1dOworICAgdW5zaWduZWQg aW50IGRyX3JlZl9jb3VudF93cFtBQVJDSDY0X0hXUF9NQVhfTlVNXTsKKyB9OworQEAgLTE2Niw2 ICsxNjksNyBAQCBzdHJ1Y3QgYXJjaF9sd3BfaW5mbworIGV4dGVybiBpbnQgYWFyY2g2NF9udW1f YnBfcmVnczsKKyBleHRlcm4gaW50IGFhcmNoNjRfbnVtX3dwX3JlZ3M7CisgCisrdW5zaWduZWQg aW50IGFhcmNoNjRfd2F0Y2hwb2ludF9vZmZzZXQgKHVuc2lnbmVkIGludCBjdHJsKTsKKyB1bnNp Z25lZCBpbnQgYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCAodW5zaWduZWQgaW50IGN0cmwpOwor IAorIGludCBhYXJjaDY0X2hhbmRsZV9icmVha3BvaW50IChlbnVtIHRhcmdldF9od19icF90eXBl IHR5cGUsIENPUkVfQUREUiBhZGRyLAorQEAgLTE3NSw3ICsxNzksNyBAQCBpbnQgYWFyY2g2NF9o YW5kbGVfd2F0Y2hwb2ludCAoZW51bSB0YXJnCisgCQkJICAgICAgIGludCBsZW4sIGludCBpc19p bnNlcnQsCisgCQkJICAgICAgIHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUp OworIAorLXZvaWQgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoY29uc3Qgc3RydWN0IGFh cmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyt2b2lkIGFhcmNoNjRfbGludXhfc2V0X2Rl YnVnX3JlZ3MgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCisgCQkJCSAg IGludCB0aWQsIGludCB3YXRjaHBvaW50KTsKKyAKKyB2b2lkIGFhcmNoNjRfc2hvd19kZWJ1Z19y ZWdfc3RhdGUgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCistLS0gLi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmMJMTk3MC0wMS0wMSAw MTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0 Y2hwb2ludC11bmFsaWduZWQuYwkyMDE4LTA1LTA1IDE3OjU0OjE0LjExMTE0ODE3OSArMDIwMAor QEAgLTAsMCArMSw5NiBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMTctMjAxOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisrCisrI2luY2x1ZGUgPHN0ZGludC5oPgorKyNpbmNsdWRlIDxhc3NlcnQuaD4KKysKKytz dGF0aWMgaW50IGFnYWluOworKworK3N0YXRpYyB2b2xhdGlsZSBzdHJ1Y3QKKyt7CisrICB1aW50 NjRfdCBhbGlnbm1lbnQ7CisrICB1bmlvbgorKyAgICB7CisrICAgICAgdWludDY0X3Qgc2l6ZThb MV07CisrICAgICAgdWludDMyX3Qgc2l6ZTRbMl07CisrICAgICAgdWludDE2X3Qgc2l6ZTJbNF07 CisrICAgICAgdWludDhfdCBzaXplMVs4XTsKKysgICAgICB1aW50NjRfdCBzaXplOHR3aWNlWzJd OworKyAgICB9CisrICB1OworK30gZGF0YTsKKysKKytzdGF0aWMgaW50IHNpemUgPSAwOworK3N0 YXRpYyBpbnQgb2Zmc2V0OworKworK3N0YXRpYyB2b2lkCisrd3JpdGVfc2l6ZTh0d2ljZSAodm9p ZCkKKyt7CisrICBzdGF0aWMgY29uc3QgdWludDY0X3QgZmlyc3QgPSAxOworKyAgc3RhdGljIGNv bnN0IHVpbnQ2NF90IHNlY29uZCA9IDI7CisrCisrI2lmZGVmIF9fYWFyY2g2NF9fCisrICBhc20g dm9sYXRpbGUgKCJzdHAgJTEsICUyLCBbJTBdIgorKwkJOiAvKiBvdXRwdXQgKi8KKysJCTogInIi IChkYXRhLnUuc2l6ZTh0d2ljZSksICJyIiAoZmlyc3QpLCAiciIgKHNlY29uZCkgLyogaW5wdXQg Ki8KKysJCTogIm1lbW9yeSIgLyogY2xvYmJlciAqLyk7CisrI2Vsc2UKKysgIGRhdGEudS5zaXpl OHR3aWNlWzBdID0gZmlyc3Q7CisrICBkYXRhLnUuc2l6ZTh0d2ljZVsxXSA9IHNlY29uZDsKKysj ZW5kaWYKKyt9CisrCisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICB2b2xhdGlsZSB1aW50NjRf dCBsb2NhbDsKKysKKysgIGFzc2VydCAoc2l6ZW9mIChkYXRhKSA9PSA4ICsgMiAqIDgpOworKwor KyAgd3JpdGVfc2l6ZTh0d2ljZSAoKTsKKysKKysgIHdoaWxlIChzaXplKQorKyAgICB7CisrICAg ICAgc3dpdGNoIChzaXplKQorKwl7CisrLyogX19zMzkweF9fIGFsc28gZGVmaW5lcyBfX3MzOTBf XyAqLworKyNpZmRlZiBfX3MzOTBfXworKyMgZGVmaW5lIEFDQ0VTUyh2YXIpIHZhciA9IH52YXIK KysjZWxzZQorKyMgZGVmaW5lIEFDQ0VTUyh2YXIpIGxvY2FsID0gdmFyCisrI2VuZGlmCisrCWNh c2UgODoKKysJICBBQ0NFU1MgKGRhdGEudS5zaXplOFtvZmZzZXRdKTsKKysJICBicmVhazsKKysJ Y2FzZSA0OgorKwkgIEFDQ0VTUyAoZGF0YS51LnNpemU0W29mZnNldF0pOworKwkgIGJyZWFrOwor KwljYXNlIDI6CisrCSAgQUNDRVNTIChkYXRhLnUuc2l6ZTJbb2Zmc2V0XSk7CisrCSAgYnJlYWs7 CisrCWNhc2UgMToKKysJICBBQ0NFU1MgKGRhdGEudS5zaXplMVtvZmZzZXRdKTsKKysJICBicmVh azsKKysjdW5kZWYgQUNDRVNTCisrCWRlZmF1bHQ6CisrCSAgYXNzZXJ0ICgwKTsKKysJfQorKyAg ICAgIHNpemUgPSAwOworKyAgICAgIHNpemUgPSBzaXplOyAvKiBzdGFydF9hZ2FpbiAqLworKyAg ICB9CisrICByZXR1cm4gMDsgLyogZmluYWxfcmV0dXJuICovCisrfQorLS0tIC4vZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHAJMTk3MC0wMS0wMSAwMTowMDow MC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2lu dC11bmFsaWduZWQuZXhwCTIwMTgtMDUtMDUgMTc6NTQ6MTQuMTExMTQ4MTc5ICswMjAwCitAQCAt MCwwICsxLDE4NCBAQAorKyMgQ29weXJpZ2h0IDIwMTctMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyMKKysjIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLgorKworKyMgVGVzdCBpbnNlcnRp bmcgcmVhZCB3YXRjaHBvaW50cyBvbiB1bmFsaWduZWQgYWRkcmVzc2VzLgorKworK3N0YW5kYXJk X3Rlc3RmaWxlCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0 ZXN0ZmlsZX0gJHtzcmNmaWxlfV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW3J1 bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIKKysgICAg cmV0dXJuIC0xCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJz dGFydF9hZ2FpbiJdICJCcmVha3BvaW50ICRkZWNpbWFsIGF0ICRoZXgiICJzdGFydF9hZ2FpbiIK KysKKytzZXQgc2l6ZXMgezEgMiA0IDh9CisrYXJyYXkgc2V0IGFsaWduZWRlbmQgezEgMSAgMiAy ICAzIDQgIDQgNCAgNSA4ICA2IDggIDcgOCAgOCA4fQorKworK3NldCByd2F0Y2ggInJ3YXRjaCIK KytzZXQgcndhdGNoX2V4cCAiSGFyZHdhcmUgcmVhZCB3YXRjaHBvaW50IgorK2lmIHtbaXN0YXJn ZXQgInMzOTAqLSotKiJdfSB7CisrICAgICMgVGFyZ2V0IGRvZXMgbm90IHN1cHBvcnQgdGhpcyB0 eXBlIG9mIGhhcmR3YXJlIHdhdGNocG9pbnQuIgorKyAgICBzZXQgcndhdGNoICJ3YXRjaCIKKysg ICAgc2V0IHJ3YXRjaF9leHAgIkhhcmR3YXJlIHdhdGNocG9pbnQiCisrfQorKworK2ZvcmVhY2gg d3BzaXplICRzaXplcyB7CisrICAgIGZvciB7c2V0IHdwb2Zmc2V0IDB9IHskd3BvZmZzZXQgPCA4 IC8gJHdwc2l6ZX0ge2luY3Igd3BvZmZzZXR9IHsKKysJc2V0IHdwc3RhcnQgW2V4cHIgJHdwb2Zm c2V0ICogJHdwc2l6ZV0KKysJc2V0IHdwZW5kIFtleHByICgkd3BvZmZzZXQgKyAxKSAqICR3cHNp emVdCisrCXNldCB3cGVuZGFsaWduZWQgJGFsaWduZWRlbmQoJHdwZW5kKQorKwlmb3JlYWNoIHJk c2l6ZSAkc2l6ZXMgeworKwkgICAgZm9yIHtzZXQgcmRvZmZzZXQgMH0geyRyZG9mZnNldCA8IDgg LyAkcmRzaXplfSB7aW5jciByZG9mZnNldH0geworKwkJc2V0IHJkc3RhcnQgW2V4cHIgJHJkb2Zm c2V0ICogJHJkc2l6ZV0KKysJCXNldCByZGVuZCBbZXhwciAoJHJkb2Zmc2V0ICsgMSkgKiAkcmRz aXplXQorKwkJc2V0IGV4cGVjdF9oaXQgW2V4cHIgbWF4ICgkd3BzdGFydCwgJHJkc3RhcnQpIDwg bWluICgkd3BlbmQsICRyZGVuZCldCisrCQlzZXQgdGVzdCAiJHJ3YXRjaCBkYXRhLnUuc2l6ZSR3 cHNpemVcWyR3cG9mZnNldFxdIgorKwkJc2V0IHdwbnVtICIiCisrCQlnZGJfdGVzdF9tdWx0aXBs ZSAkdGVzdCAkdGVzdCB7CisrCQkgICAgLXJlICIkcndhdGNoX2V4cCAoXFswLTlcXSspOiAuKlxy XG4kZ2RiX3Byb21wdCAkIiB7CisrCQkJc2V0IHdwbnVtICRleHBlY3Rfb3V0KDEsc3RyaW5nKQor KwkJICAgIH0KKysJCSAgICAtcmUgIkV4cHJlc3Npb24gY2Fubm90IGJlIGltcGxlbWVudGVkIHdp dGggcmVhZC9hY2Nlc3Mgd2F0Y2hwb2ludC5cclxuJGdkYl9wcm9tcHQgJCIgeworKwkJCWlmIHsk d3BzaXplID09IDggJiYgW2lzdGFyZ2V0ICJhcm0qLSotKiJdfSB7CisrCQkJICAgIHVudGVzdGVk ICR0ZXN0CisrCQkJICAgIGNvbnRpbnVlCisrCQkJfQorKwkJCWZhaWwgJHRlc3QKKysJCSAgICB9 CisrCQl9CisrCQlnZGJfdGVzdF9ub19vdXRwdXQgInNldCB2YXJpYWJsZSBzaXplID0gJHJkc2l6 ZSIgIiIKKysJCWdkYl90ZXN0X25vX291dHB1dCAic2V0IHZhcmlhYmxlIG9mZnNldCA9ICRyZG9m ZnNldCIgIiIKKysJCXNldCB0ZXN0ICJjb250aW51ZSIKKysJCXNldCBnb3RfaGl0IDAKKysJCWdk Yl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysJCSAgICAtcmUgIiRyd2F0Y2hfZXhwICR3 cG51bTouKmFsdWUgPSAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCQkJc2V0IGdvdF9oaXQgMQor KwkJCXNlbmRfZ2RiICJjb250aW51ZVxuIgorKwkJCWV4cF9jb250aW51ZQorKwkJICAgIH0KKysJ CSAgICAtcmUgIiBzdGFydF9hZ2FpbiAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCQkgICAgfQor KwkJfQorKwkJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJkZWxldGUgJHdwbnVtIiAiIgorKwkJc2V0IHRl c3QgIndwKHNpemU9JHdwc2l6ZSBvZmZzZXQ9JHdwb2Zmc2V0KSByZChzaXplPSRyZHNpemUgb2Zm c2V0PSRyZG9mZnNldCkgZXhwZWN0PSRleHBlY3RfaGl0IgorKwkJaWYgeyRleHBlY3RfaGl0ID09 ICRnb3RfaGl0fSB7CisrCQkgICAgcGFzcyAkdGVzdAorKwkJfSBlbHNlIHsKKysJCSAgICAjIFdl IGRvIG5vdCBrbm93IGlmIHdlIHJ1biBvbiBhIGZpeGVkIExpbnV4IGtlcm5lbAorKwkJICAgICMg b3Igbm90LiAgUmVwb3J0IFhGQUlMIG9ubHkgaW4gdGhlIEZBSUwgY2FzZS4KKysJCSAgICBpZiB7 JGV4cGVjdF9oaXQgPT0gMCAmJiAkcmRzdGFydCA8ICR3cGVuZGFsaWduZWR9IHsKKysJCQlzZXR1 cF94ZmFpbCBleHRlcm5hbC8yMDIwNyAiYWFyY2g2NCotKi1saW51eCoiCisrCQkgICAgfQorKwkJ ICAgIGlmIHshJGV4cGVjdF9oaXQgJiYgW2V4cHIgbWF4ICgkd3BzdGFydCAvIDgsICRyZHN0YXJ0 IC8gOCkgPCBtaW4gKCgkd3BlbmQgKyA3KSAvIDgsICgkcmRlbmQgKyA3KSAvIDgpXX0geworKwkJ CXNldHVwX3hmYWlsIGJyZWFrcG9pbnRzLzIzMTMxICJwb3dlcnBjKi0qLSoiCisrCQkgICAgfQor KwkJICAgIGZhaWwgJHRlc3QKKysJCX0KKysJICAgIH0KKysJfQorKyAgICB9CisrfQorKworK2Zv cmVhY2ggd3Bjb3VudCB7NCA3fSB7CisrICAgIGFycmF5IHNldCB3cG9mZnNldF90b193cG51bSB7 fQorKyAgICBmb3Ige3NldCB3cG9mZnNldCAxfSB7JHdwb2Zmc2V0IDw9ICR3cGNvdW50fSB7aW5j ciB3cG9mZnNldH0geworKwlzZXQgdGVzdCAiJHJ3YXRjaCBkYXRhLnUuc2l6ZTFcWyR3cG9mZnNl dFxdIgorKwlzZXQgd3BudW0gIiIKKysJZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3Qgewor KwkgICAgLXJlICIkcndhdGNoX2V4cCAoXFswLTlcXSspOiAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7 CisrCQlzZXQgd3BvZmZzZXRfdG9fd3BudW0oJHdwb2Zmc2V0KSAkZXhwZWN0X291dCgxLHN0cmlu ZykKKysJICAgIH0KKysJICAgIC1yZSAiVGhlcmUgYXJlIG5vdCBlbm91Z2ggYXZhaWxhYmxlIGhh cmR3YXJlIHJlc291cmNlcyBmb3IgdGhpcyB3YXRjaHBvaW50LlxyXG4kZ2RiX3Byb21wdCAkIiB7 CisrCQlpZiB7JHdwb2Zmc2V0ID4gMX0geworKwkJICAgIHNldHVwX3hmYWlsIGJyZWFrcG9pbnRz LzIzMTMxICJwb3dlcnBjKi0qLSoiCisrCQkgICAgc2V0dXBfeGZhaWwgYnJlYWtwb2ludHMvMjMx MzEgImFybSotKi0qIgorKwkJfQorKwkJZmFpbCAkdGVzdAorKwkJc2V0IHdwb2Zmc2V0X3RvX3dw bnVtKCR3cG9mZnNldCkgMAorKwkgICAgfQorKwl9CisrICAgIH0KKysgICAgZ2RiX3Rlc3Rfbm9f b3V0cHV0ICJzZXQgdmFyaWFibGUgc2l6ZSA9IDEiICIiCisrICAgIGdkYl90ZXN0X25vX291dHB1 dCAic2V0IHZhcmlhYmxlIG9mZnNldCA9IDEiICIiCisrICAgIHNldCB0ZXN0ICJjb250aW51ZSIK KysgICAgc2V0IGdvdF9oaXQgMAorKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7 CisrCS1yZSAiXHJcbkNvdWxkIG5vdCBpbnNlcnQgaGFyZHdhcmUgd2F0Y2hwb2ludCAuKlxyXG4k Z2RiX3Byb21wdCAkIiB7CisrCX0KKysJLXJlICIkcndhdGNoX2V4cCAkd3BvZmZzZXRfdG9fd3Bu dW0oMSk6LiphbHVlID0gLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwkgICAgc2V0IGdvdF9oaXQg MQorKwkgICAgc2VuZF9nZGIgImNvbnRpbnVlXG4iCisrCSAgICBleHBfY29udGludWUKKysJfQor KwktcmUgIiBzdGFydF9hZ2FpbiAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCX0KKysgICAgfQor KyAgICBmb3Ige3NldCB3cG9mZnNldCAxfSB7JHdwb2Zmc2V0IDw9ICR3cGNvdW50fSB7aW5jciB3 cG9mZnNldH0geworKwlpZiB7JHdwb2Zmc2V0X3RvX3dwbnVtKCR3cG9mZnNldCl9IHsKKysJICAg IGdkYl90ZXN0X25vX291dHB1dCAiZGVsZXRlICR3cG9mZnNldF90b193cG51bSgkd3BvZmZzZXQp IiAiIgorKwl9CisrICAgIH0KKysgICAgc2V0IHRlc3QgIndwY291bnQoJHdwY291bnQpIgorKyAg ICBpZiB7ISR3cG9mZnNldF90b193cG51bShbZXhwciAkd3Bjb3VudCAtIDFdKX0geworKwl1bnRl c3RlZCAkdGVzdAorKwljb250aW51ZQorKyAgICB9CisrICAgIGlmIHskd3Bjb3VudCA+IDR9IHsK KysJaWYgeyFbaXN0YXJnZXQgInMzOTAqLSotKiJdfSB7CisrCSAgICBzZXR1cF9rZmFpbCB0ZGVw LzIyMzg5ICotKi0qCisrCX0KKysgICAgfQorKyAgICBnZGJfYXNzZXJ0ICRnb3RfaGl0ICR0ZXN0 CisrfQorKworK2lmICFbcnVudG9fbWFpbl0geworKyAgICByZXR1cm4gLTEKKyt9CisrZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImZpbmFsX3JldHVybiJdICJCcmVha3BvaW50 ICRkZWNpbWFsIGF0ICRoZXgiICJmaW5hbF9yZXR1cm4iCisrc2V0IHRlc3Qge3dhdGNoIGRhdGEu dS5zaXplOHR3aWNlWzFdfQorK3NldCB3cG51bSAiIgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0 ICR0ZXN0IHsKKysgICAgLXJlICJIYXJkd2FyZSB3YXRjaHBvaW50IChcWzAtOVxdKyk6IC4qXHJc biRnZGJfcHJvbXB0ICQiIHsKKysJc2V0IHdwbnVtICRleHBlY3Rfb3V0KDEsc3RyaW5nKQorKyAg ICB9CisrICAgIC1yZSAiV2F0Y2hwb2ludCAoXFswLTlcXSspOiAuKlxyXG4kZ2RiX3Byb21wdCAk IiB7CisrCWlmIHtbaXN0YXJnZXQgImFybSotKi0qIl19IHsKKysJICAgIHVudGVzdGVkICR0ZXN0 CisrCSAgICBzZXQgd3BudW0gMAorKwl9CisrICAgIH0KKyt9CisraWYgeyR3cG51bX0geworKyAg ICBzZXQgdGVzdCAiY29udGludWUiCisrICAgIHNldCBnb3RfaGl0IDAKKysgICAgZ2RiX3Rlc3Rf bXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKwktcmUgIlxyXG5Db3VsZCBub3QgaW5zZXJ0IGhhcmR3 YXJlIHdhdGNocG9pbnQgLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwl9CisrCS1yZSAiSGFyZHdh cmUgd2F0Y2hwb2ludCAkd3BudW06LipOZXcgdmFsdWUgPSAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7 CisrCSAgICBzZXQgZ290X2hpdCAxCisrCSAgICBzZW5kX2dkYiAiY29udGludWVcbiIKKysJICAg IGV4cF9jb250aW51ZQorKwl9CisrCS1yZSAiIGZpbmFsX3JldHVybiAuKlxyXG4kZ2RiX3Byb21w dCAkIiB7CisrCX0KKysgICAgfQorKyAgICBnZGJfYXNzZXJ0ICRnb3RfaGl0ICJzaXplOHR3aWNl IHdyaXRlIgorK30KKy0tLSAuL2dkYi91dGlscy5jCTIwMTgtMDEtMDUgMDU6MDc6MjMuMDAwMDAw MDAwICswMTAwCisrKysgLi9nZGIvdXRpbHMuYwkyMDE4LTA1LTA1IDE3OjU0OjE0LjExMTE0ODE3 OSArMDIwMAorQEAgLTI5OTMsMjIgKzI5OTMsNiBAQCBnZGJfYWJzcGF0aCAoY29uc3QgY2hhciAq cGF0aCkKKyAJICAgICBwYXRoLCAoY2hhciAqKSBOVUxMKSk7CisgfQorIAorLVVMT05HRVNUCist YWxpZ25fdXAgKFVMT05HRVNUIHYsIGludCBuKQorLXsKKy0gIC8qIENoZWNrIHRoYXQgTiBpcyBy ZWFsbHkgYSBwb3dlciBvZiB0d28uICAqLworLSAgZ2RiX2Fzc2VydCAobiAmJiAobiAmIChuLTEp KSA9PSAwKTsKKy0gIHJldHVybiAodiArIG4gLSAxKSAmIC1uOworLX0KKy0KKy1VTE9OR0VTVAor LWFsaWduX2Rvd24gKFVMT05HRVNUIHYsIGludCBuKQorLXsKKy0gIC8qIENoZWNrIHRoYXQgTiBp cyByZWFsbHkgYSBwb3dlciBvZiB0d28uICAqLworLSAgZ2RiX2Fzc2VydCAobiAmJiAobiAmIChu LTEpKSA9PSAwKTsKKy0gIHJldHVybiAodiAmIC1uKTsKKy19CistCisgLyogQWxsb2NhdGlvbiBm dW5jdGlvbiBmb3IgdGhlIGxpYmliZXJ0eSBoYXNoIHRhYmxlIHdoaWNoIHVzZXMgYW4KKyAgICBv YnN0YWNrLiAgVGhlIG9ic3RhY2sgaXMgcGFzc2VkIGFzIERBVEEuICAqLworIAorLS0tIC4vZ2Ri L3V0aWxzLmgJMjAxOC0wMS0wNSAwNTowNzoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi91 dGlscy5oCTIwMTgtMDUtMDUgMTc6NTQ6MTQuMTEyMTQ4MTg4ICswMjAwCitAQCAtNDk4LDM4ICs0 OTgsNiBAQCBleHRlcm4gcGlkX3Qgd2FpdF90b19kaWVfd2l0aF90aW1lb3V0IChwCisgCisgZXh0 ZXJuIGludCBteXJlYWQgKGludCwgY2hhciAqLCBpbnQpOworIAorLS8qIEVuc3VyZSB0aGF0IFYg aXMgYWxpZ25lZCB0byBhbiBOIGJ5dGUgYm91bmRhcnkgKEIncyBhc3N1bWVkIHRvIGJlIGEKKy0g ICBwb3dlciBvZiAyKS4gIFJvdW5kIHVwL2Rvd24gd2hlbiBuZWNlc3NhcnkuICBFeGFtcGxlcyBv ZiBjb3JyZWN0CistICAgdXNlIGluY2x1ZGU6CistCistICAgYWRkciA9IGFsaWduX3VwIChhZGRy LCA4KTsgLS0gVkFMVUUgbmVlZHMgOCBieXRlIGFsaWdubWVudAorLSAgIHdyaXRlX21lbW9yeSAo YWRkciwgdmFsdWUsIGxlbik7CistICAgYWRkciArPSBsZW47CistCistICAgYW5kOgorLQorLSAg IHNwID0gYWxpZ25fZG93biAoc3AgLSBsZW4sIDE2KTsgLS0gS2VlcCBTUCAxNiBieXRlIGFsaWdu ZWQKKy0gICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZSwgbGVuKTsKKy0KKy0gICBOb3RlIHRoYXQg dXNlcyBzdWNoIGFzOgorLQorLSAgIHdyaXRlX21lbW9yeSAoYWRkciwgdmFsdWUsIGxlbik7Cist ICAgYWRkciArPSBhbGlnbl91cCAobGVuLCA4KTsKKy0KKy0gICBhbmQ6CistCistICAgc3AgLT0g YWxpZ25fdXAgKGxlbiwgOCk7CistICAgd3JpdGVfbWVtb3J5IChzcCwgdmFsdWUsIGxlbik7Cist CistICAgYXJlIHR5cGljYWxseSBub3QgY29ycmVjdCBhcyB0aGV5IGRvbid0IGVuc3VyZSB0aGF0 IHRoZSBhZGRyZXNzIChTUAorLSAgIG9yIEFERFIpIGlzIGNvcnJlY3RseSBhbGlnbmVkIChyZWx5 aW5nIG9uIHByZXZpb3VzIGFsaWdubWVudCB0bworLSAgIGtlZXAgdGhpbmdzIHJpZ2h0KS4gIFRo aXMgaXMgYWxzbyB3aHkgdGhlIG1ldGhvZHMgYXJlIGNhbGxlZAorLSAgICJhbGlnbl8uLi4iIGlu c3RlYWQgb2YgInJvdW5kXy4uLiIgYXMgdGhlIGxhdHRlciByZWFkcyBiZXR0ZXIgd2l0aAorLSAg IHRoaXMgaW5jb3JyZWN0IGNvZGluZyBzdHlsZS4gICovCistCistZXh0ZXJuIFVMT05HRVNUIGFs aWduX3VwIChVTE9OR0VTVCB2LCBpbnQgbik7CistZXh0ZXJuIFVMT05HRVNUIGFsaWduX2Rvd24g KFVMT05HRVNUIHYsIGludCBuKTsKKy0KKyAvKiBSZXNvdXJjZSBsaW1pdHMgdXNlZCBieSBnZXRy bGltaXQgYW5kIHNldHJsaW1pdC4gICovCisgCisgZW51bSByZXNvdXJjZV9saW1pdF9raW5kCgpk aWZmIC0tZ2l0IGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRjaCBiL2dkYi1yaGJ6 Nzk1NDI0LWJpdHBvcy0yMm9mMjUucGF0Y2gKaW5kZXggMWJkNmRjYS4uMDIxNGI4MyAxMDA2NDQK LS0tIGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRjaAorKysgYi9nZGItcmhiejc5 NTQyNC1iaXRwb3MtMjJvZjI1LnBhdGNoCkBAIC0xMTcsMTEgKzExNywxMSBAQCBDb250ZW50LURp c3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1iaXRwb3Mtd3AucGF0Y2gKICBnZGIvdGFy Z2V0LmggICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KICAxMCBmaWxlcyBjaGFuZ2VkLCAz OCBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2dkYi9hYXJj aDY0LWxpbnV4LW5hdC5jIGIvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKLWluZGV4IDA4ZTZmNGQ0 ZmQuLmYwOGJmMDM5ZTQgMTAwNjQ0Ci0tLS0gYS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwotKysr IGIvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKLUBAIC03NjcsNyArNzY3LDcgQEAgYWFyY2g2NF9s aW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMpCitJbmRl eDogZ2RiLTguMS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi04 LjEub3JpZy9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwkyMDE4LTA1LTA1IDE3OjU4OjMxLjA2MTQ5 Njc0MSArMDIwMAorKysrIGdkYi04LjEvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMJMjAxOC0wNS0w NSAxNzo1ODozMi40NDk1MDkzMTMgKzAyMDAKK0BAIC03ODksNyArNzg5LDcgQEAKICBzdGF0aWMg aW50CiAgYWFyY2g2NF9saW51eF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqdGFyZ2V0LAogIAkJCQkJICAgIENPUkVfQUREUiBhZGRyLApAQCAtMTMwLDEx ICsxMzAsMTEgQEAgaW5kZXggMDhlNmY0ZDRmZC4uZjA4YmYwMzllNCAxMDA2NDQKICB7CiAgICBy ZXR1cm4gc3RhcnQgPD0gYWRkciAmJiBzdGFydCArIGxlbmd0aCAtIDEgPj0gYWRkcjsKICB9Ci1k aWZmIC0tZ2l0IGEvZ2RiL2FybS1saW51eC1uYXQuYyBiL2dkYi9hcm0tbGludXgtbmF0LmMKLWlu ZGV4IDNiN2FhNDBkYjguLjQ4ZGZlMjJjZTEgMTAwNjQ0Ci0tLS0gYS9nZGIvYXJtLWxpbnV4LW5h dC5jCi0rKysgYi9nZGIvYXJtLWxpbnV4LW5hdC5jCi1AQCAtMTE3Nyw3ICsxMTc3LDcgQEAgYXJt X2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcykKK0lu ZGV4OiBnZGItOC4xL2dkYi9hcm0tbGludXgtbmF0LmMKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItOC4x Lm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDE4LTA1LTA1IDE3OjU4OjMxLjA2MjQ5Njc1MCAr MDIwMAorKysrIGdkYi04LjEvZ2RiL2FybS1saW51eC1uYXQuYwkyMDE4LTA1LTA1IDE3OjU4OjMy LjQ0OTUwOTMxMyArMDIwMAorQEAgLTExNzcsNyArMTE3Nyw3IEBACiAgc3RhdGljIGludAogIGFy bV9saW51eF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAq dGFyZ2V0LAogIAkJCQkJQ09SRV9BRERSIGFkZHIsCkBAIC0xNDMsMTEgKzE0MywxMSBAQCBpbmRl eCAzYjdhYTQwZGI4Li40OGRmZTIyY2UxIDEwMDY0NAogIHsKICAgIHJldHVybiBzdGFydCA8PSBh ZGRyICYmIHN0YXJ0ICsgbGVuZ3RoIC0gMSA+PSBhZGRyOwogIH0KLWRpZmYgLS1naXQgYS9nZGIv bmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYyBiL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1w b2ludC5jCi1pbmRleCBjZTI2ZjI4ZmFkLi5lOWViYzVmYmE4IDEwMDY0NAotLS0tIGEvZ2RiL25h dC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMKLSsrKyBiL2dkYi9uYXQvYWFyY2g2NC1saW51eC1o dy1wb2ludC5jCi1AQCAtMTExLDcgKzExMSw3IEBAIGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0cmxf cmVnIChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsIGludCBsZW4pCitJbmRleDogZ2RiLTgu MS9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi04 LjEub3JpZy9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYwkyMDE4LTA1LTA1IDE3OjU4 OjMxLjA2MjQ5Njc1MCArMDIwMAorKysrIGdkYi04LjEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3 LXBvaW50LmMJMjAxOC0wNS0wNSAxNzo1OToxNi42MTY5MDkzODIgKzAyMDAKK0BAIC0xMzcsNyAr MTM3LDcgQEAKICAgICBSZXR1cm4gMCBmb3IgYW55IG5vbi1jb21wbGlhbnQgQUREUiBhbmQvb3Ig TEVOOyByZXR1cm4gMSBvdGhlcndpc2UuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTE1NiwyMCAr MTU2LDE5IEBAIGluZGV4IGNlMjZmMjhmYWQuLmU5ZWJjNWZiYTggMTAwNjQ0CiAgewogICAgdW5z aWduZWQgaW50IGFsaWdubWVudCA9IDA7CiAgCi1AQCAtMTgwLDkgKzE4MCwxMCBAQCBhYXJjaDY0 X3BvaW50X2lzX2FsaWduZWQgKGludCBpc193YXRjaHBvaW50LCBDT1JFX0FERFIgYWRkciwgaW50 IGxlbikKLSAgICBsaW1pdGF0aW9ucyBjYW4gYmUgbGFyZ2VseSByZWxheGVkIHdpdGggc29tZSBm dXJ0aGVyIHdvcmsuICAqLworQEAgLTIxMiw5ICsyMTIsOSBAQAorICAgIGFuIGFkZHJlc3Mgd2l0 aGluIHRoZSBsYXR0ZXIuICovCiAgCiAgc3RhdGljIHZvaWQKIC1hYXJjaDY0X2FsaWduX3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBDT1JFX0FERFIgKmFsaWduZWRfYWRkcl9w LAotK2FhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVu LAotKwkJCSAgQ09SRV9BRERSICphbGlnbmVkX2FkZHJfcCwKLSAJCQkgIGludCAqYWxpZ25lZF9s ZW5fcCwgQ09SRV9BRERSICpuZXh0X2FkZHJfcCwKLS0JCQkgIGludCAqbmV4dF9sZW5fcCkKLSsJ CQkgIExPTkdFU1QgKm5leHRfbGVuX3ApCisrYWFyY2g2NF9hbGlnbl93YXRjaHBvaW50IChDT1JF X0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIENPUkVfQUREUiAqYWxpZ25lZF9hZGRyX3AsCisgCQkJ ICBpbnQgKmFsaWduZWRfb2Zmc2V0X3AsIGludCAqYWxpZ25lZF9sZW5fcCwKKy0JCQkgIENPUkVf QUREUiAqbmV4dF9hZGRyX3AsIGludCAqbmV4dF9sZW5fcCwKKysJCQkgIENPUkVfQUREUiAqbmV4 dF9hZGRyX3AsIExPTkdFU1QgKm5leHRfbGVuX3AsCisgCQkJICBDT1JFX0FERFIgKm5leHRfYWRk cl9vcmlnX3ApCiAgewogICAgaW50IGFsaWduZWRfbGVuOwotICAgdW5zaWduZWQgaW50IG9mZnNl dDsKLUBAIC01MDEsNyArNTAyLDcgQEAgYWFyY2g2NF9oYW5kbGVfYWxpZ25lZF93YXRjaHBvaW50 IChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsCitAQCAtNjExLDcgKzYxMSw3IEBACiAgCiAg c3RhdGljIGludAogIGFhcmNoNjRfaGFuZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50IChlbnVtIHRh cmdldF9od19icF90eXBlIHR5cGUsCkBAIC0xNzcsMjAgKzE3NiwyMyBAQCBpbmRleCBjZTI2ZjI4 ZmFkLi5lOWViYzVmYmE4IDEwMDY0NAogKwkJCQkgICAgIENPUkVfQUREUiBhZGRyLCBMT05HRVNU IGxlbiwgaW50IGlzX2luc2VydCwKICAJCQkJICAgICBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdf c3RhdGUgKnN0YXRlKQogIHsKLSAgIHdoaWxlIChsZW4gPiAwKQotQEAgLTUyNCw5ICs1MjUsOSBA QCBhYXJjaDY0X2hhbmRsZV91bmFsaWduZWRfd2F0Y2hwb2ludCAoZW51bSB0YXJnZXRfaHdfYnBf dHlwZSB0eXBlLAotIAkJICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotIAkJ ICAgICAgImFsaWduZWRfYWRkcjogJXMsIGFsaWduZWRfbGVuOiAlZFxuIgorICAgQ09SRV9BRERS IGFkZHJfb3JpZyA9IGFkZHI7CitAQCAtNjQxLDEyICs2NDEsMTIgQEAKICAJCSAgICAgICIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLS0JCSAgICAgICJuZXh0X2FkZHI6ICVzLCAg ICBuZXh0X2xlbjogJWRcbiIsCi0rCQkgICAgICAibmV4dF9hZGRyOiAlcywgICAgbmV4dF9sZW46 ICVzXG4iLAorIAkJICAgICAgImFkZHJfb3JpZzogJXNcbiIKKyAJCSAgICAgICIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIKKy0JCSAgICAgICJuZXh0X2FkZHI6ICVzLCAgICBuZXh0 X2xlbjogJWRcbiIKKysJCSAgICAgICJuZXh0X2FkZHI6ICVzLCAgICBuZXh0X2xlbjogJXNcbiIK KyAJCSAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisgCQkgICAgICAiYWRkcl9v cmlnX25leHQ6ICVzXG4iLAogIAkJICAgICAgaXNfaW5zZXJ0LCBjb3JlX2FkZHJfdG9fc3RyaW5n X256IChhbGlnbmVkX2FkZHIpLAotLQkJICAgICAgYWxpZ25lZF9sZW4sIGNvcmVfYWRkcl90b19z dHJpbmdfbnogKGFkZHIpLCBsZW4pOwotKwkJICAgICAgYWxpZ25lZF9sZW4sIGNvcmVfYWRkcl90 b19zdHJpbmdfbnogKGFkZHIpLCBwbG9uZ2VzdCAobGVuKSk7CisgCQkgICAgICBhbGlnbmVkX2xl biwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoYWRkcl9vcmlnKSwKKy0JCSAgICAgIGNvcmVfYWRk cl90b19zdHJpbmdfbnogKGFkZHIpLCBsZW4sCisrCQkgICAgICBjb3JlX2FkZHJfdG9fc3RyaW5n X256IChhZGRyKSwgcGxvbmdlc3QgKGxlbiksCisgCQkgICAgICBjb3JlX2FkZHJfdG9fc3RyaW5n X256IChhZGRyX29yaWdfbmV4dCkpOwogIAotICAgICAgIGlmIChyZXQgIT0gMCkKLSAJcmV0dXJu IHJldDsKLUBAIC01MzcsNyArNTM4LDcgQEAgYWFyY2g2NF9oYW5kbGVfdW5hbGlnbmVkX3dhdGNo cG9pbnQgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwKKyAgICAgICBhZGRyX29yaWcgPSBh ZGRyX29yaWdfbmV4dDsKK0BAIC02NjAsNyArNjYwLDcgQEAKICAKICBpbnQKICBhYXJjaDY0X2hh bmRsZV93YXRjaHBvaW50IChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsIENPUkVfQUREUiBh ZGRyLApAQCAtMTk5LDcgKzIwMSw3IEBAIGluZGV4IGNlMjZmMjhmYWQuLmU5ZWJjNWZiYTggMTAw NjQ0CiAgCQkJICAgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSkKICB7CiAg ICBpZiAoYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkICgxIC8qIGlzX3dhdGNocG9pbnQgKi8gLCBh ZGRyLCBsZW4pKQotQEAgLTU4OCwxNCArNTg5LDE0IEBAIGFhcmNoNjRfbGludXhfc2V0X2RlYnVn X3JlZ3MgKGNvbnN0IHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCitAQCAt NzIyLDE0ICs3MjIsMTQgQEAKICB2b2lkCiAgYWFyY2g2NF9zaG93X2RlYnVnX3JlZ19zdGF0ZSAo c3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKICAJCQkgICAgICBjb25zdCBj aGFyICpmdW5jLCBDT1JFX0FERFIgYWRkciwKQEAgLTIxNywxMSArMjE5LDExIEBAIGluZGV4IGNl MjZmMjhmYWQuLmU5ZWJjNWZiYTggMTAwNjQ0CiAgCQkgIHR5cGUgPT0gaHdfd3JpdGUgPyAiaHct d3JpdGUtd2F0Y2hwb2ludCIKICAJCSAgOiAodHlwZSA9PSBod19yZWFkID8gImh3LXJlYWQtd2F0 Y2hwb2ludCIKICAJCSAgICAgOiAodHlwZSA9PSBod19hY2Nlc3MgPyAiaHctYWNjZXNzLXdhdGNo cG9pbnQiCi1kaWZmIC0tZ2l0IGEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmggYi9n ZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaAotaW5kZXggN2M0MmI5NmQxYi4uZTFkNGZj OGRiYyAxMDA2NDQKLS0tLSBhL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5oCi0rKysg Yi9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaAotQEAgLTE3Miw3ICsxNzIsNyBAQCBp bnQgYWFyY2g2NF9oYW5kbGVfYnJlYWtwb2ludCAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBl LCBDT1JFX0FERFIgYWRkciwKK0luZGV4OiBnZGItOC4xL2dkYi9uYXQvYWFyY2g2NC1saW51eC1o dy1wb2ludC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTguMS5vcmlnL2dkYi9uYXQvYWFyY2g2NC1s aW51eC1ody1wb2ludC5oCTIwMTgtMDUtMDUgMTc6NTg6MzEuMDYyNDk2NzUwICswMjAwCisrKysg Z2RiLTguMS9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaAkyMDE4LTA1LTA1IDE3OjU4 OjMyLjQ1MDUwOTMyMiArMDIwMAorQEAgLTE3Niw3ICsxNzYsNyBAQAogIAkJCSAgICAgICBpbnQg bGVuLCBpbnQgaXNfaW5zZXJ0LAogIAkJCSAgICAgICBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdf c3RhdGUgKnN0YXRlKTsKICBpbnQgYWFyY2g2NF9oYW5kbGVfd2F0Y2hwb2ludCAoZW51bSB0YXJn ZXRfaHdfYnBfdHlwZSB0eXBlLCBDT1JFX0FERFIgYWRkciwKQEAgLTIyOSw4ICsyMzEsOCBAQCBp bmRleCA3YzQyYjk2ZDFiLi5lMWQ0ZmM4ZGJjIDEwMDY0NAogKwkJCSAgICAgICBMT05HRVNUIGxl biwgaW50IGlzX2luc2VydCwKICAJCQkgICAgICAgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0 YXRlICpzdGF0ZSk7CiAgCi0gdm9pZCBhYXJjaDY0X2xpbnV4X3NldF9kZWJ1Z19yZWdzIChjb25z dCBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAotQEAgLTE4MCw3ICsxODAs NyBAQCB2b2lkIGFhcmNoNjRfbGludXhfc2V0X2RlYnVnX3JlZ3MgKGNvbnN0IHN0cnVjdCBhYXJj aDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCisgdm9pZCBhYXJjaDY0X2xpbnV4X3NldF9kZWJ1 Z19yZWdzIChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAorQEAgLTE4NCw3 ICsxODQsNyBAQAogIAogIHZvaWQgYWFyY2g2NF9zaG93X2RlYnVnX3JlZ19zdGF0ZSAoc3RydWN0 IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKICAJCQkJICAgY29uc3QgY2hhciAqZnVu YywgQ09SRV9BRERSIGFkZHIsCkBAIC0yMzksMTEgKzI0MSwxMSBAQCBpbmRleCA3YzQyYjk2ZDFi Li5lMWQ0ZmM4ZGJjIDEwMDY0NAogIAogIHZvaWQgYWFyY2g2NF9saW51eF9nZXRfZGVidWdfcmVn X2NhcGFjaXR5IChpbnQgdGlkKTsKICAKLWRpZmYgLS1naXQgYS9nZGIvcHBjLWxpbnV4LW5hdC5j IGIvZ2RiL3BwYy1saW51eC1uYXQuYwotaW5kZXggNGE4MjQzNGMwZC4uNDlhMjdkOGRhYSAxMDA2 NDQKLS0tLSBhL2dkYi9wcGMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9wcGMtbGludXgtbmF0LmMK LUBAIC0xNzk4LDExICsxNzk4LDExIEBAIGNhbl91c2Vfd2F0Y2hwb2ludF9jb25kX2FjY2VsICh2 b2lkKQorSW5kZXg6IGdkYi04LjEvZ2RiL3BwYy1saW51eC1uYXQuYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi04LjEub3JpZy9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTgtMDUtMDUgMTc6NTg6MzEuMDYz NDk2NzU5ICswMjAwCisrKysgZ2RiLTguMS9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTgtMDUtMDUg MTc6NTg6MzIuNDUwNTA5MzIyICswMjAwCitAQCAtMTc5OCwxMSArMTc5OCwxMSBAQAogICAgIENP TkRJVElPTl9WQUxVRSB3aWxsIGhvbGQgdGhlIHZhbHVlIHdoaWNoIHNob3VsZCBiZSBwdXQgaW4g dGhlCiAgICAgRFZDIHJlZ2lzdGVyLiAgKi8KICBzdGF0aWMgdm9pZApAQCAtMjU4LDcgKzI2MCw3 IEBAIGluZGV4IDRhODI0MzRjMGQuLjQ5YTI3ZDhkYWEgMTAwNjQ0CiAgICBDT1JFX0FERFIgYWRk cl9lbmRfZGF0YSwgYWRkcl9lbmRfZHZjOwogIAogICAgLyogVGhlIERWQyByZWdpc3RlciBjb21w YXJlcyBieXRlcyB3aXRoaW4gZml4ZWQtbGVuZ3RoIHdpbmRvd3Mgd2hpY2gKLUBAIC0xODg5LDcg KzE4ODksNyBAQCBudW1fbWVtb3J5X2FjY2Vzc2VzIChzdHJ1Y3QgdmFsdWUgKnYpCitAQCAtMTg4 OSw3ICsxODg5LDcgQEAKICAgICBvZiB0aGUgY29uc3RhbnQuICAqLwogIHN0YXRpYyBpbnQKICBj aGVja19jb25kaXRpb24gKENPUkVfQUREUiB3YXRjaF9hZGRyLCBzdHJ1Y3QgZXhwcmVzc2lvbiAq Y29uZCwKQEAgLTI2Nyw3ICsyNjksNyBAQCBpbmRleCA0YTgyNDM0YzBkLi40OWEyN2Q4ZGFhIDEw MDY0NAogIHsKICAgIGludCBwYyA9IDEsIG51bV9hY2Nlc3Nlc19sZWZ0LCBudW1fYWNjZXNzZXNf cmlnaHQ7CiAgICBzdHJ1Y3QgdmFsdWUgKmxlZnRfdmFsLCAqcmlnaHRfdmFsLCAqbGVmdF9jaGFp biwgKnJpZ2h0X2NoYWluOwotQEAgLTE5NTcsNyArMTk1Nyw3IEBAIGNoZWNrX2NvbmRpdGlvbiAo Q09SRV9BRERSIHdhdGNoX2FkZHIsIHN0cnVjdCBleHByZXNzaW9uICpjb25kLAorQEAgLTE5NTcs NyArMTk1Nyw3IEBACiAgICAgdHJ1ZS4gICovCiAgc3RhdGljIGludAogIHBwY19saW51eF9jYW5f YWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLApAQCAt Mjc2LDcgKzI3OCw3IEBAIGluZGV4IDRhODI0MzRjMGQuLjQ5YTI3ZDhkYWEgMTAwNjQ0CiAgCQkJ CQkgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIENPUkVfQUREUiBkYXRhX3ZhbHVl OwotQEAgLTE5NzQsNyArMTk3NCw3IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9j b25kaXRpb24gKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLAorQEAgLTE5NzQsNyArMTk3NCw3IEBA CiAgCiAgc3RhdGljIHZvaWQKICBjcmVhdGVfd2F0Y2hwb2ludF9yZXF1ZXN0IChzdHJ1Y3QgcHBj X2h3X2JyZWFrcG9pbnQgKnAsIENPUkVfQUREUiBhZGRyLApAQCAtMjg1LDcgKzI4Nyw3IEBAIGlu ZGV4IDRhODI0MzRjMGQuLjQ5YTI3ZDhkYWEgMTAwNjQ0CiAgCQkJICAgc3RydWN0IGV4cHJlc3Np b24gKmNvbmQsIGludCBpbnNlcnQpCiAgewogICAgaWYgKGxlbiA9PSAxCi1AQCAtMjI0MCw3ICsy MjQwLDcgQEAgcHBjX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9v cHMgKm9wcykKK0BAIC0yMjQwLDcgKzIyNDAsNyBAQAogIHN0YXRpYyBpbnQKICBwcGNfbGludXhf d2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwK ICAJCQkJCUNPUkVfQUREUiBhZGRyLApAQCAtMjk0LDExICsyOTYsMTEgQEAgaW5kZXggNGE4MjQz NGMwZC4uNDlhMjdkOGRhYSAxMDA2NDQKICB7CiAgICBpbnQgbWFzazsKICAKLWRpZmYgLS1naXQg YS9nZGIvcHJvY2ZzLmMgYi9nZGIvcHJvY2ZzLmMKLWluZGV4IDg4N2YxMjAxZmUuLmVkZDFiZTYz MmEgMTAwNjQ0Ci0tLS0gYS9nZGIvcHJvY2ZzLmMKLSsrKyBiL2dkYi9wcm9jZnMuYwotQEAgLTE1 NjMsNyArMTU2Myw3IEBAIHByb2Nmc19hZGRyZXNzX3RvX2hvc3RfcG9pbnRlciAoQ09SRV9BRERS IGFkZHIpCitJbmRleDogZ2RiLTguMS9nZGIvcHJvY2ZzLmMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt OC4xLm9yaWcvZ2RiL3Byb2Nmcy5jCTIwMTgtMDUtMDUgMTc6NTg6MzEuMDY0NDk2NzY4ICswMjAw CisrKysgZ2RiLTguMS9nZGIvcHJvY2ZzLmMJMjAxOC0wNS0wNSAxNzo1ODozMi40NTE1MDkzMzEg KzAyMDAKK0BAIC0xNTYzLDcgKzE1NjMsNyBAQAogIH0KICAKICBzdGF0aWMgaW50CkBAIC0zMDcs NyArMzA5LDcgQEAgaW5kZXggODg3ZjEyMDFmZS4uZWRkMWJlNjMyYSAxMDA2NDQKICB7CiAgICBz dHJ1Y3QgewogICAgICBwcm9jZnNfY3RsX3QgY21kOwotQEAgLTMyNTAsNyArMzI1MCw3IEBAIHBy b2Nmc19waWRfdG9fc3RyIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBwdGlkX3QgcHRpZCkKK0BA IC0zMjUwLDcgKzMyNTAsNyBAQAogIC8qIEluc2VydCBhIHdhdGNocG9pbnQuICAqLwogIAogIHN0 YXRpYyBpbnQKQEAgLTMxNiwxMSArMzE4LDExIEBAIGluZGV4IDg4N2YxMjAxZmUuLmVkZDFiZTYz MmEgMTAwNjQ0CiAgCQkgICAgICAgaW50IGFmdGVyKQogIHsKICAgIGludCAgICAgICBwZmxhZ3Mg PSAwOwotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUuYwotaW5kZXggOTRk NTU5NDE3NS4uODY3NzdmMWU1ZSAxMDA2NDQKLS0tLSBhL2dkYi9yZW1vdGUuYwotKysrIGIvZ2Ri L3JlbW90ZS5jCi1AQCAtOTg5Nyw3ICs5ODk3LDcgQEAgcmVtb3RlX2luc2VydF93YXRjaHBvaW50 IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwgQ09SRV9BRERSIGFkZHIsIGludCBsZW4sCitJbmRl eDogZ2RiLTguMS9nZGIvcmVtb3RlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItOC4xLm9yaWcvZ2Ri L3JlbW90ZS5jCTIwMTgtMDUtMDUgMTc6NTg6MzEuMDY2NDk2Nzg2ICswMjAwCisrKysgZ2RiLTgu MS9nZGIvcmVtb3RlLmMJMjAxOC0wNS0wNSAxNzo1ODozMi40NTI1MDkzNDAgKzAyMDAKK0BAIC05 ODk3LDcgKzk4OTcsNyBAQAogICAgcCA9IHN0cmNociAocnMtPmJ1ZiwgJ1wwJyk7CiAgICBhZGRy ID0gcmVtb3RlX2FkZHJlc3NfbWFza2VkIChhZGRyKTsKICAgIHAgKz0gaGV4bnVtc3RyIChwLCAo VUxPTkdFU1QpIGFkZHIpOwpAQCAtMzI5LDcgKzMzMSw3IEBAIGluZGV4IDk0ZDU1OTQxNzUuLjg2 Nzc3ZjFlNWUgMTAwNjQ0CiAgCiAgICBwdXRwa3QgKHJzLT5idWYpOwogICAgZ2V0cGt0ICgmcnMt PmJ1ZiwgJnJzLT5idWZfc2l6ZSwgMCk7Ci1AQCAtOTkxNyw3ICs5OTE3LDcgQEAgcmVtb3RlX2lu c2VydF93YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwgQ09SRV9BRERSIGFkZHIs IGludCBsZW4sCitAQCAtOTkxNyw3ICs5OTE3LDcgQEAKICAKICBzdGF0aWMgaW50CiAgcmVtb3Rl X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQs IENPUkVfQUREUiBhZGRyLApAQCAtMzM4LDcgKzM0MCw3IEBAIGluZGV4IDk0ZDU1OTQxNzUuLjg2 Nzc3ZjFlNWUgMTAwNjQ0CiAgewogICAgQ09SRV9BRERSIGRpZmYgPSByZW1vdGVfYWRkcmVzc19t YXNrZWQgKGFkZHIgLSBzdGFydCk7CiAgCi1AQCAtOTk0Niw3ICs5OTQ2LDcgQEAgcmVtb3RlX3Jl bW92ZV93YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwgQ09SRV9BRERSIGFkZHIs IGludCBsZW4sCitAQCAtOTk0Niw3ICs5OTQ2LDcgQEAKICAgIHAgPSBzdHJjaHIgKHJzLT5idWYs ICdcMCcpOwogICAgYWRkciA9IHJlbW90ZV9hZGRyZXNzX21hc2tlZCAoYWRkcik7CiAgICBwICs9 IGhleG51bXN0ciAocCwgKFVMT05HRVNUKSBhZGRyKTsKQEAgLTM0NywxMSArMzQ5LDExIEBAIGlu ZGV4IDk0ZDU1OTQxNzUuLjg2Nzc3ZjFlNWUgMTAwNjQ0CiAgICBwdXRwa3QgKHJzLT5idWYpOwog ICAgZ2V0cGt0ICgmcnMtPmJ1ZiwgJnJzLT5idWZfc2l6ZSwgMCk7CiAgCi1kaWZmIC0tZ2l0IGEv Z2RiL3RhcmdldC1kZWxlZ2F0ZXMuYyBiL2dkYi90YXJnZXQtZGVsZWdhdGVzLmMKLWluZGV4IDJi NDQ5Y2JmMDEuLmY3MjUyMTVmZmYgMTAwNjQ0Ci0tLS0gYS9nZGIvdGFyZ2V0LWRlbGVnYXRlcy5j Ci0rKysgYi9nZGIvdGFyZ2V0LWRlbGVnYXRlcy5jCi1AQCAtNzMzLDE0ICs3MzMsMTQgQEAgZGVi dWdfc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLCBDT1JFX0FE RFIgKmFyZzEpCitJbmRleDogZ2RiLTguMS9nZGIvdGFyZ2V0LWRlbGVnYXRlcy5jCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTguMS5vcmlnL2dkYi90YXJnZXQtZGVsZWdhdGVzLmMJMjAxOC0wNS0wNSAx Nzo1ODoyNS4zMjE0NDQ3NDcgKzAyMDAKKysrKyBnZGItOC4xL2dkYi90YXJnZXQtZGVsZWdhdGVz LmMJMjAxOC0wNS0wNSAxNzo1ODozMi40NTM1MDkzNDkgKzAyMDAKK0BAIC03MzMsMTQgKzczMywx NCBAQAogIH0KICAKICBzdGF0aWMgaW50CkBAIC0zNjgsNyArMzcwLDcgQEAgaW5kZXggMmI0NDlj YmYwMS4uZjcyNTIxNWZmZiAxMDA2NDQKICB7CiAgICBpbnQgcmVzdWx0OwogICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiLT4gJXMtPnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5f cmFuZ2UgKC4uLilcbiIsIGRlYnVnX3RhcmdldC50b19zaG9ydG5hbWUpOwotQEAgLTc1Miw3ICs3 NTIsNyBAQCBkZWJ1Z193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0 X29wcyAqc2VsZiwgQ09SRV9BRERSIGFyZzEsIENPUgorQEAgLTc1Miw3ICs3NTIsNyBAQAogICAg ZnB1dHNfdW5maWx0ZXJlZCAoIiwgIiwgZ2RiX3N0ZGxvZyk7CiAgICB0YXJnZXRfZGVidWdfcHJp bnRfQ09SRV9BRERSIChhcmcyKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIsICIsIGdkYl9zdGRs b2cpOwpAQCAtMzc3LDcgKzM3OSw3IEBAIGluZGV4IDJiNDQ5Y2JmMDEuLmY3MjUyMTVmZmYgMTAw NjQ0CiAgICBmcHV0c191bmZpbHRlcmVkICgiKSA9ICIsIGdkYl9zdGRsb2cpOwogICAgdGFyZ2V0 X2RlYnVnX3ByaW50X2ludCAocmVzdWx0KTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKCJcbiIsIGdk Yl9zdGRsb2cpOwotQEAgLTc4NSwyMCArNzg1LDIwIEBAIGRlYnVnX3JlZ2lvbl9va19mb3JfaHdf d2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsIENPUkVfQUREUiBhcmcxLCBMT05H CitAQCAtNzg1LDIwICs3ODUsMjAgQEAKICB9CiAgCiAgc3RhdGljIGludApAQCAtNDAxLDcgKzQw Myw3IEBAIGluZGV4IDJiNDQ5Y2JmMDEuLmY3MjUyMTVmZmYgMTAwNjQ0CiAgewogICAgaW50IHJl c3VsdDsKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIi0+ICVzLT50b19jYW5f YWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKC4uLilcbiIsIGRlYnVnX3RhcmdldC50b19zaG9y dG5hbWUpOwotQEAgLTgwOCw3ICs4MDgsNyBAQCBkZWJ1Z19jYW5fYWNjZWxfd2F0Y2hwb2ludF9j b25kaXRpb24gKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLCBDT1JFX0FERFIgYXJnMSwgaQorQEAg LTgwOCw3ICs4MDgsNyBAQAogICAgZnB1dHNfdW5maWx0ZXJlZCAoIiwgIiwgZ2RiX3N0ZGxvZyk7 CiAgICB0YXJnZXRfZGVidWdfcHJpbnRfQ09SRV9BRERSIChhcmcxKTsKICAgIGZwdXRzX3VuZmls dGVyZWQgKCIsICIsIGdkYl9zdGRsb2cpOwpAQCAtNDEwLDExICs0MTIsMTEgQEAgaW5kZXggMmI0 NDljYmYwMS4uZjcyNTIxNWZmZiAxMDA2NDQKICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIsICIsIGdk Yl9zdGRsb2cpOwogICAgdGFyZ2V0X2RlYnVnX3ByaW50X2ludCAoYXJnMyk7CiAgICBmcHV0c191 bmZpbHRlcmVkICgiLCAiLCBnZGJfc3RkbG9nKTsKLWRpZmYgLS1naXQgYS9nZGIvdGFyZ2V0LmMg Yi9nZGIvdGFyZ2V0LmMKLWluZGV4IGExYWM2ZDA2OTcuLmViMDUzOGNiODIgMTAwNjQ0Ci0tLS0g YS9nZGIvdGFyZ2V0LmMKLSsrKyBiL2dkYi90YXJnZXQuYwotQEAgLTUzLDcgKzUzLDcgQEAgc3Rh dGljIHZvaWQgZ2VuZXJpY190bHNfZXJyb3IgKHZvaWQpIEFUVFJJQlVURV9OT1JFVFVSTjsKK0lu ZGV4OiBnZGItOC4xL2dkYi90YXJnZXQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi04LjEub3JpZy9n ZGIvdGFyZ2V0LmMJMjAxOC0wNS0wNSAxNzo1ODozMS4wNjg0OTY4MDQgKzAyMDAKKysrKyBnZGIt OC4xL2dkYi90YXJnZXQuYwkyMDE4LTA1LTA1IDE3OjU4OjMyLjQ1MzUwOTM0OSArMDIwMAorQEAg LTUzLDcgKzUzLDcgQEAKICBzdGF0aWMgdm9pZCBkZWZhdWx0X3Rlcm1pbmFsX2luZm8gKHN0cnVj dCB0YXJnZXRfb3BzICosIGNvbnN0IGNoYXIgKiwgaW50KTsKICAKICBzdGF0aWMgaW50IGRlZmF1 bHRfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKiwKQEAg LTQyMyw3ICs0MjUsNyBAQCBpbmRleCBhMWFjNmQwNjk3Li5lYjA1MzhjYjgyIDEwMDY0NAogIAog IHN0YXRpYyBpbnQgZGVmYXVsdF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0 YXJnZXRfb3BzICosCiAgCQkJCQkJQ09SRV9BRERSLCBMT05HRVNUKTsKLUBAIC0zMTIwLDcgKzMx MjAsNyBAQCBkZWZhdWx0X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdl dF9vcHMgKnNlbGYsCitAQCAtMzEyMCw3ICszMTIwLDcgQEAKICBzdGF0aWMgaW50CiAgZGVmYXVs dF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0 LAogIAkJCQkgICAgICBDT1JFX0FERFIgYWRkciwKQEAgLTQzMiwxMSArNDM0LDExIEBAIGluZGV4 IGExYWM2ZDA2OTcuLmViMDUzOGNiODIgMTAwNjQ0CiAgewogICAgcmV0dXJuIGFkZHIgPj0gc3Rh cnQgJiYgYWRkciA8IHN0YXJ0ICsgbGVuZ3RoOwogIH0KLWRpZmYgLS1naXQgYS9nZGIvdGFyZ2V0 LmggYi9nZGIvdGFyZ2V0LmgKLWluZGV4IDdhNzBjM2Y2ZGEuLjM1ZWVlOTFhODMgMTAwNjQ0Ci0t LS0gYS9nZGIvdGFyZ2V0LmgKLSsrKyBiL2dkYi90YXJnZXQuaAotQEAgLTUzNSw3ICs1MzUsNyBA QCBzdHJ1Y3QgdGFyZ2V0X29wcworSW5kZXg6IGdkYi04LjEvZ2RiL3RhcmdldC5oCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTguMS5vcmlnL2dkYi90YXJnZXQuaAkyMDE4LTA1LTA1IDE3OjU4OjMxLjA2 ODQ5NjgwNCArMDIwMAorKysrIGdkYi04LjEvZ2RiL3RhcmdldC5oCTIwMTgtMDUtMDUgMTc6NTg6 MzIuNDU0NTA5MzU4ICswMjAwCitAQCAtNTM1LDcgKzUzNSw3IEBACiAgICAgIGludCAoKnRvX3N0 b3BwZWRfZGF0YV9hZGRyZXNzKSAoc3RydWN0IHRhcmdldF9vcHMgKiwgQ09SRV9BRERSICopCiAg ICAgICAgVEFSR0VUX0RFRkFVTFRfUkVUVVJOICgwKTsKICAgICAgaW50ICgqdG9fd2F0Y2hwb2lu dF9hZGRyX3dpdGhpbl9yYW5nZSkgKHN0cnVjdCB0YXJnZXRfb3BzICosCkBAIC00NDUsNyArNDQ3 LDcgQEAgaW5kZXggN2E3MGMzZjZkYS4uMzVlZWU5MWE4MyAxMDA2NDQKICAgICAgICBUQVJHRVRf REVGQVVMVF9GVU5DIChkZWZhdWx0X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UpOwogIAog ICAgICAvKiBEb2N1bWVudGF0aW9uIG9mIHRoaXMgcm91dGluZSBpcyBwcm92aWRlZCB3aXRoIHRo ZSBjb3JyZXNwb25kaW5nCi1AQCAtNTQ1LDcgKzU0NSw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCitA QCAtNTQ1LDcgKzU0NSw3IEBACiAgICAgICAgVEFSR0VUX0RFRkFVTFRfRlVOQyAoZGVmYXVsdF9y ZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQpOwogIAogICAgICBpbnQgKCp0b19jYW5fYWNjZWxf d2F0Y2hwb2ludF9jb25kaXRpb24pIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLApAQCAtNDU0LDYgKzQ1 NiwzIEBAIGluZGV4IDdhNzBjM2Y2ZGEuLjM1ZWVlOTFhODMgMTAwNjQ0CiAgCQkJCQkgICAgICBz dHJ1Y3QgZXhwcmVzc2lvbiAqKQogICAgICAgIFRBUkdFVF9ERUZBVUxUX1JFVFVSTiAoMCk7CiAg ICAgIGludCAoKnRvX21hc2tlZF93YXRjaF9udW1fcmVnaXN0ZXJzKSAoc3RydWN0IHRhcmdldF9v cHMgKiwKLS0tIAotMi4xNC4zCi0KCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmlu ZGV4IGUyNTgwMDEuLjY2ZTM1MjggMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVj CkBAIC0yNiw3ICsyNiw3IEBAIFZlcnNpb246IDguMQogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBj b250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBz dHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVu Y2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDE0JXs/ZGlzdH0KK1Jl bGVhc2U6IDE1JXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrIGFuZCBHUEx2Mysgd2l0aCBleGNl cHRpb25zIGFuZCBHUEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTCsgYW5k IExHUEx2MisgYW5kIExHUEx2MysgYW5kIEJTRCBhbmQgUHVibGljIERvbWFpbiBhbmQgR0ZETAog R3JvdXA6IERldmVsb3BtZW50L0RlYnVnZ2VycwpAQCAtMTg4LDYgKzE4OCw5IEBAIFBhdGNoMTA0 NDogZ2RiLXBhaG9sZS1weXRob24yLnBhdGNoCiAjIz1mZWRvcmF0ZXN0CiBQYXRjaDExMTk6IGdk Yi10ZXN0c3VpdGUtcmVhZGxpbmU2My1zaWdpbnQtcmV2ZXJ0LnBhdGNoCiAKKyMgW2FhcmNoNjRd IEZpeCBtaXNzZWQgdW5hbGlnbmVkIGhhcmR3YXJlIHdhdGNocG9pbnRzIChSSCBCWiAxMzQ3OTkz KS4KK1BhdGNoMTI3ODogZ2RiLXJoYnoxMzQ3OTkzLWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRj aAorCiAjIEluY2x1ZGUgdGhlIGF1dG8tZ2VuZXJhdGVkIGZpbGUgY29udGFpbmluZyB0aGUgIlBh dGNoOiIgZGlyZWN0aXZlcy4KICMgU2VlIFJFQURNRS5sb2NhbC1wYXRjaGVzIGZvciBtb3JlIGRl dGFpbHMuCiBTb3VyY2U4OiBfZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQpAQCAtNDEzLDYgKzQxNiw4 IEBAIHRhciB4emYgJXtTT1VSQ0U3fQogKQogJWVuZGlmCiAKKyVwYXRjaDEyNzggLXAxCisKICMg RmlsZXMgaGF2ZSBgIyA8bnVtYmVyPiA8ZmlsZT4nIHN0YXRlbWVudHMgYnJlYWtpbmcgVlBBVEgg LyBmaW5kLWRlYnVnaW5mby5zaCAuCiAoY2QgZ2RiO3JtIC1mdiAkKHBlcmwgLXBlICdzL1xcXG4v IC8nIDxNYWtlZmlsZS5pbnxzZWQgLW4gJ3MvXllZRklMRVMgPSAvL3AnKSkKIApAQCAtMTAyNiw2 ICsxMDMxLDkgQEAgdGhlbgogZmkKIAogJWNoYW5nZWxvZworKiBTYXQgTWF5ICA1IDIwMTggSmFu IEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gOC4xLTE1LmZjMjgKKy0g W2FhcmNoNjRdIEZpeCBtaXNzZWQgdW5hbGlnbmVkIGhhcmR3YXJlIHdhdGNocG9pbnRzIChSSCBC WiAxMzQ3OTkzKS4KKwogKiBNb24gQXByICAyIDIwMTggSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+IC0gOC4xLTE0LmZjMjgKIC0gUmV2ZXJ0ICdGaXggUERGIGJ1aWxk IG9uIFJhd2hpZGUvRi0yOScsIHJtIC1yZiB0ZXhpbmZvLyAoZnJvbSBSSCBCWiAxNTYyNTgwKS4K IAo=