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: Andrew Burgess To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: switch rpm suggestion feature to a Python extension Date: Thu, 23 Jul 2026 18:35:42 GMT Message-ID: <178483174212.1.9084582820992857245.rpms-gdb-08bfd0a4a7fe@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 08bfd0a4a7fe8241b1f63780ff25978aa0da8c9d ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogMDhiZmQwYTRhN2ZlODI0MWIxZjYzNzgwZmYyNTk3OGFhMGRhOGM5ZAog ICAgICAgICAgICBBdXRob3IgOiBBbmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0LmNvbT4K ICAgICAgICAgICAgRGF0ZSAgIDogMjAyNC0wMy0xNVQxNDowNDoxMSswMDowMAogICAgICAgICAg ICBTdGF0cyAgOiArMjg5MS8tMjAyMiBpbiAyNiBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6 IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvMDhiZmQwYTRhN2ZlODI0 MWIxZjYzNzgwZmYyNTk3OGFhMGRhOGM5ZD9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAgICAgICAg ICAgTG9nOgogICAgICAgICAgICBzd2l0Y2ggcnBtIHN1Z2dlc3Rpb24gZmVhdHVyZSB0byBhIFB5 dGhvbiBleHRlbnNpb24KClRoaXMgY29tbWl0IGJhY2twb3J0cyBzZXZlcmFsIHBhdGNoZXMgZnJv bSB1cHN0cmVhbSBHREI6CgogIDdkMjE2MDBiMzFmCiAgZGQ1NTE2YmY5OGYKICBlOGMzZGFmYTVm NQogIDExNDZkMjc3NDlmCiAgN2RiNzk1YmM2N2EKICA4ZjZjNDUyYjVhNAogIDY2MWQ5OGEzMzMx CiAgNjIzNGJhMTc1OTgKICAyNzgwN2RhNTg0OQogIDc2MjhhOTk3ZjI3CgpUaGVzZSBjb21taXRz IHByb3ZpZGUgYSBuZXcgUHl0aG9uIEFQSSB3aGljaCBhbGxvd3MgdXNlcnMgdG8gY2F0Y2ggdGhl CmNhc2Ugd2hlcmUgR0RCIHRyaWVzIHRvIGxvYWQgYW4gb2JqZmlsZSwgYnV0IGNhbid0IGZpbmQg YW55IGRlYnVnCmluZm9ybWF0aW9uLgoKSSd2ZSB0aGVuIGFkZGVkIGEgbmV3IHBhdGNoIHdoaWNo IHVzZXMgdGhpcyBQeXRob24gQVBJIHRvIGhvb2sgaW50bwpHREIgYW5kIG1ha2Ugc3VnZ2VzdGlv bnMgYWJvdXQgUlBNcyB0byBpbnN0YWxsIHRoYXQgY291bGQgcHJvdmlkZQptaXNzaW5nIGRlYnVn IGluZm9ybWF0aW9uLCB0aGlzIHNob3VsZCByZXBsYWNlIHNvbWUgb2YgdGhlIHJwbQpzdWdnZXN0 aW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgd2l0aGluIEdE QidzCkMrKyBjb2RlLCBhcyBzdWNoIEkndmUgZGVsZXRlZCBhbGwgb2YgdGhlIGNvZGUgcmVsYXRl ZCB0byBvcGVuaW5nCmxpYnJwbSBhbmQgcXVlcnlpbmcgdGhlIFJQTSBkYXRhYmFzZS4KClRoZXJl IGlzIHN0aWxsIGNvZGUgaW4gR0RCIHdoaWNoIHdpbGwgbWFrZSBzdWdnZXN0aW9ucyBhYm91dApp bnN0YWxsaW5nIFJQTXMgYmFzZWQgb24gdGhlIHBhdGggdG8gdGhlIGJ1aWxkLWlkIHN5bWxpbmsg Zm9yIHRoZQpmaWxlLiAgVGhpcyBjb2RlIGlzIGhpdCB3aGVuIGEgdXNlciB0cmllcyB0byBvcGVu IGEgY29yZS1maWxlIGFuZCB0aGUKY29ycmVzcG9uZGluZyBleGVjdXRhYmxlIGNhbid0IGJlIGZv dW5kLCBvciBpZiBhIHNoYXJlZCBsaWJyYXJ5CnJlcXVpcmVkIGJ5IHRoZSBjb3JlLWZpbGUgaXNu J3QgZm91bmQuCgpJbiB0aGVzZSBjYXNlcyB0aGUgbGlicnBtIGxvb2t1cCB3b3VsZCBhbHdheXMg ZmFpbCBhbnl3YXkgYW5kIHdlJ2QKanVzdCBzdWdnZXN0IHRoYXQgdGhlIHVzZXIgdHJ5IHRvIGlu c3RhbGwgdGhlIHJlcXVpcmVkIHBhY2thZ2UgYmFzZWQKb24gdGhlIHBhdGggdG8gdGhlIGJ1aWxk LWlkIHN5bWxpbmssIGUuZy46CgogIE1pc3Npbmcgc2VwYXJhdGUgZGVidWdpbmZvIGZvciB0aGUg bWFpbiBleGVjdXRhYmxlIGZpbGUuCiAgVHJ5OiB5dW0gLS1lbmFibGVyZXBvPScqZGVidWcqJyBp bnN0YWxsIC91c3IvbG9jYWwvbGliL2RlYnVnLy5idWlsZC1pZC9iZi9jOWZiZDEzMDQ2ZGI1OGMy OGJhMzMyZTZjOTkxMjQwZTc3NWM5NgoKVGhpcyBzaG91bGQgc3RpbGwgd29yayBqdXN0IGFzIGl0 IGRpZCBiZWZvcmUuCgpOb3cgR0RCIG5vIGxvbmdlciBsaW5rcyBhZ2FpbnN0IGxpYnJwbSBJJ20g YWJsZSB0byByZW1vdmUgYWxsIHRoZQpsaWJycG0gcmVsYXRlZCBzdHVmZiBmcm9tIHRoZSBjb25m aWd1cmUgc2NyaXB0cywgd2hpY2ggaXMgYSBuaWNlCmNsZWFudXAuCgpUaGVyZSBhcmUgYSBjb3Vw bGUgb2YgcGF0Y2hlczoKCiAgZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmth cm91bmQucGF0Y2gKICBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAoKd2hpY2ggZGVh bCBleGNsdXNpdmVseSB3aXRoIHVwZGF0aW5nIGNvZGUgKGFkZGVkIGluIGVhcmxpZXIgcGF0Y2hl cykKcmVsYXRlZCB0byB0aGUgdXNlIG9mIGxpYnJwbSBmcm9tIEdEQidzIEMrKyBjb2RlLCB0aGVz ZSBwYXRjaGVzIGFyZQpyZW1vdmVkIGJ5IHRoaXMgY29tbWl0LiAgT3RoZXIgcGF0Y2hlcyBhcmUg Y2hhbmdlZCBlaXRoZXIgYnkgdGhlCnJlbW92YWwgb2YgdGhlIGxpYnJwbSBjb2RlLCBvciBhcyBh IGNvbnNlcXVlbmNlIG9mIHRoYXQgY29kZSBoYXZpbmcKYmVlbiByZW1vdmVkLgoKSSd2ZSBhbHNv IHRha2VuIHRoZSBvcHBvcnR1bml0eSB0byBmaXggdXAgc29tZSBvZiB0aGUgdGVzdCBjYXNlcyB3 aGljaApvbmx5IGV4aXN0IGluIHRoZSBGZWRvcmEgdHJlZSBzbyB0aGF0IHRoZXkgd2lsbCBydW4g YWdhaW4uICBUaGlzIGlzCm1vc3RseSBqdXN0IHVwZGF0aW5nIHRoZSB0ZXN0cyB0byBtYXRjaCB1 cHN0cmVhbSBHREIncyBjdXJyZW50CnRlc3RzdWl0ZSBpbmZyYXN0cnVjdHVyZSwgdGhlc2UgYXJl IGFsbCBwcmV0dHkgbWlub3IgZml4ZXMuCgotLS0KZGlmZiAtLWdpdCBhL19nZGIuc3BlYy5QYXRj aC5pbmNsdWRlIGIvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKaW5kZXggN2EyMjJkNi4uYWU2YzRh ZiAxMDA2NDQKLS0tIGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKKysrIGIvX2dkYi5zcGVjLlBh dGNoLmluY2x1ZGUKQEAgLTQ0LDExMCArNDQsMTAzIEBAIFBhdGNoMDEwOiBnZGItNi42LWJ1aWxk aWQtbG9jYXRlLnBhdGNoCiAjPXB1c2gramFuCiBQYXRjaDAxMTogZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS1zb2xpYi1taXNzaW5nLWlkcy5wYXRjaAogCi0jPXB1c2gramFuCi1QYXRjaDAxMjogZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKLQogIyBUZXN0IFBQQyBoaWRpbmcgb2YgY2Fs bC12b2xhdGlsZSBwYXJhbWV0ZXIgcmVnaXN0ZXIuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDEzOiBn ZGItNi43LXBwYy1jbG9iYmVyZWQtcmVnaXN0ZXJzLU8yLXRlc3QucGF0Y2gKK1BhdGNoMDEyOiBn ZGItNi43LXBwYy1jbG9iYmVyZWQtcmVnaXN0ZXJzLU8yLXRlc3QucGF0Y2gKIAogIyBUZXN0IGdj b3JlIG1lbW9yeSBhbmQgdGltZSByZXF1aXJlbWVudHMgZm9yIGxhcmdlIGluZmVyaW9ycy4KICM9 ZmVkb3JhdGVzdAotUGF0Y2gwMTQ6IGdkYi02LjUtZ2NvcmUtYnVmZmVyLWxpbWl0LXRlc3QucGF0 Y2gKK1BhdGNoMDEzOiBnZGItNi41LWdjb3JlLWJ1ZmZlci1saW1pdC10ZXN0LnBhdGNoCiAKICMg VGVzdCBHQ09SRSBmb3Igc2htaWQgMCBzaGFyZWQgbWVtb3J5IG1hcHBpbmdzLgogIz1mZWRvcmF0 ZXN0OiBCdXQgaXQgaXMgYnJva2VuIGFueXdheSwgc29tZXRpbWVzIHRoZSBjYXNlIGJlaW5nIHRl c3RlZCBpcyBub3QgcmVwcm9kdWNpYmxlLgotUGF0Y2gwMTU6IGdkYi02LjMtbWFwcGluZy16ZXJv LWlub2RlLXRlc3QucGF0Y2gKK1BhdGNoMDE0OiBnZGItNi4zLW1hcHBpbmctemVyby1pbm9kZS10 ZXN0LnBhdGNoCiAKICMgVGVzdCBhIGNyYXNoIG9uIGxpYnJhcmllcyBtaXNzaW5nIHRoZSAudGV4 dCBzZWN0aW9uLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAxNjogZ2RiLTYuNS1zZWN0aW9uLW51bS1m aXh1cC10ZXN0LnBhdGNoCitQYXRjaDAxNTogZ2RiLTYuNS1zZWN0aW9uLW51bS1maXh1cC10ZXN0 LnBhdGNoCiAKICMgRml4IHJlc29sdmluZyBvZiB2YXJpYWJsZXMgYXQgbG9jYXRpb25zIGxpc3Rz IGluIHByZWxpbmtlZCBsaWJzIChCWiA0NjY5MDEpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAxNzog Z2RiLTYuOC1iejQ2NjkwMS1iYWNrdHJhY2UtZnVsbC1wcmVsaW5rZWQucGF0Y2gKK1BhdGNoMDE2 OiBnZGItNi44LWJ6NDY2OTAxLWJhY2t0cmFjZS1mdWxsLXByZWxpbmtlZC5wYXRjaAogCiAjIE5l dyB0ZXN0IGZvciBzdGVwLXJlc3VtZSBicmVha3BvaW50IHBsYWNlZCBpbiBtdWx0aXBsZSB0aHJl YWRzIGF0IG9uY2UuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDE4OiBnZGItc2ltdWx0YW5lb3VzLXN0 ZXAtcmVzdW1lLWJyZWFrcG9pbnQtdGVzdC5wYXRjaAorUGF0Y2gwMTc6IGdkYi1zaW11bHRhbmVv dXMtc3RlcC1yZXN1bWUtYnJlYWtwb2ludC10ZXN0LnBhdGNoCiAKICMgRml4IEdOVS9MaW51eCBj b3JlIG9wZW46IENhbid0IHJlYWQgcGF0aG5hbWUgZm9yIGxvYWQgbWFwOiBJbnB1dC9vdXRwdXQg ZXJyb3IuCiAjIEZpeCByZWdyZXNzaW9uIG9mIHVuZGlzcGxheWVkIG1pc3Npbmcgc2hhcmVkIGxp YnJhcmllcyBjYXVzZWQgYnkgYSBmaXggZm9yLgogIz1mZWRvcmF0ZXN0OiBJdCBzaG91bGQgYmUg aW4gZ2xpYmM6IGxpYmMtYWxwaGE6IDwyMDA5MTAwNDE2MTcwNi5HQTI3NDUwQC4qPgotUGF0Y2gw MTk6IGdkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNoCitQYXRjaDAxODogZ2RiLWNvcmUt b3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKIAogIyBGaXggZm9sbG93LWV4ZWMgZm9yIEMrKyBwcm9n cmFtcyAoYnVncmVwb3J0ZWQgYnkgTWFydGluIFN0cmFuc2t5KS4KICM9ZmVkb3JhdGVzdAotUGF0 Y2gwMjA6IGdkYi1hcmNoZXItbmV4dC1vdmVyLXRocm93LWN4eC1leGVjLnBhdGNoCi0KLSMgV29y a2Fyb3VuZCBsaWJycG0gQlogNjQzMDMxIGR1ZSB0byBpdHMgdW5leHBlY3RlZCBleGl0KCkgY2Fs bHMgKEJaIDY0Mjg3OSkuCi0jPXB1c2gramFuCi1QYXRjaDAyMTogZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKK1BhdGNoMDE5OiBnZGItYXJjaGVyLW5l eHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaAogCiAjIFtkZWxheWVkLXN5bWZpbGVdIFRlc3Qg YSBiYWNrdHJhY2UgcmVncmVzc2lvbiBvbiBDRklzIHdpdGhvdXQgRElFIChCWiA2MTQ2MDQpLgog Iz1mZWRvcmF0ZXN0Ci1QYXRjaDAyMjogZ2RiLXRlc3QtYnQtY2ZpLXdpdGhvdXQtZGllLnBhdGNo CitQYXRjaDAyMDogZ2RiLXRlc3QtYnQtY2ZpLXdpdGhvdXQtZGllLnBhdGNoCiAKICMgVmVyaWZ5 IEdEQiBQeXRob24gYnVpbHQtaW4gZnVuY3Rpb24gZ2RiLnNvbGliX2FkZHJlc3MgZXhpc3RzIChC WiAjIDYzNDEwOCkuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDIzOiBnZGItYno2MzQxMDgtc29saWJf YWRkcmVzcy5wYXRjaAorUGF0Y2gwMjE6IGdkYi1iejYzNDEwOC1zb2xpYl9hZGRyZXNzLnBhdGNo CiAKICMgW2FyY2hlci10cm9tZXktZGVsYXllZC1zeW1maWxlXSBOZXcgdGVzdCBnZGIuZHdhcmYy L2R3Mi1hcmFuZ2VzLmV4cC4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwMjQ6IGdkYi10ZXN0LWR3Mi1h cmFuZ2VzLnBhdGNoCitQYXRjaDAyMjogZ2RiLXRlc3QtZHcyLWFyYW5nZXMucGF0Y2gKIAogIyBX b3JrYXJvdW5kIFBSIGxpYmMvMTQxNjYgZm9yIGluZmVyaW9yIGNhbGxzIG9mIHN0cnN0ci4KICM9 ZmVkb3JhdGVzdDogQ29tcGF0aWJpbGl0eSB3aXRoIFJIRUxzICh1bmNoZWNrZWQgd2hpY2ggb25l cykuCi1QYXRjaDAyNTogZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJvdW5kLnBhdGNoCitQYXRjaDAy MzogZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJvdW5kLnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yIGBT ZXR0aW5nIHNvbGliLWFic29sdXRlLXByZWZpeCBicmVha3MgdkRTTycgKEJaIDgxODM0MykuCiAj PWZlZG9yYXRlc3QKLVBhdGNoMDI2OiBnZGItcmhiei04MTgzNDMtc2V0LXNvbGliLWFic29sdXRl LXByZWZpeC10ZXN0Y2FzZS5wYXRjaAorUGF0Y2gwMjQ6IGdkYi1yaGJ6LTgxODM0My1zZXQtc29s aWItYWJzb2x1dGUtcHJlZml4LXRlc3RjYXNlLnBhdGNoCiAKICMgSW1wb3J0IHJlZ3Jlc3Npb24g dGVzdCBmb3IgYGdkYi9maW5kdmFyLmM6NDE3OiBpbnRlcm5hbC1lcnJvcjoKICMgcmVhZF92YXJf dmFsdWU6IEFzc2VydGlvbiBgZnJhbWUnIGZhaWxlZC4nIChSSCBCWiA5NDc1NjQpIGZyb20gUkhF TCA2LjUuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDI3OiBnZGItcmhiejk0NzU2NC1maW5kdmFyLWFz c2VydGlvbi1mcmFtZS1mYWlsZWQtdGVzdGNhc2UucGF0Y2gKK1BhdGNoMDI1OiBnZGItcmhiejk0 NzU2NC1maW5kdmFyLWFzc2VydGlvbi1mcmFtZS1mYWlsZWQtdGVzdGNhc2UucGF0Y2gKIAogIyBG aXggJ21lbW9yeSBsZWFrIGluIGluZnB5X3JlYWRfbWVtb3J5KCknIChSSCBCWiAxMDA3NjE0KQog Iz1mZWRvcmF0ZXN0Ci1QYXRjaDAyODogZ2RiLXJoYnoxMDA3NjE0LW1lbWxlYWstaW5mcHlfcmVh ZF9tZW1vcnktdGVzdC5wYXRjaAorUGF0Y2gwMjY6IGdkYi1yaGJ6MTAwNzYxNC1tZW1sZWFrLWlu ZnB5X3JlYWRfbWVtb3J5LXRlc3QucGF0Y2gKIAogIyBGaXggJ2dkYiBnaXZlcyBoaWdobHkgbWlz bGVhZGluZyBlcnJvciB3aGVuIGRlYnVnaW5mbyBwa2cgaXMgcHJlc2VudCwKICMgYnV0IG5vdCBj b3JyZXNwb25kaW5nIGJpbmFyeSBwa2cnIChSSCBCWiA5ODExNTQpLgogIz1wdXNoK2phbgotUGF0 Y2gwMjk6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtbWlzbGVhZGluZy13YXJuaW5nLW1pc3Npbmct ZGVidWdpbmZvLXJoYno5ODExNTQucGF0Y2gKK1BhdGNoMDI3OiBnZGItNi42LWJ1aWxkaWQtbG9j YXRlLW1pc2xlYWRpbmctd2FybmluZy1taXNzaW5nLWRlYnVnaW5mby1yaGJ6OTgxMTU0LnBhdGNo CiAKICMgVGVzdGNhc2UgZm9yICdbU0FQXSBSZWN1cnNpdmUgZGxvcGVuIGNhdXNlcyBTQVAgSEFO QSBpbnN0YWxsZXIgdG8KICMgY3Jhc2guJyAoUkggQlogMTE1NjE5MikuCiAjPWZlZG9yYXRlc3QK LVBhdGNoMDMwOiBnZGItcmhiejExNTYxOTItcmVjdXJzaXZlLWRsb3Blbi10ZXN0LnBhdGNoCitQ YXRjaDAyODogZ2RiLXJoYnoxMTU2MTkyLXJlY3Vyc2l2ZS1kbG9wZW4tdGVzdC5wYXRjaAogCiAj IEZpeCAnYGNhdGNoIHN5c2NhbGwnIGRvZXNuJ3Qgd29yayBmb3IgcGFyZW50IGFmdGVyIGBmb3Jr JyBpcyBjYWxsZWQnCiAjIChQaGlsaXBwZSBXYXJvcXVpZXJzLCBSSCBCWiAxMTQ5MjA1KS4KICM9 ZmVkb3JhdGVzdAotUGF0Y2gwMzE6IGdkYi1yaGJ6MTE0OTIwNS1jYXRjaC1zeXNjYWxsLWFmdGVy LWZvcmstdGVzdC5wYXRjaAorUGF0Y2gwMjk6IGdkYi1yaGJ6MTE0OTIwNS1jYXRjaC1zeXNjYWxs LWFmdGVyLWZvcmstdGVzdC5wYXRjaAogCiAjIEZpeCAnW3BwYzY0XSBhbmQgW3MzOTB4XSB3cm9u ZyBwcm9sb2d1ZSBza2lwIG9uIC1PMiAtZyBjb2RlJyAoSmFuCiAjIEtyYXRvY2h2aWwsIFJIIEJa IDEwODQ0MDQpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAzMjogZ2RiLXJoYnoxMDg0NDA0LXBwYzY0 LXMzOTB4LXdyb25nLXByb2xvZ3VlLXNraXAtTzItZy0zb2YzLnBhdGNoCitQYXRjaDAzMDogZ2Ri LXJoYnoxMDg0NDA0LXBwYzY0LXMzOTB4LXdyb25nLXByb2xvZ3VlLXNraXAtTzItZy0zb2YzLnBh dGNoCiAKICMgRm9yY2UgbGlibmN1cnNlc3cgb3ZlciBsaWJuY3Vyc2VzIHRvIG1hdGNoIHRoZSBp bmNsdWRlcyAoUkggQlogMTI3MDUzNCkuCiAjPXB1c2gramFuCi1QYXRjaDAzMzogZ2RiLWZlZG9y YS1saWJuY3Vyc2Vzdy5wYXRjaAorUGF0Y2gwMzE6IGdkYi1mZWRvcmEtbGlibmN1cnNlc3cucGF0 Y2gKIAogIyBbYWFyY2g2NF0gRml4IGhhcmR3YXJlIHdhdGNocG9pbnRzIChSSCBCWiAxMjYxNTY0 KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwMzQ6IGdkYi1yaGJ6MTI2MTU2NC1hYXJjaDY0LWh3LXdh dGNocG9pbnQtdGVzdC5wYXRjaAorUGF0Y2gwMzI6IGdkYi1yaGJ6MTI2MTU2NC1hYXJjaDY0LWh3 LXdhdGNocG9pbnQtdGVzdC5wYXRjaAogCiAjIEFkZCBtZXNzYWdlcyBzdWdnZXN0aW5nIG1vcmUg cmVjZW50IFJIRUwgZ2Ric2VydmVyIChSSCBCWiAxMzIxMTE0KS4KICM9ZmVkb3JhCi1QYXRjaDAz NTogZ2RiLWNvbnRhaW5lci1yaC1wa2cucGF0Y2gKK1BhdGNoMDMzOiBnZGItY29udGFpbmVyLXJo LXBrZy5wYXRjaAogCiAjIFtkdHMrZWw3XSBbeDg2Kl0gQnVuZGxlIGxpbnV4X3BlcmYuaCBmb3Ig bGliaXB0IChSSCBCWiAxMjU2NTEzKS4KICM9ZmVkb3JhCi1QYXRjaDAzNjogZ2RiLWxpbnV4X3Bl cmYtYnVuZGxlLnBhdGNoCitQYXRjaDAzNDogZ2RiLWxpbnV4X3BlcmYtYnVuZGxlLnBhdGNoCiAK ICMgVXBkYXRlIGdkYi1hZGQtaW5kZXguc2ggc3VjaCB0aGF0LCB3aGVuIHRoZSBHREIgZW52aXJv bm1lbnQKICMgdmFyaWFibGUgaXMgbm90IHNldCwgdGhlIHNjcmlwdCBpcyBzbWFydGVyIHRoYW4g anVzdCBsb29raW5nIGZvcgpAQCAtMTYxLDM4ICsxNTQsNzIgQEAgUGF0Y2gwMzY6IGdkYi1saW51 eF9wZXJmLWJ1bmRsZS5wYXRjaAogIyAgIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9D aGFuZ2VzL01pbmltYWxfR0RCX2luX2J1aWxkcm9vdAogIwogIz1mZWRvcmEKLVBhdGNoMDM3OiBn ZGItYWRkLWluZGV4LnBhdGNoCitQYXRjaDAzNTogZ2RiLWFkZC1pbmRleC5wYXRjaAogCiAjIEJh Y2stcG9ydCB1cHN0cmVhbSBjb21taXQgMWYwZmFiN2ZmODYgYXMgcGFydCBvZiBhIGZpeCBmb3IK ICMgbm9uLWRldGVybWluaXN0aWMgZ2RiLWluZGV4IGdlbmVyYXRpb24gKFJIIEJaIDIyMzIwODYp LgotUGF0Y2gwMzg6IGdkYi1yaGJ6MjIzMjA4Ni1yZWZhY3Rvci1zZWxmdGVzdC1zdXBwb3J0LnBh dGNoCitQYXRjaDAzNjogZ2RiLXJoYnoyMjMyMDg2LXJlZmFjdG9yLXNlbGZ0ZXN0LXN1cHBvcnQu cGF0Y2gKIAogIyBCYWNrLXBvcnQgdXBzdHJlYW0gY29tbWl0IGFhMTliYzFkMjU5IGFzIHBhcnQg b2YgYSBmaXggZm9yCiAjIG5vbi1kZXRlcm1pbmlzdGljIGdkYi1pbmRleCBnZW5lcmF0aW9uIChS SCBCWiAyMjMyMDg2KS4KLVBhdGNoMDM5OiBnZGItcmhiei0yMjMyMDg2LXJlZHVjZS1zaXplLW9m LWdkYi1pbmRleC5wYXRjaAorUGF0Y2gwMzc6IGdkYi1yaGJ6LTIyMzIwODYtcmVkdWNlLXNpemUt b2YtZ2RiLWluZGV4LnBhdGNoCiAKICMgQmFjay1wb3J0IHVwc3RyZWFtIGNvbW1pdCBhY2MxMTdi NTdmNyBhcyBwYXJ0IG9mIGEgZml4IGZvcgogIyBub24tZGV0ZXJtaW5pc3RpYyBnZGItaW5kZXgg Z2VuZXJhdGlvbiAoUkggQlogMjIzMjA4NikuCi1QYXRjaDA0MDogZ2RiLXJoYnotMjIzMjA4Ni1j cHAtaWZ5LW1hcHBlZC1zeW10YWIucGF0Y2gKK1BhdGNoMDM4OiBnZGItcmhiei0yMjMyMDg2LWNw cC1pZnktbWFwcGVkLXN5bXRhYi5wYXRjaAogCiAjIEJhY2stcG9ydCB1cHN0cmVhbSBjb21taXQg YWZmMjUwMTQ1YWYgYXMgcGFydCBvZiBhIGZpeCBmb3IKICMgbm9uLWRldGVybWluaXN0aWMgZ2Ri LWluZGV4IGdlbmVyYXRpb24gKFJIIEJaIDIyMzIwODYpLgotUGF0Y2gwNDE6IGdkYi1yaGJ6LTIy MzIwODYtZ2VuZXJhdGUtZ2RiLWluZGV4LWNvbnNpc3RlbnRseS5wYXRjaAorUGF0Y2gwMzk6IGdk Yi1yaGJ6LTIyMzIwODYtZ2VuZXJhdGUtZ2RiLWluZGV4LWNvbnNpc3RlbnRseS5wYXRjaAogCiAj IEJhY2stcG9ydCB1cHN0cmVhbSBjb21taXQgMzY0NGY0MWRjODAgYXMgcGFydCBvZiBhIGZpeCBm b3IKICMgbm9uLWRldGVybWluaXN0aWMgZ2RiLWluZGV4IGdlbmVyYXRpb24gKFJIIEJaIDIyMzIw ODYpLgotUGF0Y2gwNDI6IGdkYi1yaGJ6LTIyMzIwODYtZ2VuZXJhdGUtZHdhcmYtNS1pbmRleC1j b25zaXN0ZW50bHkucGF0Y2gKK1BhdGNoMDQwOiBnZGItcmhiei0yMjMyMDg2LWdlbmVyYXRlLWR3 YXJmLTUtaW5kZXgtY29uc2lzdGVudGx5LnBhdGNoCiAKIAotUGF0Y2gwNDM6IGdkYi1yaGJ6MjI1 MDY1Mi1nZGJweV9naWwucGF0Y2gKK1BhdGNoMDQxOiBnZGItcmhiejIyNTA2NTItZ2RicHlfZ2ls LnBhdGNoCiAKIAotUGF0Y2gwNDQ6IGdkYi1yaGJ6MjI1MDY1Mi1hdm9pZC1QeU9TX1JlYWRsaW5l VFN0YXRlLnBhdGNoCitQYXRjaDA0MjogZ2RiLXJoYnoyMjUwNjUyLWF2b2lkLVB5T1NfUmVhZGxp bmVUU3RhdGUucGF0Y2gKIAogCi1QYXRjaDA0NTogZ2RiLWZ0YnMtc3dhcHBlZC1jYWxsb2MtYXJn cy5wYXRjaAorUGF0Y2gwNDM6IGdkYi1mdGJzLXN3YXBwZWQtY2FsbG9jLWFyZ3MucGF0Y2gKIAog IyBCYWNrcG9ydCB1cHN0cmVhbSB3b3JrYXJvdW5kIGZvciBHQ0MgMTQgcHJvYmxlbSB3aGljaCBj YXVzZSBhc3NlcnRpb24KICMgZmFpbHVyZXMgaW4gR0RCLgotUGF0Y2gwNDY6IGdkYi1yaGJ6MjI2 MTU4MC1pbnRydXNpdmVfbGlzdC1hc3NlcnRpb24tZml4LnBhdGNoCitQYXRjaDA0NDogZ2RiLXJo YnoyMjYxNTgwLWludHJ1c2l2ZV9saXN0LWFzc2VydGlvbi1maXgucGF0Y2gKKworIyBCYWNrcG9y dCB1cHN0cmVhbSBjb21taXQgNzYyOGE5OTdmMjcuCitQYXRjaDA0NTogZ2RiLXN5bmMtY29mZnJl YWQtd2l0aC1lbGZyZWFkLnBhdGNoCisKKyMgQmFja3BvcnQgdXBzdHJlYW0gY29tbWl0IDI3ODA3 ZGE1ODQ5LgorUGF0Y2gwNDY6IGdkYi1tZXJnZS1kZWJ1Zy1zeW1ib2wtbG9va3VwLnBhdGNoCisK KyMgQmFja3BvcnQgdXBzdHJlYW0gY29tbWl0IDYyMzRiYTE3NTk4LgorUGF0Y2gwNDc6IGdkYi1y ZWZhY3Rvci1maW5kLWFuZC1hZGQtc2VwYXJhdGUtc3ltYm9sLWZpbGUucGF0Y2gKKworIyBCYWNr cG9ydCB1cHN0cmVhbSBjb21taXQgNjYxZDk4YTMzMzEuCitQYXRjaDA0ODogZ2RiLWFkZC1taXNz aW5nLWRlYnVnLWV4dC1sYW5nLWhvb2sucGF0Y2gKKworIyBCYWNrcG9ydCB1cHN0cmVhbSBjb21t aXQgOGY2YzQ1MmI1YTQuCitQYXRjaDA0OTogZ2RiLWFkZC1taXNzaW5nLWRlYnVnLWluZm8tcHl0 aG9uLWhvb2sucGF0Y2gKKworIyBCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgN2RiNzk1YmM2N2Eu CitQYXRjaDA1MDogZ2RiLXJlbW92ZS11c2Utb2YtcHktaXNhc2NpaQorCisjIEJhY2twb3J0IHVw c3RyZWFtIGNvbW1pdCAxMTQ2ZDI3NzQ5Zi4KK1BhdGNoMDUxOiBnZGItcmVtb3ZlLXBhdGgtaW4t dGVzdC1uYW1lLnBhdGNoCisKKyMgQmFja3BvcnQgdXBzdHJlYW0gY29tbWl0IGU4YzNkYWZhNWY1 LgorUGF0Y2gwNTI6IGdkYi1kby1ub3QtaW1wb3J0LXB5LWN1cnNlcy1hc2NpaS1tb2R1bGUucGF0 Y2gKKworIyBCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgZGQ1NTE2YmY5OGYuCitQYXRjaDA1Mzog Z2RiLXJlZm9ybWF0LW1pc3NpbmctZGVidWctcHktZmlsZS5wYXRjaAorCisjIEJhY2twb3J0IHVw c3RyZWFtIGNvbW1pdCA3ZDIxNjAwYjMxZmUuCitQYXRjaDA1NDogZ2RiLWhhbmRsZS1uby1weXRo b24tZ2RiLW1vZHVsZS5wYXRjaAorCisjIE5vdCBhIGJhY2twb3J0LiAgQWRkIGEgbmV3IHNjcmlw dCB3aGljaCBob29rcyBpbnRvIEdEQiBhbmQgc3VnZ2VzdHMKKyMgUlBNcyB0byBpbnN0YWxsIHdo ZW4gR0RCIGZpbmRzIGFuIG9iamZpbGUgd2l0aCBubyBkZWJ1ZyBpbmZvLgorUGF0Y2gwNTU6IGdk Yi1hZGQtcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCiAKCmRpZmYgLS1naXQgYS9fZ2RiLnNw ZWMucGF0Y2guaW5jbHVkZSBiL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCmluZGV4IDgwZGYzMWEu LmI3MmM0MTIgMTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCisrKyBiL19nZGIu c3BlYy5wYXRjaC5pbmNsdWRlCkBAIC00NCwzICs0NCwxMiBAQAogJXBhdGNoIC1wMSAtUDA0NAog JXBhdGNoIC1wMSAtUDA0NQogJXBhdGNoIC1wMSAtUDA0NgorJXBhdGNoIC1wMSAtUDA0NworJXBh dGNoIC1wMSAtUDA0OAorJXBhdGNoIC1wMSAtUDA0OQorJXBhdGNoIC1wMSAtUDA1MAorJXBhdGNo IC1wMSAtUDA1MQorJXBhdGNoIC1wMSAtUDA1MgorJXBhdGNoIC1wMSAtUDA1MworJXBhdGNoIC1w MSAtUDA1NAorJXBhdGNoIC1wMSAtUDA1NQoKZGlmZiAtLWdpdCBhL19wYXRjaF9vcmRlciBiL19w YXRjaF9vcmRlcgppbmRleCA3NzEyMmJlLi43Zjk0ZTIxIDEwMDY0NAotLS0gYS9fcGF0Y2hfb3Jk ZXIKKysrIGIvX3BhdGNoX29yZGVyCkBAIC05LDcgKzksNiBAQCBnZGItNi4zLWF0dGFjaC1zZWUt dmRzby10ZXN0LnBhdGNoCiBnZGItNi41LWJ6MjQzODQ1LXN0YWxlLXRlc3Rpbmctem9tYmllLXRl c3QucGF0Y2gKIGdkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKIGdkYi02LjYtYnVpbGRpZC1s b2NhdGUtc29saWItbWlzc2luZy1pZHMucGF0Y2gKLWdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBt LnBhdGNoCiBnZGItNi43LXBwYy1jbG9iYmVyZWQtcmVnaXN0ZXJzLU8yLXRlc3QucGF0Y2gKIGdk Yi02LjUtZ2NvcmUtYnVmZmVyLWxpbWl0LXRlc3QucGF0Y2gKIGdkYi02LjMtbWFwcGluZy16ZXJv LWlub2RlLXRlc3QucGF0Y2gKQEAgLTE4LDcgKzE3LDYgQEAgZ2RiLTYuOC1iejQ2NjkwMS1iYWNr dHJhY2UtZnVsbC1wcmVsaW5rZWQucGF0Y2gKIGdkYi1zaW11bHRhbmVvdXMtc3RlcC1yZXN1bWUt YnJlYWtwb2ludC10ZXN0LnBhdGNoCiBnZGItY29yZS1vcGVuLXZkc28td2FybmluZy5wYXRjaAog Z2RiLWFyY2hlci1uZXh0LW92ZXItdGhyb3ctY3h4LWV4ZWMucGF0Y2gKLWdkYi02LjYtYnVpbGRp ZC1sb2NhdGUtcnBtLWxpYnJwbS13b3JrYXJvdW5kLnBhdGNoCiBnZGItdGVzdC1idC1jZmktd2l0 aG91dC1kaWUucGF0Y2gKIGdkYi1iejYzNDEwOC1zb2xpYl9hZGRyZXNzLnBhdGNoCiBnZGItdGVz dC1kdzItYXJhbmdlcy5wYXRjaApAQCAtNDQsMyArNDIsMTQgQEAgZ2RiLXJoYnoyMjUwNjUyLWdk YnB5X2dpbC5wYXRjaAogZ2RiLXJoYnoyMjUwNjUyLWF2b2lkLVB5T1NfUmVhZGxpbmVUU3RhdGUu cGF0Y2gKIGdkYi1mdGJzLXN3YXBwZWQtY2FsbG9jLWFyZ3MucGF0Y2gKIGdkYi1yaGJ6MjI2MTU4 MC1pbnRydXNpdmVfbGlzdC1hc3NlcnRpb24tZml4LnBhdGNoCitnZGItc3luYy1jb2ZmcmVhZC13 aXRoLWVsZnJlYWQucGF0Y2gKK2dkYi1tZXJnZS1kZWJ1Zy1zeW1ib2wtbG9va3VwLnBhdGNoCitn ZGItcmVmYWN0b3ItZmluZC1hbmQtYWRkLXNlcGFyYXRlLXN5bWJvbC1maWxlLnBhdGNoCitnZGIt YWRkLW1pc3NpbmctZGVidWctZXh0LWxhbmctaG9vay5wYXRjaAorZ2RiLWFkZC1taXNzaW5nLWRl YnVnLWluZm8tcHl0aG9uLWhvb2sucGF0Y2gKK2dkYi1yZW1vdmUtdXNlLW9mLXB5LWlzYXNjaWkK K2dkYi1yZW1vdmUtcGF0aC1pbi10ZXN0LW5hbWUucGF0Y2gKK2dkYi1kby1ub3QtaW1wb3J0LXB5 LWN1cnNlcy1hc2NpaS1tb2R1bGUucGF0Y2gKK2dkYi1yZWZvcm1hdC1taXNzaW5nLWRlYnVnLXB5 LWZpbGUucGF0Y2gKK2dkYi1oYW5kbGUtbm8tcHl0aG9uLWdkYi1tb2R1bGUucGF0Y2gKK2dkYi1h ZGQtcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1nc3Rh Y2stMjAwNTA0MTEucGF0Y2ggYi9nZGItNi4zLWdzdGFjay0yMDA1MDQxMS5wYXRjaAppbmRleCAw MWU4ZmZhLi4zMjg1Njg2IDEwMDY0NAotLS0gYS9nZGItNi4zLWdzdGFjay0yMDA1MDQxMS5wYXRj aAorKysgYi9nZGItNi4zLWdzdGFjay0yMDA1MDQxMS5wYXRjaApAQCAtMjI2LDcgKzIyNiw3IEBA IG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiArIyBleGl0aW5nIHRoZSBmdW5jdGlvbi4gIFN0aWxsIHdl IGNvdWxkIHJldHJ5IHRoZSBnc3RhY2sgY29tbWFuZCBpZiB3ZSBmYWlsLgogKwogK3NldCB0ZXN0 ICJzcGF3biBnc3RhY2siCi0rc2V0IGNvbW1hbmQgInNoIC1jIEdEQj0kR0RCXFwgR0RCQVJHUz0t ZGF0YS1kaXJlY3RvcnlcXFxcXFwgJEJVSUxEX0RBVEFfRElSRUNUT1JZXFwgc2hcXCAke3NyY2Rp cn0vLi4vZ3N0YWNrLnNoXFwgJHBpZFxcO2VjaG9cXCBHU1RBQ0stRU5EIgorK3NldCBjb21tYW5k ICJzaCAtYyBHREI9JEdEQlxcIEdEQkFSR1M9LWRhdGEtZGlyZWN0b3J5XFxcXFxcICRHREJfREFU QV9ESVJFQ1RPUllcXCBzaFxcICR7c3JjZGlyfS8uLi9nc3RhY2suc2hcXCAkcGlkXFw7ZWNob1xc IEdTVEFDSy1FTkQiCiArc2V0IHJlcyBbcmVtb3RlX3NwYXduIGhvc3QgJGNvbW1hbmRdOwogK2lm IHsgJHJlcyA8IDAgfHwgJHJlcyA9PSAiIiB9IHsKICsgICAgcGVycm9yICJTcGF3bmluZyAkY29t bWFuZCBmYWlsZWQuIgoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLWxp YnJwbS13b3JrYXJvdW5kLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBt LXdvcmthcm91bmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiODYyYTAu LjAwMDAwMDAKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91 bmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRD SEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxp bnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAK LVN1YmplY3Q6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLWxpYnJwbS13b3JrYXJvdW5kLnBh dGNoCi0KLTs7IFdvcmthcm91bmQgbGlicnBtIEJaIDY0MzAzMSBkdWUgdG8gaXRzIHVuZXhwZWN0 ZWQgZXhpdCgpIGNhbGxzIChCWiA2NDI4NzkpLgotOzs9cHVzaCtqYW4KLQotZGlmZiAtLWdpdCBh L2dkYi9wcm9jLXNlcnZpY2UubGlzdCBiL2dkYi9wcm9jLXNlcnZpY2UubGlzdAotLS0tIGEvZ2Ri L3Byb2Mtc2VydmljZS5saXN0Ci0rKysgYi9nZGIvcHJvYy1zZXJ2aWNlLmxpc3QKLUBAIC0zNyw0 ICszNyw3IEBACi0gICBwc19wc3RvcDsKLSAgIHBzX3B0cmVhZDsKLSAgIHBzX3B0d3JpdGU7Ci0r Ci0rICAvKiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaCAqLwotKyAgcnBtc3FFbmFi bGU7Ci0gfTsKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaCBi L2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAxNDAxM2VmLi4wMDAwMDAwCi0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBt LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA4NCArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRD SEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmlu YkByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyMiBGZWIgMjAyMyAyMjozMDo0MCAtMDcwMAotU3Vi amVjdDogZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKLQotOzs9cHVzaCtqYW4KLQot ZGlmZiAtLWdpdCBhL2dkYi9hY2xvY2FsLm00IGIvZ2RiL2FjbG9jYWwubTQKLS0tLSBhL2dkYi9h Y2xvY2FsLm00Ci0rKysgYi9nZGIvYWNsb2NhbC5tNAotQEAgLTExLDcgKzExLDIyMyBAQAotICMg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQQotICMgUEFSVElDVUxBUiBQVVJQT1NFLgotIAotKyMgcGtnLm00IC0gTWFjcm9zIHRvIGxv Y2F0ZSBhbmQgdXRpbGlzZSBwa2ctY29uZmlnLiAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0K LSsjIHNlcmlhbCAxIChwa2ctY29uZmlnLTAuMjQpCi0rIwotKyMgQ29weXJpZ2h0IMKpIDIwMDQg U2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAbmV0c3BsaXQuY29tPi4KLSsjCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsjIFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0r IyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyMKLSsjIEFzIGEgc3BlY2lhbCBleGNl cHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKLSsjIGRpc3Ry aWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotKyMg Y29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1 ZGUgaXQgdW5kZXIKLSsjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2Ug Zm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLSsjIFBLR19QUk9HX1BLR19DT05GSUco W01JTi1WRVJTSU9OXSkKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLStB Q19ERUZVTihbUEtHX1BST0dfUEtHX0NPTkZJR10sCi0rW200X3BhdHRlcm5fZm9yYmlkKFteXz9Q S0dfW0EtWl9dKyRdKQotK200X3BhdHRlcm5fYWxsb3coW15QS0dfQ09ORklHKF8oUEFUSHxMSUJE SVJ8U1lTUk9PVF9ESVJ8QUxMT1dfU1lTVEVNXyhDRkxBR1N8TElCUykpKT8kXSkKLSttNF9wYXR0 ZXJuX2FsbG93KFteUEtHX0NPTkZJR18oRElTQUJMRV9VTklOU1RBTExFRHxUT1BfQlVJTERfRElS fERFQlVHX1NQRVcpJF0pCi0rQUNfQVJHX1ZBUihbUEtHX0NPTkZJR10sIFtwYXRoIHRvIHBrZy1j b25maWcgdXRpbGl0eV0pCi0rQUNfQVJHX1ZBUihbUEtHX0NPTkZJR19QQVRIXSwgW2RpcmVjdG9y aWVzIHRvIGFkZCB0byBwa2ctY29uZmlnJ3Mgc2VhcmNoIHBhdGhdKQotK0FDX0FSR19WQVIoW1BL R19DT05GSUdfTElCRElSXSwgW3BhdGggb3ZlcnJpZGluZyBwa2ctY29uZmlnJ3MgYnVpbHQtaW4g c2VhcmNoIHBhdGhdKQotKwotK2lmIHRlc3QgIngkYWNfY3ZfZW52X1BLR19DT05GSUdfc2V0IiAh PSAieHNldCI7IHRoZW4KLSsJQUNfUEFUSF9UT09MKFtQS0dfQ09ORklHXSwgW3BrZy1jb25maWdd KQotK2ZpCi0raWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0rCV9wa2dfbWluX3ZlcnNp b249bTRfZGVmYXVsdChbJDFdLCBbMC45LjBdKQotKwlBQ19NU0dfQ0hFQ0tJTkcoW3BrZy1jb25m aWcgaXMgYXQgbGVhc3QgdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbl0pCi0rCWlmICRQS0dfQ09O RklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbjsgdGhlbgot KwkJQUNfTVNHX1JFU1VMVChbeWVzXSkKLSsJZWxzZQotKwkJQUNfTVNHX1JFU1VMVChbbm9dKQot KwkJUEtHX0NPTkZJRz0iIgotKwlmaQotK2ZpW11kbmwKLStdKSMgUEtHX1BST0dfUEtHX0NPTkZJ RwotKwotKyMgUEtHX0NIRUNLX0VYSVNUUyhNT0RVTEVTLCBbQUNUSU9OLUlGLUZPVU5EXSwgW0FD VElPTi1JRi1OT1QtRk9VTkRdKQotKyMKLSsjIENoZWNrIHRvIHNlZSB3aGV0aGVyIGEgcGFydGlj dWxhciBzZXQgb2YgbW9kdWxlcyBleGlzdHMuICBTaW1pbGFyCi0rIyB0byBQS0dfQ0hFQ0tfTU9E VUxFUygpLCBidXQgZG9lcyBub3Qgc2V0IHZhcmlhYmxlcyBvciBwcmludCBlcnJvcnMuCi0rIwot KyMgUGxlYXNlIHJlbWVtYmVyIHRoYXQgbTQgZXhwYW5kcyBBQ19SRVFVSVJFKFtQS0dfUFJPR19Q S0dfQ09ORklHXSkKLSsjIG9ubHkgYXQgdGhlIGZpcnN0IG9jY3VyZW5jZSBpbiBjb25maWd1cmUu YWMsIHNvIGlmIHRoZSBmaXJzdCBwbGFjZQotKyMgaXQncyBjYWxsZWQgbWlnaHQgYmUgc2tpcHBl ZCAoc3VjaCBhcyBpZiBpdCBpcyB3aXRoaW4gYW4gImlmIiwgeW91Ci0rIyBoYXZlIHRvIGNhbGwg UEtHX0NIRUNLX0VYSVNUUyBtYW51YWxseQotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLStBQ19ERUZVTihbUEtHX0NIRUNL X0VYSVNUU10sCi0rW0FDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKWRubAotK2lmIHRl c3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCi0rICAgIEFDX1JVTl9MT0coWyRQS0dfQ09ORklHIC0t ZXhpc3RzIC0tcHJpbnQtZXJyb3JzICIkMSJdKTsgdGhlbgotKyAgbTRfZGVmYXVsdChbJDJdLCBb Ol0pCi0rbTRfaWZ2YWxuKFskM10sIFtlbHNlCi0rICAkM10pZG5sCi0rZmldKQotKwotKyMgX1BL R19DT05GSUcoW1ZBUklBQkxFXSwgW0NPTU1BTkRdLCBbTU9EVUxFU10pCi0rIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSttNF9kZWZpbmUoW19QS0dfQ09O RklHXSwKLStbaWYgdGVzdCAtbiAiJCQxIjsgdGhlbgotKyAgICBwa2dfY3ZfW10kMT0iJCQxIgot KyBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotKyAgICBQS0dfQ0hFQ0tfRVhJU1RT KFskM10sCi0rICAgICAgICAgICAgICAgICAgICAgW3BrZ19jdl9bXSQxPWAkUEtHX0NPTkZJRyAt LVtdJDIgIiQzIiAyPi9kZXYvbnVsbGAKLSsJCSAgICAgIHRlc3QgIngkPyIgIT0gIngwIiAmJiBw a2dfZmFpbGVkPXllcyBdLAotKwkJICAgICBbcGtnX2ZhaWxlZD15ZXNdKQotKyBlbHNlCi0rICAg IHBrZ19mYWlsZWQ9dW50cmllZAotK2ZpW11kbmwKLStdKSMgX1BLR19DT05GSUcKLSsKLSsjIF9Q S0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLStBQ19ERUZVTihbX1BLR19TSE9SVF9FUlJPUlNfU1VQUE9SVEVEXSwKLStbQUNfUkVRVUlS RShbUEtHX1BST0dfUEtHX0NPTkZJR10pCi0raWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2Nv bmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KLSsgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBv cnRlZD15ZXMKLStlbHNlCi0rICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8K LStmaVtdZG5sCi0rXSkjIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAotKwotKwotKyMgUEtH X0NIRUNLX01PRFVMRVMoVkFSSUFCTEUtUFJFRklYLCBNT0RVTEVTLCBbQUNUSU9OLUlGLUZPVU5E XSwKLSsjIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKLSsjCi0rIwotKyMgTm90ZSB0aGF0IGlmIHRo ZXJlIGlzIGEgcG9zc2liaWxpdHkgdGhlIGZpcnN0IGNhbGwgdG8KLSsjIFBLR19DSEVDS19NT0RV TEVTIG1pZ2h0IG5vdCBoYXBwZW4sIHlvdSBzaG91bGQgYmUgc3VyZSB0byBpbmNsdWRlIGFuCi0r IyBleHBsaWNpdCBjYWxsIHRvIFBLR19QUk9HX1BLR19DT05GSUcgaW4geW91ciBjb25maWd1cmUu YWMKLSsjCi0rIwotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLStBQ19ERUZVTihbUEtHX0NIRUNLX01PRFVMRVNdLAotK1tB Q19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSlkbmwKLStBQ19BUkdfVkFSKFskMV1bX0NG TEFHU10sIFtDIGNvbXBpbGVyIGZsYWdzIGZvciAkMSwgb3ZlcnJpZGluZyBwa2ctY29uZmlnXSlk bmwKLStBQ19BUkdfVkFSKFskMV1bX0xJQlNdLCBbbGlua2VyIGZsYWdzIGZvciAkMSwgb3ZlcnJp ZGluZyBwa2ctY29uZmlnXSlkbmwKLSsKLStwa2dfZmFpbGVkPW5vCi0rQUNfTVNHX0NIRUNLSU5H KFtmb3IgJDFdKQotKwotK19QS0dfQ09ORklHKFskMV1bX0NGTEFHU10sIFtjZmxhZ3NdLCBbJDJd KQotK19QS0dfQ09ORklHKFskMV1bX0xJQlNdLCBbbGlic10sIFskMl0pCi0rCi0rbTRfZGVmaW5l KFtfUEtHX1RFWFRdLCBbQWx0ZXJuYXRpdmVseSwgeW91IG1heSBzZXQgdGhlIGVudmlyb25tZW50 IHZhcmlhYmxlcyAkMVtdX0NGTEFHUwotK2FuZCAkMVtdX0xJQlMgdG8gYXZvaWQgdGhlIG5lZWQg dG8gY2FsbCBwa2ctY29uZmlnLgotK1NlZSB0aGUgcGtnLWNvbmZpZyBtYW4gcGFnZSBmb3IgbW9y ZSBkZXRhaWxzLl0pCi0rCi0raWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgotKyAgICAg ICAgQUNfTVNHX1JFU1VMVChbbm9dKQotKyAgICAgICAgX1BLR19TSE9SVF9FUlJPUlNfU1VQUE9S VEVECi0rICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7 IHRoZW4KLSsJICAgICAgICAkMVtdX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJy b3JzIC0tcHJpbnQtZXJyb3JzIC0tY2ZsYWdzIC0tbGlicyAiJDIiIDI+JjFgCi0rICAgICAgICBl bHNlCi0rCSAgICAgICAgJDFbXV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXByaW50LWVycm9y cyAtLWNmbGFncyAtLWxpYnMgIiQyIiAyPiYxYAotKyAgICAgICAgZmkKLSsJIyBQdXQgdGhlIG5h c3R5IGVycm9yIG1lc3NhZ2UgaW4gY29uZmlnLmxvZyB3aGVyZSBpdCBiZWxvbmdzCi0rCWVjaG8g IiQkMVtdX1BLR19FUlJPUlMiID4mQVNfTUVTU0FHRV9MT0dfRkQKLSsKLSsJbTRfZGVmYXVsdChb JDRdLCBbQUNfTVNHX0VSUk9SKAotK1tQYWNrYWdlIHJlcXVpcmVtZW50cyAoJDIpIHdlcmUgbm90 IG1ldDoKLSsKLSskJDFfUEtHX0VSUk9SUwotKwotK0NvbnNpZGVyIGFkanVzdGluZyB0aGUgUEtH X0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHlvdQotK2luc3RhbGxlZCBzb2Z0 d2FyZSBpbiBhIG5vbi1zdGFuZGFyZCBwcmVmaXguCi0rCi0rX1BLR19URVhUXSlbXWRubAotKyAg ICAgICAgXSkKLStlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCi0rICAgICAg ICBBQ19NU0dfUkVTVUxUKFtub10pCi0rCW00X2RlZmF1bHQoWyQ0XSwgW0FDX01TR19GQUlMVVJF KAotK1tUaGUgcGtnLWNvbmZpZyBzY3JpcHQgY291bGQgbm90IGJlIGZvdW5kIG9yIGlzIHRvbyBv bGQuICBNYWtlIHN1cmUgaXQKLStpcyBpbiB5b3VyIFBBVEggb3Igc2V0IHRoZSBQS0dfQ09ORklH IGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBmdWxsCi0rcGF0aCB0byBwa2ctY29uZmlnLgot KwotK19QS0dfVEVYVAotKwotK1RvIGdldCBwa2ctY29uZmlnLCBzZWUgPGh0dHA6Ly9wa2ctY29u ZmlnLmZyZWVkZXNrdG9wLm9yZy8+Ll0pW11kbmwKLSsgICAgICAgIF0pCi0rZWxzZQotKwkkMVtd X0NGTEFHUz0kcGtnX2N2X1tdJDFbXV9DRkxBR1MKLSsJJDFbXV9MSUJTPSRwa2dfY3ZfW10kMVtd X0xJQlMKLSsgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0rCSQzCi0rZmlbXWRubAotK10p IyBQS0dfQ0hFQ0tfTU9EVUxFUwotKwotKwotKyMgUEtHX0lOU1RBTExESVIoRElSRUNUT1JZKQot KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgU3Vic3RpdHV0ZXMgdGhlIHZhcmlhYmxl IHBrZ2NvbmZpZ2RpciBhcyB0aGUgbG9jYXRpb24gd2hlcmUgYSBtb2R1bGUKLSsjIHNob3VsZCBp bnN0YWxsIHBrZy1jb25maWcgLnBjIGZpbGVzLiBCeSBkZWZhdWx0IHRoZSBkaXJlY3RvcnkgaXMK LSsjICRsaWJkaXIvcGtnY29uZmlnLCBidXQgdGhlIGRlZmF1bHQgY2FuIGJlIGNoYW5nZWQgYnkg cGFzc2luZwotKyMgRElSRUNUT1JZLiBUaGUgdXNlciBjYW4gb3ZlcnJpZGUgdGhyb3VnaCB0aGUg LS13aXRoLXBrZ2NvbmZpZ2RpcgotKyMgcGFyYW1ldGVyLgotK0FDX0RFRlVOKFtQS0dfSU5TVEFM TERJUl0sCi0rW200X3B1c2hkZWYoW3BrZ19kZWZhdWx0XSwgW200X2RlZmF1bHQoWyQxXSwgWyck e2xpYmRpcn0vcGtnY29uZmlnJ10pXSkKLSttNF9wdXNoZGVmKFtwa2dfZGVzY3JpcHRpb25dLAot KyAgICBbcGtnLWNvbmZpZyBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IEA8OkBdcGtnX2RlZmF1bHRb QDo+QF0pCi0rQUNfQVJHX1dJVEgoW3BrZ2NvbmZpZ2Rpcl0sCi0rICAgIFtBU19IRUxQX1NUUklO RyhbLS13aXRoLXBrZ2NvbmZpZ2Rpcl0sIHBrZ19kZXNjcmlwdGlvbildLCwKLSsgICAgW3dpdGhf cGtnY29uZmlnZGlyPV1wa2dfZGVmYXVsdCkKLStBQ19TVUJTVChbcGtnY29uZmlnZGlyXSwgWyR3 aXRoX3BrZ2NvbmZpZ2Rpcl0pCi0rbTRfcG9wZGVmKFtwa2dfZGVmYXVsdF0pCi0rbTRfcG9wZGVm KFtwa2dfZGVzY3JpcHRpb25dKQotK10pIGRubCBQS0dfSU5TVEFMTERJUgotKwotKwotKyMgUEtH X05PQVJDSF9JTlNUQUxMRElSKERJUkVDVE9SWSkKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLSsjIFN1YnN0aXR1dGVzIHRoZSB2YXJpYWJsZSBub2FyY2hfcGtnY29uZmlnZGlyIGFzIHRo ZSBsb2NhdGlvbiB3aGVyZSBhCi0rIyBtb2R1bGUgc2hvdWxkIGluc3RhbGwgYXJjaC1pbmRlcGVu ZGVudCBwa2ctY29uZmlnIC5wYyBmaWxlcy4gQnkKLSsjIGRlZmF1bHQgdGhlIGRpcmVjdG9yeSBp cyAkZGF0YWRpci9wa2djb25maWcsIGJ1dCB0aGUgZGVmYXVsdCBjYW4gYmUKLSsjIGNoYW5nZWQg YnkgcGFzc2luZyBESVJFQ1RPUlkuIFRoZSB1c2VyIGNhbiBvdmVycmlkZSB0aHJvdWdoIHRoZQot KyMgLS13aXRoLW5vYXJjaC1wa2djb25maWdkaXIgcGFyYW1ldGVyLgotK0FDX0RFRlVOKFtQS0df Tk9BUkNIX0lOU1RBTExESVJdLAotK1ttNF9wdXNoZGVmKFtwa2dfZGVmYXVsdF0sIFttNF9kZWZh dWx0KFskMV0sIFsnJHtkYXRhZGlyfS9wa2djb25maWcnXSldKQotK200X3B1c2hkZWYoW3BrZ19k ZXNjcmlwdGlvbl0sCi0rICAgIFtwa2ctY29uZmlnIGFyY2gtaW5kZXBlbmRlbnQgaW5zdGFsbGF0 aW9uIGRpcmVjdG9yeSBAPDpAXXBrZ19kZWZhdWx0W0A6PkBdKQotK0FDX0FSR19XSVRIKFtub2Fy Y2gtcGtnY29uZmlnZGlyXSwKLSsgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbm9hcmNoLXBr Z2NvbmZpZ2Rpcl0sIHBrZ19kZXNjcmlwdGlvbildLCwKLSsgICAgW3dpdGhfbm9hcmNoX3BrZ2Nv bmZpZ2Rpcj1dcGtnX2RlZmF1bHQpCi0rQUNfU1VCU1QoW25vYXJjaF9wa2djb25maWdkaXJdLCBb JHdpdGhfbm9hcmNoX3BrZ2NvbmZpZ2Rpcl0pCi0rbTRfcG9wZGVmKFtwa2dfZGVmYXVsdF0pCi0r bTRfcG9wZGVmKFtwa2dfZGVzY3JpcHRpb25dKQotK10pIGRubCBQS0dfTk9BUkNIX0lOU1RBTExE SVIKLSsKLSsKLSsjIFBLR19DSEVDS19WQVIoVkFSSUFCTEUsIE1PRFVMRSwgQ09ORklHLVZBUklB QkxFLAotKyMgW0FDVElPTi1JRi1GT1VORF0sIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKLSsjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIFJldHJpZXZlcyB0 aGUgdmFsdWUgb2YgdGhlIHBrZy1jb25maWcgdmFyaWFibGUgZm9yIHRoZSBnaXZlbiBtb2R1bGUu Ci0rQUNfREVGVU4oW1BLR19DSEVDS19WQVJdLAotK1tBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0df Q09ORklHXSlkbmwKLStBQ19BUkdfVkFSKFskMV0sIFt2YWx1ZSBvZiAkMyBmb3IgJDIsIG92ZXJy aWRpbmcgcGtnLWNvbmZpZ10pZG5sCi0rCi0rX1BLR19DT05GSUcoWyQxXSwgW3ZhcmlhYmxlPSJd WyQzXVsiXSwgWyQyXSkKLStBU19WQVJfQ09QWShbJDFdLCBbcGtnX2N2X11bJDFdKQotKwotK0FT X1ZBUl9JRihbJDFdLCBbIiJdLCBbJDVdLCBbJDRdKWRubAotK10pIyBQS0dfQ0hFQ0tfVkFSCi0r Ci0gbTRfaWZuZGVmKFtBQ19DT05GSUdfTUFDUk9fRElSU10sIFttNF9kZWZ1bihbX0FNX0NPTkZJ R19NQUNST19ESVJTXSwgW10pbTRfZGVmdW4oW0FDX0NPTkZJR19NQUNST19ESVJTXSwgW19BTV9D T05GSUdfTUFDUk9fRElSUygkQCldKV0pCi0rCi0gIyBBTV9BVVhfRElSX0VYUEFORCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQotIAotICMg Q29weXJpZ2h0IChDKSAyMDAxLTIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi1k aWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwotLS0tIGEvZ2RiL2J1 aWxkLWlkLmMKLSsrKyBiL2dkYi9idWlsZC1pZC5jCi1AQCAtNzgwLDEwICs3ODAsMTAgQEAgbWlz c2luZ19ycG1fZW5saXN0XzEgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgdmVyaWZ5X3ZlbmRv cikKLSAgIHN0YXRpYyBycG10cyAoKnJwbXRzQ3JlYXRlX3ApICh2b2lkKTsKLSAgIGV4dGVybiBy cG10cyBycG10c0ZyZWUocnBtdHMgdHMpOwotICAgc3RhdGljIHJwbXRzICgqcnBtdHNGcmVlX3Ap IChycG10cyB0cyk7Ci0tICBleHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJwbXRzSW5pdEl0ZXJh dG9yKGNvbnN0IHJwbXRzIHRzLCBycG1UYWcgcnBtdGFnLAotKyAgZXh0ZXJuIHJwbWRiTWF0Y2hJ dGVyYXRvciBycG10c0luaXRJdGVyYXRvcihjb25zdCBycG10cyB0cywgcnBtRGJpVGFnVmFsIHJw bXRhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgdm9pZCAqIGtleXAsIHNpemVfdCBrZXlsZW4pOwotICAgc3RhdGljIHJwbWRiTWF0Y2hJdGVy YXRvciAoKnJwbXRzSW5pdEl0ZXJhdG9yX3ApIChjb25zdCBycG10cyB0cywKLS0JCQkJCQkgICAg cnBtVGFnIHJwbXRhZywKLSsJCQkJCQkgICAgcnBtRGJpVGFnVmFsIHJwbXRhZywKLSAJCQkJCQkg ICAgY29uc3Qgdm9pZCAqa2V5cCwKLSAJCQkJCQkgICAgc2l6ZV90IGtleWxlbik7Ci0gI2Vsc2UJ LyogIURMT1BFTl9MSUJSUE0gKi8KLUBAIC04MzgsNyArODM4LDcgQEAgbWlzc2luZ19ycG1fZW5s aXN0XzEgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgdmVyaWZ5X3ZlbmRvcikKLSAJICAgICAg JiYgKHJwbWRiTmV4dEl0ZXJhdG9yX3AgPSAoSGVhZGVyICgqKSAocnBtZGJNYXRjaEl0ZXJhdG9y IG1pKSkgZGxzeW0gKGgsICJycG1kYk5leHRJdGVyYXRvciIpKQotIAkgICAgICAmJiAocnBtdHND cmVhdGVfcCA9IChycG10cyAoKikgKHZvaWQpKSBkbHN5bSAoaCwgInJwbXRzQ3JlYXRlIikpCi0g CSAgICAgICYmIChycG10c0ZyZWVfcCA9IChycG10cyAoKikgKHJwbXRzIHRzKSkgZGxzeW0gKGgs ICJycG10c0ZyZWUiKSkKLS0JICAgICAgJiYgKHJwbXRzSW5pdEl0ZXJhdG9yX3AgPSAocnBtZGJN YXRjaEl0ZXJhdG9yICgqKSAoY29uc3QgcnBtdHMgdHMsIHJwbVRhZyBycG10YWcsIGNvbnN0IHZv aWQgKmtleXAsIHNpemVfdCBrZXlsZW4pKSBkbHN5bSAoaCwgInJwbXRzSW5pdEl0ZXJhdG9yIikp KSkKLSsJICAgICAgJiYgKHJwbXRzSW5pdEl0ZXJhdG9yX3AgPSAocnBtZGJNYXRjaEl0ZXJhdG9y ICgqKSAoY29uc3QgcnBtdHMgdHMsIHJwbURiaVRhZ1ZhbCBycG10YWcsIGNvbnN0IHZvaWQgKmtl eXAsIHNpemVfdCBrZXlsZW4pKSBkbHN5bSAoaCwgInJwbXRzSW5pdEl0ZXJhdG9yIikpKSkKLSAJ ICB7Ci0gCSAgICB3YXJuaW5nIChfKCJPcGVuZWQgbGlicmFyeSBcIiVzXCIgaXMgaW5jb21wYXRp YmxlICglcyksICIKLSAJCSAgICAgICJtaXNzaW5nIGRlYnVnaW5mb3Mgbm90aWZpY2F0aW9ucyB3 aWxsIG5vdCBiZSBkaXNwbGF5ZWQiKSwKLUBAIC05MjYsNyArOTI2LDcgQEAgbWlzc2luZ19ycG1f ZW5saXN0XzEgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgdmVyaWZ5X3ZlbmRvcikKLSAKLSAJ ICAvKiBSUE1EQklfUEFDS0FHRVMgcmVxdWlyZXMga2V5bGVuID09IHNpemVvZiAoaW50KS4gICov Ci0gCSAgLyogUlBNREJJX0xBQkVMIGlzIGFuIGludGVyZmFjZSBmb3IgTlZSLWJhc2VkIGRiaUZp bmRCeUxhYmVsKCkuICAqLwotLQkgIG1pX2RlYnVnaW5mbyA9IHJwbXRzSW5pdEl0ZXJhdG9yX3Ag KHRzLCAocnBtVGFnKSBSUE1EQklfTEFCRUwsIGRlYnVnaW5mbywgMCk7Ci0rCSAgbWlfZGVidWdp bmZvID0gcnBtdHNJbml0SXRlcmF0b3JfcCAodHMsIChycG1EYmlUYWdWYWwpIFJQTURCSV9MQUJF TCwgZGVidWdpbmZvLCAwKTsKLSAJICB4ZnJlZSAoZGVidWdpbmZvKTsKLSAJICBpZiAobWlfZGVi dWdpbmZvKQotIAkgICAgewotZGlmZiAtLWdpdCBhL2dkYi9jb25maWcuaW4gYi9nZGIvY29uZmln LmluCi0tLS0gYS9nZGIvY29uZmlnLmluCi0rKysgYi9nZGIvY29uZmlnLmluCi1AQCAtNDIsNiAr NDIsOSBAQAotIC8qIEhhbmRsZSAuY3RmIHR5cGUtaW5mbyBzZWN0aW9ucyAqLwotICN1bmRlZiBF TkFCTEVfTElCQ1RGCi0gCi0rLyogbGlicnBtIHZlcnNpb24gc3BlY2lmaWMgbGlicmFyeSBuYW1l IHRvIGRsb3Blbi4gKi8KLSsjdW5kZWYgRExPUEVOX0xJQlJQTQotKwotIC8qIERlZmluZSB0byAx IGlmIHRyYW5zbGF0aW9uIG9mIHByb2dyYW0gbWVzc2FnZXMgdG8gdGhlIHVzZXIncyBuYXRpdmUK LSAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCi0gI3VuZGVmIEVOQUJMRV9OTFMKLUBAIC0y NjUsNiArMjY4LDkgQEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG0nIGxpYnJh cnkgKC1sbSkuICovCi0gI3VuZGVmIEhBVkVfTElCTQotIAotKy8qIERlZmluZSBpZiBsaWJycG0g bGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwotKyN1bmRlZiBIQVZFX0xJQlJQTQotKwotIC8qIERl ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGlidW53aW5kLWlhNjQuaD4gaGVhZGVyIGZpbGUu ICovCi0gI3VuZGVmIEhBVkVfTElCVU5XSU5EX0lBNjRfSAotIAotZGlmZiAtLWdpdCBhL2dkYi9j b25maWd1cmUgYi9nZGIvY29uZmlndXJlCi0tLS0gYS9nZGIvY29uZmlndXJlCi0rKysgYi9nZGIv Y29uZmlndXJlCi1AQCAtNzc4LDYgKzc3OCwxMSBAQCBBTURfREJHQVBJX0NGTEFHUwotIEVOQUJM RV9CRkRfNjRfQklUX0ZBTFNFCi0gRU5BQkxFX0JGRF82NF9CSVRfVFJVRQotIHN1YmRpcnMKLStS UE1fTElCUwotK1JQTV9DRkxBR1MKLStQS0dfQ09ORklHX0xJQkRJUgotK1BLR19DT05GSUdfUEFU SAotK1BLR19DT05GSUcKLSBHREJfREFUQURJUgotIERFQlVHRElSCi0gTUFLRUlORk9fRVhUUkFf RkxBR1MKLUBAIC05MTEsNiArOTE2LDcgQEAgd2l0aF9nZGJfZGF0YWRpcgotIHdpdGhfcmVsb2Nh dGVkX3NvdXJjZXMKLSB3aXRoX2F1dG9fbG9hZF9kaXIKLSB3aXRoX2F1dG9fbG9hZF9zYWZlX3Bh dGgKLSt3aXRoX3JwbQotIGVuYWJsZV90YXJnZXRzCi0gZW5hYmxlXzY0X2JpdF9iZmQKLSB3aXRo X2FtZF9kYmdhcGkKLUBAIC05ODgsNiArOTk0LDggQEAgQU1EX0RCR0FQSV9DRkxBR1MKLSBBTURf REJHQVBJX0xJQlMKLSBERUJVR0lORk9EX0NGTEFHUwotIERFQlVHSU5GT0RfTElCUwotK1JQTV9D RkxBR1MKLStSUE1fTElCUwotIFlBQ0MKLSBZRkxBR1MKLSBaU1REX0NGTEFHUwotQEAgLTE2Nzks NiArMTY4Nyw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLWFtZC1kYmdhcGkgICAg ICAgc3VwcG9ydCBmb3IgdGhlIGFtZC1kYmdhcGkgdGFyZ2V0ICh5ZXMgLyBubyAvIGF1dG8pCi0g ICAtLXdpdGgtZGVidWdpbmZvZCAgICAgICBFbmFibGUgZGVidWdpbmZvIGxvb2t1cHMgd2l0aCBk ZWJ1Z2luZm9kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoYXV0by95ZXMvbm8pCi0rICAt LXdpdGgtcnBtICAgICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVi dWdpbmZvcyAoeWVzL25vLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxp YnJwbS5zbykKLSAgIC0td2l0aC1saWJ1bndpbmQtaWE2NCAgIHVzZSBsaWJ1bndpbmQgZnJhbWUg dW53aW5kaW5nIGZvciBpYTY0IHRhcmdldHMKLSAgIC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVz ZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUgdGVybWNhcAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlicmFyeQotQEAgLTE3NTksNiArMTc2OSw4IEBAIFNvbWUgaW5mbHVl bnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgICAgICAgICAgICAgQyBjb21waWxlciBm bGFncyBmb3IgREVCVUdJTkZPRCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCi0gICBERUJVR0lORk9E X0xJQlMKLSAgICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgREVCVUdJTkZPRCwgb3ZlcnJp ZGluZyBwa2ctY29uZmlnCi0rICBSUE1fQ0ZMQUdTICBDIGNvbXBpbGVyIGZsYWdzIGZvciBSUE0s IG92ZXJyaWRpbmcgcGtnLWNvbmZpZwotKyAgUlBNX0xJQlMgICAgbGlua2VyIGZsYWdzIGZvciBS UE0sIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwotICAgWUFDQyAgICAgICAgVGhlIGBZZXQgQW5vdGhl ciBDb21waWxlciBDb21waWxlcicgaW1wbGVtZW50YXRpb24gdG8gdXNlLgotICAgICAgICAgICAg ICAgRGVmYXVsdHMgdG8gdGhlIGZpcnN0IHByb2dyYW0gZm91bmQgb3V0IG9mOiBgYmlzb24gLXkn LCBgYnlhY2MnLAotICAgICAgICAgICAgICAgYHlhY2MnLgotQEAgLTE4MDM5LDYgKzE4MDUxLDQ5 NSBAQCBfQUNFT0YKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY1Ci0gJGFzX2VjaG8gIiR3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGgiID4mNjsgfQotIAotKyMgSW50ZWdyYXRpb24gd2l0aCBycG0gbGli cmFyeSB0byBzdXBwb3J0IG1pc3NpbmcgZGVidWdpbmZvIHN1Z2dlc3Rpb25zLgotKyMgLS13aXRo b3V0LXJwbTogRGlzYWJsZSBhbnkgcnBtIHN1cHBvcnQuCi0rIyAtLXdpdGgtcnBtPWxpYm5hbWUu c286IFRyeSB0byBkeW5hbWljYWxseSBvcGVuIGBsaWJuYW1lLnNvJyBkdXJpbmcgcnVudGltZS4K LSsjICAgRXZlbiB3aXRoIHJ1bnRpbWUgbWlzc2luZyBgbGlibmFtZS5zbycgR0RCIHdpbGwgc3Rp bGwgb3RoZXIgcnVuIGNvcnJlY3RseS4KLSsjICAgTWlzc2luZyBgbGlibmFtZS5zbycgZHVyaW5n IC4vY29uZmlndXJlIHdpbGwgYWJvcnQgdGhlIGNvbmZpZ3VyYXRpb24uCi0rIyAtLXdpdGgtcnBt PWxpYnJwbS5zbzogTGlrZSBgLS13aXRoLXJwbT1saWJuYW1lLnNvJyBidXQgdHJ5IHRvIGZpbmQg c3BlY2lmaWMKLSsjICAgbWlub3IgdmVyc2lvbiBmaXJzdCBzdWNoIGFzIGBsaWJycG0tNC42LnNv JyBhcyBtaW5vciB2ZXJzaW9uIGRpZmZlcmVuY2VzCi0rIyAgIG1lYW4gQVBJK0FCSSBpbmNvbXBh dGliaWxpdHkuICBJZiB0aGUgc3BlY2lmaWMgbWF0Y2ggdmVyc2lvbmVkIGxpYnJhcnkgbmFtZQot KyMgICBjb3VsZCBub3QgYmUgZm91bmQgc3RpbGwgb3BlbiBkeW5hbWljYWxseSBhdCBsZWFzdCBg bGlicnBtLnNvJy4KLSsjIC0td2l0aC1ycG06IExpa2UgYC0td2l0aC1ycG09bGlicnBtLnNvJyBi dXQgaWYgYW55IG9mIGl0cyBkZXRlY3Rpb24gZmFpbHMgdHJ5Ci0rIyAgIHRvIGZpbmQgbGlicnBt IGZvciBjb21waWxhdGlvbi10aW1lIGxpbmtpbmcgYnkgcGtnLWNvbmZpZy4gIEdEQiBiaW5hcnkg d2lsbAotKyMgICBiZSBwcm9iYWJseSBsaW5rZWQgd2l0aCB0aGUgdmVyc2lvbiBzcGVjaWZpYyBs aWJyYXJ5IChhcyBgbGlicnBtLTQuNi5zbycpLgotKyMgICBGYWlsdXJlIHRvIGZpbmQgbGlicnBt IGJ5IHBrZy1jb25maWcgd2lsbCBhYm9ydCB0aGUgY29uZmlndXJhdGlvbi4KLSsjIChkZWZhdWx0 KSAtLXdpdGgtcnBtPWF1dG86IExpa2UgYC0td2l0aC1ycG09bGlicnBtLnNvJyBidXQgaWYgZXZl biBwa2ctY29uZmlnCi0rIyAgIGNhbm5vdCBmaW5kIGxpYnJwbSB1c2UgdG8gdGhlIHJwbWxlc3Mg Y29tcGlsYXRpb24gKGxpa2UgYC0td2l0aG91dC1ycG0nKS4KLSsKLSsKLSsjIENoZWNrIHdoZXRo ZXIgLS13aXRoLXJwbSB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX3JwbStzZXR9IiA9IHNl dDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX3JwbTsKLStlbHNlCi0rICB3aXRoX3JwbT0iYXV0 byIKLStmaQotKwotKwotKwotKwotK2lmIHRlc3QgIngkd2l0aF9ycG0iICE9ICJ4bm8iOyB0aGVu Ci0rICBpZiB0ZXN0ICJ4JHdpdGhfcnBtIiA9ICJ4eWVzIjsgdGhlbgotKyAgICBMSUJSUE09Imxp YnJwbS5zbyIKLSsgICAgUlBNX1JFUVVJUkU9dHJ1ZQotKyAgICBETE9QRU5fUkVRVUlSRT1mYWxz ZQotKyAgZWxpZiB0ZXN0ICJ4JHdpdGhfcnBtIiA9ICJ4YXV0byI7IHRoZW4KLSsgICAgTElCUlBN PSJsaWJycG0uc28iCi0rICAgIFJQTV9SRVFVSVJFPWZhbHNlCi0rICAgIERMT1BFTl9SRVFVSVJF PWZhbHNlCi0rICBlbHNlCi0rICAgIExJQlJQTT0iJHdpdGhfcnBtIgotKyAgICBSUE1fUkVRVUlS RT10cnVlCi0rICAgIERMT1BFTl9SRVFVSVJFPXRydWUKLSsgIGZpCi0rICBMSUJSUE1fU1RSSU5H PSciJyIkTElCUlBNIiciJwotKwotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBzcGVjaWZpYyBsaWJycG0gdmVyc2lvbiIgPiY1Ci0rJGFzX2VjaG9f biAiY2hlY2tpbmcgc3BlY2lmaWMgbGlicnBtIHZlcnNpb24uLi4gIiA+JjY7IH0KLSsgIEhBVkVf RExPUEVOX0xJQlJQTT1mYWxzZQotKyAgc2F2ZV9MSUJTPSIkTElCUyIKLSsgIExJQlM9IiRMSUJT IC1sZGwiCi0rICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0rICB7 IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFj X3B3ZCc6IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4m Mjt9Ci0rYXNfZm5fZXJyb3IgImNhbm5vdCBydW4gdGVzdCBwcm9ncmFtIHdoaWxlIGNyb3NzIGNv bXBpbGluZwotK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIg NTsgfQotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l eHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0rI2luY2x1ZGUgPHJwbS9ycG1saWIuaD4K LSsjaW5jbHVkZSA8ZGxmY24uaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5jbHVkZSA8c3Ry aW5nLmg+Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgICAgdm9pZCAqaDsKLSsgICAgY29u c3QgY2hhciAqY29uc3QgKnJwbXZlcnA7Ci0rICAgIEZJTEUgKmY7Ci0rCi0rICAgIGYgPSBmb3Bl biAoImNvbmZ0ZXN0Lm91dCIsICJ3Iik7Ci0rICAgIGlmICghZikKLSsgICAgICB7Ci0rCWZwcmlu dGYgKHN0ZGVyciwgIkNhbm5vdCB3cml0ZSBcIiVzXCI6ICVzXG4iLCAiY29uZnRlc3Qub3V0IiwK LSsJCSBzdHJlcnJvciAoZXJybm8pKTsKLSsJcmV0dXJuIDE7Ci0rICAgICAgfQotKyAgICBoID0g ZGxvcGVuICgkTElCUlBNX1NUUklORywgUlRMRF9MQVpZKTsKLSsgICAgaWYgKCFoKQotKyAgICAg IHsKLSsJZnByaW50ZiAoc3RkZXJyLCAiZGxvcGVuIChcIiVzXCIpOiAlc1xuIiwgJExJQlJQTV9T VFJJTkcsIGRsZXJyb3IgKCkpOwotKwlyZXR1cm4gMTsKLSsgICAgICB9Ci0rICAgIHJwbXZlcnAg PSBkbHN5bSAoaCwgIlJQTVZFUlNJT04iKTsKLSsgICAgaWYgKCFycG12ZXJwKQotKyAgICAgIHsK LSsJZnByaW50ZiAoc3RkZXJyLCAiZGxzeW0gKFwiUlBNVkVSU0lPTlwiKTogJXNcbiIsIGRsZXJy b3IgKCkpOwotKwlyZXR1cm4gMTsKLSsgICAgICB9Ci0rICAgIGZwcmludGYgKHN0ZGVyciwgIlJQ TVZFUlNJT04gaXM6IFwiIik7Ci0rICAgIGZwcmludGYgKHN0ZGVyciwgIiVzXCJcbiIsICpycG12 ZXJwKTsKLSsKLSsgICAgLyogVHJ5IHRvIGZpbmQgdGhlIHNwZWNpZmljIGxpYnJwbSB2ZXJzaW9u IG9ubHkgZm9yICJsaWJycG0uc28iIGFzIHdlIGRvCi0rICAgICAgIG5vdCBrbm93IGhvdyB0byBh c3NlbWJsZSB0aGUgdmVyc2lvbiBzdHJpbmcgb3RoZXJ3aXNlLiAgKi8KLSsKLSsgICAgaWYgKHN0 cmNtcCAoImxpYnJwbS5zbyIsICRMSUJSUE1fU1RSSU5HKSAhPSAwKQotKyAgICAgIHsKLSsJZnBy aW50ZiAoZiwgIiVzXG4iLCAkTElCUlBNX1NUUklORyk7Ci0rCXJldHVybiAwOwotKyAgICAgIH0K LSsgICAgZWxzZQotKyAgICAgIHsKLSsJY2hhciAqaDJfbmFtZTsKLSsJdm9pZCAqaDI7Ci0rCWlu dCBtYWpvciwgbWlub3I7Ci0rCi0rCWlmIChzc2NhbmYgKCpycG12ZXJwLCAiJWQuJWQiLCAmbWFq b3IsICZtaW5vcikgIT0gMikKLSsJICB7Ci0rCSAgICBmcHJpbnRmIChzdGRlcnIsICJVbmFibGUg dG8gcGFyc2UgUlBNVkVSU0lPTi5cbiIpOwotKwkgICAgZnByaW50ZiAoZiwgIiVzXG4iLCAkTElC UlBNX1NUUklORyk7Ci0rCSAgICByZXR1cm4gMDsKLSsJICB9Ci0rCS8qIEF2b2lkIHRoZSBzcXVh cmUgYnJhY2tldHMgYnkgbWFsbG9jLiAgKi8KLSsJaDJfbmFtZSA9IG1hbGxvYyAoNjQpOwotKwlz cHJpbnRmIChoMl9uYW1lLCAibGlicnBtLSVkLiVkLnNvIiwgbWFqb3IsIG1pbm9yKTsKLSsJaDIg PSBkbG9wZW4gKGgyX25hbWUsIFJUTERfTEFaWSk7Ci0rCWlmICghaDIpCi0rCSAgewotKwkgICAg ZnByaW50ZiAoc3RkZXJyLCAiZGxvcGVuIChcIiVzXCIpOiAlc1xuIiwgaDJfbmFtZSwgZGxlcnJv ciAoKSk7Ci0rCSAgICBmcHJpbnRmIChmLCAiJXNcbiIsICRMSUJSUE1fU1RSSU5HKTsKLSsJICAg IHJldHVybiAwOwotKwkgIH0KLSsJaWYgKGgyICE9IGgpCi0rCSAgewotKwkgICAgZnByaW50ZiAo c3RkZXJyLCAiZGxvcGVuIG9mIFwiJXNcIiBhbmQgXCIlc1wiIGFyZSBkaWZmZXJlbnQuXG4iLAot KwkJICAgICAkTElCUlBNX1NUUklORywgaDJfbmFtZSk7Ci0rCSAgICBmcHJpbnRmIChmLCAiJXNc biIsICRMSUJSUE1fU1RSSU5HKTsKLSsJICAgIHJldHVybiAwOwotKwkgIH0KLSsJLyogRm91bmQg dGhlIHZhbGlkIC5zbyBuYW1lIHdpdGggYSBzcGVjaWZpYyB2ZXJzaW9uLiAgKi8KLSsJZnByaW50 ZiAoZiwgIiVzXG4iLCBoMl9uYW1lKTsKLSsJcmV0dXJuIDA7Ci0rICAgICAgfQotKwotKyAgOwot KyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7 IHRoZW4gOgotKwotKyAgICBETE9QRU5fTElCUlBNPSJgY2F0IGNvbmZ0ZXN0Lm91dGAiCi0rICAg IGlmIHRlc3QgIngkRExPUEVOX0xJQlJQTSIgIT0gIngiOyB0aGVuCi0rICAgICAgSEFWRV9ETE9Q RU5fTElCUlBNPXRydWUKLSsgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJERMT1BFTl9MSUJSUE0iID4mNQotKyRhc19lY2hvICIkRExPUEVOX0xJ QlJQTSIgPiY2OyB9Ci0rICAgIGZpCi0rCi0rZmkKLStybSAtZiBjb3JlICouY29yZSBjb3JlLmNv bmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0rICBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAotK2ZpCi0rCi0rICBy bSAtZiBjb25mdGVzdC5vdXQKLSsKLSsKLSsKLSsgIGlmICRIQVZFX0RMT1BFTl9MSUJSUE07IHRo ZW4KLSsKLSsgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj a2luZyBycG0gbGlicmFyeSBBUEkgY29tcGF0aWJpbGl0eSIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hl Y2tpbmcgcnBtIGxpYnJhcnkgQVBJIGNvbXBhdGliaWxpdHkuLi4gIiA+JjY7IH0KLSsgICAgIyBU aGUgY29tcGlsYXRpb24gcmVxdWlyZXMgLVdlcnJvciB0byB2ZXJpZnkgYW55dGhpbmcuCi0rICAg IHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKyAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciIKLSsg ICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBj b25mZGVmcy5oLiAgKi8KLSsKLSsvKiBEdXBsaWNhdGUgaGVyZSB0aGUgZGVjbGFyYXRpb25zIHRv IHZlcmlmeSB0aGV5IG1hdGNoICJlbGZyZWFkLmMiLiAgKi8KLSsjaW5jbHVkZSA8cnBtL3JwbWxp Yi5oPgotKyNpbmNsdWRlIDxycG0vcnBtdHMuaD4KLSsjaW5jbHVkZSA8cnBtL3JwbWRiLmg+Ci0r I2luY2x1ZGUgPHJwbS9oZWFkZXIuaD4KLStleHRlcm4gY2hhciAqIGhlYWRlckZvcm1hdChIZWFk ZXIgaCwgY29uc3QgY2hhciAqIGZtdCwgZXJybXNnX3QgKiBlcnJtc2cpOwotK2V4dGVybiBpbnQg cnBtUmVhZENvbmZpZ0ZpbGVzKGNvbnN0IGNoYXIgKiBmaWxlLCBjb25zdCBjaGFyICogdGFyZ2V0 KTsKLStleHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJwbWRiRnJlZUl0ZXJhdG9yKHJwbWRiTWF0 Y2hJdGVyYXRvciBtaSk7Ci0rZXh0ZXJuIEhlYWRlciBycG1kYk5leHRJdGVyYXRvcihycG1kYk1h dGNoSXRlcmF0b3IgbWkpOwotK2V4dGVybiBycG10cyBycG10c0NyZWF0ZSh2b2lkKTsKLStleHRl cm4gcnBtdHMgcnBtdHNGcmVlKHJwbXRzIHRzKTsKLStleHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9y IHJwbXRzSW5pdEl0ZXJhdG9yKGNvbnN0IHJwbXRzIHRzLCBycG1EYmlUYWdWYWwgcnBtdGFnLAot KwkJCQkJICAgIGNvbnN0IHZvaWQgKiBrZXlwLCBzaXplX3Qga2V5bGVuKTsKLSsKLStpbnQKLStt YWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2Zu X2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsKLSsgICAgICBMSUJSUE1fQ09NUEFU PXRydWUKLSsgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogeWVzIiA+JjUKLSskYXNfZWNobyAieWVzIiA+JjY7IH0KLSsKLStlbHNlCi0rCi0rICAg ICAgTElCUlBNX0NPTVBBVD1mYWxzZQotKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSsK LStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QuJGFjX2V4dAotKyAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKLSsKLSsgICAgaWYgISAkTElC UlBNX0NPTVBBVDsgdGhlbgotKyAgICAgIEhBVkVfRExPUEVOX0xJQlJQTT1mYWxzZQotKyAgICBm aQotKyAgZmkKLSsKLSsgIGlmICRIQVZFX0RMT1BFTl9MSUJSUE07IHRoZW4KLSsgICAgRExPUEVO X0xJQlJQTV9TVFJJTkc9JyInIiRETE9QRU5fTElCUlBNIiciJwotKwotK2NhdCA+PmNvbmZkZWZz LmggPDxfQUNFT0YKLSsjZGVmaW5lIERMT1BFTl9MSUJSUE0gJERMT1BFTl9MSUJSUE1fU1RSSU5H Ci0rX0FDRU9GCi0rCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MSUJSUE0gMSIgPj5jb25m ZGVmcy5oCi0rCi0rICBlbHNlCi0rICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSsgICAgTElC Uz0iJHNhdmVfTElCUyIKLSsgICAgaWYgJERMT1BFTl9SRVFVSVJFOyB0aGVuCi0rICAgICAgYXNf Zm5fZXJyb3IgIlNwZWNpZmljIG5hbWUgJExJQlJQTSB3YXMgcmVxdWVzdGVkIGJ1dCBpdCBjb3Vs ZCBub3QgYmUgb3BlbmVkLiIgIiRMSU5FTk8iIDUKLSsgICAgZmkKLSsKLSsKLSsKLSsKLSsKLSsK LSsKLStpZiB0ZXN0ICJ4JGFjX2N2X2Vudl9QS0dfQ09ORklHX3NldCIgIT0gInhzZXQiOyB0aGVu Ci0rCWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUg Zmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1wa2ctY29uZmlnIiwgc28gaXQgY2FuIGJl IGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1w a2ctY29uZmlnOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5n IGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcGF0aF9QS0dfQ09O RklHK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0r ZWxzZQotKyAgY2FzZSAkUEtHX0NPTkZJRyBpbgotKyAgW1xcL10qIHwgPzpbXFwvXSopCi0rICBh Y19jdl9wYXRoX1BLR19DT05GSUc9IiRQS0dfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlk ZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLSsgIDs7Ci0rICAqKQotKyAgYXNfc2F2ZV9JRlM9JElG UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZT PSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9y IGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7 IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3BhdGhfUEtH X0NPTkZJRz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSsgICAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNf c2F2ZV9JRlMKLSsKLSsgIDs7Ci0rZXNhYwotK2ZpCi0rUEtHX0NPTkZJRz0kYWNfY3ZfcGF0aF9Q S0dfQ09ORklHCi0raWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0rICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBLR19DT05GSUciID4mNQot KyRhc19lY2hvICIkUEtHX0NPTkZJRyIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8i ID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9QS0dfQ09O RklHIjsgdGhlbgotKyAgYWNfcHRfUEtHX0NPTkZJRz0kUEtHX0NPTkZJRwotKyAgIyBFeHRyYWN0 IHRoZSBmaXJzdCB3b3JkIG9mICJwa2ctY29uZmlnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBu YW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgcGtnLWNvbmZpZzsgYWNfd29yZD0kMgotK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3Jk IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStp ZiB0ZXN0ICIke2FjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRytzZXR9IiA9IHNldDsgdGhlbiA6 Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGFjX3B0X1BL R19DT05GSUcgaW4KLSsgIFtcXC9dKiB8ID86W1xcL10qKQotKyAgYWNfY3ZfcGF0aF9hY19wdF9Q S0dfQ09ORklHPSIkYWNfcHRfUEtHX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhl IHRlc3Qgd2l0aCBhIHBhdGguCi0rICA7OwotKyAgKikKLSsgIGFzX3NhdmVfSUZTPSRJRlM7IElG Uz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNf c2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19l eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0 IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wYXRoX2FjX3B0X1BL R19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0rICAgICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFz X3NhdmVfSUZTCi0rCi0rICA7OwotK2VzYWMKLStmaQotK2FjX3B0X1BLR19DT05GSUc9JGFjX2N2 X3BhdGhfYWNfcHRfUEtHX0NPTkZJRwotK2lmIHRlc3QgLW4gIiRhY19wdF9QS0dfQ09ORklHIjsg dGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 ICRhY19wdF9QS0dfQ09ORklHIiA+JjUKLSskYXNfZWNobyAiJGFjX3B0X1BLR19DT05GSUciID4m NjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVz dCAieCRhY19wdF9QS0dfQ09ORklHIiA9IHg7IHRoZW4KLSsgICAgUEtHX0NPTkZJRz0iIgotKyAg ZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVz OikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVz aW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFz X2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdp dGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsg ICAgUEtHX0NPTkZJRz0kYWNfcHRfUEtHX0NPTkZJRwotKyAgZmkKLStlbHNlCi0rICBQS0dfQ09O RklHPSIkYWNfY3ZfcGF0aF9QS0dfQ09ORklHIgotK2ZpCi0rCi0rZmkKLStpZiB0ZXN0IC1uICIk UEtHX0NPTkZJRyI7IHRoZW4KLSsJX3BrZ19taW5fdmVyc2lvbj0wLjkuMAotKwl7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHBrZy1jb25maWcgaXMgYXQg bGVhc3QgdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbiIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tp bmcgcGtnLWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9uLi4uICIg PiY2OyB9Ci0rCWlmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAkX3Br Z19taW5fdmVyc2lvbjsgdGhlbgotKwkJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0rJGFzX2VjaG8gInllcyIgPiY2OyB9Ci0rCWVsc2UK LSsJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg PiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSsJCVBLR19DT05GSUc9IiIKLSsJZmkKLStmaQot KwotK3BrZ19mYWlsZWQ9bm8KLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIGZvciBSUE0iID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBSUE0u Li4gIiA+JjY7IH0KLSsKLStpZiB0ZXN0IC1uICIkUlBNX0NGTEFHUyI7IHRoZW4KLSsgICAgcGtn X2N2X1JQTV9DRkxBR1M9IiRSUE1fQ0ZMQUdTIgotKyBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklH IjsgdGhlbgotKyAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotKyAgICB7IHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3Rz IC0tcHJpbnQtZXJyb3JzIFwicnBtXCIiOyB9ID4mNQotKyAgKCRQS0dfQ09ORklHIC0tZXhpc3Rz IC0tcHJpbnQtZXJyb3JzICJycG0iKSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAg dGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotKyAgcGtnX2N2X1JQTV9DRkxBR1M9YCRQS0df Q09ORklHIC0tY2ZsYWdzICJycG0iIDI+L2Rldi9udWxsYAotKwkJICAgICAgdGVzdCAieCQ/IiAh PSAieDAiICYmIHBrZ19mYWlsZWQ9eWVzCi0rZWxzZQotKyAgcGtnX2ZhaWxlZD15ZXMKLStmaQot KyBlbHNlCi0rICAgIHBrZ19mYWlsZWQ9dW50cmllZAotK2ZpCi0raWYgdGVzdCAtbiAiJFJQTV9M SUJTIjsgdGhlbgotKyAgICBwa2dfY3ZfUlBNX0xJQlM9IiRSUE1fTElCUyIKLSsgZWxpZiB0ZXN0 IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KLSsgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYm IFwKLSsgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtH X0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcInJwbVwiIjsgfSA+JjUKLSsgICgkUEtH X0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAicnBtIikgMj4mNQotKyAgYWNfc3RhdHVz PSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSsgIHBrZ19jdl9S UE1fTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJycG0iIDI+L2Rldi9udWxsYAotKwkJICAgICAg dGVzdCAieCQ/IiAhPSAieDAiICYmIHBrZ19mYWlsZWQ9eWVzCi0rZWxzZQotKyAgcGtnX2ZhaWxl ZD15ZXMKLStmaQotKyBlbHNlCi0rICAgIHBrZ19mYWlsZWQ9dW50cmllZAotK2ZpCi0rCi0rCi0r Ci0raWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgotKyAgICAgICAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAi bm8iID4mNjsgfQotKwotK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lv biAwLjIwOyB0aGVuCi0rICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCi0r ZWxzZQotKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCi0rZmkKLSsgICAg ICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgotKwkg ICAgICAgIFJQTV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLXByaW50 LWVycm9ycyAtLWNmbGFncyAtLWxpYnMgInJwbSIgMj4mMWAKLSsgICAgICAgIGVsc2UKLSsJICAg ICAgICBSUE1fUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1wcmludC1lcnJvcnMgLS1jZmxhZ3Mg LS1saWJzICJycG0iIDI+JjFgCi0rICAgICAgICBmaQotKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3Ig bWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKLSsJZWNobyAiJFJQTV9QS0df RVJST1JTIiA+JjUKLSsKLSsJSEFWRV9MSUJSUE09ZmFsc2UKLStlbGlmIHRlc3QgJHBrZ19mYWls ZWQgPSB1bnRyaWVkOyB0aGVuCi0rICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rCUhB VkVfTElCUlBNPWZhbHNlCi0rZWxzZQotKwlSUE1fQ0ZMQUdTPSRwa2dfY3ZfUlBNX0NGTEFHUwot KwlSUE1fTElCUz0kcGtnX2N2X1JQTV9MSUJTCi0rICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSskYXNfZWNobyAieWVzIiA+ JjY7IH0KLSsJSEFWRV9MSUJSUE09dHJ1ZQotK2ZpCi0rCi0rICAgIGlmICRIQVZFX0xJQlJQTTsg dGhlbgotKwotKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIHJwbSBsaWJyYXJ5IEFQSSBjb21wYXRpYmlsaXR5IiA+JjUKLSskYXNfZWNob19uICJj aGVja2luZyBycG0gbGlicmFyeSBBUEkgY29tcGF0aWJpbGl0eS4uLiAiID4mNjsgfQotKyAgICAj IFRoZSBjb21waWxhdGlvbiByZXF1aXJlcyAtV2Vycm9yIHRvIHZlcmlmeSBhbnl0aGluZy4KLSsg ICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIgot KyAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5k IGNvbmZkZWZzLmguICAqLwotKwotKy8qIER1cGxpY2F0ZSBoZXJlIHRoZSBkZWNsYXJhdGlvbnMg dG8gdmVyaWZ5IHRoZXkgbWF0Y2ggImVsZnJlYWQuYyIuICAqLwotKyNpbmNsdWRlIDxycG0vcnBt bGliLmg+Ci0rI2luY2x1ZGUgPHJwbS9ycG10cy5oPgotKyNpbmNsdWRlIDxycG0vcnBtZGIuaD4K LSsjaW5jbHVkZSA8cnBtL2hlYWRlci5oPgotK2V4dGVybiBjaGFyICogaGVhZGVyRm9ybWF0KEhl YWRlciBoLCBjb25zdCBjaGFyICogZm10LCBlcnJtc2dfdCAqIGVycm1zZyk7Ci0rZXh0ZXJuIGlu dCBycG1SZWFkQ29uZmlnRmlsZXMoY29uc3QgY2hhciAqIGZpbGUsIGNvbnN0IGNoYXIgKiB0YXJn ZXQpOwotK2V4dGVybiBycG1kYk1hdGNoSXRlcmF0b3IgcnBtZGJGcmVlSXRlcmF0b3IocnBtZGJN YXRjaEl0ZXJhdG9yIG1pKTsKLStleHRlcm4gSGVhZGVyIHJwbWRiTmV4dEl0ZXJhdG9yKHJwbWRi TWF0Y2hJdGVyYXRvciBtaSk7Ci0rZXh0ZXJuIHJwbXRzIHJwbXRzQ3JlYXRlKHZvaWQpOwotK2V4 dGVybiBycG10cyBycG10c0ZyZWUocnBtdHMgdHMpOwotK2V4dGVybiBycG1kYk1hdGNoSXRlcmF0 b3IgcnBtdHNJbml0SXRlcmF0b3IoY29uc3QgcnBtdHMgdHMsIHJwbURiaVRhZ1ZhbCBycG10YWcs Ci0rCQkJCQkgICAgY29uc3Qgdm9pZCAqIGtleXAsIHNpemVfdCBrZXlsZW4pOwotKwotK2ludAot K21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNf Zm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKwotKyAgICAgIExJQlJQTV9DT01Q QVQ9dHJ1ZQotKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiB5ZXMiID4mNQotKyRhc19lY2hvICJ5ZXMiID4mNjsgfQotKwotK2Vsc2UKLSsKLSsg ICAgICBMSUJSUE1fQ09NUEFUPWZhbHNlCi0rICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQot KwotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC4kYWNfZXh0Ci0rICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgotKwotKyAgICAgIGlmICEg JExJQlJQTV9DT01QQVQ7IHRoZW4KLSsJSEFWRV9MSUJSUE09ZmFsc2UKLSsJUlBNX1BLR19FUlJP UlM9IkZvdW5kICRMSUJSUE0gQVBJIGlzIGluY29tcGF0aWJpbGUgd2l0aCB0aGlzIEdEQiIKLSsg ICAgICBmaQotKyAgICBmaQotKwotKyAgICBpZiAkSEFWRV9MSUJSUE07IHRoZW4KLSsKLSskYXNf ZWNobyAiI2RlZmluZSBIQVZFX0xJQlJQTSAxIiA+PmNvbmZkZWZzLmgKLSsKLSsgICAgICBDRkxB R1M9IiRDRkxBR1MgJFJQTV9DRkxBR1MiCi0rICAgICAgTElCUz0iJExJQlMgJFJQTV9MSUJTIgot KyAgICBlbHNlCi0rICAgICAgaWYgJFJQTV9SRVFVSVJFOyB0aGVuCi0rCWFzX2ZuX2Vycm9yICIk UlBNX1BLR19FUlJPUlMiICIkTElORU5PIiA1Ci0rICAgICAgZWxzZQotKwl7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRSUE1fUEtHX0VSUk9SUyIgPiY1 Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJFJQTV9QS0dfRVJST1JTIiA+JjI7fQotKyAg ICAgIGZpCi0rICAgIGZpCi0rICBmaQotK2ZpCi0rCi0gCi0gCi0gc3ViZGlycz0iJHN1YmRpcnMg dGVzdHN1aXRlIgotZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUuYWMgYi9nZGIvY29uZmlndXJl LmFjCi0tLS0gYS9nZGIvY29uZmlndXJlLmFjCi0rKysgYi9nZGIvY29uZmlndXJlLmFjCi1AQCAt MTczLDYgKzE3MywyMDAgQEAgQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBlc2Nh cGVfZGlyLAotIAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZp bGVzLl0pCi0gQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCi0gCi0r IyBJbnRlZ3JhdGlvbiB3aXRoIHJwbSBsaWJyYXJ5IHRvIHN1cHBvcnQgbWlzc2luZyBkZWJ1Z2lu Zm8gc3VnZ2VzdGlvbnMuCi0rIyAtLXdpdGhvdXQtcnBtOiBEaXNhYmxlIGFueSBycG0gc3VwcG9y dC4KLSsjIC0td2l0aC1ycG09bGlibmFtZS5zbzogVHJ5IHRvIGR5bmFtaWNhbGx5IG9wZW4gYGxp Ym5hbWUuc28nIGR1cmluZyBydW50aW1lLgotKyMgICBFdmVuIHdpdGggcnVudGltZSBtaXNzaW5n IGBsaWJuYW1lLnNvJyBHREIgd2lsbCBzdGlsbCBvdGhlciBydW4gY29ycmVjdGx5LgotKyMgICBN aXNzaW5nIGBsaWJuYW1lLnNvJyBkdXJpbmcgLi9jb25maWd1cmUgd2lsbCBhYm9ydCB0aGUgY29u ZmlndXJhdGlvbi4KLSsjIC0td2l0aC1ycG09bGlicnBtLnNvOiBMaWtlIGAtLXdpdGgtcnBtPWxp Ym5hbWUuc28nIGJ1dCB0cnkgdG8gZmluZCBzcGVjaWZpYwotKyMgICBtaW5vciB2ZXJzaW9uIGZp cnN0IHN1Y2ggYXMgYGxpYnJwbS00LjYuc28nIGFzIG1pbm9yIHZlcnNpb24gZGlmZmVyZW5jZXMK LSsjICAgbWVhbiBBUEkrQUJJIGluY29tcGF0aWJpbGl0eS4gIElmIHRoZSBzcGVjaWZpYyBtYXRj aCB2ZXJzaW9uZWQgbGlicmFyeSBuYW1lCi0rIyAgIGNvdWxkIG5vdCBiZSBmb3VuZCBzdGlsbCBv cGVuIGR5bmFtaWNhbGx5IGF0IGxlYXN0IGBsaWJycG0uc28nLgotKyMgLS13aXRoLXJwbTogTGlr ZSBgLS13aXRoLXJwbT1saWJycG0uc28nIGJ1dCBpZiBhbnkgb2YgaXRzIGRldGVjdGlvbiBmYWls cyB0cnkKLSsjICAgdG8gZmluZCBsaWJycG0gZm9yIGNvbXBpbGF0aW9uLXRpbWUgbGlua2luZyBi eSBwa2ctY29uZmlnLiAgR0RCIGJpbmFyeSB3aWxsCi0rIyAgIGJlIHByb2JhYmx5IGxpbmtlZCB3 aXRoIHRoZSB2ZXJzaW9uIHNwZWNpZmljIGxpYnJhcnkgKGFzIGBsaWJycG0tNC42LnNvJykuCi0r IyAgIEZhaWx1cmUgdG8gZmluZCBsaWJycG0gYnkgcGtnLWNvbmZpZyB3aWxsIGFib3J0IHRoZSBj b25maWd1cmF0aW9uLgotKyMgKGRlZmF1bHQpIC0td2l0aC1ycG09YXV0bzogTGlrZSBgLS13aXRo LXJwbT1saWJycG0uc28nIGJ1dCBpZiBldmVuIHBrZy1jb25maWcKLSsjICAgY2Fubm90IGZpbmQg bGlicnBtIHVzZSB0byB0aGUgcnBtbGVzcyBjb21waWxhdGlvbiAobGlrZSBgLS13aXRob3V0LXJw bScpLgotKwotK0FDX0FSR19XSVRIKFtycG1dLAotKyAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgt cnBtXSwKLSsgICAgICAgICAgICAgICAgICBbcXVlcnkgcnBtIGRhdGFiYXNlIGZvciBtaXNzaW5n IGRlYnVnaW5mb3MgKHllcy9ubywgZGVmLiBhdXRvPWxpYnJwbS5zbyldKV0sIFtdLCBbd2l0aF9y cG09ImF1dG8iXSkKLSsKLSttNF9wYXR0ZXJuX2FsbG93KFteQUNfTVNHX0VSUk9SJF0pCi0rbTRf cGF0dGVybl9hbGxvdyhbXkFDX01TR19XQVJOJF0pCi0raWYgdGVzdCAieCR3aXRoX3JwbSIgIT0g InhubyI7IHRoZW4KLSsgIGlmIHRlc3QgIngkd2l0aF9ycG0iID0gInh5ZXMiOyB0aGVuCi0rICAg IExJQlJQTT0ibGlicnBtLnNvIgotKyAgICBSUE1fUkVRVUlSRT10cnVlCi0rICAgIERMT1BFTl9S RVFVSVJFPWZhbHNlCi0rICBlbGlmIHRlc3QgIngkd2l0aF9ycG0iID0gInhhdXRvIjsgdGhlbgot KyAgICBMSUJSUE09ImxpYnJwbS5zbyIKLSsgICAgUlBNX1JFUVVJUkU9ZmFsc2UKLSsgICAgRExP UEVOX1JFUVVJUkU9ZmFsc2UKLSsgIGVsc2UKLSsgICAgTElCUlBNPSIkd2l0aF9ycG0iCi0rICAg IFJQTV9SRVFVSVJFPXRydWUKLSsgICAgRExPUEVOX1JFUVVJUkU9dHJ1ZQotKyAgZmkKLSsgIExJ QlJQTV9TVFJJTkc9JyInIiRMSUJSUE0iJyInCi0rCi0rICBBQ19NU0dfQ0hFQ0tJTkcoW3NwZWNp ZmljIGxpYnJwbSB2ZXJzaW9uXSkKLSsgIEhBVkVfRExPUEVOX0xJQlJQTT1mYWxzZQotKyAgc2F2 ZV9MSUJTPSIkTElCUyIKLSsgIExJQlM9IiRMSUJTIC1sZGwiCi0rICBBQ19SVU5fSUZFTFNFKEFD X0xBTkdfUFJPR1JBTShbWwotKyNpbmNsdWRlIDxycG0vcnBtbGliLmg+Ci0rI2luY2x1ZGUgPGRs ZmNuLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyAgXV0s IFtbCi0rICAgIHZvaWQgKmg7Ci0rICAgIGNvbnN0IGNoYXIgKmNvbnN0ICpycG12ZXJwOwotKyAg ICBGSUxFICpmOwotKwotKyAgICBmID0gZm9wZW4gKCJjb25mdGVzdC5vdXQiLCAidyIpOwotKyAg ICBpZiAoIWYpCi0rICAgICAgewotKwlmcHJpbnRmIChzdGRlcnIsICJDYW5ub3Qgd3JpdGUgXCIl c1wiOiAlc1xuIiwgImNvbmZ0ZXN0Lm91dCIsCi0rCQkgc3RyZXJyb3IgKGVycm5vKSk7Ci0rCXJl dHVybiAxOwotKyAgICAgIH0KLSsgICAgaCA9IGRsb3BlbiAoJExJQlJQTV9TVFJJTkcsIFJUTERf TEFaWSk7Ci0rICAgIGlmICghaCkKLSsgICAgICB7Ci0rCWZwcmludGYgKHN0ZGVyciwgImRsb3Bl biAoXCIlc1wiKTogJXNcbiIsICRMSUJSUE1fU1RSSU5HLCBkbGVycm9yICgpKTsKLSsJcmV0dXJu IDE7Ci0rICAgICAgfQotKyAgICBycG12ZXJwID0gZGxzeW0gKGgsICJSUE1WRVJTSU9OIik7Ci0r ICAgIGlmICghcnBtdmVycCkKLSsgICAgICB7Ci0rCWZwcmludGYgKHN0ZGVyciwgImRsc3ltIChc IlJQTVZFUlNJT05cIik6ICVzXG4iLCBkbGVycm9yICgpKTsKLSsJcmV0dXJuIDE7Ci0rICAgICAg fQotKyAgICBmcHJpbnRmIChzdGRlcnIsICJSUE1WRVJTSU9OIGlzOiBcIiIpOwotKyAgICBmcHJp bnRmIChzdGRlcnIsICIlc1wiXG4iLCAqcnBtdmVycCk7Ci0rCi0rICAgIC8qIFRyeSB0byBmaW5k IHRoZSBzcGVjaWZpYyBsaWJycG0gdmVyc2lvbiBvbmx5IGZvciAibGlicnBtLnNvIiBhcyB3ZSBk bwotKyAgICAgICBub3Qga25vdyBob3cgdG8gYXNzZW1ibGUgdGhlIHZlcnNpb24gc3RyaW5nIG90 aGVyd2lzZS4gICovCi0rCi0rICAgIGlmIChzdHJjbXAgKCJsaWJycG0uc28iLCAkTElCUlBNX1NU UklORykgIT0gMCkKLSsgICAgICB7Ci0rCWZwcmludGYgKGYsICIlc1xuIiwgJExJQlJQTV9TVFJJ TkcpOwotKwlyZXR1cm4gMDsKLSsgICAgICB9Ci0rICAgIGVsc2UKLSsgICAgICB7Ci0rCWNoYXIg KmgyX25hbWU7Ci0rCXZvaWQgKmgyOwotKwlpbnQgbWFqb3IsIG1pbm9yOwotKwotKwlpZiAoc3Nj YW5mICgqcnBtdmVycCwgIiVkLiVkIiwgJm1ham9yLCAmbWlub3IpICE9IDIpCi0rCSAgewotKwkg ICAgZnByaW50ZiAoc3RkZXJyLCAiVW5hYmxlIHRvIHBhcnNlIFJQTVZFUlNJT04uXG4iKTsKLSsJ ICAgIGZwcmludGYgKGYsICIlc1xuIiwgJExJQlJQTV9TVFJJTkcpOwotKwkgICAgcmV0dXJuIDA7 Ci0rCSAgfQotKwkvKiBBdm9pZCB0aGUgc3F1YXJlIGJyYWNrZXRzIGJ5IG1hbGxvYy4gICovCi0r CWgyX25hbWUgPSBtYWxsb2MgKDY0KTsKLSsJc3ByaW50ZiAoaDJfbmFtZSwgImxpYnJwbS0lZC4l ZC5zbyIsIG1ham9yLCBtaW5vcik7Ci0rCWgyID0gZGxvcGVuIChoMl9uYW1lLCBSVExEX0xBWlkp OwotKwlpZiAoIWgyKQotKwkgIHsKLSsJICAgIGZwcmludGYgKHN0ZGVyciwgImRsb3BlbiAoXCIl c1wiKTogJXNcbiIsIGgyX25hbWUsIGRsZXJyb3IgKCkpOwotKwkgICAgZnByaW50ZiAoZiwgIiVz XG4iLCAkTElCUlBNX1NUUklORyk7Ci0rCSAgICByZXR1cm4gMDsKLSsJICB9Ci0rCWlmIChoMiAh PSBoKQotKwkgIHsKLSsJICAgIGZwcmludGYgKHN0ZGVyciwgImRsb3BlbiBvZiBcIiVzXCIgYW5k IFwiJXNcIiBhcmUgZGlmZmVyZW50LlxuIiwKLSsJCSAgICAgJExJQlJQTV9TVFJJTkcsIGgyX25h bWUpOwotKwkgICAgZnByaW50ZiAoZiwgIiVzXG4iLCAkTElCUlBNX1NUUklORyk7Ci0rCSAgICBy ZXR1cm4gMDsKLSsJICB9Ci0rCS8qIEZvdW5kIHRoZSB2YWxpZCAuc28gbmFtZSB3aXRoIGEgc3Bl Y2lmaWMgdmVyc2lvbi4gICovCi0rCWZwcmludGYgKGYsICIlc1xuIiwgaDJfbmFtZSk7Ci0rCXJl dHVybiAwOwotKyAgICAgIH0KLSsgIF1dKSwgWwotKyAgICBETE9QRU5fTElCUlBNPSJgY2F0IGNv bmZ0ZXN0Lm91dGAiCi0rICAgIGlmIHRlc3QgIngkRExPUEVOX0xJQlJQTSIgIT0gIngiOyB0aGVu Ci0rICAgICAgSEFWRV9ETE9QRU5fTElCUlBNPXRydWUKLSsgICAgICBBQ19NU0dfUkVTVUxUKCRE TE9QRU5fTElCUlBNKQotKyAgICBmaQotKyAgXSkKLSsgIHJtIC1mIGNvbmZ0ZXN0Lm91dAotKwot KyAgbTRfZGVmaW5lKFtDSEVDS19MSUJSUE1fQ09NUEFUXSwgWwotKyAgICBBQ19NU0dfQ0hFQ0tJ TkcoW3JwbSBsaWJyYXJ5IEFQSSBjb21wYXRpYmlsaXR5XSkKLSsgICAgIyBUaGUgY29tcGlsYXRp b24gcmVxdWlyZXMgLVdlcnJvciB0byB2ZXJpZnkgYW55dGhpbmcuCi0rICAgIHNhdmVfQ0ZMQUdT PSIkQ0ZMQUdTIgotKyAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciIKLSsgICAgQUNfQ09NUElM RV9JRkVMU0UoQUNfTEFOR19QUk9HUkFNKFtbCi0rLyogRHVwbGljYXRlIGhlcmUgdGhlIGRlY2xh cmF0aW9ucyB0byB2ZXJpZnkgdGhleSBtYXRjaCAiZWxmcmVhZC5jIi4gICovCi0rI2luY2x1ZGUg PHJwbS9ycG1saWIuaD4KLSsjaW5jbHVkZSA8cnBtL3JwbXRzLmg+Ci0rI2luY2x1ZGUgPHJwbS9y cG1kYi5oPgotKyNpbmNsdWRlIDxycG0vaGVhZGVyLmg+Ci0rZXh0ZXJuIGNoYXIgKiBoZWFkZXJG b3JtYXQoSGVhZGVyIGgsIGNvbnN0IGNoYXIgKiBmbXQsIGVycm1zZ190ICogZXJybXNnKTsKLStl eHRlcm4gaW50IHJwbVJlYWRDb25maWdGaWxlcyhjb25zdCBjaGFyICogZmlsZSwgY29uc3QgY2hh ciAqIHRhcmdldCk7Ci0rZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG1kYkZyZWVJdGVyYXRv cihycG1kYk1hdGNoSXRlcmF0b3IgbWkpOwotK2V4dGVybiBIZWFkZXIgcnBtZGJOZXh0SXRlcmF0 b3IocnBtZGJNYXRjaEl0ZXJhdG9yIG1pKTsKLStleHRlcm4gcnBtdHMgcnBtdHNDcmVhdGUodm9p ZCk7Ci0rZXh0ZXJuIHJwbXRzIHJwbXRzRnJlZShycG10cyB0cyk7Ci0rZXh0ZXJuIHJwbWRiTWF0 Y2hJdGVyYXRvciBycG10c0luaXRJdGVyYXRvcihjb25zdCBycG10cyB0cywgcnBtRGJpVGFnVmFs IHJwbXRhZywKLSsJCQkJCSAgICBjb25zdCB2b2lkICoga2V5cCwgc2l6ZV90IGtleWxlbik7Ci0r ICAgIF1dKSwgWwotKyAgICAgIExJQlJQTV9DT01QQVQ9dHJ1ZQotKyAgICAgIEFDX01TR19SRVNV TFQoeWVzKQotKyAgICBdLCBbCi0rICAgICAgTElCUlBNX0NPTVBBVD1mYWxzZQotKyAgICAgIEFD X01TR19SRVNVTFQobm8pCi0rICAgIF0pCi0rICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgotKyAg XSkKLSsKLSsgIGlmICRIQVZFX0RMT1BFTl9MSUJSUE07IHRoZW4KLSsgICAgQ0hFQ0tfTElCUlBN X0NPTVBBVAotKyAgICBpZiAhICRMSUJSUE1fQ09NUEFUOyB0aGVuCi0rICAgICAgSEFWRV9ETE9Q RU5fTElCUlBNPWZhbHNlCi0rICAgIGZpCi0rICBmaQotKwotKyAgaWYgJEhBVkVfRExPUEVOX0xJ QlJQTTsgdGhlbgotKyAgICBETE9QRU5fTElCUlBNX1NUUklORz0nIiciJERMT1BFTl9MSUJSUE0i JyInCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChETE9QRU5fTElCUlBNLCAkRExPUEVOX0xJQlJQ TV9TVFJJTkcsIFtsaWJycG0gdmVyc2lvbiBzcGVjaWZpYyBsaWJyYXJ5IG5hbWUgdG8gZGxvcGVu Ll0pCi0rICAgIEFDX0RFRklORShIQVZFX0xJQlJQTSwgMSwgW0RlZmluZSBpZiBsaWJycG0gbGli cmFyeSBpcyBiZWluZyB1c2VkLl0pCi0rICBlbHNlCi0rICAgIEFDX01TR19SRVNVTFQobm8pCi0r ICAgIExJQlM9IiRzYXZlX0xJQlMiCi0rICAgIGlmICRETE9QRU5fUkVRVUlSRTsgdGhlbgotKyAg ICAgIEFDX01TR19FUlJPUihbU3BlY2lmaWMgbmFtZSAkTElCUlBNIHdhcyByZXF1ZXN0ZWQgYnV0 IGl0IGNvdWxkIG5vdCBiZSBvcGVuZWQuXSkKLSsgICAgZmkKLSsgICAgUEtHX0NIRUNLX01PRFVM RVMoUlBNLCBycG0sIFtIQVZFX0xJQlJQTT10cnVlXSwgW0hBVkVfTElCUlBNPWZhbHNlXSkKLSsK LSsgICAgaWYgJEhBVkVfTElCUlBNOyB0aGVuCi0rICAgICAgQ0hFQ0tfTElCUlBNX0NPTVBBVAot KyAgICAgIGlmICEgJExJQlJQTV9DT01QQVQ7IHRoZW4KLSsJSEFWRV9MSUJSUE09ZmFsc2UKLSsJ UlBNX1BLR19FUlJPUlM9IkZvdW5kICRMSUJSUE0gQVBJIGlzIGluY29tcGF0aWJpbGUgd2l0aCB0 aGlzIEdEQiIKLSsgICAgICBmaQotKyAgICBmaQotKwotKyAgICBpZiAkSEFWRV9MSUJSUE07IHRo ZW4KLSsgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJSUE0sIDEsIFtEZWZpbmUgaWYgbGlicnBtIGxp YnJhcnkgaXMgYmVpbmcgdXNlZC5dKQotKyAgICAgIENGTEFHUz0iJENGTEFHUyAkUlBNX0NGTEFH UyIKLSsgICAgICBMSUJTPSIkTElCUyAkUlBNX0xJQlMiCi0rICAgIGVsc2UKLSsgICAgICBpZiAk UlBNX1JFUVVJUkU7IHRoZW4KLSsJQUNfTVNHX0VSUk9SKCRSUE1fUEtHX0VSUk9SUykKLSsgICAg ICBlbHNlCi0rCUFDX01TR19XQVJOKCRSUE1fUEtHX0VSUk9SUykKLSsgICAgICBmaQotKyAgICBm aQotKyAgZmkKLStmaQotKwotIEFDX0NPTkZJR19TVUJESVJTKHRlc3RzdWl0ZSkKLSAKLSAjIENo ZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMK LWRpZmYgLS1naXQgYS9nZGIvZXZlbnQtdG9wLmMgYi9nZGIvZXZlbnQtdG9wLmMKLS0tLSBhL2dk Yi9ldmVudC10b3AuYwotKysrIGIvZ2RiL2V2ZW50LXRvcC5jCi1AQCAtNDMsNiArNDMsNyBAQAot ICNpbmNsdWRlICJhc3luYy1ldmVudC5oIgotICNpbmNsdWRlICJidC11dGlscy5oIgotICNpbmNs dWRlICJwYWdlci5oIgotKyNpbmNsdWRlICJzeW1maWxlLmgiCi0gCi0gLyogcmVhZGxpbmUgaW5j bHVkZSBmaWxlcy4gICovCi0gI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi1AQCAtNDA0 LDYgKzQwNSw4IEBAIGRpc3BsYXlfZ2RiX3Byb21wdCAoY29uc3QgY2hhciAqbmV3X3Byb21wdCkK LSAgIC8qIFJlc2V0IHRoZSBuZXN0aW5nIGRlcHRoIHVzZWQgd2hlbiB0cmFjZS1jb21tYW5kcyBp cyBzZXQuICAqLwotICAgcmVzZXRfY29tbWFuZF9uZXN0X2RlcHRoICgpOwotIAotKyAgZGVidWdf Zmx1c2hfbWlzc2luZyAoKTsKLSsKLSAgIC8qIERvIG5vdCBjYWxsIHRoZSBweXRob24gaG9vayBv biBhbiBleHBsaWNpdCBwcm9tcHQgY2hhbmdlIGFzCi0gICAgICBwYXNzZWQgdG8gdGhpcyBmdW5j dGlvbiwgYXMgdGhpcyBmb3JtcyBhIHNlY29uZGFyeS9sb2NhbCBwcm9tcHQsCi0gICAgICBJRSwg ZGlzcGxheWVkIGJ1dCBub3Qgc2V0LiAgKi8KLUBAIC03ODgsNyArNzkxLDEwIEBAIGNvbW1hbmRf bGluZV9oYW5kbGVyIChnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiAmJnJsKQotICAgICAg IGNvbW1hbmRfaGFuZGxlciAoY21kKTsKLSAKLSAgICAgICBpZiAodWktPnByb21wdF9zdGF0ZSAh PSBQUk9NUFRFRCkKLS0JZGlzcGxheV9nZGJfcHJvbXB0ICgwKTsKLSsJewotKwkgIGRlYnVnX2Zs dXNoX21pc3NpbmcgKCk7Ci0rCSAgZGlzcGxheV9nZGJfcHJvbXB0ICgwKTsKLSsJfQotICAgICB9 Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3ltZmlsZS5oCi0tLS0g YS9nZGIvc3ltZmlsZS5oCi0rKysgYi9nZGIvc3ltZmlsZS5oCi1AQCAtMzY2LDYgKzM2Niw3IEBA IGV4dGVybiB2b2lkIGdlbmVyaWNfbG9hZCAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5 KTsKLSAvKiBidWlsZC1pZCBzdXBwb3J0LiAgKi8KLSBleHRlcm4gc3RydWN0IGJmZF9idWlsZF9p ZCAqYnVpbGRfaWRfYWRkcl9nZXQgKENPUkVfQUREUiBhZGRyKTsKLSBleHRlcm4gdm9pZCBkZWJ1 Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmRlYnVnKTsK LStleHRlcm4gdm9pZCBkZWJ1Z19mbHVzaF9taXNzaW5nICh2b2lkKTsKLSAjZGVmaW5lIEJVSUxE X0lEX01BSU5fRVhFQ1VUQUJMRV9GSUxFTkFNRSBfKCJ0aGUgbWFpbiBleGVjdXRhYmxlIGZpbGUi KQotIAotIC8qIEZyb20gbWluaWRlYnVnLmMuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVp bGRpZC1sb2NhdGUtc29saWItbWlzc2luZy1pZHMucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9j YXRlLXNvbGliLW1pc3NpbmctaWRzLnBhdGNoCmluZGV4IGU5ZWM3YjUuLjU4NDdjMmUgMTAwNjQ0 Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtc29saWItbWlzc2luZy1pZHMucGF0Y2gKKysr IGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1zb2xpYi1taXNzaW5nLWlkcy5wYXRjaApAQCAtMTMw LDcgKzEzMCw3IEBAIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLWJ1 aWxkaWQtZXhlYy1idXQtbm90LXNvbGliLmV4cCBiL2dkYi90CiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1idWls ZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYi5leHAKLUBAIC0wLDAgKzEsMTA1IEBACitAQCAtMCwwICsx LDEwNCBAQAogKyMgQ29weXJpZ2h0IDIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMTQ2LDkgKzE0Niw3IEBAIG5ldyBmaWxlIG1vZGUgMTAw NjQ0CiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0raWYge1tza2lwX3NobGliX3Rl c3RzXX0gewotKyAgICByZXR1cm4gMAotK30KKytyZXF1aXJlIGFsbG93X3NobGliX3Rlc3RzCiAr CiArc2V0IHRlc3RmaWxlICJnY29yZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYiIKICtzZXQg c3JjbWFpbmZpbGUgJHt0ZXN0ZmlsZX0tbWFpbi5jCkBAIC0yMjYsNyArMjI0LDggQEAgbmV3IGZp bGUgbW9kZSAxMDA2NDQKICtyZW1vdGVfZXhlYyBidWlsZCAibG4gLXMgL2xpYjY0ICAgICAke2Rl YnVnZGlyfS8iCiArIyAvdXNyIGlzIG5vdCBuZWVkZWQsIGFsbCB0aGUgbGlicyBhcmUgaW4gL2xp YjY0OiBsaWJtLnNvLjYgbGliYy5zby42IGxkLWxpbnV4LXg4Ni02NC5zby4yCiArCi0rZ2RiX3Rl c3QgInNldCBzb2xpYi1hYnNvbHV0ZS1wcmVmaXggJGRlYnVnZGlyIgorK2dkYl90ZXN0X25vX291 dHB1dCAic2V0IHNvbGliLWFic29sdXRlLXByZWZpeCAkZGVidWdkaXIiIFwKKysgICAgInNldCBz b2xpYi1hYnNvbHV0ZS1wcmVmaXgiCiArCiArZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgZGVidWct ZmlsZS1kaXJlY3RvcnkgJGRlYnVnZGlyIiAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IgogKwoK ZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2ggYi9nZGItNi42LWJ1aWxk aWQtbG9jYXRlLnBhdGNoCmluZGV4IDgzM2ViNzAuLmM0ZTZmZjkgMTAwNjQ0Ci0tLSBhL2dkYi02 LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRj aApAQCAtNTUzLDEzICs1NTMsMTMgQEAgZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5jIGIvZ2Ri L2J1aWxkLWlkLmMKICsKICsgICAgICAvKiBXZSBleHBlY3QgdG8gYmUgc2lsZW50IG9uIHRoZSBu b24tZXhpc3RpbmcgZmlsZXMuICAqLwogKyAgICAgIGdkYl9iZmRfcmVmX3B0ciBkZWJ1Z19iZmQg PSBnZGJfYmZkX29wZW4gKGZpbGVuYW1lLCBnbnV0YXJnZXQpOwotKworIAorLSAgICAgIHJldHVy biB7fTsKICsgICAgICBpZiAoZGVidWdfYmZkID09IE5VTEwpCiArCXsKICsJICBpZiAoc2VwYXJh dGVfZGVidWdfZmlsZV9kZWJ1ZykKICsJICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csIF8oIiBu bywgdW5hYmxlIHRvIG9wZW4uXG4iKSk7Ci0gCi0tICAgICAgcmV0dXJuIHt9OworKwogKwkgIGNv bnRpbnVlOwogKwl9CiArCkBAIC01ODMsNiArNTgzLDggQEAgZGlmZiAtLWdpdCBhL2dkYi9idWls ZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICAgICAgewogICAgICAgIGlmIChzZXBhcmF0ZV9kZWJ1 Z19maWxlX2RlYnVnKQogLQlnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCBfKCIgbm8sIGJ1aWxkLWlk IGRvZXMgbm90IG1hdGNoLlxuIikpOworLQorLSAgICAgIHJldHVybiB7fTsKICsJZ2RiX3ByaW50 ZiAoZ2RiX3N0ZGxvZywgXygiIHllcyFcbiIpKTsKICsgICAgfQogKyAgZWxzZQpAQCAtNTkwLDgg KzU5Miw3IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiAr ICAgICAgLyogSWYgbm9uZSBvZiB0aGUgcmVhbCBmaWxlcyBpcyBmb3VuZCByZXBvcnQgYXMgbWlz c2luZyBmaWxlCiArCSBhbHdheXMgdGhlIG5vbi0uJXUtc3VmZml4ZWQgZmlsZS4gICovCiArICAg ICAgc3RkOjpzdHJpbmcgbGluazAgPSBvcmlnX2xpbms7Ci0gCi0tICAgICAgcmV0dXJuIHt9Owor KwogKyAgICAgIC8qIElmIHRoZSBzeW1saW5rIGhhcyB0YXJnZXQgcmVxdWVzdCB0byBpbnN0YWxs IHRoZSB0YXJnZXQuCiArCSBCQVNFLWRlYnVnaW5mby5ycG0gY29udGFpbnMgdGhlIHN5bWxpbmsg YnV0IEJBU0UucnBtIG1heSBiZSBtaXNzaW5nLgogKwkgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQu Y29tL3Nob3dfYnVnLmNnaT9pZD05ODExNTQgICovCkBAIC02NjUsNyArNjY2LDcgQEAgZGlmZiAt LWdpdCBhL2dkYi9idWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICAJICBpZiAoZGVidWdfYmZk ICE9IE5VTEwpCiAgCSAgICByZXR1cm4gZGVidWdfYmZkOwogIAl9Ci1AQCAtMTkwLDMwICs2OTQs NjYyIEBAIGJ1aWxkX2lkX3RvX2JmZF9zdWZmaXggKHNpemVfdCBidWlsZF9pZF9sZW4sIGNvbnN0 IGJmZF9ieXRlICpidWlsZF9pZCwKK0BAIC0xOTAsMjAgKzY5NCwxNzggQEAgYnVpbGRfaWRfdG9f YmZkX3N1ZmZpeCAoc2l6ZV90IGJ1aWxkX2lkX2xlbiwgY29uc3QgYmZkX2J5dGUgKmJ1aWxkX2lk LAogICAgcmV0dXJuIHt9OwogIH0KICAKQEAgLTY4Myw0NDYgKzY4NCw2IEBAIGRpZmYgLS1naXQg YS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiArICByZXR1cm4gcmVzdWx0OwogK30K ICsKLSt2b2lkIGRlYnVnX2ZsdXNoX21pc3NpbmcgKHZvaWQpOwotKwotKyNpZmRlZiBIQVZFX0xJ QlJQTQotKwotKyNpbmNsdWRlIDxycG0vcnBtbGliLmg+Ci0rI2luY2x1ZGUgPHJwbS9ycG10cy5o PgotKyNpbmNsdWRlIDxycG0vcnBtZGIuaD4KLSsjaW5jbHVkZSA8cnBtL2hlYWRlci5oPgotKyNp ZmRlZiBETE9QRU5fTElCUlBNCi0rI2luY2x1ZGUgPGRsZmNuLmg+Ci0rI2VuZGlmCi0rCi0rLyog V29ya2Fyb2R1biBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTY0 MzAzMQotKyAgIGxpYnJwbSBtdXN0IG5vdCBleGl0KCkgYW4gYXBwbGljYXRpb24gb24gU0lHSU5U Ci0rCi0rICAgRW5hYmxlIG9yIGRpc2FibGUgYSBzaWduYWwgaGFuZGxlci4gIFNJR05VTTogc2ln bmFsIHRvIGVuYWJsZSAob3IgZGlzYWJsZQotKyAgIGlmIG5lZ2F0aXZlKS4gIEhBTkRMRVI6IHNh X3NpZ2FjdGlvbiBoYW5kbGVyIChvciBOVUxMIHRvIHVzZQotKyAgIHJwbXNxSGFuZGxlcigpKS4g IFJldHVybnM6IG5vLiBvZiByZWZzLCAtMSBvbiBlcnJvci4gICovCi0rZXh0ZXJuIGludCBycG1z cUVuYWJsZSAoaW50IHNpZ251bSwgLyogcnBtc3FBY3Rpb25fdCBoYW5kbGVyICovIHZvaWQgKmhh bmRsZXIpOwotK2ludAotK3JwbXNxRW5hYmxlIChpbnQgc2lnbnVtLCAvKiBycG1zcUFjdGlvbl90 IGhhbmRsZXIgKi8gdm9pZCAqaGFuZGxlcikKLSt7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyog VGhpcyBNSVNTSU5HX1JQTV9IQVNIIHRyYWNrZXIgaXMgdXNlZCB0byBjb2xsZWN0IGFsbCB0aGUg bWlzc2luZyBycG0gZmlsZXMKLSsgICBhbmQgYXZvaWQgdGhlaXIgZHVwbGljaXRpZXMgZHVyaW5n IGEgc2luZ2xlIGluZmVyaW9yIHJ1bi4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBodGFiICptaXNz aW5nX3JwbV9oYXNoOwotKwotKy8qIFRoaXMgTUlTU0lOR19SUE1fTElTVCB0cmFja2VyIGlzIHVz ZWQgdG8gY29sbGVjdCBhbmQgcHJpbnQgYXMgYSBzaW5nbGUgbGluZQotKyAgIGFsbCB0aGUgcnBt cyByaWdodCBiZWZvcmUgdGhlIG5lYXJlc3QgR0RCIHByb21wdC4gIEl0IGdldHMgY2xlYXJlZCBh ZnRlcgotKyAgIGVhY2ggc3VjaCBwcmludCAoaXQgaXMgcXVlc3Rpb25hYmxlIGlmIHdlIHNob3Vs ZCBjbGVhciBpdCBhZnRlciB0aGUgcHJpbnQpLgotKyAgICovCi0rCi0rc3RydWN0IG1pc3Npbmdf cnBtCi0rICB7Ci0rICAgIHN0cnVjdCBtaXNzaW5nX3JwbSAqbmV4dDsKLSsgICAgY2hhciBycG1b MV07Ci0rICB9OwotK3N0YXRpYyBzdHJ1Y3QgbWlzc2luZ19ycG0gKm1pc3NpbmdfcnBtX2xpc3Q7 Ci0rc3RhdGljIGludCBtaXNzaW5nX3JwbV9saXN0X2VudHJpZXM7Ci0rCi0rLyogUmV0dXJucyB0 aGUgY291bnQgb2YgbmV3bHkgYWRkZWQgcnBtcy4gICovCi0rCi0rc3RhdGljIGludAotKyNpZm5k ZWYgR0RCX0lOREVYX1ZFUklGWV9WRU5ET1IKLSttaXNzaW5nX3JwbV9lbmxpc3QgKGNvbnN0IGNo YXIgKmZpbGVuYW1lKQotKyNlbHNlCi0rbWlzc2luZ19ycG1fZW5saXN0XzEgKGNvbnN0IGNoYXIg KmZpbGVuYW1lLCBpbnQgdmVyaWZ5X3ZlbmRvcikKLSsjZW5kaWYKLSt7Ci0rICBzdGF0aWMgaW50 IHJwbV9pbml0X2RvbmUgPSAwOwotKyAgcnBtdHMgdHM7Ci0rICBycG1kYk1hdGNoSXRlcmF0b3Ig bWk7Ci0rICBpbnQgY291bnQgPSAwOwotKwotKyNpZmRlZiBETE9QRU5fTElCUlBNCi0rICAvKiBE dXBsaWNhdGUgaGVyZSB0aGUgZGVjbGFyYXRpb25zIHRvIHZlcmlmeSB0aGV5IG1hdGNoLiAgVGhl IHNhbWUgc2FuaXR5Ci0rICAgICBjaGVjayBpcyBwcmVzZW50IGFsc28gaW4gYGNvbmZpZ3VyZS5h YycuICAqLwotKyAgZXh0ZXJuIGNoYXIgKiBoZWFkZXJGb3JtYXQoSGVhZGVyIGgsIGNvbnN0IGNo YXIgKiBmbXQsIGVycm1zZ190ICogZXJybXNnKTsKLSsgIHN0YXRpYyBjaGFyICooKmhlYWRlckZv cm1hdF9wKSAoSGVhZGVyIGgsIGNvbnN0IGNoYXIgKiBmbXQsIGVycm1zZ190ICplcnJtc2cpOwot KyAgZXh0ZXJuIGludCBycG1SZWFkQ29uZmlnRmlsZXMoY29uc3QgY2hhciAqIGZpbGUsIGNvbnN0 IGNoYXIgKiB0YXJnZXQpOwotKyAgc3RhdGljIGludCAoKnJwbVJlYWRDb25maWdGaWxlc19wKSAo Y29uc3QgY2hhciAqIGZpbGUsIGNvbnN0IGNoYXIgKiB0YXJnZXQpOwotKyAgZXh0ZXJuIHJwbWRi TWF0Y2hJdGVyYXRvciBycG1kYkZyZWVJdGVyYXRvcihycG1kYk1hdGNoSXRlcmF0b3IgbWkpOwot KyAgc3RhdGljIHJwbWRiTWF0Y2hJdGVyYXRvciAoKnJwbWRiRnJlZUl0ZXJhdG9yX3ApIChycG1k Yk1hdGNoSXRlcmF0b3IgbWkpOwotKyAgZXh0ZXJuIEhlYWRlciBycG1kYk5leHRJdGVyYXRvcihy cG1kYk1hdGNoSXRlcmF0b3IgbWkpOwotKyAgc3RhdGljIEhlYWRlciAoKnJwbWRiTmV4dEl0ZXJh dG9yX3ApIChycG1kYk1hdGNoSXRlcmF0b3IgbWkpOwotKyAgZXh0ZXJuIHJwbXRzIHJwbXRzQ3Jl YXRlKHZvaWQpOwotKyAgc3RhdGljIHJwbXRzICgqcnBtdHNDcmVhdGVfcCkgKHZvaWQpOwotKyAg ZXh0ZXJuIHJwbXRzIHJwbXRzRnJlZShycG10cyB0cyk7Ci0rICBzdGF0aWMgcnBtdHMgKCpycG10 c0ZyZWVfcCkgKHJwbXRzIHRzKTsKLSsgIGV4dGVybiBycG1kYk1hdGNoSXRlcmF0b3IgcnBtdHNJ bml0SXRlcmF0b3IoY29uc3QgcnBtdHMgdHMsIHJwbVRhZyBycG10YWcsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKiBrZXlwLCBzaXpl X3Qga2V5bGVuKTsKLSsgIHN0YXRpYyBycG1kYk1hdGNoSXRlcmF0b3IgKCpycG10c0luaXRJdGVy YXRvcl9wKSAoY29uc3QgcnBtdHMgdHMsCi0rCQkJCQkJICAgIHJwbVRhZyBycG10YWcsCi0rCQkJ CQkJICAgIGNvbnN0IHZvaWQgKmtleXAsCi0rCQkJCQkJICAgIHNpemVfdCBrZXlsZW4pOwotKyNl bHNlCS8qICFETE9QRU5fTElCUlBNICovCi0rIyBkZWZpbmUgaGVhZGVyRm9ybWF0X3AgaGVhZGVy Rm9ybWF0Ci0rIyBkZWZpbmUgcnBtUmVhZENvbmZpZ0ZpbGVzX3AgcnBtUmVhZENvbmZpZ0ZpbGVz Ci0rIyBkZWZpbmUgcnBtZGJGcmVlSXRlcmF0b3JfcCBycG1kYkZyZWVJdGVyYXRvcgotKyMgZGVm aW5lIHJwbWRiTmV4dEl0ZXJhdG9yX3AgcnBtZGJOZXh0SXRlcmF0b3IKLSsjIGRlZmluZSBycG10 c0NyZWF0ZV9wIHJwbXRzQ3JlYXRlCi0rIyBkZWZpbmUgcnBtdHNGcmVlX3AgcnBtdHNGcmVlCi0r IyBkZWZpbmUgcnBtdHNJbml0SXRlcmF0b3JfcCBycG10c0luaXRJdGVyYXRvcgotKyNlbmRpZgkv KiAhRExPUEVOX0xJQlJQTSAqLwotKwotKyAgZ2RiX2Fzc2VydCAoZmlsZW5hbWUgIT0gTlVMTCk7 Ci0rCi0rICBpZiAoc3RyY21wIChmaWxlbmFtZSwgQlVJTERfSURfTUFJTl9FWEVDVVRBQkxFX0ZJ TEVOQU1FKSA9PSAwKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChpc190YXJnZXRfZmlsZW5h bWUgKGZpbGVuYW1lKSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpZiAoZmlsZW5hbWVbMF0gIT0g Jy8nKQotKyAgICB7Ci0rICAgICAgd2FybmluZyAoXygiSWdub3Jpbmcgbm9uLWFic29sdXRlIGZp bGVuYW1lOiA8JXM+IiksIGZpbGVuYW1lKTsKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwot KyAgaWYgKCFycG1faW5pdF9kb25lKQotKyAgICB7Ci0rICAgICAgc3RhdGljIGludCBpbml0X3Ry aWVkOwotKwotKyAgICAgIC8qIEFscmVhZHkgZmFpbGVkIHRoZSBpbml0aWFsaXphdGlvbiBiZWZv cmU/ICAqLwotKyAgICAgIGlmIChpbml0X3RyaWVkKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAg ICAgaW5pdF90cmllZCA9IDE7Ci0rCi0rI2lmZGVmIERMT1BFTl9MSUJSUE0KLSsgICAgICB7Ci0r CXZvaWQgKmg7Ci0rCi0rCWggPSBkbG9wZW4gKERMT1BFTl9MSUJSUE0sIFJUTERfTEFaWSk7Ci0r CWlmICghaCkKLSsJICB7Ci0rCSAgICB3YXJuaW5nIChfKCJVbmFibGUgdG8gb3BlbiBcIiVzXCIg KCVzKSwgIgotKwkJICAgICAgIm1pc3NpbmcgZGVidWdpbmZvcyBub3RpZmljYXRpb25zIHdpbGwg bm90IGJlIGRpc3BsYXllZCIpLAotKwkJICAgICBETE9QRU5fTElCUlBNLCBkbGVycm9yICgpKTsK LSsJICAgIHJldHVybiAwOwotKwkgIH0KLSsKLSsJaWYgKCEoKGhlYWRlckZvcm1hdF9wID0gKGNo YXIgKigqKSAoSGVhZGVyIGgsIGNvbnN0IGNoYXIgKiBmbXQsIGVycm1zZ190ICplcnJtc2cpKSBk bHN5bSAoaCwgImhlYWRlckZvcm1hdCIpKQotKwkgICAgICAmJiAocnBtUmVhZENvbmZpZ0ZpbGVz X3AgPSAoaW50ICgqKSAoY29uc3QgY2hhciAqIGZpbGUsIGNvbnN0IGNoYXIgKiB0YXJnZXQpKSBk bHN5bSAoaCwgInJwbVJlYWRDb25maWdGaWxlcyIpKQotKwkgICAgICAmJiAocnBtZGJGcmVlSXRl cmF0b3JfcCA9IChycG1kYk1hdGNoSXRlcmF0b3IgKCopIChycG1kYk1hdGNoSXRlcmF0b3IgbWkp KSBkbHN5bSAoaCwgInJwbWRiRnJlZUl0ZXJhdG9yIikpCi0rCSAgICAgICYmIChycG1kYk5leHRJ dGVyYXRvcl9wID0gKEhlYWRlciAoKikgKHJwbWRiTWF0Y2hJdGVyYXRvciBtaSkpIGRsc3ltICho LCAicnBtZGJOZXh0SXRlcmF0b3IiKSkKLSsJICAgICAgJiYgKHJwbXRzQ3JlYXRlX3AgPSAocnBt dHMgKCopICh2b2lkKSkgZGxzeW0gKGgsICJycG10c0NyZWF0ZSIpKQotKwkgICAgICAmJiAocnBt dHNGcmVlX3AgPSAocnBtdHMgKCopIChycG10cyB0cykpIGRsc3ltIChoLCAicnBtdHNGcmVlIikp Ci0rCSAgICAgICYmIChycG10c0luaXRJdGVyYXRvcl9wID0gKHJwbWRiTWF0Y2hJdGVyYXRvciAo KikgKGNvbnN0IHJwbXRzIHRzLCBycG1UYWcgcnBtdGFnLCBjb25zdCB2b2lkICprZXlwLCBzaXpl X3Qga2V5bGVuKSkgZGxzeW0gKGgsICJycG10c0luaXRJdGVyYXRvciIpKSkpCi0rCSAgewotKwkg ICAgd2FybmluZyAoXygiT3BlbmVkIGxpYnJhcnkgXCIlc1wiIGlzIGluY29tcGF0aWJsZSAoJXMp LCAiCi0rCQkgICAgICAibWlzc2luZyBkZWJ1Z2luZm9zIG5vdGlmaWNhdGlvbnMgd2lsbCBub3Qg YmUgZGlzcGxheWVkIiksCi0rCQkgICAgIERMT1BFTl9MSUJSUE0sIGRsZXJyb3IgKCkpOwotKwkg ICAgaWYgKGRsY2xvc2UgKGgpKQotKwkgICAgICB3YXJuaW5nIChfKCJFcnJvciBjbG9zaW5nIGxp YnJhcnkgXCIlc1wiOiAlc1xuIiksIERMT1BFTl9MSUJSUE0sCi0rCQkgICAgICAgZGxlcnJvciAo KSk7Ci0rCSAgICByZXR1cm4gMDsKLSsJICB9Ci0rICAgICAgfQotKyNlbmRpZgkvKiBETE9QRU5f TElCUlBNICovCi0rCi0rICAgICAgaWYgKHJwbVJlYWRDb25maWdGaWxlc19wIChOVUxMLCBOVUxM KSAhPSAwKQotKwl7Ci0rCSAgd2FybmluZyAoXygiRXJyb3IgcmVhZGluZyB0aGUgcnBtIGNvbmZp Z3VyYXRpb24gZmlsZXMiKSk7Ci0rCSAgcmV0dXJuIDA7Ci0rCX0KLSsKLSsgICAgICBycG1faW5p dF9kb25lID0gMTsKLSsgICAgfQotKwotKyAgdHMgPSBycG10c0NyZWF0ZV9wICgpOwotKwotKyAg bWkgPSBycG10c0luaXRJdGVyYXRvcl9wICh0cywgUlBNVEFHX0JBU0VOQU1FUywgZmlsZW5hbWUs IDApOwotKyAgaWYgKG1pICE9IE5VTEwpCi0rICAgIHsKLSsjaWZuZGVmIEdEQl9JTkRFWF9WRVJJ RllfVkVORE9SCi0rICAgICAgZm9yICg7OykKLSsjZWxzZQotKyAgICAgIGlmICghdmVyaWZ5X3Zl bmRvcikgZm9yICg7OykKLSsjZW5kaWYKLSsJewotKwkgIEhlYWRlciBoOwotKwkgIGNoYXIgKmRl YnVnaW5mbywgKipzbG90LCAqcywgKnMyOwotKwkgIGVycm1zZ190IGVycjsKLSsJICBzaXplX3Qg c3JjcnBtbGVuID0gc2l6ZW9mICgiLnNyYy5ycG0iKSAtIDE7Ci0rCSAgc2l6ZV90IGRlYnVnaW5m b2xlbiA9IHNpemVvZiAoIi1kZWJ1Z2luZm8iKSAtIDE7Ci0rCSAgcnBtZGJNYXRjaEl0ZXJhdG9y IG1pX2RlYnVnaW5mbzsKLSsKLSsJICBoID0gcnBtZGJOZXh0SXRlcmF0b3JfcCAobWkpOwotKwkg IGlmIChoID09IE5VTEwpCi0rCSAgICBicmVhazsKLSsKLSsJICAvKiBWZXJpZnkgdGhlIGRlYnVn aW5mbyBmaWxlIGlzIG5vdCBhbHJlYWR5IGluc3RhbGxlZC4gICovCi0rCi0rCSAgZGVidWdpbmZv ID0gaGVhZGVyRm9ybWF0X3AgKGgsICIle3NvdXJjZXJwbX0tZGVidWdpbmZvLiV7YXJjaH0iLAot KwkJCQkgICAgICAmZXJyKTsKLSsJICBpZiAoIWRlYnVnaW5mbykKLSsJICAgIHsKLSsJICAgICAg d2FybmluZyAoXygiRXJyb3IgcXVlcnlpbmcgdGhlIHJwbSBmaWxlIGAlcyc6ICVzIiksIGZpbGVu YW1lLAotKwkgICAgICAgICAgICAgICBlcnIpOwotKwkgICAgICBjb250aW51ZTsKLSsJICAgIH0K LSsJICAvKiBzID0gYC5zcmMucnBtLWRlYnVnaW5mby4le2FyY2h9JyAqLwotKwkgIHMgPSBzdHJy Y2hyIChkZWJ1Z2luZm8sICctJykgLSBzcmNycG1sZW47Ci0rCSAgczIgPSBOVUxMOwotKwkgIGlm IChzID4gZGVidWdpbmZvICYmIG1lbWNtcCAocywgIi5zcmMucnBtIiwgc3JjcnBtbGVuKSA9PSAw KQotKwkgICAgewotKwkgICAgICAvKiBzMiA9IGAtJXtyZWxlYXNlfS5zcmMucnBtLWRlYnVnaW5m by4le2FyY2h9JyAqLwotKwkgICAgICBzMiA9IChjaGFyICopIG1lbXJjaHIgKGRlYnVnaW5mbywg Jy0nLCBzIC0gZGVidWdpbmZvKTsKLSsJICAgIH0KLSsJICBpZiAoczIpCi0rCSAgICB7Ci0rCSAg ICAgIC8qIHMyID0gYC0le3ZlcnNpb259LSV7cmVsZWFzZX0uc3JjLnJwbS1kZWJ1Z2luZm8uJXth cmNofScgKi8KLSsJICAgICAgczIgPSAoY2hhciAqKSBtZW1yY2hyIChkZWJ1Z2luZm8sICctJywg czIgLSBkZWJ1Z2luZm8pOwotKwkgICAgfQotKwkgIGlmICghczIpCi0rCSAgICB7Ci0rCSAgICAg IHdhcm5pbmcgKF8oIkVycm9yIHF1ZXJ5aW5nIHRoZSBycG0gZmlsZSBgJXMnOiAlcyIpLCBmaWxl bmFtZSwKLSsJICAgICAgICAgICAgICAgZGVidWdpbmZvKTsKLSsJICAgICAgeGZyZWUgKGRlYnVn aW5mbyk7Ci0rCSAgICAgIGNvbnRpbnVlOwotKwkgICAgfQotKwkgIC8qIHMgPSBgLnNyYy5ycG0t ZGVidWdpbmZvLiV7YXJjaH0nICovCi0rCSAgLyogczIgPSBgLSV7dmVyc2lvbn0tJXtyZWxlYXNl fS5zcmMucnBtLWRlYnVnaW5mby4le2FyY2h9JyAqLwotKwkgIG1lbW1vdmUgKHMyICsgZGVidWdp bmZvbGVuLCBzMiwgcyAtIHMyKTsKLSsJICBtZW1jcHkgKHMyLCAiLWRlYnVnaW5mbyIsIGRlYnVn aW5mb2xlbik7Ci0rCSAgLyogcyA9IGBYWFhYLiV7YXJjaH0nICovCi0rCSAgLyogc3RybGVuICgi WFhYWCIpID09IHNyY3JwbWxlbiArIGRlYnVnaW5mb2xlbiAqLwotKwkgIC8qIHMyID0gYC1kZWJ1 Z2luZm8tJXt2ZXJzaW9ufS0le3JlbGVhc2V9WFguJXthcmNofScgKi8KLSsJICAvKiBzdHJsZW4g KCJYWCIpID09IHNyY3JwbWxlbiAqLwotKwkgIG1lbW1vdmUgKHMgKyBkZWJ1Z2luZm9sZW4sIHMg KyBzcmNycG1sZW4gKyBkZWJ1Z2luZm9sZW4sCi0rCQkgICBzdHJsZW4gKHMgKyBzcmNycG1sZW4g KyBkZWJ1Z2luZm9sZW4pICsgMSk7Ci0rCSAgLyogcyA9IGAtZGVidWdpbmZvLSV7dmVyc2lvbn0t JXtyZWxlYXNlfS4le2FyY2h9JyAqLwotKwotKwkgIC8qIFJQTURCSV9QQUNLQUdFUyByZXF1aXJl cyBrZXlsZW4gPT0gc2l6ZW9mIChpbnQpLiAgKi8KLSsJICAvKiBSUE1EQklfTEFCRUwgaXMgYW4g aW50ZXJmYWNlIGZvciBOVlItYmFzZWQgZGJpRmluZEJ5TGFiZWwoKS4gICovCi0rCSAgbWlfZGVi dWdpbmZvID0gcnBtdHNJbml0SXRlcmF0b3JfcCAodHMsIChycG1UYWcpIFJQTURCSV9MQUJFTCwg ZGVidWdpbmZvLCAwKTsKLSsJICB4ZnJlZSAoZGVidWdpbmZvKTsKLSsJICBpZiAobWlfZGVidWdp bmZvKQotKwkgICAgewotKwkgICAgICBycG1kYkZyZWVJdGVyYXRvcl9wIChtaV9kZWJ1Z2luZm8p OwotKwkgICAgICBjb3VudCA9IDA7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwotKwkgIC8q IFRoZSBhbGxvY2F0ZWQgbWVtb3J5IGdldHMgdXRpbGl6ZWQgYmVsb3cgZm9yIE1JU1NJTkdfUlBN X0hBU0guICAqLwotKwkgIGRlYnVnaW5mbyA9IGhlYWRlckZvcm1hdF9wIChoLAotKwkJCQkgICAg ICAiJXtuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFzZX0uJXthcmNofSIsCi0rCQkJCSAgICAgICZl cnIpOwotKwkgIGlmICghZGVidWdpbmZvKQotKwkgICAgewotKwkgICAgICB3YXJuaW5nIChfKCJF cnJvciBxdWVyeWluZyB0aGUgcnBtIGZpbGUgYCVzJzogJXMiKSwgZmlsZW5hbWUsCi0rCSAgICAg ICAgICAgICAgIGVycik7Ci0rCSAgICAgIGNvbnRpbnVlOwotKwkgICAgfQotKwotKwkgIC8qIEJh c2UgcGFja2FnZSBuYW1lIGZvciBgZGVidWdpbmZvLWluc3RhbGwnLiAgV2UgZG8gbm90IHVzZSB0 aGUKLSsJICAgICBgeXVtJyBjb21tYW5kIGRpcmVjdGx5IGFzIHRoZSBsaW5lCi0rCQkgeXVtIC0t ZW5hYmxlcmVwbz0nKmRlYnVnKicgaW5zdGFsbCBOQU1FLWRlYnVnaW5mby5BUkNICi0rCSAgICAg d291bGQgYmUgbW9yZSBjb21wbGljYXRlZCB0aGFuIGp1c3Q6Ci0rCQkgZGVidWdpbmZvLWluc3Rh bGwgTkFNRS1WRVJTSU9OLVJFTEVBU0UuQVJDSAotKwkgICAgIERvIG5vdCBzdXBwbHkgdGhlIHJw bSBiYXNlIG5hbWUgKGRlcml2ZWQgZnJvbSAuc3JjLnJwbSBuYW1lKSBhcwotKwkgICAgIGRlYnVn aW5mby1pbnN0YWxsIGlzIHVuYWJsZSB0byBpbnN0YWxsIHRoZSBkZWJ1Z2luZm8gcGFja2FnZSBp ZgotKwkgICAgIHRoZSBiYXNlIG5hbWUgUEtHIGJpbmFyeSBycG0gaXMgbm90IGluc3RhbGxlZCB3 aGlsZSBmb3IgZXhhbXBsZQotKwkgICAgIFBLRy1saWJzIHdvdWxkIGJlIGluc3RhbGxlZCAoUkgg QnVnIDQ2NzkwMSkuCi0rCSAgICAgRlVUVVJFOiBBZnRlciBtdWx0aXBsZSBkZWJ1Z2luZm8gdmVy c2lvbnMgc2ltdWx0YW5lb3VzbHkgaW5zdGFsbGVkCi0rCSAgICAgZ2V0IHN1cHBvcnRlZCB0aGUg c3VwcG9ydCBmb3IgdGhlIFZFUlNJT04tUkVMRUFTRSB0YWdzIGhhbmRsaW5nCi0rCSAgICAgbWF5 IG5lZWQgYW4gdXBkYXRlLiAgKi8KLSsKLSsJICBpZiAobWlzc2luZ19ycG1faGFzaCA9PSBOVUxM KQotKwkgICAgewotKwkgICAgICAvKiBERUxfRiBpcyBwYXNzZWQgTlVMTCBhcyBNSVNTSU5HX1JQ TV9MSVNUJ3MgSFRBQl9ERUxFVEUKLSsJCSBzaG91bGQgbm90IGRlYWxsb2NhdGUgdGhlIGVudHJp ZXMuICAqLwotKwotKwkgICAgICBtaXNzaW5nX3JwbV9oYXNoID0gaHRhYl9jcmVhdGVfYWxsb2Mg KDY0LCBodGFiX2hhc2hfc3RyaW5nLAotKwkJCSAgICAgICAoaW50ICgqKSAoY29uc3Qgdm9pZCAq LCBjb25zdCB2b2lkICopKSBzdHJlcSwKLSsJCQkJCQkgICAgTlVMTCwgeGNhbGxvYywgeGZyZWUp OwotKwkgICAgfQotKwkgIHNsb3QgPSAoY2hhciAqKikgaHRhYl9maW5kX3Nsb3QgKG1pc3Npbmdf cnBtX2hhc2gsIGRlYnVnaW5mbywgSU5TRVJUKTsKLSsJICAvKiBYQ0FMTE9DIG5ldmVyIHJldHVy bnMgTlVMTC4gICovCi0rCSAgZ2RiX2Fzc2VydCAoc2xvdCAhPSBOVUxMKTsKLSsJICBpZiAoKnNs b3QgPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgc3RydWN0IG1pc3NpbmdfcnBtICptaXNzaW5n X3JwbTsKLSsKLSsJICAgICAgKnNsb3QgPSBkZWJ1Z2luZm87Ci0rCi0rCSAgICAgIG1pc3Npbmdf cnBtID0gKHN0cnVjdCBtaXNzaW5nX3JwbSAqKSB4bWFsbG9jIChzaXplb2YgKCptaXNzaW5nX3Jw bSkgKyBzdHJsZW4gKGRlYnVnaW5mbykpOwotKwkgICAgICBzdHJjcHkgKG1pc3NpbmdfcnBtLT5y cG0sIGRlYnVnaW5mbyk7Ci0rCSAgICAgIG1pc3NpbmdfcnBtLT5uZXh0ID0gbWlzc2luZ19ycG1f bGlzdDsKLSsJICAgICAgbWlzc2luZ19ycG1fbGlzdCA9IG1pc3NpbmdfcnBtOwotKwkgICAgICBt aXNzaW5nX3JwbV9saXN0X2VudHJpZXMrKzsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICB4ZnJl ZSAoZGVidWdpbmZvKTsKLSsJICBjb3VudCsrOwotKwl9Ci0rI2lmZGVmIEdEQl9JTkRFWF9WRVJJ RllfVkVORE9SCi0rICAgICAgZWxzZSAvKiB2ZXJpZnlfdmVuZG9yICovCi0rCXsKLSsJICBpbnQg dmVuZG9yX3Bhc3MgPSAwLCB2ZW5kb3JfZmFpbCA9IDA7Ci0rCi0rCSAgZm9yICg7OykKLSsJICAg IHsKLSsJICAgICAgSGVhZGVyIGg7Ci0rCSAgICAgIGVycm1zZ190IGVycjsKLSsJICAgICAgY2hh ciAqdmVuZG9yOwotKwotKwkgICAgICBoID0gcnBtZGJOZXh0SXRlcmF0b3JfcCAobWkpOwotKwkg ICAgICBpZiAoaCA9PSBOVUxMKQotKwkJYnJlYWs7Ci0rCi0rCSAgICAgIHZlbmRvciA9IGhlYWRl ckZvcm1hdF9wIChoLCAiJXt2ZW5kb3J9IiwgJmVycik7Ci0rCSAgICAgIGlmICghdmVuZG9yKQot KwkJewotKwkJICB3YXJuaW5nIChfKCJFcnJvciBxdWVyeWluZyB0aGUgcnBtIGZpbGUgYCVzJzog JXMiKSwgZmlsZW5hbWUsCi0rCQkJICAgZXJyKTsKLSsJCSAgY29udGludWU7Ci0rCQl9Ci0rCSAg ICAgIGlmIChzdHJjbXAgKHZlbmRvciwgIlJlZCBIYXQsIEluYy4iKSA9PSAwKQotKwkJdmVuZG9y X3Bhc3MgPSAxOwotKwkgICAgICBlbHNlCi0rCQl2ZW5kb3JfZmFpbCA9IDE7Ci0rCSAgICAgIHhm cmVlICh2ZW5kb3IpOwotKwkgICAgfQotKwkgIGNvdW50ID0gdmVuZG9yX3Bhc3MgIT0gMCAmJiB2 ZW5kb3JfZmFpbCA9PSAwOwotKwl9Ci0rI2VuZGlmCi0rCi0rICAgICAgcnBtZGJGcmVlSXRlcmF0 b3JfcCAobWkpOwotKyAgICB9Ci0rCi0rICBycG10c0ZyZWVfcCAodHMpOwotKwotKyAgcmV0dXJu IGNvdW50OwotK30KLSsKLSsjaWZkZWYgR0RCX0lOREVYX1ZFUklGWV9WRU5ET1IKLSttaXNzaW5n X3JwbV9lbmxpc3QgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIHJldHVybiBtaXNzaW5n X3JwbV9lbmxpc3RfMSAoZmlsZW5hbWUsIDApOwotK30KLSsKLStleHRlcm4gaW50IHJwbV92ZXJp ZnlfdmVuZG9yIChjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0raW50Ci0rcnBtX3ZlcmlmeV92ZW5k b3IgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIHJldHVybiBtaXNzaW5nX3JwbV9lbmxp c3RfMSAoZmlsZW5hbWUsIDEpOwotK30KLSsjZW5kaWYKLSsKLStzdGF0aWMgYm9vbAotK21pc3Np bmdfcnBtX2xpc3RfY29tcGFyIChjb25zdCBjaGFyICphcCwgY29uc3QgY2hhciAqYnApCi0rewot KyAgcmV0dXJuIHN0cmNvbGwgKGFwLCBicCkgPCAwOwotK30KLSsKLSsvKiBJdCByZXR1cm5zIGEg TlVMTC10ZXJtaW5hdGVkIGFycmF5IG9mIHN0cmluZ3MgbmVlZGluZyB0byBiZSBGUkVFZC4gIEl0 IG1heQotKyAgIGFsc28gcmV0dXJuIG9ubHkgTlVMTC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStt aXNzaW5nX3JwbV9saXN0X3ByaW50ICh2b2lkKQotK3sKLSsgIHN0cnVjdCBtaXNzaW5nX3JwbSAq bGlzdF9pdGVyOwotKwotKyAgaWYgKG1pc3NpbmdfcnBtX2xpc3RfZW50cmllcyA9PSAwKQotKyAg ICByZXR1cm47Ci0rCi0rICBzdGQ6OnZlY3Rvcjxjb25zdCBjaGFyICo+IGFycmF5IChtaXNzaW5n X3JwbV9saXN0X2VudHJpZXMpOwotKyAgc2l6ZV90IGlkeCA9IDA7Ci0rCi0rICBmb3IgKGxpc3Rf aXRlciA9IG1pc3NpbmdfcnBtX2xpc3Q7IGxpc3RfaXRlciAhPSBOVUxMOwotKyAgICAgICBsaXN0 X2l0ZXIgPSBsaXN0X2l0ZXItPm5leHQpCi0rICAgIHsKLSsgICAgICBhcnJheVtpZHgrK10gPSBs aXN0X2l0ZXItPnJwbTsKLSsgICAgfQotKyAgZ2RiX2Fzc2VydCAoaWR4ID09IG1pc3NpbmdfcnBt X2xpc3RfZW50cmllcyk7Ci0rCi0rICBzdGQ6OnNvcnQgKGFycmF5LmJlZ2luICgpLCBhcnJheS5l bmQgKCksIG1pc3NpbmdfcnBtX2xpc3RfY29tcGFyKTsKLSsKLSsgIC8qIFdlIHplcm8gb3V0IHRo ZSBudW1iZXIgb2YgbWlzc2luZyBSUE1zIGhlcmUgYmVjYXVzZSBvZiBhIG5hc3R5Ci0rICAgICBi dWcgKHNlZSBSSEJaIDE4MDE5NzQpLgotKwotKyAgICAgV2hlbiB3ZSBjYWxsICdwdXRzX3VuZmls dGVyZWQnIGJlbG93LCBpZiBwYWdpbmF0aW9uIGlzIG9uIGFuZCBpZgotKyAgICAgdGhlIG51bWJl ciBvZiBtaXNzaW5nIFJQTXMgaXMgYmlnIGVub3VnaCB0byB0cmlnZ2VyIHBhZ2luYXRpb24sCi0r ICAgICB3ZSB3aWxsIGVuZCB1cCBpbiBhbiBpbmZpbml0ZSByZWN1cnNpb24uICBUaGUgY2FsbCBj aGFpbiBsb29rcwotKyAgICAgbGlrZSB0aGlzOgotKwotKyAgICAgbWlzc2luZ19ycG1fbGlzdF9w cmludCAtPiBwdXRzX3VuZmlsdGVyZWQgLT4gZnB1dHNfbWF5YmVfZmlsdGVyZWQKLSsgICAgIC0+ IHByb21wdF9mb3JfY29udGludWUgLT4gZGlzcGxheV9nZGJfcHJvbXB0IC0+Ci0rICAgICBkZWJ1 Z19mbHVzaF9taXNzaW5nIC0+IG1pc3NpbmdfcnBtX2xpc3RfcHJpbnQgLi4uCi0rCi0rICAgICBG b3IgdGhpcyByZWFzb24sIHdlIG1ha2Ugc3VyZSBNSVNTSU5HX1JQTV9MSVNUX0VOVFJJRVMgaXMg emVybwotKyAgICAgKmJlZm9yZSogY2FsbGluZyBhbnkgcHJpbnQgZnVuY3Rpb24uCi0rICAgICAK LSsgICAgIE5vdGU6IGtldmluYi8yMDIzLTAyLTIyOiBUaGUgY29kZSBiZWxvdyB1c2VkIHRvIGNh bGwKLSsgICAgIHB1dHNfdW5maWx0ZXJlZCgpIGFuZCBwcmludGZfdW5maWx0ZXJlZCgpLCBidXQg Y2FsbHMgdG8gdGhlc2UKLSsgICAgIGZ1bmN0aW9ucyBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgY2Fs bHMgdG8gZ2RiX3ByaW50ZigpLiAgVGhlIGNhbGwKLSsgICAgIGNoYWluIHNob3duIGFib3ZlIChw cm9iYWJseSkgdXNlZCB0byBiZSB0aGUgY2FzZSBhdCBvbmUgdGltZSBhbmQKLSsgICAgIGhvcGVm dWxseSBzb21ldGhpbmcgc2ltaWxhciBpcyBzdGlsbCB0aGUgY2FzZSBub3cgdGhhdAotKyAgICAg Z2RiX3ByaW50ZigpIGlzIGJlaW5nIHVzZWQgaW5zdGVhZC4gICovCi0rICBtaXNzaW5nX3JwbV9s aXN0X2VudHJpZXMgPSAwOwotKwotKyAgZ2RiX3ByaW50ZiAoXygiTWlzc2luZyBzZXBhcmF0ZSBk ZWJ1Z2luZm9zLCB1c2U6ICVzIiksCi0rI2lmZGVmIERORl9ERUJVR0lORk9fSU5TVEFMTAotKwkJ ICAgICAiZG5mICIKLSsjZW5kaWYKLSsJCSAgICAgImRlYnVnaW5mby1pbnN0YWxsIik7Ci0rICBm b3IgKGNvbnN0IGNoYXIgKmVsIDogYXJyYXkpCi0rICAgIHsKLSsgICAgICBnZGJfcHJpbnRmICgi ICVzIiwgZWwpOwotKyAgICB9Ci0rICBnZGJfcHJpbnRmICgiXG4iKTsKLSsKLSsgIHdoaWxlICht aXNzaW5nX3JwbV9saXN0ICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBsaXN0X2l0ZXIgPSBtaXNz aW5nX3JwbV9saXN0OwotKyAgICAgIG1pc3NpbmdfcnBtX2xpc3QgPSBsaXN0X2l0ZXItPm5leHQ7 Ci0rICAgICAgeGZyZWUgKGxpc3RfaXRlcik7Ci0rICAgIH0KLSt9Ci0rCi0rc3RhdGljIHZvaWQK LSttaXNzaW5nX3JwbV9jaGFuZ2UgKHZvaWQpCi0rewotKyAgZGVidWdfZmx1c2hfbWlzc2luZyAo KTsKLSsKLSsgIGdkYl9hc3NlcnQgKG1pc3NpbmdfcnBtX2xpc3QgPT0gTlVMTCk7Ci0rICBpZiAo bWlzc2luZ19ycG1faGFzaCAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgaHRhYl9kZWxldGUgKG1p c3NpbmdfcnBtX2hhc2gpOwotKyAgICAgIG1pc3NpbmdfcnBtX2hhc2ggPSBOVUxMOwotKyAgICB9 Ci0rfQotKwotK2VudW0gbWlzc2luZ19leGVjCi0rICB7Ci0rICAgIC8qIEluaXQgc3RhdGUuICBF WEVDX0JGRCBhbHNvIHN0aWxsIGNvdWxkIGJlIE5VTEwuICAqLwotKyAgICBNSVNTSU5HX0VYRUNf Tk9UX1RSSUVELAotKyAgICAvKiBXZSBzYXcgYSBub24tTlVMTCBFWEVDX0JGRCBidXQgUlBNIGhh cyBubyBpbmZvIGFib3V0IGl0LiAgKi8KLSsgICAgTUlTU0lOR19FWEVDX05PVF9GT1VORCwKLSsg ICAgLyogV2UgZm91bmQgRVhFQ19CRkQgYnkgUlBNIGFuZCB3ZSBlaXRoZXIgaGF2ZSBpdHMgc3lt Ym9scyAoZWl0aGVyIGVtYmVkZGVkCi0rICAgICAgIG9yIHNlcGFyYXRlKSBvciB0aGUgbWFpbiBl eGVjdXRhYmxlJ3MgUlBNIGlzIG5vdyBjb250YWluZWQgaW4KLSsgICAgICAgTUlTU0lOR19SUE1f SEFTSC4gICovCi0rICAgIE1JU1NJTkdfRVhFQ19FTkxJU1RFRAotKyAgfTsKLStzdGF0aWMgZW51 bSBtaXNzaW5nX2V4ZWMgbWlzc2luZ19leGVjID0gTUlTU0lOR19FWEVDX05PVF9UUklFRDsKLSsK LSsjZW5kaWYJLyogSEFWRV9MSUJSUE0gKi8KLSsKLSt2b2lkCi0rZGVidWdfZmx1c2hfbWlzc2lu ZyAodm9pZCkKLSt7Ci0rI2lmZGVmIEhBVkVfTElCUlBNCi0rICBtaXNzaW5nX3JwbV9saXN0X3By aW50ICgpOwotKyNlbmRpZgotK30KLSsKICsvKiBUaGlzIE1JU1NJTkdfRklMRVBBSVJfSEFTSCB0 cmFja2VyIGlzIHVzZWQgb25seSBmb3IgdGhlIGR1cGxpY2l0ZSBtZXNzYWdlcwogKyAgICAgeXVt IC0tZW5hYmxlcmVwbz0nKmRlYnVnKicgaW5zdGFsbCAuLi4KICsgICBhdm9pZGFuY2UuICAqLwpA QCAtMTE3OCwxNyArNzM5LDExIEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9i dWlsZC1pZC5jCiArICAgICAgLyogQWxsIHRoZWlyIG1lbW9yeSBjYW1lIGp1c3QgZnJvbSBtaXNz aW5nX2ZpbGVwYWlyX09CU1RBQ0suICAqLwogKyAgICAgIG1pc3NpbmdfZmlsZXBhaXJfaGFzaCA9 IE5VTEw7CiArICAgIH0KLSsjaWZkZWYgSEFWRV9MSUJSUE0KLSsgIG1pc3NpbmdfZXhlYyA9IE1J U1NJTkdfRVhFQ19OT1RfVFJJRUQ7Ci0rI2VuZGlmCiArfQogKwogK3N0YXRpYyB2b2lkCiArZGVi dWdfcHJpbnRfZXhlY3V0YWJsZV9jaGFuZ2VkIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNl LCBib29sIHJlbG9hZF9wKQogK3sKLSsjaWZkZWYgSEFWRV9MSUJSUE0KLSsgIG1pc3NpbmdfcnBt X2NoYW5nZSAoKTsKLSsjZW5kaWYKICsgIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICgpOwogK30K ICsKQEAgLTEyNTUsNTUgKzgxMCwzMCBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9n ZGIvYnVpbGQtaWQuYwogKwogKyAgKnNsb3QgPSBtaXNzaW5nX2ZpbGVwYWlyOwogKwotKyNpZmRl ZiBIQVZFX0xJQlJQTQotKyAgaWYgKG1pc3NpbmdfZXhlYyA9PSBNSVNTSU5HX0VYRUNfTk9UX1RS SUVEKQotKyAgICB7Ci0rICAgICAgY29uc3QgY2hhciAqZXhlY2ZpbGVuYW1lID0gZ2V0X2V4ZWNf ZmlsZSAoMCk7CisrICAvKiBXZSBkbyBub3QgY29sbGVjdCBhbmQgZmx1c2ggdGhlc2UgbWVzc2Fn ZXMgYXMgZWFjaCBzdWNoIG1lc3NhZ2UKKysgICAgIGFscmVhZHkgcmVxdWlyZXMgaXRzIG93biBz ZXBhcmF0ZSBsaW5lcy4gICovCiArCi0rICAgICAgaWYgKGV4ZWNmaWxlbmFtZSAhPSBOVUxMKQot Kwl7Ci0rCSAgaWYgKG1pc3NpbmdfcnBtX2VubGlzdCAoZXhlY2ZpbGVuYW1lKSA9PSAwKQotKwkg ICAgbWlzc2luZ19leGVjID0gTUlTU0lOR19FWEVDX05PVF9GT1VORDsKLSsJICBlbHNlCi0rCSAg ICBtaXNzaW5nX2V4ZWMgPSBNSVNTSU5HX0VYRUNfRU5MSVNURUQ7Ci0rCX0KLSsgICAgfQotKyAg aWYgKG1pc3NpbmdfZXhlYyAhPSBNSVNTSU5HX0VYRUNfRU5MSVNURUQpCi0rICAgIGlmICgoYmlu YXJ5WzBdID09IDAgfHwgbWlzc2luZ19ycG1fZW5saXN0IChiaW5hcnkpID09IDApCi0rCSYmIChk ZWJ1ZyA9PSBOVUxMIHx8IG1pc3NpbmdfcnBtX2VubGlzdCAoZGVidWcpID09IDApKQotKyNlbmRp ZgkvKiBIQVZFX0xJQlJQTSAqLwotKyAgICAgIHsKLSsJLyogV2UgZG8gbm90IGNvbGxlY3QgYW5k IGZsdXNoIHRoZXNlIG1lc3NhZ2VzIGFzIGVhY2ggc3VjaCBtZXNzYWdlCi0rCSAgIGFscmVhZHkg cmVxdWlyZXMgaXRzIG93biBzZXBhcmF0ZSBsaW5lcy4gICovCi0rCi0rCWdkYl9wcmludGYgKGdk Yl9zdGRsb2csCi0rCQkgICAgXygiTWlzc2luZyBzZXBhcmF0ZSBkZWJ1Z2luZm8gZm9yICVzLlxu IiksIGJpbmFyeSk7Ci0rCWlmIChkZWJ1ZyAhPSBOVUxMKQotKwl7Ci0rCSAgaWYgKGFjY2VzcyAo ZGVidWcsIEZfT0spID09IDApIHsKLSsJICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csIF8oIlRy eTogJXMgJXNcbiIpLAorKyAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywKKysJICAgICAgXygiTWlz c2luZyBzZXBhcmF0ZSBkZWJ1Z2luZm8gZm9yICVzLlxuIiksIGJpbmFyeSk7CisrICBpZiAoZGVi dWcgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csIF8oIlRy eTogJXMgJXNcbiIpLAogKyNpZmRlZiBETkZfREVCVUdJTkZPX0lOU1RBTEwKLSsJCQkiZG5mIgor KwkJICAiZG5mIgogKyNlbHNlCi0rCQkJInl1bSIKKysJCSAgInl1bSIKICsjZW5kaWYKLSsJCQki IC0tZW5hYmxlcmVwbz0nKmRlYnVnKicgaW5zdGFsbCIsIGRlYnVnKTsKLSsJICB9IGVsc2UKLSsJ ICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csIF8oIlRoZSBkZWJ1Z2luZm8gcGFja2FnZSBmb3Ig dGhpcyBmaWxlIGlzIHByb2JhYmx5IGJyb2tlbi5cbiIpKTsKLSsJfQotKyAgICAgIH0KKysJCSAg IiAtLWVuYWJsZXJlcG89JypkZWJ1ZyonIGluc3RhbGwiLCBkZWJ1Zyk7CisrICAgIH0KICt9CiAr CiAgLyogU2VlIGJ1aWxkLWlkLmguICAqLwogIAogIGdkYl9iZmRfcmVmX3B0cgotLWJ1aWxkX2lk X3RvX2RlYnVnX2JmZCAoc2l6ZV90IGJ1aWxkX2lkX2xlbiwgY29uc3QgYmZkX2J5dGUgKmJ1aWxk X2lkKQotK2J1aWxkX2lkX3RvX2RlYnVnX2JmZCAoc2l6ZV90IGJ1aWxkX2lkX2xlbiwgY29uc3Qg YmZkX2J5dGUgKmJ1aWxkX2lkLAotKwkJICAgICAgIGNoYXIgKipsaW5rX3JldHVybikKKyBidWls ZF9pZF90b19kZWJ1Z19iZmQgKHNpemVfdCBidWlsZF9pZF9sZW4sIGNvbnN0IGJmZF9ieXRlICpi dWlsZF9pZCkKICB7CiAtICByZXR1cm4gYnVpbGRfaWRfdG9fYmZkX3N1ZmZpeCAoYnVpbGRfaWRf bGVuLCBidWlsZF9pZCwgIi5kZWJ1ZyIpOwotKyAgcmV0dXJuIGJ1aWxkX2lkX3RvX2JmZF9zdWZm aXggKGJ1aWxkX2lkX2xlbiwgYnVpbGRfaWQsICIuZGVidWciLAotKwkJCQkgbGlua19yZXR1cm4p OworKyAgcmV0dXJuIGJ1aWxkX2lkX3RvX2JmZF9zdWZmaXggKGJ1aWxkX2lkX2xlbiwgYnVpbGRf aWQsICIuZGVidWciLCBudWxscHRyKTsKICB9CiAgCiAgLyogU2VlIGJ1aWxkLWlkLmguICAqLwpA QCAtMTMxOCw0NSArODQ4LDE1IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9i dWlsZC1pZC5jCiAgfQogIAogIC8qIFNlZSBidWlsZC1pZC5oLiAgKi8KK0BAIC0yMjQsNiArODg2 LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAogIAotIHN0ZDo6c3RyaW5nCi0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5 X2J1aWxkaWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotLQkJCQkgICAgIGRlZmVycmVkX3dh cm5pbmdzICp3YXJuaW5ncykKLSsJCQkJICAgICBkZWZlcnJlZF93YXJuaW5ncyAqd2FybmluZ3Ms Ci0rCQkJCSAgICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gKmJ1aWxkX2lkX2ZpbGVu YW1lX3JldHVybikKLSB7Ci0gICBjb25zdCBzdHJ1Y3QgYmZkX2J1aWxkX2lkICpidWlsZF9pZDsK LSAKLSsgIGlmIChidWlsZF9pZF9maWxlbmFtZV9yZXR1cm4pCi0rICAgICpidWlsZF9pZF9maWxl bmFtZV9yZXR1cm4gPSBOVUxMOwotKwotICAgYnVpbGRfaWQgPSBidWlsZF9pZF9iZmRfZ2V0IChv YmpmaWxlLT5vYmZkLmdldCAoKSk7Ci0gICBpZiAoYnVpbGRfaWQgIT0gTlVMTCkKLSAgICAgewot QEAgLTIyMiw4ICsxMzU4LDIxIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlk IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCSAgICBfKCJcbkxvb2tpbmcgZm9yIHNlcGFy YXRlIGRlYnVnIGluZm8gKGJ1aWxkLWlkKSBmb3IgIgotIAkJICAgICAgIiVzXG4iKSwgb2JqZmls ZV9uYW1lIChvYmpmaWxlKSk7Ci0gCi0rICAgICAgY2hhciAqYnVpbGRfaWRfZmlsZW5hbWVfY3N0 ciA9IE5VTEw7CiAgICAgICAgZ2RiX2JmZF9yZWZfcHRyIGFiZmQgKGJ1aWxkX2lkX3RvX2RlYnVn X2JmZCAoYnVpbGRfaWQtPnNpemUsCi0tCQkJCQkJICAgYnVpbGRfaWQtPmRhdGEpKTsKLSsJCQkJ CQkgICBidWlsZF9pZC0+ZGF0YSwKLSsJICAgICAgKCFidWlsZF9pZF9maWxlbmFtZV9yZXR1cm4g PyBOVUxMIDogJmJ1aWxkX2lkX2ZpbGVuYW1lX2NzdHIpKSk7Ci0rICAgICAgaWYgKGJ1aWxkX2lk X2ZpbGVuYW1lX3JldHVybikKLSsJewotKwkgIGlmICghYnVpbGRfaWRfZmlsZW5hbWVfY3N0cikK LSsJICAgIGdkYl9hc3NlcnQgKCEqYnVpbGRfaWRfZmlsZW5hbWVfcmV0dXJuKTsKLSsJICBlbHNl Ci0rCSAgICB7Ci0rCSAgICAgICpidWlsZF9pZF9maWxlbmFtZV9yZXR1cm4gPSBnZGI6OnVuaXF1 ZV94bWFsbG9jX3B0cjxjaGFyPiAoYnVpbGRfaWRfZmlsZW5hbWVfY3N0cik7Ci0rCSAgICAgIGJ1 aWxkX2lkX2ZpbGVuYW1lX2NzdHIgPSBOVUxMOwotKwkgICAgfQotKwl9CisgCQkJCQkJICAgYnVp bGRfaWQtPmRhdGEpKTsKICsKICAgICAgICAvKiBQcmV2ZW50IGxvb3Bpbmcgb24gYSBzdHJpcHBl ZCAuZGVidWcgZmlsZS4gICovCiAgICAgICAgaWYgKGFiZmQgIT0gTlVMTAogIAkgICYmIGZpbGVu YW1lX2NtcCAoYmZkX2dldF9maWxlbmFtZSAoYWJmZC5nZXQgKCkpLAotQEAgLTI0MywzICsxMzky LDIyIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKK0BAIC0yNDMsMyArOTA2LDIyIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmls ZV9ieV9idWlsZGlkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAKICAgIHJldHVybiBzdGQ6 OnN0cmluZyAoKTsKICB9CkBAIC0xMzgyLDE3ICs4ODIsMTMgQEAgZGlmZiAtLWdpdCBhL2dkYi9i dWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuaCBi L2dkYi9idWlsZC1pZC5oCiAtLS0gYS9nZGIvYnVpbGQtaWQuaAogKysrIGIvZ2RiL2J1aWxkLWlk LmgKLUBAIC0zOCwxNCArMzgsMTkgQEAgZXh0ZXJuIGludCBidWlsZF9pZF92ZXJpZnkgKGJmZCAq YWJmZCwKLSAgICBjYW4gYmUgZm91bmQsIHJldHVybiBOVUxMLiAgKi8KLSAKK0BAIC00MCwxMiAr NDAsMTYgQEAgZXh0ZXJuIGludCBidWlsZF9pZF92ZXJpZnkgKGJmZCAqYWJmZCwKICBleHRlcm4g Z2RiX2JmZF9yZWZfcHRyIGJ1aWxkX2lkX3RvX2RlYnVnX2JmZCAoc2l6ZV90IGJ1aWxkX2lkX2xl biwKLS0JCQkJCSAgICAgIGNvbnN0IGJmZF9ieXRlICpidWlsZF9pZCk7Ci0rCQkJCQkgICAgICBj b25zdCBiZmRfYnl0ZSAqYnVpbGRfaWQsCi0rCQkJCQkgICAgICBjaGFyICoqbGlua19yZXR1cm4g PSBOVUxMKTsKLSsKKyAJCQkJCSAgICAgIGNvbnN0IGJmZF9ieXRlICpidWlsZF9pZCk7CisgCiAr ZXh0ZXJuIGNoYXIgKmJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChjb25zdCBzdHJ1Y3QgYmZkX2J1aWxk X2lkICpidWlsZF9pZCwKICsJCQkJICAgY2hhciAqKmxpbmtfcmV0dXJuKTsKLSAKKysKICAvKiBG aW5kIGFuZCBvcGVuIGEgQkZEIGZvciBhbiBleGVjdXRhYmxlIGZpbGUgZ2l2ZW4gYSBidWlsZC1p ZC4gIElmIG5vIEJGRAogICAgIGNhbiBiZSBmb3VuZCwgcmV0dXJuIE5VTEwuICBUaGUgcmV0dXJu ZWQgcmVmZXJlbmNlIHRvIHRoZSBCRkQgbXVzdCBiZQogICAgIHJlbGVhc2VkIGJ5IHRoZSBjYWxs ZXIuICAqLwpAQCAtMTQwNCwyOCArOTAwLDYgQEAgZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5o IGIvZ2RiL2J1aWxkLWlkLmgKICAKICAvKiBGaW5kIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBmaWxlIGZv ciBPQkpGSUxFLCBieSB1c2luZyB0aGUgYnVpbGQtaWQKICAgICBhc3NvY2lhdGVkIHdpdGggT0JK RklMRSdzIEJGRC4gIElmIHN1Y2Nlc3NmdWwsIHJldHVybnMgdGhlIGZpbGUgbmFtZSBmb3IgdGhl Ci1AQCAtNTgsNyArNjMsOCBAQCBleHRlcm4gZ2RiX2JmZF9yZWZfcHRyIGJ1aWxkX2lkX3RvX2V4 ZWNfYmZkIChzaXplX3QgYnVpbGRfaWRfbGVuLAotICAgIHdpbGwgYmUgcHJpbnRlZC4gICovCi0g Ci0gZXh0ZXJuIHN0ZDo6c3RyaW5nIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlk Ci0tICAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGRlZmVycmVkX3dhcm5pbmdzICp3YXJuaW5n cyk7Ci0rICAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGRlZmVycmVkX3dhcm5pbmdzICp3YXJu aW5ncywKLSsgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiAqYnVpbGRfaWRfZmlsZW5h bWVfcmV0dXJuKTsKLSAKLSAvKiBSZXR1cm4gYW4gaGV4LXN0cmluZyByZXByZXNlbnRhdGlvbiBv ZiBCVUlMRF9JRC4gICovCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvZmZyZWFkLmMgYi9nZGIvY29m ZnJlYWQuYwotLS0tIGEvZ2RiL2NvZmZyZWFkLmMKLSsrKyBiL2dkYi9jb2ZmcmVhZC5jCi1AQCAt NzI5LDcgKzcyOSw3IEBAIGNvZmZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgc3ltZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9mbGFncykKLSAgICAgewotICAgICAgIGRlZmVy cmVkX3dhcm5pbmdzIHdhcm5pbmdzOwotICAgICAgIHN0ZDo6c3RyaW5nIGRlYnVnZmlsZQotLQk9 IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChvYmpmaWxlLCAmd2FybmluZ3Mp OwotKwk9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChvYmpmaWxlLCAmd2Fy bmluZ3MsIE5VTEwpOwotIAotICAgICAgIGlmIChkZWJ1Z2ZpbGUuZW1wdHkgKCkpCi0gCWRlYnVn ZmlsZQogZGlmZiAtLWdpdCBhL2dkYi9jb3JlbG93LmMgYi9nZGIvY29yZWxvdy5jCiAtLS0gYS9n ZGIvY29yZWxvdy5jCiArKysgYi9nZGIvY29yZWxvdy5jCkBAIC0xNTE3LDMzICs5OTEsNiBAQCBk aWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KICBA Y2luZGV4IEBjb2Rley5nbnVfZGVidWdsaW5rfSBzZWN0aW9ucwogIEBjaW5kZXggZGVidWcgbGlu ayBzZWN0aW9ucwogIEEgZGVidWcgbGluayBpcyBhIHNwZWNpYWwgc2VjdGlvbiBvZiB0aGUgZXhl Y3V0YWJsZSBmaWxlIG5hbWVkCi1kaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZy ZWFkLmMKLS0tLSBhL2dkYi9lbGZyZWFkLmMKLSsrKyBiL2dkYi9lbGZyZWFkLmMKLUBAIC0xMjIw LDggKzEyMjAsMTAgQEAgZWxmX3N5bWZpbGVfcmVhZF9kd2FyZjIgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAotICAgICB7Ci0gICAgICAgZGVmZXJyZWRfd2FybmluZ3Mgd2FybmluZ3M7Ci0gCi0r ICAgICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gYnVpbGRfaWRfZmlsZW5hbWU7Ci0g ICAgICAgc3RkOjpzdHJpbmcgZGVidWdmaWxlCi0tCT0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxl X2J5X2J1aWxkaWQgKG9iamZpbGUsICZ3YXJuaW5ncyk7Ci0rCT0gZmluZF9zZXBhcmF0ZV9kZWJ1 Z19maWxlX2J5X2J1aWxkaWQgKG9iamZpbGUsICZ3YXJuaW5ncywKLSsJCQkJCSAgICAgICAmYnVp bGRfaWRfZmlsZW5hbWUpOwotIAotICAgICAgIGlmIChkZWJ1Z2ZpbGUuZW1wdHkgKCkpCi0gCWRl YnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9kZWJ1Z2xpbmsgKG9iamZpbGUs ICZ3YXJuaW5ncyk7Ci1AQCAtMTI2NSw2ICsxMjY3LDExIEBAIGVsZl9zeW1maWxlX3JlYWRfZHdh cmYyIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCSAgICAgIGhhc19kd2FyZjIgPSB0cnVl OwotIAkJICAgIH0KLSAJCX0KLSsJCS8qIENoZWNrIGlmIGFueSBzZXBhcmF0ZSBkZWJ1ZyBpbmZv IGhhcyBiZWVuIGV4dHJhY3RlZCBvdXQuICAqLwotKwkJZWxzZSBpZiAoYmZkX2dldF9zZWN0aW9u X2J5X25hbWUgKG9iamZpbGUtPm9iZmQuZ2V0ICgpLAotKwkJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIuZ251X2RlYnVnbGluayIpCi0rCQkJICE9IE5VTEwpCi0rCQkgIGRlYnVn X3ByaW50X21pc3NpbmcgKG9iamZpbGVfbmFtZSAob2JqZmlsZSksIGJ1aWxkX2lkX2ZpbGVuYW1l LmdldCAoKSk7Ci0gCSAgICB9Ci0gCX0KLSAgICAgICAvKiBJZiBhbGwgdGhlIG1ldGhvZHMgdG8g Y29sbGVjdCB0aGUgZGVidWdpbmZvIGZhaWxlZCwgcHJpbnQgdGhlCiBkaWZmIC0tZ2l0IGEvZ2Ri L29iamZpbGVzLmggYi9nZGIvb2JqZmlsZXMuaAogLS0tIGEvZ2RiL29iamZpbGVzLmgKICsrKyBi L2dkYi9vYmpmaWxlcy5oCgpkaWZmIC0tZ2l0IGEvZ2RiLWFkZC1taXNzaW5nLWRlYnVnLWV4dC1s YW5nLWhvb2sucGF0Y2ggYi9nZGItYWRkLW1pc3NpbmctZGVidWctZXh0LWxhbmctaG9vay5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2EzNDA1Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWFkZC1taXNzaW5nLWRlYnVnLWV4dC1sYW5nLWhvb2sucGF0Y2gKQEAgLTAs MCArMSwzMTQgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBBbmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwg MTMgT2N0IDIwMjMgMTY6NDg6MzYgKzAxMDAKK1N1YmplY3Q6IGdkYi1hZGQtbWlzc2luZy1kZWJ1 Zy1leHQtbGFuZy1ob29rLnBhdGNoCisKKzs7IEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCA2NjFk OThhMzMzMS4KKworZ2RiOiBhZGQgYW4gZXh0ZW5zaW9uIGxhbmd1YWdlIGhvb2sgZm9yIG1pc3Np bmcgZGVidWcgaW5mbworCitUaGlzIGNvbW1pdCBhZGRzIGEgbmV3IGV4dGVuc2lvbl9sYW5ndWFn ZV9vcHMgaG9vayB3aGljaCBhbGxvd3MgYW4KK2V4dGVuc2lvbiB0byBoYW5kbGUgdGhlIGNhc2Ug d2hlcmUgR0RCIGNhbid0IGZpbmQgYSBzZXBhcmF0ZSBkZWJ1ZworaW5mb3JtYXRpb24gZmlsZSBm b3IgYSBwYXJ0aWN1bGFyIG9iamZpbGUuCisKK1RoaXMgY29tbWl0IGRvZXNuJ3QgYWN0dWFsbHkg aW1wbGVtZW50IHRoZSBob29rIGZvciBhbnkgb2YgR0RCJ3MKK2V4dGVuc2lvbiBsYW5ndWFnZXMs IHRoZSBuZXh0IGNvbW1pdCB3aWxsIGRvIHRoYXQuICBUaGlzIGNvbW1pdCBqdXN0CithZGRzIHN1 cHBvcnQgZm9yIHRoZSBob29rIHRvIGV4dGVuc2lvbi1wcml2LmggYW5kIGV4dGVuc2lvbi5bY2hd LCBhbmQKK3RoZW4gcmV3b3JrcyBzeW1maWxlLWRlYnVnLmMgdG8gY2FsbCB0aGUgaG9vay4KKwor UmlnaHQgbm93IHRoZSBob29rIHdpbGwgYWx3YXlzIHJldHVybiBpdHMgZGVmYXVsdCB2YWx1ZSwg d2hpY2ggbWVhbnMKK0dEQiBzaG91bGQgZG8gbm90aGluZyBkaWZmZXJlbnQuICBBcyBzdWNoLCB0 aGVyZSBzaG91bGQgYmUgbm8gdXNlcgordmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29tbWl0 LgorCitJJ2xsIGdpdmUgYSBicmllZiBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoZSBob29rIGRvZXMg aGVyZSBzbyB0aGF0IHdlCitjYW4gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBpbiBzeW1maWxlLWRl YnVnLmMuICBUaGUgbmV4dCBjb21taXQgYWRkcyBhCitQeXRob24gaW1wbGVtZW50YXRpb24gZm9y IHRoaXMgbmV3IGhvb2ssIGFuZCBnaXZlcyBhIGZ1bGxlcgorZGVzY3JpcHRpb24gb2YgdGhlIG5l dyBmdW5jdGlvbmFsaXR5LgorCitDdXJyZW50bHksIHdoZW4gbG9va2luZyBmb3Igc2VwYXJhdGUg ZGVidWcgaW5mb3JtYXRpb24gR0RCIHRyaWVzIHRocmVlCit0aGluZ3MsIGluIHRoaXMgb3JkZXI6 CisKKyAgMS4gVXNlIHRoZSBidWlsZC1pZCB0byBmaW5kIHRoZSByZXF1aXJlZCBkZWJ1ZyBpbmZv cm1hdGlvbiwKKworICAyLiBDaGVjayBmb3IgLmdudV9kZWJ1Z2xpbmsgc2VjdGlvbiBhbmQgdXNl IHRoYXQgdG8gbG9vayB1cCB0aGUKKyAgcmVxdWlyZWQgZGVidWcgaW5mb3JtYXRpb24sCisKKyAg My4gQ2hlY2sgd2l0aCBkZWJ1Z2luZm9kIHRvIHNlZSBpZiBpdCBjYW4gc3VwcGx5IHRoZSByZXF1 aXJlZAorICBpbmZvcm1hdGlvbi4KKworVGhlIG5ldyBleHRlbnNpb25fbGFuZ3VhZ2Vfb3BzOjpo YW5kbGVfbWlzc2luZ19kZWJ1Z2luZm8gaG9vayBpcworY2FsbGVkIGlmIGFsbCB0aHJlZSBzdGVw cyBmYWlsIHRvIGZpbmQgYW55IGRlYnVnIGluZm9ybWF0aW9uLiAgVGhlCitob29rIGhhcyB0aHJl ZSBwb3NzaWJsZSByZXR1cm4gdmFsdWVzOgorCisgIGEuIE5vdGhpbmcsIG5vIGRlYnVnIGluZm9y bWF0aW9uIGlzIGZvdW5kLCBHREIgY29udGludWVzIHdpdGhvdXQgdGhlCisgIGRlYnVnIGluZm9y bWF0aW9uIGZvciB0aGlzIG9iamZpbGUuICBUaGlzIG1hdGNoZXMgdGhlIGN1cnJlbnQKKyAgYmVo YXZpb3VyIG9mIEdEQiwgYW5kIGlzIHRoZSBkZWZhdWx0IGlmIG5vdGhpbmcgaXMgaW1wbGVtZW50 aW5nIHRoaXMKKyAgbmV3IGhvb2ssCisKKyAgYi4gSW5zdGFsbCBkZWJ1ZyBpbmZvcm1hdGlvbiBp bnRvIGEgbG9jYXRpb24gdGhhdCBzdGVwICMxIG9yICMyCisgIGFib3ZlIHdvdWxkIG5vcm1hbGx5 IGNoZWNrLCBhbmQgdGhlbiByZXF1ZXN0IHRoYXQgR0RCIHJlcGVhdHMgc3RlcHMKKyAgIzEgYW5k ICMyIGluIHRoZSBob3BlIHRoYXQgR0RCIHdpbGwgbm93IGZpbmQgdGhlIGRlYnVnIGluZm9ybWF0 aW9uLgorICBJZiB0aGUgZGVidWcgaW5mb3JtYXRpb24gaXMgc3RpbGwgbm90IGZvdW5kIHRoZW4g R0RCIGNhcnJpZXMgb24KKyAgd2l0aG91dCB0aGUgZGVidWcgaW5mb3JtYXRpb24uICBJZiB0aGUg ZGVidWcgaW5mb3JtYXRpb24gaXMgZm91bmQKKyAgdGhlIEdEQiBsb2FkcyBpdCBhbmQgY2Fycmll cyBvbiwKKworICBjLiBSZXR1cm4gYSBmaWxlbmFtZSBmb3IgYSBmaWxlIGNvbnRhaW5pbmcgdGhl IHJlcXVpcmVkIGRlYnVnCisgIGluZm9ybWF0aW9uLiAgR0RCIGxvYWRzIHRoZSBjb250ZW50cyBv ZiB0aGlzIGZpbGUgYW5kIGNhcnJpZXMgb24uCisKK1RoZSBjaGFuZ2VzIGluIHRoaXMgY29tbWl0 IG1vc3RseSBpbnZvbHZlIHBsYWNpbmcgdGhlIGNvcmUgb2YKK29iamZpbGU6OmZpbmRfYW5kX2Fk ZF9zZXBhcmF0ZV9zeW1ib2xfZmlsZSBpbnRvIGEgbG9vcCB3aGljaCBhbGxvd3MKK2ZvciBzdGVw cyAjMSBhbmQgIzIgdG8gYmUgcmVwZWF0ZWQuCisKK1dlIHRha2UgY2FyZSB0byBlbnN1cmUgdGhh dCBkZWJ1Z2luZm9kIGlzIG9ubHkgcXVlcmllZCBvbmNlLCB0aGUgZmlyc3QKK3RpbWUgdGhyb3Vn aC4gIFRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgbm8gZXh0ZW5zaW9uIGlzIGdvaW5nIHRvIGJlIGFi bGUKK3RvIGNvbnRyb2wgdGhlIHJlcGxpZXMgZnJvbSBkZWJ1Z2luZm9kLCBzbyB0aGVyZSdzIG5v IHBvaW50IG1ha2luZyBhCitzZWNvbmQgcmVxdWVzdCAtLSBhbmQgYXMgdGhlc2UgcmVxdWVzdHMg Z28gb3ZlciB0aGUgbmV0d29yaywgdGhleQorY291bGQgcG90ZW50aWFsbHkgYmUgc2xvdy4KKwor VGhlIHdhcm5pbmdzIHRoYXQgZmluZF9hbmRfYWRkX3NlcGFyYXRlX3N5bWJvbF9maWxlIGNvbGxl Y3RzIGFyZQorZGlzcGxheWVkIG9ubHkgb25jZSBhc3N1bWluZyB0aGF0IG5vIGRlYnVnIGluZm9y bWF0aW9uIGlzIGZvdW5kLiAgSWYKK2RlYnVnIGluZm9ybWF0aW9uIGlzIGZvdW5kLCBldmVuIGFm dGVyIHRoZSBleHRlbnNpb24gaGFzIG9wZXJhdGVkLAordGhlbiB0aGUgd2FybmluZ3MgYXJlIG5v dCBzaG93bjsgcmVtZW1iZXIsIHRoZXNlIGFyZSB3YXJuaW5ncyBmcm9tIEdEQgorYWJvdXQgZmFp bHVyZSB0byBmaW5kIGFueSBzdWl0YWJsZSBkZWJ1ZyBpbmZvcm1hdGlvbiwgc28gaXQgbWFrZXMK K3NlbnNlIHRvIGhpZGUgdGhlc2UgaWYgZGVidWcgaW5mb3JtYXRpb24gaXMgZm91bmQuCisKK0Fw cHJvdmVkLUJ5OiBUb20gVHJvbWV5IDx0b21AdHJvbWV5LmNvbT4KKworZGlmZiAtLWdpdCBhL2dk Yi9leHRlbnNpb24tcHJpdi5oIGIvZ2RiL2V4dGVuc2lvbi1wcml2LmgKKy0tLSBhL2dkYi9leHRl bnNpb24tcHJpdi5oCisrKysgYi9nZGIvZXh0ZW5zaW9uLXByaXYuaAorQEAgLTI3OSw2ICsyNzks MTMgQEAgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9vcHMKKyAgIGdkYjo6b3B0aW9uYWw8aW50 PiAoKnByaW50X2luc24pIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJCQkJICAgIENPUkVf QUREUiBhZGRyZXNzLAorIAkJCQkgICAgc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8gKmluZm8pOwor KworKyAgLyogR2l2ZSBleHRlbnNpb24gbGFuZ3VhZ2VzIGEgY2hhbmNlIHRvIGRlYWwgd2l0aCBt aXNzaW5nIGRlYnVnCisrICAgICBpbmZvcm1hdGlvbi4gIE9CSkZJTEUgaXMgdGhlIGZpbGUgZm9y IHdoaWNoIEdEQiB3YXMgdW5hYmxlIHRvIGZpbmQKKysgICAgIGFueSBkZWJ1ZyBpbmZvcm1hdGlv bi4gICovCisrICBleHRfbGFuZ19taXNzaW5nX2RlYnVnaW5mb19yZXN1bHQKKysgICAgKCpoYW5k bGVfbWlzc2luZ19kZWJ1Z2luZm8pIChjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX2Rl Zm4gKiwKKysJCQkJIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKyB9OworIAorIC8qIFN0YXRl IG5lY2Vzc2FyeSB0byByZXN0b3JlIGEgc2lnbmFsIGhhbmRsZXIgdG8gaXRzIHByZXZpb3VzIHZh bHVlLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvZXh0ZW5zaW9uLmMgYi9nZGIvZXh0ZW5zaW9uLmMK Ky0tLSBhL2dkYi9leHRlbnNpb24uYworKysrIGIvZ2RiL2V4dGVuc2lvbi5jCitAQCAtOTk3LDYg Kzk5NywyNSBAQCBleHRfbGFuZ19wcmludF9pbnNuIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Q09SRV9BRERSIGFkZHJlc3MsCisgICByZXR1cm4ge307CisgfQorIAorKy8qIFNlZSBleHRlbnNp b24uaC4gICovCisrCisrZXh0X2xhbmdfbWlzc2luZ19kZWJ1Z2luZm9fcmVzdWx0CisrZXh0X2xh bmdfaGFuZGxlX21pc3NpbmdfZGVidWdpbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7 CisrICBmb3IgKGNvbnN0IHN0cnVjdCBleHRlbnNpb25fbGFuZ3VhZ2VfZGVmbiAqZXh0bGFuZyA6 IGV4dGVuc2lvbl9sYW5ndWFnZXMpCisrICAgIHsKKysgICAgICBpZiAoZXh0bGFuZy0+b3BzID09 IG51bGxwdHIKKysJICB8fCBleHRsYW5nLT5vcHMtPmhhbmRsZV9taXNzaW5nX2RlYnVnaW5mbyA9 PSBudWxscHRyKQorKwljb250aW51ZTsKKysgICAgICBleHRfbGFuZ19taXNzaW5nX2RlYnVnaW5m b19yZXN1bHQgcmVzdWx0CisrCT0gZXh0bGFuZy0+b3BzLT5oYW5kbGVfbWlzc2luZ19kZWJ1Z2lu Zm8gKGV4dGxhbmcsIG9iamZpbGUpOworKyAgICAgIGlmICghcmVzdWx0LmZpbGVuYW1lICgpLmVt cHR5ICgpIHx8IHJlc3VsdC50cnlfYWdhaW4gKCkpCisrCXJldHVybiByZXN1bHQ7CisrICAgIH0K KysKKysgIHJldHVybiB7fTsKKyt9CisrCisgLyogQ2FsbGVkIHZpYSBhbiBvYnNlcnZlciBiZWZv cmUgZ2RiIHByaW50cyBpdHMgcHJvbXB0LgorICAgIEl0ZXJhdGUgb3ZlciB0aGUgZXh0ZW5zaW9u IGxhbmd1YWdlcyBnaXZpbmcgdGhlbSBhIGNoYW5jZSB0bworICAgIGNoYW5nZSB0aGUgcHJvbXB0 LiAgVGhlIGZpcnN0IG9uZSB0byBjaGFuZ2UgdGhlIHByb21wdCB3aW5zLAorZGlmZiAtLWdpdCBh L2dkYi9leHRlbnNpb24uaCBiL2dkYi9leHRlbnNpb24uaAorLS0tIGEvZ2RiL2V4dGVuc2lvbi5o CisrKysgYi9nZGIvZXh0ZW5zaW9uLmgKK0BAIC0zMzcsNiArMzM3LDY4IEBAIGV4dGVybiBnZGI6 Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBleHRfbGFuZ19jb2xvcml6ZV9kaXNhc20KKyBleHRlcm4g Z2RiOjpvcHRpb25hbDxpbnQ+IGV4dF9sYW5nX3ByaW50X2luc24KKyAgIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvICpp bmZvKTsKKyAKKysvKiBXaGVuIEdEQiBjYWxscyBpbnRvIGFuIGV4dGVuc2lvbiBsYW5ndWFnZSBi ZWNhdXNlIGFuIG9iamZpbGUgd2FzCisrICAgZGlzY292ZXJlZCBmb3Igd2hpY2ggR0RCIGNvdWxk bid0IGZpbmQgYW55IGRlYnVnIGluZm9ybWF0aW9uLCB0aGlzCisrICAgc3RydWN0dXJlIGhvbGRz IHRoZSByZXN1bHQgdGhhdCB0aGUgZXh0ZW5zaW9uIGxhbmd1YWdlIHJldHVybnMuCisrCisrICAg VGhlcmUgYXJlIHRocmVlIHBvc3NpYmxlIGFjdGlvbnMgdGhhdCBtaWdodCBiZSByZXR1cm5lZCBi eSBhbiBleHRlbnNpb247CisrICAgZmlyc3QgYW4gZXh0ZW5zaW9uIGNhbiByZXR1cm4gYSBmaWxl bmFtZSwgdGhpcyBpcyB0aGUgcGF0aCB0byB0aGUgZmlsZQorKyAgIGNvbnRhaW5pbmcgdGhlIHJl cXVpcmVkIGRlYnVnICBpbmZvcm1hdGlvbi4gIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMKKysg ICB0byByZXR1cm4gYSBmbGFnIGluZGljYXRpbmcgdGhhdCBHREIgc2hvdWxkIGNoZWNrIGFnYWlu IGZvciB0aGUgbWlzc2luZworKyAgIGRlYnVnIGluZm9ybWF0aW9uLCB0aGlzIHdvdWxkIGltcGx5 IHRoYXQgdGhlIGV4dGVuc2lvbiBoYXMgaW5zdGFsbGVkCisrICAgdGhlIGRlYnVnIGluZm9ybWF0 aW9uIGludG8gYSBsb2NhdGlvbiB3aGVyZSBHREIgY2FuIGJlIGV4cGVjdGVkIHRvIGZpbmQKKysg ICBpdC4gIEFuZCB0aGUgdGhpcmQgb3B0aW9uIGlzIGZvciB0aGUgZXh0ZW5zaW9uIHRvIGp1c3Qg cmV0dXJuIGEgbnVsbAorKyAgIHJlc3VsdCwgaW5kaWNhdGlvbiB0aGVyZSBpcyBub3RoaW5nIHRo ZSBleHRlbnNpb24gY2FuIGRvIHRvIHByb3ZpZGUgdGhlCisrICAgbWlzc2luZyBkZWJ1ZyBpbmZv cm1hdGlvbi4gICovCisrc3RydWN0IGV4dF9sYW5nX21pc3NpbmdfZGVidWdpbmZvX3Jlc3VsdAor K3sKKysgIC8qIERlZmF1bHQgcmVzdWx0LiAgVGhlIGV4dGVuc2lvbiB3YXMgdW5hYmxlIHRvIHBy b3ZpZGUgdGhlIG1pc3NpbmcgZGVidWcKKysgICAgIGluZm8uICAqLworKyAgZXh0X2xhbmdfbWlz c2luZ19kZWJ1Z2luZm9fcmVzdWx0ICgpCisrICB7IC8qIE5vdGhpbmcuICAqLyB9CisrCisrICAv KiBXaGVuIFRSWV9BR0FJTiBpcyB0cnVlIEdEQiBzaG91bGQgdHJ5IHNlYXJjaGluZyBhZ2Fpbiwg dGhlIGV4dGVuc2lvbgorKyAgICAgbWF5IGhhdmUgaW5zdGFsbGVkIHRoZSBtaXNzaW5nIGRlYnVn IGluZm8gaW50byBhIHN1aXRhYmxlIGxvY2F0aW9uLgorKyAgICAgV2hlbiBUUllfQUdBSU4gaXMg ZmFsc2UgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBkZWZhdWx0LCBubworKyAgICAgYXJndW1l bnQsIGNvbnN0cnVjdG9yLiAgKi8KKysgIGV4dF9sYW5nX21pc3NpbmdfZGVidWdpbmZvX3Jlc3Vs dCAoYm9vbCB0cnlfYWdhaW4pCisrICAgIDogbV90cnlfYWdhaW4gKHRyeV9hZ2FpbikKKysgIHsg LyogTm90aGluZy4gICovIH0KKysKKysgIC8qIExvb2sgaW4gRklMRU5BTUUgZm9yIHRoZSBtaXNz aW5nIGRlYnVnIGluZm8uICAqLworKyAgZXh0X2xhbmdfbWlzc2luZ19kZWJ1Z2luZm9fcmVzdWx0 IChzdGQ6OnN0cmluZyAmJmZpbGVuYW1lKQorKyAgICA6IG1fZmlsZW5hbWUgKHN0ZDo6bW92ZSAo ZmlsZW5hbWUpKQorKyAgeyAvKiBOb3RoaW5nLiAgKi8gfQorKworKyAgLyogVGhlIGZpbGVuYW1l IHdoZXJlIEdEQiBjYW4gZmluZCB0aGUgbWlzc2luZyBkZWJ1Z2luZm8uICBUaGlzIGlzIGVtcHR5 CisrICAgICBpZiB0aGUgZXh0ZW5zaW9uIGRpZG4ndCBzdWdnZXN0IGEgZmlsZSB0aGF0IGNhbiBi ZSB1c2VkLiAgKi8KKysgIGNvbnN0IHN0ZDo6c3RyaW5nICYKKysgIGZpbGVuYW1lICgpIGNvbnN0 CisrICB7CisrICAgIHJldHVybiBtX2ZpbGVuYW1lOworKyAgfQorKworKyAgLyogUmV0dXJucyB0 cnVlIGlmIEdEQiBzaG91bGQgbG9vayBhZ2FpbiBmb3IgdGhlIGRlYnVnIGluZm9ybWF0aW9uLiAg Ki8KKysgIGNvbnN0IGJvb2wKKysgIHRyeV9hZ2FpbiAoKSBjb25zdAorKyAgeworKyAgICByZXR1 cm4gbV90cnlfYWdhaW47CisrICB9CisrCisrcHJpdmF0ZToKKysgIC8qIFRoZSBmaWxlbmFtZSB3 aGVyZSB0aGUgbWlzc2luZyBkZWJ1Z2luZm8gY2FuIG5vdyBiZSBmb3VuZC4gICovCisrICBzdGQ6 OnN0cmluZyBtX2ZpbGVuYW1lOworKworKyAgLyogV2hlbiB0cnVlIEdEQiB3aWxsIHNlYXJjaCBh Z2FpbiBmb3IgdGhlIGRlYnVnaW5mbyB1c2luZyBpdHMgc3RhbmRhcmQKKysgICAgIHRlY2huaXF1 ZXMuICBXaGVuIGZhbHNlIEdEQiB3aWxsIG5vdCBzZWFyY2ggYWdhaW4uICAqLworKyAgYm9vbCBt X3RyeV9hZ2FpbiA9IGZhbHNlOworK307CisrCisrLyogQ2FsbGVkIHdoZW4gR0RCIGZhaWxlZCB0 byBmaW5kIGFueSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgT0JKRklMRS4gICovCisrCisrZXh0ZXJu IGV4dF9sYW5nX21pc3NpbmdfZGVidWdpbmZvX3Jlc3VsdCBleHRfbGFuZ19oYW5kbGVfbWlzc2lu Z19kZWJ1Z2luZm8KKysgIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisrCisgI2lmIEdEQl9T RUxGX1RFU1QKKyBuYW1lc3BhY2Ugc2VsZnRlc3RzIHsKKyBleHRlcm4gdm9pZCAoKmhvb2tfc2V0 X2FjdGl2ZV9leHRfbGFuZykgKCk7CitkaWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUtZGVidWcuYyBi L2dkYi9zeW1maWxlLWRlYnVnLmMKKy0tLSBhL2dkYi9zeW1maWxlLWRlYnVnLmMKKysrKyBiL2dk Yi9zeW1maWxlLWRlYnVnLmMKK0BAIC02MzEsMzggKzYzMSw4OCBAQCBkZWJ1Z2luZm9kX2ZpbmRf YW5kX29wZW5fc2VwYXJhdGVfc3ltYm9sX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICogb2JqZmlsZSkK KyBib29sCisgb2JqZmlsZTo6ZmluZF9hbmRfYWRkX3NlcGFyYXRlX3N5bWJvbF9maWxlIChzeW1m aWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKQorIHsKKy0gIGJvb2wgaGFzX2R3YXJmID0gZmFs c2U7CistCistICBkZWZlcnJlZF93YXJuaW5ncyB3YXJuaW5nczsKKy0KKy0gIGdkYl9iZmRfcmVm X3B0ciBkZWJ1Z19iZmQ7CistICBzdGQ6OnN0cmluZyBmaWxlbmFtZTsKKy0KKy0gIHN0ZDo6dGll IChkZWJ1Z19iZmQsIGZpbGVuYW1lKSA9IHNpbXBsZV9maW5kX2FuZF9vcGVuX3NlcGFyYXRlX3N5 bWJvbF9maWxlCistICAgICh0aGlzLCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRp ZCwgJndhcm5pbmdzKTsKKy0KKy0gIGlmIChkZWJ1Z19iZmQgPT0gbnVsbHB0cikKKy0gICAgc3Rk Ojp0aWUgKGRlYnVnX2JmZCwgZmlsZW5hbWUpCistICAgICAgPSBzaW1wbGVfZmluZF9hbmRfb3Bl bl9zZXBhcmF0ZV9zeW1ib2xfZmlsZQorLQkgICh0aGlzLCBmaW5kX3NlcGFyYXRlX2RlYnVnX2Zp bGVfYnlfZGVidWdsaW5rLCAmd2FybmluZ3MpOworKyAgYm9vbCBoYXNfZHdhcmYyID0gZmFsc2U7 CisrCisrICAvKiBVc3VhbGx5IHdlIG9ubHkgbWFrZSBhIHNpbmdsZSBwYXNzIHdoZW4gbG9va2lu ZyBmb3Igc2VwYXJhdGUgZGVidWcKKysgICAgIGluZm9ybWF0aW9uLiAgSG93ZXZlciwgaXQgaXMg cG9zc2libGUgZm9yIGFuIGV4dGVuc2lvbiBsYW5ndWFnZSBob29rCisrICAgICB0byByZXF1ZXN0 IHRoYXQgR0RCIG1ha2UgYSBzZWNvbmQgcGFzcywgaW4gd2hpY2ggY2FzZSBtYXhfYXR0ZW1wdHMK KysgICAgIHdpbGwgYmUgdXBkYXRlZCwgYW5kIHRoZSBsb29wIHJlc3RhcnRlZC4gICovCisrICBm b3IgKHVuc2lnbmVkIGF0dGVtcHQgPSAwLCBtYXhfYXR0ZW1wdHMgPSAxOworKyAgICAgICBhdHRl bXB0IDwgbWF4X2F0dGVtcHRzICYmICFoYXNfZHdhcmYyOworKyAgICAgICArK2F0dGVtcHQpCisr ICAgIHsKKysgICAgICBnZGJfYXNzZXJ0IChtYXhfYXR0ZW1wdHMgPD0gMik7CisrCisrICAgICAg ZGVmZXJyZWRfd2FybmluZ3Mgd2FybmluZ3M7CisrICAgICAgZ2RiX2JmZF9yZWZfcHRyIGRlYnVn X2JmZDsKKysgICAgICBzdGQ6OnN0cmluZyBmaWxlbmFtZTsKKysKKysgICAgICBzdGQ6OnRpZSAo ZGVidWdfYmZkLCBmaWxlbmFtZSkKKysJPSBzaW1wbGVfZmluZF9hbmRfb3Blbl9zZXBhcmF0ZV9z eW1ib2xfZmlsZQorKwkgICAgKHRoaXMsIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWls ZGlkLCAmd2FybmluZ3MpOworKworKyAgICAgIGlmIChkZWJ1Z19iZmQgPT0gbnVsbHB0cikKKysJ c3RkOjp0aWUgKGRlYnVnX2JmZCwgZmlsZW5hbWUpCisrCSAgPSBzaW1wbGVfZmluZF9hbmRfb3Bl bl9zZXBhcmF0ZV9zeW1ib2xfZmlsZQorKwkgICAgICAodGhpcywgZmluZF9zZXBhcmF0ZV9kZWJ1 Z19maWxlX2J5X2RlYnVnbGluaywgJndhcm5pbmdzKTsKKysKKysgICAgICAvKiBPbmx5IHRyeSBk ZWJ1Z2luZm9kIG9uIHRoZSBmaXJzdCBhdHRlbXB0LiAgU3VyZSwgd2UgY291bGQgaW1hZ2luZQor KwkgYW4gZXh0ZW5zaW9uIHRoYXQgc29tZWhvdyBhZGRzIHRoZSByZXF1aXJlZCBkZWJ1ZyBpbmZv IHRvIHRoZQorKwkgZGVidWdpbmZvZCBzZXJ2ZXIgYnV0LCBhdCBsZWFzdCBmb3Igbm93LCB3ZSBk b24ndCBzdXBwb3J0IHRoaXMKKysJIHNjZW5hcmlvLiAgQmV0dGVyIGZvciB0aGUgZXh0ZW5zaW9u IHRvIHJldHVybiBuZXcgZGVidWcgaW5mbworKwkgZGlyZWN0bHkgdG8gR0RCLiAgUGx1cywgZ29p bmcgdG8gdGhlIGRlYnVnaW5mb2Qgc2VydmVyIG1pZ2h0IGJlCisrCSBzbG93LCBzbyB0aGF0J3Mg YSBnb29kIGFyZ3VtZW50IGZvciBvbmx5IGRvaW5nIHRoaXMgb25jZS4gICovCisrICAgICAgaWYg KGRlYnVnX2JmZCA9PSBudWxscHRyICYmIGF0dGVtcHQgPT0gMCkKKysJc3RkOjp0aWUgKGRlYnVn X2JmZCwgZmlsZW5hbWUpCisrCSAgPSBkZWJ1Z2luZm9kX2ZpbmRfYW5kX29wZW5fc2VwYXJhdGVf c3ltYm9sX2ZpbGUgKHRoaXMpOworKworKyAgICAgIGlmIChkZWJ1Z19iZmQgIT0gbnVsbHB0cikK KysJeworKwkgIC8qIFdlIGZvdW5kIGEgc2VwYXJhdGUgZGVidWcgaW5mbyBzeW1ib2wgZmlsZS4g IElmIHRoaXMgaXMgb3VyCisrCSAgICAgZmlyc3QgYXR0ZW1wdCB0aGVuIHNldHRpbmcgSEFTX0RX QVJGMiB3aWxsIGNhdXNlIHVzIHRvIGJyZWFrCisrCSAgICAgZnJvbSB0aGUgYXR0ZW1wdCBsb29w LiAgKi8KKysJICBzeW1ib2xfZmlsZV9hZGRfc2VwYXJhdGUgKGRlYnVnX2JmZCwgZmlsZW5hbWUu Y19zdHIgKCksCisrCQkJCSAgICBzeW1maWxlX2ZsYWdzLCB0aGlzKTsKKysJICBoYXNfZHdhcmYy ID0gdHJ1ZTsKKysJfQorKyAgICAgIGVsc2UgaWYgKGF0dGVtcHQgPT0gMCkKKysJeworKwkgIC8q IEZhaWxlZCB0byBmaW5kIGEgc2VwYXJhdGUgZGVidWcgaW5mbyBzeW1ib2wgZmlsZS4gIENhbGwg b3V0IHRvCisrCSAgICAgdGhlIGV4dGVuc2lvbiBsYW5ndWFnZXMuICBUaGUgdXNlciBtaWdodCBo YXZlIHJlZ2lzdGVyZWQgYW4KKysJICAgICBleHRlbnNpb24gdGhhdCBjYW4gZmluZCB0aGUgZGVi dWcgaW5mbyBmb3IgdXMsIG9yIG1heWJlIGdpdmUKKysJICAgICB0aGUgdXNlciBhIHN5c3RlbSBz cGVjaWZpYyBtZXNzYWdlIHRoYXQgZ3VpZGVzIHRoZW0gdG8gZmluZGluZworKwkgICAgIHRoZSBt aXNzaW5nIGRlYnVnIGluZm8uICAqLworKworKwkgIGV4dF9sYW5nX21pc3NpbmdfZGVidWdpbmZv X3Jlc3VsdCBleHRfcmVzdWx0CisrCSAgICA9IGV4dF9sYW5nX2hhbmRsZV9taXNzaW5nX2RlYnVn aW5mbyAodGhpcyk7CisrCSAgaWYgKCFleHRfcmVzdWx0LmZpbGVuYW1lICgpLmVtcHR5ICgpKQor KwkgICAgeworKwkgICAgICAvKiBFeHRlbnNpb24gZm91bmQgYSBzdWl0YWJsZSBkZWJ1ZyBmaWxl IGZvciB1cy4gICovCisrCSAgICAgIGRlYnVnX2JmZAorKwkJPSBzeW1maWxlX2JmZF9vcGVuX25v X2Vycm9yIChleHRfcmVzdWx0LmZpbGVuYW1lICgpLmNfc3RyICgpKTsKKyAKKy0gIGlmIChkZWJ1 Z19iZmQgPT0gbnVsbHB0cikKKy0gICAgc3RkOjp0aWUgKGRlYnVnX2JmZCwgZmlsZW5hbWUpCist ICAgICAgPSBkZWJ1Z2luZm9kX2ZpbmRfYW5kX29wZW5fc2VwYXJhdGVfc3ltYm9sX2ZpbGUgKHRo aXMpOworKwkgICAgICBpZiAoZGVidWdfYmZkICE9IG51bGxwdHIpCisrCQl7CisrCQkgIHN5bWJv bF9maWxlX2FkZF9zZXBhcmF0ZSAoZGVidWdfYmZkLAorKwkJCQkJICAgIGV4dF9yZXN1bHQuZmls ZW5hbWUgKCkuY19zdHIgKCksCisrCQkJCQkgICAgc3ltZmlsZV9mbGFncywgdGhpcyk7CisrCQkg IGhhc19kd2FyZjIgPSB0cnVlOworKwkJfQorKwkgICAgfQorKwkgIGVsc2UgaWYgKGV4dF9yZXN1 bHQudHJ5X2FnYWluICgpKQorKwkgICAgeworKwkgICAgICBtYXhfYXR0ZW1wdHMgPSAyOworKwkg ICAgICBjb250aW51ZTsKKysJICAgIH0KKysJfQorIAorLSAgaWYgKGRlYnVnX2JmZCAhPSBudWxs cHRyKQorLSAgICB7CistICAgICAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChkZWJ1Z19iZmQs IGZpbGVuYW1lLmNfc3RyICgpLCBzeW1maWxlX2ZsYWdzLAorLQkJCQl0aGlzKTsKKy0gICAgICBo YXNfZHdhcmYgPSB0cnVlOworKyAgICAgIC8qIElmIHdlIHN0aWxsIGhhdmUgbm90IGdvdCBhIHNl cGFyYXRlIGRlYnVnIHN5bWJvbCBmaWxlLCB0aGVuCisrCSBlbWl0IGFueSB3YXJuaW5ncyB3ZSd2 ZSBjb2xsZWN0ZWQgc28gZmFyLiAgKi8KKysgICAgICBpZiAoIWhhc19kd2FyZjIpCisrCXdhcm5p bmdzLmVtaXQgKCk7CisgICAgIH0KKyAKKy0gIC8qIElmIHdlIHN0aWxsIGhhdmUgbm90IGdvdCBh IHNlcGFyYXRlIGRlYnVnIHN5bWJvbCBmaWxlLCB0aGVuCistICAgICBlbWl0IGFueSB3YXJuaW5n cyB3ZSd2ZSBjb2xsZWN0ZWQgc28gZmFyLiAgKi8KKy0gIGlmICghaGFzX2R3YXJmKQorLSAgICB3 YXJuaW5ncy5lbWl0ICgpOworLQorLSAgcmV0dXJuIGhhc19kd2FyZjsKKysgIHJldHVybiBoYXNf ZHdhcmYyOworIH0KKyAKKyAMCgpkaWZmIC0tZ2l0IGEvZ2RiLWFkZC1taXNzaW5nLWRlYnVnLWlu Zm8tcHl0aG9uLWhvb2sucGF0Y2ggYi9nZGItYWRkLW1pc3NpbmctZGVidWctaW5mby1weXRob24t aG9vay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjE3YmY4Ci0t LSAvZGV2L251bGwKKysrIGIvZ2RiLWFkZC1taXNzaW5nLWRlYnVnLWluZm8tcHl0aG9uLWhvb2su cGF0Y2gKQEAgLTAsMCArMSwxNTU2IEBACitGcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNzQHJlZGhhdC5jb20+ CitEYXRlOiBTdW4sIDE1IE9jdCAyMDIzIDIyOjQ4OjQyICswMTAwCitTdWJqZWN0OiBnZGItYWRk LW1pc3NpbmctZGVidWctaW5mby1weXRob24taG9vay5wYXRjaAorCis7OyBCYWNrcG9ydCB1cHN0 cmVhbSBjb21taXQgOGY2YzQ1MmI1YTQuCisKK2dkYjogaW1wbGVtZW50IG1pc3NpbmcgZGVidWcg aGFuZGxlciBob29rIGZvciBQeXRob24KKworVGhpcyBjb21taXQgYnVpbGRzIG9uIHRoZSBwcmV2 aW91cyBjb21taXQsIGFuZCBpbXBsZW1lbnRzIHRoZQorZXh0ZW5zaW9uX2xhbmd1YWdlX29wczo6 aGFuZGxlX21pc3NpbmdfZGVidWdpbmZvIGZ1bmN0aW9uIGZvciBQeXRob24uCitUaGlzIGhvb2sg d2lsbCBnaXZlIHVzZXIgc3VwcGxpZWQgUHl0aG9uIGNvZGUgYSBjaGFuY2UgdG8gaGVscCBmaW5k CittaXNzaW5nIGRlYnVnIGluZm9ybWF0aW9uLgorCitUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhl IG5ldyBob29rIGlzIHByZXR0eSBtaW5pbWFsIHdpdGhpbiBHREIncyBDKysKK2NvZGU7IG1vc3Qg b2YgdGhlIHdvcmsgaXMgb3V0LXNvdXJjZWQgdG8gYSBQeXRob24gaW1wbGVtZW50YXRpb24gd2hp Y2gKK2lzIG1vZGVsbGVkIGhlYXZpbHkgb24gaG93IEdEQidzIFB5dGhvbiBmcmFtZSB1bndpbmRl cnMgYXJlCitpbXBsZW1lbnRlZC4KKworVGhlIGZvbGxvd2luZyBuZXcgY29tbWFuZHMgYXJlIGFk ZGVkIGFzIGNvbW1hbmRzIGltcGxlbWVudGVkIGluCitQeXRob24sIHRoaXMgaXMgc2ltaWxhciB0 byBob3cgdGhlIFB5dGhvbiB1bndpbmRlciBjb21tYW5kcyBhcmUKK2ltcGxlbWVudGVkOgorCisg IGluZm8gbWlzc2luZy1kZWJ1Zy1oYW5kbGVycworICBlbmFibGUgbWlzc2luZy1kZWJ1Zy1oYW5k bGVyIExPQ1VTIEhBTkRMRVIKKyAgZGlzYWJsZSBtaXNzaW5nLWRlYnVnLWhhbmRsZXIgTE9DVVMg SEFORExFUgorCitUbyBtYWtlIHVzZSBvZiB0aGlzIGV4dGVuc2lvbiBob29rIGEgdXNlciB3aWxs IGNyZWF0ZSBtaXNzaW5nIGRlYnVnCitpbmZvcm1hdGlvbiBoYW5kbGVyIG9iamVjdHMsIGFuZCBy ZWdpc3RlcnMgdGhlc2UgaGFuZGxlcnMgd2l0aCBHREIuCitXaGVuIEdEQiBlbmNvdW50ZXJzIGFu IG9iamZpbGUgdGhhdCBpcyBtaXNzaW5nIGRlYnVnIGluZm9ybWF0aW9uLCBlYWNoCitoYW5kbGVy IGlzIGNhbGxlZCBpbiB0dXJuIHVudGlsIG9uZSBpcyBhYmxlIHRvIGhlbHAuICBIZXJlIGlzIGEK K21pbmltYWwgaGFuZGxlciB0aGF0IGRvZXMgbm90aGluZyB1c2VmdWw6CisKKyAgaW1wb3J0IGdk YgorICBpbXBvcnQgZ2RiLm1pc3NpbmdfZGVidWcKKworICBjbGFzcyBNeUZpcnN0SGFuZGxlcihn ZGIubWlzc2luZ19kZWJ1Zy5NaXNzaW5nRGVidWdIYW5kbGVyKToKKyAgICAgIGRlZiBfX2luaXRf XyhzZWxmKToKKyAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJteV9maXJzdF9oYW5kbGVyIikK KworICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iamZpbGUpOgorICAgICAgICAgICMgVGhpcyBo YW5kbGVyIGRvZXMgbm90aGluZyB1c2VmdWwuCisgICAgICAgICAgcmV0dXJuIE5vbmUKKworICBn ZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKE5vbmUsIE15Rmlyc3RIYW5kbGVyKCkp CisKK1JldHVybmluZyBOb25lIGZyb20gdGhlIF9fY2FsbF9fIG1ldGhvZCB0ZWxscyBHREIgdGhh dCB0aGlzIGhhbmRsZXIKK3dhcyB1bmFibGUgdG8gZmluZCB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZv cm1hdGlvbiwgYW5kIEdEQiBzaG91bGQgYXNrCithbnkgb3RoZXIgcmVnaXN0ZXJlZCBoYW5kbGVy cy4KKworQnkgZXh0ZW5kaW5nIHRoZSBfX2NhbGxfXyBtZXRob2QgaXQgaXMgcG9zc2libGUgZm9y IHRoZSBQeXRob24KK2V4dGVuc2lvbiB0byBsb2NhdGUgdGhlIGRlYnVnIGluZm9ybWF0aW9uIGZv ciBvYmpmaWxlIGFuZCByZXR1cm4gYQordmFsdWUgdGhhdCB0ZWxscyBHREIgaG93IHRvIHVzZSB0 aGUgaW5mb3JtYXRpb24gdGhhdCBoYXMgYmVlbiBsb2NhdGVkLgorCitQb3NzaWJsZSByZXR1cm4g dmFsdWVzIGZyb20gYSBoYW5kbGVyOgorCisgIC0gTm9uZTogVGhpcyBtZWFucyB0aGUgaGFuZGxl ciBjb3VsZG4ndCBoZWxwLiAgR0RCIHdpbGwgY2FsbCBvdGhlcgorICAgICAgICAgIHJlZ2lzdGVy ZWQgaGFuZGxlcnMgdG8gc2VlIGlmIHRoZXkgY2FuIGhlbHAgaW5zdGVhZC4KKworICAtIEZhbHNl OiBUaGUgaGFuZGxlciBoYXMgZG9uZSBhbGwgaXQgY2FuLCBidXQgdGhlIGRlYnVnIGluZm9ybWF0 aW9uCisgICAgICAgICAgIGZvciB0aGUgb2JqZmlsZSBzdGlsbCBjb3VsZG4ndCBiZSBmb3VuZC4g IEdEQiB3aWxsIG5vdCBjYWxsCisJICAgYW55IG90aGVyIGhhbmRsZXJzLCBhbmQgd2lsbCBjb250 aW51ZSB3aXRob3V0IHRoZSBkZWJ1ZworCSAgIGluZm9ybWF0aW9uIGZvciBvYmpmaWxlLgorCisg IC0gVHJ1ZTogVGhlIGhhbmRsZXIgaGFzIGluc3RhbGxlZCB0aGUgZGVidWcgaW5mb3JtYXRpb24g aW50byBhCisgICAgICAgICAgbG9jYXRpb24gd2hlcmUgR0RCIHdvdWxkIG5vcm1hbGx5IGV4cGVj dCB0byBmaW5kIGl0LiAgR0RCCisJICBzaG91bGQgbG9vayBhZ2FpbiBmb3IgdGhlIGRlYnVnIGlu Zm9ybWF0aW9uLgorCisgIC0gQSBzdHJpbmc6IFRoZSBoYW5kbGVyIGNhbiByZXR1cm4gYSBmaWxl bmFtZSwgd2hpY2ggaXMgdGhlIGZpbGUKKyAgICAgICAgICAgICAgY29udGFpbmluZyB0aGUgbWlz c2luZyBkZWJ1ZyBpbmZvcm1hdGlvbi4gIEdEQiB3aWxsIGxvYWQKKwkgICAgICB0aGlzIGZpbGUu CisKK1doZW4gYSBoYW5kbGVyIHJldHVybnMgVHJ1ZSwgR0RCIHdpbGwgbG9vayBhZ2FpbiBmb3Ig dGhlIGRlYnVnCitpbmZvcm1hdGlvbiwgYnV0IG9ubHkgdXNpbmcgdGhlIHN0YW5kYXJkIGJ1aWx0 LWluIGJ1aWxkLWlkIGFuZAorLmdudV9kZWJ1Z2xpbmsgYmFzZWQgbG9va3VwIHN0cmF0ZWdpZXMu ICBJdCBpcyBub3QgcG9zc2libGUgZm9yIGFuCitleHRlbnNpb24gdG8gdHJpZ2dlciBhbm90aGVy IGRlYnVnaW5mb2QgbG9va3VwOyB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0Cit0aGUgZGVidWdpbmZv ZCBzZXJ2ZXIgaXMgcmVtb3RlLCBhbmQgb3V0IG9mIHRoZSBjb250cm9sIG9mIGV4dGVuc2lvbnMK K3J1bm5pbmcgd2l0aGluIEdEQi4KKworSGFuZGxlcnMgY2FuIGJlIHJlZ2lzdGVyZWQgZ2xvYmFs bHksIG9yIHBlciBwcm9ncmFtIHNwYWNlLiAgR0RCIGNoZWNrcwordGhlIGhhbmRsZXJzIGZvciB0 aGUgY3VycmVudCBwcm9ncmFtIHNwYWNlIGZpcnN0LCBhbmQgdGhlbiBhbGwgb2YgdGhlCitnbG9i YWwgaGFuZGxlcy4gIFRoZSBmaXJzdCBoYW5kbGVyIHRoYXQgcmV0dXJucyBhIHZhbHVlIHRoYXQg aXMgbm90CitOb25lLCBoYXMgImhhbmRsZWQiIHRoZSBvYmpmaWxlLCBhdCB3aGljaCBwb2ludCBH REIgY29udGludWVzLgorCitSZXZpZXdlZC1CeTogRWxpIFphcmV0c2tpaSA8ZWxpekBnbnUub3Jn PgorQXBwcm92ZWQtQnk6IFRvbSBUcm9tZXkgPHRvbUB0cm9tZXkuY29tPgorCitkaWZmIC0tZ2l0 IGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluIGIvZ2RiL2RhdGEtZGlyZWN0b3J5L01h a2VmaWxlLmluCistLS0gYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KKysrKyBiL2dk Yi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgorQEAgLTczLDYgKzczLDcgQEAgUFlUSE9OX0ZJ TEVfTElTVCA9IFwKKyAJZ2RiL0ZyYW1lRGVjb3JhdG9yLnB5IFwKKyAJZ2RiL0ZyYW1lSXRlcmF0 b3IucHkgXAorIAlnZGIvZnJhbWVzLnB5IFwKKysJZ2RiL21pc3NpbmdfZGVidWcucHkgXAorIAln ZGIvcHJpbnRpbmcucHkgXAorIAlnZGIvcHJvbXB0LnB5IFwKKyAJZ2RiL3N0eWxpbmcucHkgXAor QEAgLTgyLDYgKzgzLDcgQEAgUFlUSE9OX0ZJTEVfTElTVCA9IFwKKyAJZ2RiL2NvbW1hbmQvX19p bml0X18ucHkgXAorIAlnZGIvY29tbWFuZC9leHBsb3JlLnB5IFwKKyAJZ2RiL2NvbW1hbmQvZnJh bWVfZmlsdGVycy5weSBcCisrCWdkYi9jb21tYW5kL21pc3NpbmdfZGVidWcucHkgXAorIAlnZGIv Y29tbWFuZC9wcmV0dHlfcHJpbnRlcnMucHkgXAorIAlnZGIvY29tbWFuZC9wcm9tcHQucHkgXAor IAlnZGIvY29tbWFuZC90eXBlX3ByaW50ZXJzLnB5IFwKK2RpZmYgLS1naXQgYS9nZGIvZG9jL3B5 dGhvbi50ZXhpIGIvZ2RiL2RvYy9weXRob24udGV4aQorLS0tIGEvZ2RiL2RvYy9weXRob24udGV4 aQorKysrIGIvZ2RiL2RvYy9weXRob24udGV4aQorQEAgLTIyOSw2ICsyMjksNyBAQAorICogQ29u bmVjdGlvbnMgSW4gUHl0aG9uOjogICAgICAgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIGNvbm5l Y3Rpb25zLgorICogVFVJIFdpbmRvd3MgSW4gUHl0aG9uOjogICAgICAgSW1wbGVtZW50aW5nIG5l dyBUVUkgd2luZG93cy4KKyAqIERpc2Fzc2VtYmx5IEluIFB5dGhvbjo6ICAgICAgIEluc3RydWN0 aW9uIERpc2Fzc2VtYmx5IEluIFB5dGhvbgorKyogTWlzc2luZyBEZWJ1ZyBJbmZvIEluIFB5dGhv bjo6IEhhbmRsZSBtaXNzaW5nIGRlYnVnIGluZm8gZnJvbSBQeXRob24uCisgQGVuZCBtZW51Cisg CisgQG5vZGUgQmFzaWMgUHl0aG9uCitAQCAtNTE5MSw2ICs1MTkyLDEyIEBACisgb2JqZWN0cy4g IEB4cmVme0ZyYW1lIEZpbHRlciBBUEl9LCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyBAZW5kIGRl ZnZhcgorIAorK0BkZWZ2YXIgUHJvZ3NwYWNlLm1pc3NpbmdfZGVidWdfaGFuZGxlcnMKKytUaGUg QGNvZGV7bWlzc2luZ19kZWJ1Z19oYW5kbGVyc30gYXR0cmlidXRlIGlzIGEgbGlzdCBvZiB0aGUg bWlzc2luZworK2RlYnVnIGhhbmRsZXIgb2JqZWN0cyBmb3IgdGhpcyBwcm9ncmFtIHNwYWNlLiAg QHhyZWZ7TWlzc2luZyBEZWJ1ZworK0luZm8gSW4gUHl0aG9ufSwgZm9yIG1vcmUgaW5mb3JtYXRp b24uCisrQGVuZCBkZWZ2YXIKKysKKyBBIHByb2dyYW0gc3BhY2UgaGFzIHRoZSBmb2xsb3dpbmcg bWV0aG9kczoKKyAKKyBAZGVmdW4gUHJvZ3NwYWNlLmJsb2NrX2Zvcl9wYyAocGMpCitAQCAtNzc3 MCw2ICs3Nzc3LDEzOSBAQAorIGdkYi5kaXNhc3NlbWJsZXIucmVnaXN0ZXJfZGlzYXNzZW1ibGVy KE5pYmJsZVN3YXBEaXNhc3NlbWJsZXIoKSkKKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorK0Bub2Rl IE1pc3NpbmcgRGVidWcgSW5mbyBJbiBQeXRob24KKytAc3Vic3Vic2VjdGlvbiBNaXNzaW5nIERl YnVnIEluZm8gSW4gUHl0aG9uCisrQGNpbmRleCBweXRob24sIGhhbmRsZSBtaXNzaW5nIGRlYnVn IGluZm9ybWF0aW9uCisrCisrV2hlbiBAdmFsdWV7R0RCTn0gZW5jb3VudGVycyBhIG5ldyBvYmpm aWxlIChAcHhyZWZ7T2JqZmlsZXMgSW4KKytQeXRob259KSwgZS5nLkA6IHRoZSBwcmltYXJ5IGV4 ZWN1dGFibGUsIG9yIGFueSBzaGFyZWQgbGlicmFyaWVzIHVzZWQKKytieSB0aGUgaW5mZXJpb3Is IEB2YWx1ZXtHREJOfSB3aWxsIGF0dGVtcHQgdG8gbG9hZCB0aGUgY29ycmVzcG9uZGluZworK2Rl YnVnIGluZm9ybWF0aW9uIGZvciB0aGF0IG9iamZpbGUuICBUaGUgZGVidWcgaW5mb3JtYXRpb24g bWlnaHQgYmUKKytmb3VuZCB3aXRoaW4gdGhlIG9iamZpbGUgaXRzZWxmLCBvciB3aXRoaW4gYSBz ZXBhcmF0ZSBvYmpmaWxlIHdoaWNoCisrQHZhbHVle0dEQk59IHdpbGwgYXV0b21hdGljYWxseSBs b2NhdGUgYW5kIGxvYWQuCisrCisrU29tZXRpbWVzIHRob3VnaCwgQHZhbHVle0dEQk59IG1pZ2h0 IG5vdCBmaW5kIGFueSBkZWJ1ZyBpbmZvcm1hdGlvbgorK2ZvciBhbiBvYmpmaWxlLCBpbiB0aGlz IGNhc2UgdGhlIGRlYnVnZ2luZyBleHBlcmllbmNlIHdpbGwgYmUKKytyZXN0cmljdGVkLgorKwor K0lmIEB2YWx1ZXtHREJOfSBmYWlscyB0byBsb2NhdGUgYW55IGRlYnVnIGluZm9ybWF0aW9uIGZv ciBhIHBhcnRpY3VsYXIKKytvYmpmaWxlLCB0aGVyZSBpcyBhbiBvcHBvcnR1bml0eSBmb3IgYSBQ eXRob24gZXh0ZW5zaW9uIHRvIHN0ZXAgaW4uICBBCisrUHl0aG9uIGV4dGVuc2lvbiBjYW4gcG90 ZW50aWFsbHkgbG9jYXRlIHRoZSBtaXNzaW5nIGRlYnVnIGluZm9ybWF0aW9uCisrdXNpbmcgc29t ZSBwbGF0Zm9ybS0gb3IgcHJvamVjdC1zcGVjaWZpYyBzdGVwcywgYW5kIGluZm9ybQorK0B2YWx1 ZXtHREJOfSBvZiBpdHMgbG9jYXRpb24uICBPciBhIFB5dGhvbiBleHRlbnNpb24gbWlnaHQgcHJv dmlkZQorK3NvbWUgcGxhdGZvcm0tIG9yIHByb2plY3Qtc3BlY2lmaWMgYWR2aWNlIHRvIHRoZSB1 c2VyIGFib3V0IGhvdyB0bworK29idGFpbiB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvcm1hdGlvbi4K KysKKytBIG1pc3NpbmcgZGVidWcgaW5mb3JtYXRpb24gUHl0aG9uIGV4dGVuc2lvbiBjb25zaXN0 cyBvZiBhIGhhbmRsZXIKKytvYmplY3Qgd2hpY2ggaGFzIHRoZSBAY29kZXtuYW1lfSBhbmQgQGNv ZGV7ZW5hYmxlZH0gYXR0cmlidXRlcywgYW5kCisraW1wbGVtZW50cyB0aGUgQGNvZGV7X19jYWxs X199IG1ldGhvZC4gIFdoZW4gQHZhbHVle0dEQk59IGVuY291bnRlcnMKKythbiBvYmpmaWxlIGZv ciB3aGljaCBpdCBpcyB1bmFibGUgdG8gZmluZCBhbnkgZGVidWcgaW5mb3JtYXRpb24sIGl0Cisr aW52b2tlcyB0aGUgQGNvZGV7X19jYWxsX199IG1ldGhvZC4gIEZ1bGwgZGV0YWlscyBvZiBob3cg aGFuZGxlcnMgYXJlCisrd3JpdHRlbiBjYW4gYmUgZm91bmQgYmVsb3cuCisrCisrQHN1YmhlYWRp bmcgVGhlIEBjb2Rle2dkYi5taXNzaW5nX2RlYnVnfSBNb2R1bGUKKysKKytAdmFsdWV7R0RCTn0g Y29tZXMgd2l0aCBhIEBjb2Rle2dkYi5taXNzaW5nX2RlYnVnfSBtb2R1bGUgd2hpY2gKKytjb250 YWlucyB0aGUgZm9sbG93aW5nIGNsYXNzIGFuZCBnbG9iYWwgZnVuY3Rpb246CisrCisrQGRlZnRw e2NsYXNzfSBnZGIubWlzc2luZ19kZWJ1Zy5NaXNzaW5nRGVidWdIYW5kbGVyCisrCisrQGNvZGV7 TWlzc2luZ0RlYnVnSGFuZGxlcn0gaXMgYSBiYXNlIGNsYXNzIGZyb20gd2hpY2ggdXNlci1jcmVh dGVkCisraGFuZGxlcnMgY2FuIGRlcml2ZSwgdGhvdWdoIGl0IGlzIG5vdCByZXF1aXJlZCB0aGF0 IGhhbmRsZXJzIGRlcml2ZQorK2Zyb20gdGhpcyBjbGFzcywgc28gbG9uZyBhcyBhbnkgdXNlciBj cmVhdGVkIGhhbmRsZXIgaGFzIHRoZQorK0Bjb2Rle25hbWV9IGFuZCBAY29kZXtlbmFibGVkfSBh dHRyaWJ1dGVzLCBhbmQgaW1wbGVtZW50cyB0aGUKKytAY29kZXtfX2NhbGxfX30gbWV0aG9kLgor KworK0BkZWZ1biBNaXNzaW5nRGVidWdIYW5kbGVyLl9faW5pdF9fIChuYW1lKQorK1RoZSBAdmFy e25hbWV9IGlzIGEgc3RyaW5nIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgbWlzc2luZyBkZWJ1Zwor K2hhbmRsZXIgd2l0aGluIHNvbWUgQHZhbHVle0dEQk59IGNvbW1hbmRzLiAgVmFsaWQgbmFtZXMg Y29uc2lzdCBvZiB0aGUKKytjaGFyYWN0ZXJzIEBjb2Rle1stX2EtekEtWjAtOV19LCBjcmVhdGlu ZyBhIGhhbmRsZXIgd2l0aCBhbiBpbnZhbGlkCisrbmFtZSByYWlzZXMgYSBAY29kZXtWYWx1ZUVy cm9yfSBleGNlcHRpb24uCisrQGVuZCBkZWZ1bgorKworK0BkZWZ1biBNaXNzaW5nRGVidWdIYW5k bGVyLl9fY2FsbF9fIChvYmpmaWxlKQorK1N1Yi1jbGFzc2VzIG11c3Qgb3ZlcnJpZGUgdGhlIEBj b2Rle19fY2FsbF9ffSBtZXRob2QuICBUaGUKKytAdmFye29iamZpbGV9IGFyZ3VtZW50IHdpbGwg YmUgYSBAY29kZXtnZGIuT2JqZmlsZX0sIHRoaXMgaXMgdGhlCisrb2JqZmlsZSBmb3Igd2hpY2gg QHZhbHVle0dEQk59IHdhcyB1bmFibGUgdG8gZmluZCBhbnkgZGVidWcKKytpbmZvcm1hdGlvbi4K KysKKytUaGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIEBjb2Rle19fY2FsbF9ffSBtZXRob2QgaW5k aWNhdGVzIHdoYXQKKytAdmFsdWV7R0RCTn0gc2hvdWxkIGRvIG5leHQuICBUaGUgcG9zc2libGUg cmV0dXJuIHZhbHVlcyBhcmU6CisrCisrQGl0ZW1pemUgQGJ1bGxldAorK0BpdGVtIEBjb2Rle05v bmV9CisrCisrVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGlzIGhhbmRsZXIgY291bGQgbm90IGhlbHAg d2l0aCBAdmFye29iamZpbGV9LAorK0B2YWx1ZXtHREJOfSBzaG91bGQgY2FsbCBhbnkgb3RoZXIg cmVnaXN0ZXJlZCBoYW5kbGVycy4KKysKKytAaXRlbSBAY29kZXtUcnVlfQorKworK1RoaXMgaW5k aWNhdGVzIHRoYXQgdGhpcyBoYW5kbGVyIGhhcyBpbnN0YWxsZWQgdGhlIGRlYnVnIGluZm9ybWF0 aW9uCisraW50byBhIGxvY2F0aW9uIHdoZXJlIEB2YWx1ZXtHREJOfSB3b3VsZCBub3JtYWxseSBl eHBlY3QgdG8gZmluZCBpdAorK3doZW4gbG9va2luZyBmb3Igc2VwYXJhdGUgZGVidWcgaW5mb3Jt YXRpb24gZmlsZXMgKEBweHJlZntTZXBhcmF0ZQorK0RlYnVnIEZpbGVzfSkuICBAdmFsdWV7R0RC Tn0gd2lsbCByZXBlYXQgdGhlIG5vcm1hbCBsb29rdXAgcHJvY2VzcywKKyt3aGljaCBzaG91bGQg bm93IGZpbmQgdGhlIHNlcGFyYXRlIGRlYnVnIGZpbGUuCisrCisrSWYgQHZhbHVle0dEQk59IHN0 aWxsIGRvZXNuJ3QgZmluZCB0aGUgc2VwYXJhdGUgZGVidWcgaW5mb3JtYXRpb24gZmlsZQorK2Fm dGVyIHRoaXMgc2Vjb25kIGF0dGVtcHQsIHRoZW4gdGhlIFB5dGhvbiBtaXNzaW5nIGRlYnVnIGlu Zm9ybWF0aW9uCisraGFuZGxlcnMgYXJlIG5vdCBpbnZva2VkIGEgc2Vjb25kIHRpbWUsIHRoaXMg cHJldmVudHMgYSBiYWRseSBiZWhhdmVkCisraGFuZGxlciBjYXVzaW5nIEB2YWx1ZXtHREJOfSB0 byBnZXQgc3R1Y2sgaW4gYSBsb29wLiAgQHZhbHVle0dEQk59Cisrd2lsbCBjb250aW51ZSB3aXRo b3V0IGFueSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgQHZhcntvYmpmaWxlfS4KKysKKytAaXRlbSBA Y29kZXtGYWxzZX0KKysKKytUaGlzIGluZGljYXRlcyB0aGF0IHRoaXMgaGFuZGxlciBoYXMgZG9u ZSBldmVyeXRoaW5nIHRoYXQgaXQgaW50ZW5kcworK3RvIGRvIHdpdGggQHZhcntvYmpmaWxlfSwg YnV0IG5vIHNlcGFyYXRlIGRlYnVnIGluZm9ybWF0aW9uIGNhbiBiZQorK2ZvdW5kLiAgQHZhbHVl e0dEQk59IHdpbGwgbm90IGNhbGwgYW55IG90aGVyIHJlZ2lzdGVyZWQgaGFuZGxlcnMgZm9yCisr QHZhcntvYmpmaWxlfS4gIEB2YWx1ZXtHREJOfSB3aWxsIGNvbnRpbnVlIHdpdGhvdXQgZGVidWdn aW5nCisraW5mb3JtYXRpb24gZm9yIEB2YXJ7b2JqZmlsZX0uCisrCisrQGl0ZW0gQSBzdHJpbmcK KysKKytUaGUgcmV0dXJuZWQgc3RyaW5nIHNob3VsZCBjb250YWluIGEgZmlsZW5hbWUuICBAdmFs dWV7R0RCTn0gd2lsbCBub3QKKytjYWxsIGFueSBmdXJ0aGVyIHJlZ2lzdGVyZWQgaGFuZGxlcnMs IGFuZCB3aWxsIGluc3RlYWQgbG9hZCB0aGUgZGVidWcKKytpbmZvcm1hdGlvbiBmcm9tIHRoZSBm aWxlIGlkZW50aWZpZWQgYnkgdGhlIHJldHVybmVkIGZpbGVuYW1lLgorK0BlbmQgaXRlbWl6ZQor KworK0ludm9raW5nIHRoZSBAY29kZXtfX2NhbGxfX30gbWV0aG9kIGZyb20gdGhpcyBiYXNlIGNs YXNzIHdpbGwgcmFpc2UgYQorK0Bjb2Rle05vdEltcGxlbWVudGVkRXJyb3J9IGV4Y2VwdGlvbi4K KytAZW5kIGRlZnVuCisrCisrQGRlZnZhciBNaXNzaW5nRGVidWdIYW5kbGVyLm5hbWUKKytBIHJl YWQtb25seSBhdHRyaWJ1dGUgd2hpY2ggaXMgYSBzdHJpbmcsIHRoZSBuYW1lIG9mIHRoaXMgaGFu ZGxlcgorK3Bhc3NlZCB0byB0aGUgQGNvZGV7X19pbml0X199IG1ldGhvZC4KKytAZW5kIGRlZnZh cgorKworK0BkZWZ2YXIgTWlzc2luZ0RlYnVnSGFuZGxlci5lbmFibGVkCisrQSBtb2RpZmlhYmxl IGF0dHJpYnV0ZSBjb250YWluaW5nIGEgYm9vbGVhbjsgd2hlbiBAY29kZXtUcnVlfSwgdGhlCisr aGFuZGxlciBpcyBlbmFibGVkLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IEB2YWx1ZXtHREJOfS4gIFdo ZW4KKytAY29kZXtGYWxzZX0sIHRoZSBoYW5kbGVyIGhhcyBiZWVuIGRpc2FibGVkLCBhbmQgd2ls bCBub3QgYmUgdXNlZC4KKytAZW5kIGRlZnZhcgorK0BlbmQgZGVmdHAKKysKKytAZGVmdW4gZ2Ri Lm1pc3NpbmdfZGVidWcucmVnaXN0ZXJfaGFuZGxlciAobG9jdXMsIGhhbmRsZXIsIHJlcGxhY2U9 QGNvZGV7RmFsc2V9KQorK1JlZ2lzdGVyIGEgbmV3IG1pc3NpbmcgZGVidWcgaGFuZGxlciB3aXRo IEB2YWx1ZXtHREJOfS4KKysKKytAdmFye2hhbmRsZXJ9IGlzIGFuIGluc3RhbmNlIG9mIGEgc3Vi LWNsYXNzIG9mCisrQGNvZGV7TWlzc2luZ0RlYnVnSGFuZGxlcn0sIG9yIGF0IGxlYXN0IGFuIGlu c3RhbmNlIG9mIGFuIG9iamVjdCB0aGF0CisraGFzIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYW5kIG1l dGhvZHMgYXMgQGNvZGV7TWlzc2luZ0RlYnVnSGFuZGxlcn0uCisrCisrQHZhcntsb2N1c30gc3Bl Y2lmaWVzIHRvIHdoaWNoIGhhbmRsZXIgbGlzdCB0byBwcmVwZW5kIEB2YXJ7aGFuZGxlcn0uCisr SXQgY2FuIGJlIGVpdGhlciBhIEBjb2Rle2dkYi5Qcm9nc3BhY2V9IChAcHhyZWZ7UHJvZ3NwYWNl cyBJbiBQeXRob259KQorK29yIEBjb2Rle05vbmV9LCBpbiB3aGljaCBjYXNlIHRoZSBoYW5kbGVy IGlzIHJlZ2lzdGVyZWQgZ2xvYmFsbHkuICBUaGUKKytuZXdseSByZWdpc3RlcmVkIEB2YXJ7aGFu ZGxlcn0gd2lsbCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBoYW5kbGVyCisrZnJvbSB0aGUg c2FtZSBsb2N1cy4gIFR3byBoYW5kbGVycyBpbiB0aGUgc2FtZSBsb2N1cyBjYW5ub3QgaGF2ZSB0 aGUKKytzYW1lIG5hbWUsIGFuIGF0dGVtcHQgdG8gYWRkIGEgaGFuZGxlciB3aXRoIGFuIGFscmVh ZHkgZXhpc3RpbmcgbmFtZQorK3JhaXNlcyBhbiBleGNlcHRpb24gdW5sZXNzIEB2YXJ7cmVwbGFj ZX0gaXMgQGNvZGV7VHJ1ZX0sIGluIHdoaWNoIGNhc2UKKyt0aGUgb2xkIGhhbmRsZXIgaXMgZGVs ZXRlZCBhbmQgdGhlIG5ldyBoYW5kbGVyIGlzIHByZXBlbmRlZCB0byB0aGUKKytzZWxlY3RlZCBo YW5kbGVyIGxpc3QuCisrCisrQHZhbHVle0dEQk59IGZpcnN0IGNhbGxzIHRoZSBoYW5kbGVycyBm b3IgdGhlIGN1cnJlbnQgcHJvZ3JhbSBzcGFjZSwKKythbmQgdGhlbiB0aGUgZ2xvYmFsbHkgcmVn aXN0ZXJlZCBoYW5kbGVycy4gIEFzIHNvb24gYXMgYSBoYW5kbGVyCisrcmV0dXJucyBhIHZhbHVl IG90aGVyIHRoYW4gQGNvZGV7Tm9uZX0sIG5vIGZ1cnRoZXIgaGFuZGxlcnMgYXJlIGNhbGxlZAor K2ZvciB0aGlzIG9iamZpbGUuCisrQGVuZCBkZWZ1bgorKworIEBub2RlIFB5dGhvbiBBdXRvLWxv YWRpbmcKKyBAc3Vic2VjdGlvbiBQeXRob24gQXV0by1sb2FkaW5nCisgQGNpbmRleCBQeXRob24g YXV0by1sb2FkaW5nCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL19faW5pdF9fLnB5 IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL19faW5pdF9fLnB5CistLS0gYS9nZGIvcHl0aG9uL2xpYi9n ZGIvX19pbml0X18ucHkKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQorQEAg LTg0LDYgKzg0LDggQEAgeG1ldGhvZHMgPSBbXQorIGZyYW1lX2ZpbHRlcnMgPSB7fQorICMgSW5p dGlhbCBmcmFtZSB1bndpbmRlcnMuCisgZnJhbWVfdW53aW5kZXJzID0gW10KKysjIEluaXRpYWwg bWlzc2luZyBkZWJ1ZyBoYW5kbGVycy4KKyttaXNzaW5nX2RlYnVnX2hhbmRsZXJzID0gW10KKyAK KyAKKyBkZWYgX2V4ZWN1dGVfdW53aW5kZXJzKHBlbmRpbmdfZnJhbWUpOgorQEAgLTI5MSwzICsy OTMsNDIgQEAgY2xhc3MgVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAgICAgICAgIyB0aHJl YWRzLgorICAgICAgICAgd2l0aCBibG9ja2VkX3NpZ25hbHMoKToKKyAgICAgICAgICAgICBzdXBl cigpLnN0YXJ0KCkKKysKKysKKytkZWYgX2hhbmRsZV9taXNzaW5nX2RlYnVnaW5mbyhvYmpmaWxl KToKKysgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24gY2FsbGVkIGZyb20gR0RCIHRvIGV4ZWN1dGUg bWlzc2luZyBkZWJ1ZworKyAgICBoYW5kbGVycy4KKysKKysgICAgUnVuIGVhY2ggb2YgdGhlIGN1 cnJlbnRseSByZWdpc3RlcmVkLCBhbmQgZW5hYmxlZCBtaXNzaW5nIGRlYnVnCisrICAgIGhhbmRs ZXIgb2JqZWN0cyBmb3IgdGhlIGN1cnJlbnQgcHJvZ3JhbSBzcGFjZSBhbmQgdGhlbiBmcm9tIHRo ZQorKyAgICBnbG9iYWwgbGlzdC4gIFN0b3AgYWZ0ZXIgdGhlIGZpcnN0IGhhbmRsZXIgdGhhdCBy ZXR1cm5zIGEgcmVzdWx0CisrICAgIG90aGVyIHRoYW4gTm9uZS4KKysKKysgICAgQXJndW1lbnRz OgorKyAgICAgICAgb2JqZmlsZTogQSBnZGIuT2JqZmlsZSBmb3Igd2hpY2ggR0RCIGNvdWxkIG5v dCBmaW5kIGFueSBkZWJ1ZworKyAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisrCisrICAg IFJldHVybnM6CisrICAgICAgICBOb25lOiBObyBkZWJ1ZyBpbmZvcm1hdGlvbiBjb3VsZCBiZSBm b3VuZCBmb3Igb2JqZmlsZS4KKysgICAgICAgIEZhbHNlOiBBIGhhbmRsZXIgaGFzIGRvbmUgYWxs IGl0IGNhbiB3aXRoIG9iamZpbGUsIGJ1dCBubworKyAgICAgICAgICAgICAgIGRlYnVnIGluZm9y bWF0aW9uIGNvdWxkIGJlIGZvdW5kLgorKyAgICAgICAgVHJ1ZTogRGVidWcgaW5mb3JtYXRpb24g bWlnaHQgaGF2ZSBiZWVuIGluc3RhbGxlZCBieSBhCisrICAgICAgICAgICAgICBoYW5kbGVyLCBH REIgc2hvdWxkIGNoZWNrIGFnYWluLgorKyAgICAgICAgQSBzdHJpbmc6IFRoaXMgaXMgdGhlIGZp bGVuYW1lIG9mIGEgZmlsZSBjb250YWluaW5nIHRoZQorKyAgICAgICAgICAgICAgICAgIHJlcXVp cmVkIGRlYnVnIGluZm9ybWF0aW9uLgorKyAgICAiIiIKKysgICAgcHNwYWNlID0gb2JqZmlsZS5w cm9nc3BhY2UKKysKKysgICAgZm9yIGhhbmRsZXIgaW4gcHNwYWNlLm1pc3NpbmdfZGVidWdfaGFu ZGxlcnM6CisrICAgICAgICBpZiBoYW5kbGVyLmVuYWJsZWQ6CisrICAgICAgICAgICAgcmVzdWx0 ID0gaGFuZGxlcihvYmpmaWxlKQorKyAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToK KysgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorKworKyAgICBmb3IgaGFuZGxlciBpbiBt aXNzaW5nX2RlYnVnX2hhbmRsZXJzOgorKyAgICAgICAgaWYgaGFuZGxlci5lbmFibGVkOgorKyAg ICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZXIob2JqZmlsZSkKKysgICAgICAgICAgICBpZiByZXN1 bHQgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKKysKKysgICAg cmV0dXJuIE5vbmUKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9taXNz aW5nX2RlYnVnLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvbWlzc2luZ19kZWJ1Zy5w eQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9weXRob24v bGliL2dkYi9jb21tYW5kL21pc3NpbmdfZGVidWcucHkKK0BAIC0wLDAgKzEsMjI2IEBACisrIyBN aXNzaW5nIGRlYnVnIHJlbGF0ZWQgY29tbWFuZHMuCisrIworKyMgQ29weXJpZ2h0IDIwMjMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKysKKytpbXBvcnQgZ2RiCisraW1wb3J0IHJlCisrCisrCisrZGVmIHZhbGlkYXRlX3Jl Z2V4cChleHAsIGlkc3RyaW5nKToKKysgICAgIiIiQ29tcGlsZSBleHAgaW50byBhIGNvbXBpbGVy IHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QuCisrCisrICAgIEFyZ3VtZW50czoKKysgICAgICAg IGV4cDogVGhlIHN0cmluZyB0byBjb21waWxlIGludG8gYSByZS5QYXR0ZXJuIG9iamVjdC4KKysg ICAgICAgIGlkc3RyaW5nOiBBIHN0cmluZywgd2hhdCBleHAgaXMgYSByZWdleHAgZm9yLgorKwor KyAgICBSZXR1cm5zOgorKyAgICAgICAgQSByZS5QYXR0ZXJuIG9iamVjdCByZXByZXNlbnRpbmcg ZXhwLgorKworKyAgICBSYWlzZXM6CisrICAgICAgICBTeW50YXhFcnJvcjogSWYgZXhwIGlzIGFu IGludmFsaWQgcmVnZXhwLgorKyAgICAiIiIKKysgICAgdHJ5OgorKyAgICAgICAgcmV0dXJuIHJl LmNvbXBpbGUoZXhwKQorKyAgICBleGNlcHQgU3ludGF4RXJyb3I6CisrICAgICAgICByYWlzZSBT eW50YXhFcnJvcigiSW52YWxpZCAlcyByZWdleHA6ICVzLiIgJSAoaWRzdHJpbmcsIGV4cCkpCisr CisrCisrZGVmIHBhcnNlX21pc3NpbmdfZGVidWdfY29tbWFuZF9hcmdzKGFyZyk6CisrICAgICIi IkludGVybmFsIHV0aWxpdHkgdG8gcGFyc2UgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyIGNvbW1hbmQg YXJndi4KKysKKysgICAgQXJndW1lbnRzOgorKyAgICAgICAgYXJnOiBUaGUgYXJndW1lbnRzIHRv IHRoZSBjb21tYW5kLiBUaGUgZm9ybWF0IGlzOgorKyAgICAgICAgICAgICBbbG9jdXMtcmVnZXhw IFtuYW1lLXJlZ2V4cF1dCisrCisrICAgIFJldHVybnM6CisrICAgICAgICBBIDItdHVwbGUgb2Yg Y29tcGlsZWQgcmVndWxhciBleHByZXNzaW9ucy4KKysKKysgICAgUmFpc2VzOgorKyAgICAgICAg U3ludGF4RXJyb3I6IGFuIGVycm9yIHByb2Nlc3NpbmcgQVJHCisrICAgICIiIgorKyAgICBhcmd2 ID0gZ2RiLnN0cmluZ190b19hcmd2KGFyZykKKysgICAgYXJnYyA9IGxlbihhcmd2KQorKyAgICBp ZiBhcmdjID4gMjoKKysgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJUb28gbWFueSBhcmd1bWVu dHMuIikKKysgICAgbG9jdXNfcmVnZXhwID0gIiIKKysgICAgbmFtZV9yZWdleHAgPSAiIgorKyAg ICBpZiBhcmdjID49IDE6CisrICAgICAgICBsb2N1c19yZWdleHAgPSBhcmd2WzBdCisrICAgICAg ICBpZiBhcmdjID49IDI6CisrICAgICAgICAgICAgbmFtZV9yZWdleHAgPSBhcmd2WzFdCisrICAg IHJldHVybiAoCisrICAgICAgICB2YWxpZGF0ZV9yZWdleHAobG9jdXNfcmVnZXhwLCAibG9jdXMi KSwKKysgICAgICAgIHZhbGlkYXRlX3JlZ2V4cChuYW1lX3JlZ2V4cCwgImhhbmRsZXIiKSwKKysg ICAgKQorKworKworK2NsYXNzIEluZm9NaXNzaW5nRGVidWdIYW5kZXJzKGdkYi5Db21tYW5kKToK KysgICAgIiIiR0RCIGNvbW1hbmQgdG8gbGlzdCBtaXNzaW5nIGRlYnVnIGhhbmRsZXJzLgorKwor KyAgICBVc2FnZTogaW5mbyBtaXNzaW5nLWRlYnVnLWhhbmRsZXJzIFtMT0NVUy1SRUdFWFAgW05B TUUtUkVHRVhQXV0KKysKKysgICAgTE9DVVMtUkVHRVhQIGlzIGEgcmVndWxhciBleHByZXNzaW9u IG1hdGNoaW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUKKysgICAgaGFuZGxlci4gIElmIGl0IGlzIG9t aXR0ZWQsIGFsbCByZWdpc3RlcmVkIGhhbmRsZXJzIGZyb20gYWxsCisrICAgIGxvY2kgYXJlIGxp c3RlZC4gIEEgbG9jdXMgY2FuIGJlICdnbG9iYWwnLCAncHJvZ3NwYWNlJyB0byBsaXN0CisrICAg IHRoZSBoYW5kbGVycyBmcm9tIHRoZSBjdXJyZW50IHByb2dzcGFjZSwgb3IgYSByZWd1bGFyIGV4 cHJlc3Npb24KKysgICAgbWF0Y2hpbmcgZmlsZW5hbWVzIG9mIHByb2dzcGFjZXMuCisrCisrICAg IE5BTUUtUkVHRVhQIGlzIGEgcmVndWxhciBleHByZXNzaW9uIHRvIGZpbHRlciBtaXNzaW5nIGRl YnVnCisrICAgIGhhbmRsZXIgbmFtZXMuICBJZiB0aGlzIG9taXR0ZWQgZm9yIGEgc3BlY2lmaWVk IGxvY3VzLCB0aGVuIGFsbAorKyAgICByZWdpc3RlcmVkIGhhbmRsZXJzIGluIHRoZSBsb2N1cyBh cmUgbGlzdGVkLgorKyAgICAiIiIKKysKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAg ICAgc3VwZXIoKS5fX2luaXRfXygiaW5mbyBtaXNzaW5nLWRlYnVnLWhhbmRsZXJzIiwgZ2RiLkNP TU1BTkRfRklMRVMpCisrCisrICAgIGRlZiBsaXN0X2hhbmRsZXJzKHNlbGYsIHRpdGxlLCBoYW5k bGVycywgbmFtZV9yZSk6CisrICAgICAgICAiIiJMaXN0cyB0aGUgbWlzc2luZyBkZWJ1ZyBoYW5k bGVycyB3aG9zZSBuYW1lIG1hdGNoZXMgcmVnZXhwLgorKworKyAgICAgICAgQXJndW1lbnRzOgor KyAgICAgICAgICAgIHRpdGxlOiBUaGUgbGluZSB0byBwcmludCBiZWZvcmUgdGhlIGxpc3QuCisr ICAgICAgICAgICAgaGFuZGxlcnM6IFRoZSBsaXN0IG9mIHRoZSBtaXNzaW5nIGRlYnVnIGhhbmRs ZXJzLgorKyAgICAgICAgICAgIG5hbWVfcmU6IGhhbmRsZXIgbmFtZSBmaWx0ZXIuCisrICAgICAg ICAiIiIKKysgICAgICAgIGlmIG5vdCBoYW5kbGVyczoKKysgICAgICAgICAgICByZXR1cm4KKysg ICAgICAgIHByaW50KHRpdGxlKQorKyAgICAgICAgZm9yIGhhbmRsZXIgaW4gaGFuZGxlcnM6Cisr ICAgICAgICAgICAgaWYgbmFtZV9yZS5tYXRjaChoYW5kbGVyLm5hbWUpOgorKyAgICAgICAgICAg ICAgICBwcmludCgKKysgICAgICAgICAgICAgICAgICAgICIgICVzJXMiICUgKGhhbmRsZXIubmFt ZSwgIiIgaWYgaGFuZGxlci5lbmFibGVkIGVsc2UgIiBbZGlzYWJsZWRdIikKKysgICAgICAgICAg ICAgICAgKQorKworKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZywgZnJvbV90dHkpOgorKyAgICAg ICAgbG9jdXNfcmUsIG5hbWVfcmUgPSBwYXJzZV9taXNzaW5nX2RlYnVnX2NvbW1hbmRfYXJncyhh cmcpCisrCisrICAgICAgICBpZiBsb2N1c19yZS5tYXRjaCgicHJvZ3NwYWNlIikgYW5kIGxvY3Vz X3JlLnBhdHRlcm4gIT0gIiI6CisrICAgICAgICAgICAgY3AgPSBnZGIuY3VycmVudF9wcm9nc3Bh Y2UoKQorKyAgICAgICAgICAgIHNlbGYubGlzdF9oYW5kbGVycygKKysgICAgICAgICAgICAgICAg IlByb2dzcGFjZSAlczoiICUgY3AuZmlsZW5hbWUsIGNwLm1pc3NpbmdfZGVidWdfaGFuZGxlcnMs IG5hbWVfcmUKKysgICAgICAgICAgICApCisrCisrICAgICAgICBmb3IgcHJvZ3NwYWNlIGluIGdk Yi5wcm9nc3BhY2VzKCk6CisrICAgICAgICAgICAgZmlsZW5hbWUgPSBwcm9nc3BhY2UuZmlsZW5h bWUgb3IgIiIKKysgICAgICAgICAgICBpZiBsb2N1c19yZS5tYXRjaChmaWxlbmFtZSk6CisrICAg ICAgICAgICAgICAgIGlmIGZpbGVuYW1lID09ICIiOgorKyAgICAgICAgICAgICAgICAgICAgaWYg cHJvZ3NwYWNlID09IGdkYi5jdXJyZW50X3Byb2dzcGFjZSgpOgorKyAgICAgICAgICAgICAgICAg ICAgICAgIG1zZyA9ICJDdXJyZW50IFByb2dzcGFjZToiCisrICAgICAgICAgICAgICAgICAgICBl bHNlOgorKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJQcm9nc3BhY2UgPG5vLWZpbGU+ OiIKKysgICAgICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJQ cm9nc3BhY2UgJXM6IiAlIGZpbGVuYW1lCisrICAgICAgICAgICAgICAgIHNlbGYubGlzdF9oYW5k bGVycygKKysgICAgICAgICAgICAgICAgICAgIG1zZywKKysgICAgICAgICAgICAgICAgICAgIHBy b2dzcGFjZS5taXNzaW5nX2RlYnVnX2hhbmRsZXJzLAorKyAgICAgICAgICAgICAgICAgICAgbmFt ZV9yZSwKKysgICAgICAgICAgICAgICAgKQorKworKyAgICAgICAgIyBQcmludCBnbG9iYWwgaGFu ZGxlcnMgbGFzdCwgYXMgdGhlc2UgYXJlIGludm9rZWQgbGFzdC4KKysgICAgICAgIGlmIGxvY3Vz X3JlLm1hdGNoKCJnbG9iYWwiKToKKysgICAgICAgICAgICBzZWxmLmxpc3RfaGFuZGxlcnMoIkds b2JhbDoiLCBnZGIubWlzc2luZ19kZWJ1Z19oYW5kbGVycywgbmFtZV9yZSkKKysKKysKKytkZWYg ZG9fZW5hYmxlX2hhbmRsZXIxKGhhbmRsZXJzLCBuYW1lX3JlLCBmbGFnKToKKysgICAgIiIiRW5h YmxlL2Rpc2FibGUgbWlzc2luZyBkZWJ1ZyBoYW5kbGVycyB3aG9zZSBuYW1lcyBtYXRjaCBnaXZl biByZWdleC4KKysKKysgICAgQXJndW1lbnRzOgorKyAgICAgICAgaGFuZGxlcnM6IFRoZSBsaXN0 IG9mIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMuCisrICAgICAgICBuYW1lX3JlOiBIYW5kbGVyIG5h bWUgZmlsdGVyLgorKyAgICAgICAgZmxhZzogQSBib29sZWFuIGluZGljYXRpbmcgaWYgd2Ugc2hv dWxkIGVuYWJsZSBvciBkaXNhYmxlLgorKworKyAgICBSZXR1cm5zOgorKyAgICAgICAgVGhlIG51 bWJlciBvZiBoYW5kbGVycyBhZmZlY3RlZC4KKysgICAgIiIiCisrICAgIHRvdGFsID0gMAorKyAg ICBmb3IgaGFuZGxlciBpbiBoYW5kbGVyczoKKysgICAgICAgIGlmIG5hbWVfcmUubWF0Y2goaGFu ZGxlci5uYW1lKSBhbmQgaGFuZGxlci5lbmFibGVkICE9IGZsYWc6CisrICAgICAgICAgICAgaGFu ZGxlci5lbmFibGVkID0gZmxhZworKyAgICAgICAgICAgIHRvdGFsICs9IDEKKysgICAgcmV0dXJu IHRvdGFsCisrCisrCisrZGVmIGRvX2VuYWJsZV9oYW5kbGVyKGFyZywgZmxhZyk6CisrICAgICIi IkVuYWJsZSBvciBkaXNhYmxlIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMuIiIiCisrICAgIChsb2N1 c19yZSwgbmFtZV9yZSkgPSBwYXJzZV9taXNzaW5nX2RlYnVnX2NvbW1hbmRfYXJncyhhcmcpCisr ICAgIHRvdGFsID0gMAorKyAgICBpZiBsb2N1c19yZS5tYXRjaCgiZ2xvYmFsIik6CisrICAgICAg ICB0b3RhbCArPSBkb19lbmFibGVfaGFuZGxlcjEoZ2RiLm1pc3NpbmdfZGVidWdfaGFuZGxlcnMs IG5hbWVfcmUsIGZsYWcpCisrICAgIGlmIGxvY3VzX3JlLm1hdGNoKCJwcm9nc3BhY2UiKSBhbmQg bG9jdXNfcmUucGF0dGVybiAhPSAiIjoKKysgICAgICAgIHRvdGFsICs9IGRvX2VuYWJsZV9oYW5k bGVyMSgKKysgICAgICAgICAgICBnZGIuY3VycmVudF9wcm9nc3BhY2UoKS5taXNzaW5nX2RlYnVn X2hhbmRsZXJzLCBuYW1lX3JlLCBmbGFnCisrICAgICAgICApCisrICAgIGZvciBwcm9nc3BhY2Ug aW4gZ2RiLnByb2dzcGFjZXMoKToKKysgICAgICAgIGZpbGVuYW1lID0gcHJvZ3NwYWNlLmZpbGVu YW1lIG9yICIiCisrICAgICAgICBpZiBsb2N1c19yZS5tYXRjaChmaWxlbmFtZSk6CisrICAgICAg ICAgICAgdG90YWwgKz0gZG9fZW5hYmxlX2hhbmRsZXIxKHByb2dzcGFjZS5taXNzaW5nX2RlYnVn X2hhbmRsZXJzLCBuYW1lX3JlLCBmbGFnKQorKyAgICBwcmludCgKKysgICAgICAgICIlZCBtaXNz aW5nIGRlYnVnIGhhbmRsZXIlcyAlcyIKKysgICAgICAgICUgKHRvdGFsLCAiIiBpZiB0b3RhbCA9 PSAxIGVsc2UgInMiLCAiZW5hYmxlZCIgaWYgZmxhZyBlbHNlICJkaXNhYmxlZCIpCisrICAgICkK KysKKysKKytjbGFzcyBFbmFibGVNaXNzaW5nRGVidWdIYW5kbGVyKGdkYi5Db21tYW5kKToKKysg ICAgIiIiR0RCIGNvbW1hbmQgdG8gZW5hYmxlIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMuCisrCisr ICAgIFVzYWdlOiBlbmFibGUgbWlzc2luZy1kZWJ1Zy1oYW5kbGVyIFtMT0NVUy1SRUdFWFAgW05B TUUtUkVHRVhQXV0KKysKKysgICAgTE9DVVMtUkVHRVhQIGlzIGEgcmVndWxhciBleHByZXNzaW9u IHNwZWNpZnlpbmcgdGhlIGhhbmRsZXJzIHRvCisrICAgIGVuYWJsZS4gIEl0IGNhbiBiZSAnZ2xv YmFsJywgJ3Byb2dzcGFjZScgZm9yIHRoZSBjdXJyZW50CisrICAgIHByb2dzcGFjZSwgb3IgdGhl IGZpbGVuYW1lIGZvciBhIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGEgcHJvZ3NwYWNlLgorKworKyAg ICBOQU1FX1JFR0VYUCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBmaWx0ZXIgaGFuZGxlciBu YW1lcy4gIElmCisrICAgIHRoaXMgb21pdHRlZCBmb3IgYSBzcGVjaWZpZWQgbG9jdXMsIHRoZW4g YWxsIHJlZ2lzdGVyZWQgaGFuZGxlcnMKKysgICAgaW4gdGhlIGxvY3VzIGFyZSBhZmZlY3RlZC4K KysgICAgIiIiCisrCisrICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKysgICAgICAgIHN1cGVyKCku X19pbml0X18oImVuYWJsZSBtaXNzaW5nLWRlYnVnLWhhbmRsZXIiLCBnZGIuQ09NTUFORF9GSUxF UykKKysKKysgICAgZGVmIGludm9rZShzZWxmLCBhcmcsIGZyb21fdHR5KToKKysgICAgICAgICIi IkdEQiBjYWxscyB0aGlzIHRvIHBlcmZvcm0gdGhlIGNvbW1hbmQuIiIiCisrICAgICAgICBkb19l bmFibGVfaGFuZGxlcihhcmcsIFRydWUpCisrCisrCisrY2xhc3MgRGlzYWJsZU1pc3NpbmdEZWJ1 Z0hhbmRsZXIoZ2RiLkNvbW1hbmQpOgorKyAgICAiIiJHREIgY29tbWFuZCB0byBkaXNhYmxlIG1p c3NpbmcgZGVidWcgaGFuZGxlcnMuCisrCisrICAgIFVzYWdlOiBkaXNhYmxlIG1pc3NpbmctZGVi dWctaGFuZGxlciBbTE9DVVMtUkVHRVhQIFtOQU1FLVJFR0VYUF1dCisrCisrICAgIExPQ1VTLVJF R0VYUCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBzcGVjaWZ5aW5nIHRoZSBoYW5kbGVycyB0bwor KyAgICBlbmFibGUuICBJdCBjYW4gYmUgJ2dsb2JhbCcsICdwcm9nc3BhY2UnIGZvciB0aGUgY3Vy cmVudAorKyAgICBwcm9nc3BhY2UsIG9yIHRoZSBmaWxlbmFtZSBmb3IgYSBmaWxlIGFzc29jaWF0 ZWQgd2l0aCBhIHByb2dzcGFjZS4KKysKKysgICAgTkFNRV9SRUdFWFAgaXMgYSByZWd1bGFyIGV4 cHJlc3Npb24gdG8gZmlsdGVyIGhhbmRsZXIgbmFtZXMuICBJZgorKyAgICB0aGlzIG9taXR0ZWQg Zm9yIGEgc3BlY2lmaWVkIGxvY3VzLCB0aGVuIGFsbCByZWdpc3RlcmVkIGhhbmRsZXJzCisrICAg IGluIHRoZSBsb2N1cyBhcmUgYWZmZWN0ZWQuCisrICAgICIiIgorKworKyAgICBkZWYgX19pbml0 X18oc2VsZik6CisrICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJkaXNhYmxlIG1pc3NpbmctZGVi dWctaGFuZGxlciIsIGdkYi5DT01NQU5EX0ZJTEVTKQorKworKyAgICBkZWYgaW52b2tlKHNlbGYs IGFyZywgZnJvbV90dHkpOgorKyAgICAgICAgIiIiR0RCIGNhbGxzIHRoaXMgdG8gcGVyZm9ybSB0 aGUgY29tbWFuZC4iIiIKKysgICAgICAgIGRvX2VuYWJsZV9oYW5kbGVyKGFyZywgRmFsc2UpCisr CisrCisrZGVmIHJlZ2lzdGVyX21pc3NpbmdfZGVidWdfaGFuZGxlcl9jb21tYW5kcygpOgorKyAg ICAiIiJJbnN0YWxscyB0aGUgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyIGNvbW1hbmRzLiIiIgorKyAg ICBJbmZvTWlzc2luZ0RlYnVnSGFuZGVycygpCisrICAgIEVuYWJsZU1pc3NpbmdEZWJ1Z0hhbmRs ZXIoKQorKyAgICBEaXNhYmxlTWlzc2luZ0RlYnVnSGFuZGxlcigpCisrCisrCisrcmVnaXN0ZXJf bWlzc2luZ19kZWJ1Z19oYW5kbGVyX2NvbW1hbmRzKCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9u L2xpYi9nZGIvbWlzc2luZ19kZWJ1Zy5weSBiL2dkYi9weXRob24vbGliL2dkYi9taXNzaW5nX2Rl YnVnLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL21pc3NpbmdfZGVidWcucHkKK0BAIC0wLDAgKzEsMTY5IEBACisrIyBDb3B5 cmlnaHQgKEMpIDIwMjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyIiIgorK01pc3NpbmdEZWJ1Z0hhbmRsZXIgYmFz ZSBjbGFzcywgYW5kIHJlZ2lzdGVyX2hhbmRsZXIgZnVuY3Rpb24uCisrIiIiCisrCisraW1wb3J0 IGdkYgorKworKworK2RlZiBfdmFsaWRhdGVfbmFtZShuYW1lKToKKysgICAgIiIiVmFsaWRhdGUg YSBtaXNzaW5nIGRlYnVnIGhhbmRsZXIgbmFtZSBzdHJpbmcuCisrCisrICAgIElmIG5hbWUgaXMg dmFsaWQgYXMgYSBtaXNzaW5nIGRlYnVnIGhhbmRsZXIgbmFtZSwgdGhlbiB0aGlzCisrICAgIGZ1 bmN0aW9uIGRvZXMgbm90aGluZy4gIElmIG5hbWUgaXMgbm90IHZhbGlkIHRoZW4gYW4gZXhjZXB0 aW9uIGlzCisrICAgIHJhaXNlZC4KKysKKysgICAgQXJndW1lbnRzOgorKyAgICAgICAgbmFtZTog QSBzdHJpbmcsIHRoZSBuYW1lIG9mIGEgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyLgorKworKyAgICBS ZXR1cm5zOgorKyAgICAgICAgTm90aGluZy4KKysKKysgICAgUmFpc2VzOgorKyAgICAgICAgVmFs dWVFcnJvcjogSWYgbmFtZSBpcyBpbnZhbGlkIGFzIGEgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyCisr ICAgICAgICAgICAgICAgICAgICBuYW1lLgorKyAgICAiIiIKKysgICAgZm9yIGNoIGluIG5hbWU6 CisrICAgICAgICBpZiBub3QgY2guaXNhc2NpaSgpIG9yIG5vdCAoY2guaXNhbG51bSgpIG9yIGNo IGluICJfLSIpOgorKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgY2hhcmFj dGVyICclcycgaW4gaGFuZGxlciBuYW1lOiAlcyIgJSAoY2gsIG5hbWUpKQorKworKworK2NsYXNz IE1pc3NpbmdEZWJ1Z0hhbmRsZXIob2JqZWN0KToKKysgICAgIiIiQmFzZSBjbGFzcyBmb3IgbWlz c2luZyBkZWJ1ZyBoYW5kbGVycyB3cml0dGVuIGluIFB5dGhvbi4KKysKKysgICAgQSBtaXNzaW5n IGRlYnVnIGhhbmRsZXIgaGFzIGEgc2luZ2xlIG1ldGhvZCBfX2NhbGxfXyBhbG9uZyB3aXRoCisr ICAgIHRoZSByZWFkL3dyaXRlIGF0dHJpYnV0ZSBlbmFibGVkLCBhbmQgYSByZWFkLW9ubHkgYXR0 cmlidXRlIG5hbWUuCisrCisrICAgIEF0dHJpYnV0ZXM6CisrICAgICAgICBuYW1lOiBSZWFkLW9u bHkgYXR0cmlidXRlLCB0aGUgbmFtZSBvZiB0aGlzIGhhbmRsZXIuCisrICAgICAgICBlbmFibGVk OiBXaGVuIHRydWUgdGhpcyBoYW5kbGVyIGlzIGVuYWJsZWQuCisrICAgICIiIgorKworKyAgICBk ZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisrICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KKysKKysg ICAgICAgIEFyZ3M6CisrICAgICAgICAgICAgbmFtZTogQW4gaWRlbnRpZnlpbmcgbmFtZSBmb3Ig dGhpcyBoYW5kbGVyLgorKworKyAgICAgICAgUmFpc2VzOgorKyAgICAgICAgICAgIFR5cGVFcnJv cjogbmFtZSBpcyBub3QgYSBzdHJpbmcuCisrICAgICAgICAgICAgVmFsdWVFcnJvcjogbmFtZSBj b250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMuCisrICAgICAgICAiIiIKKysKKysgICAgICAgIGlm IG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CisrICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9y KCJpbmNvcnJlY3QgdHlwZSBmb3IgbmFtZTogJXMiICUgdHlwZShuYW1lKSkKKysKKysgICAgICAg IF92YWxpZGF0ZV9uYW1lKG5hbWUpCisrCisrICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQorKyAg ICAgICAgc2VsZi5fZW5hYmxlZCA9IFRydWUKKysKKysgICAgQHByb3BlcnR5CisrICAgIGRlZiBu YW1lKHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKysKKysgICAgQHByb3BlcnR5 CisrICAgIGRlZiBlbmFibGVkKHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNlbGYuX2VuYWJsZWQK KysKKysgICAgQGVuYWJsZWQuc2V0dGVyCisrICAgIGRlZiBlbmFibGVkKHNlbGYsIHZhbHVlKToK KysgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBib29sKToKKysgICAgICAgICAgICBy YWlzZSBUeXBlRXJyb3IoImluY29ycmVjdCB0eXBlIGZvciBlbmFibGVkIGF0dHJpYnV0ZTogJXMi ICUgdHlwZSh2YWx1ZSkpCisrICAgICAgICBzZWxmLl9lbmFibGVkID0gdmFsdWUKKysKKysgICAg ZGVmIF9fY2FsbF9fKHNlbGYsIG9iamZpbGUpOgorKyAgICAgICAgIiIiR0RCIGhhbmRsZSBtaXNz aW5nIGRlYnVnIGluZm9ybWF0aW9uIGZvciBhbiBvYmpmaWxlLgorKworKyAgICAgICAgQXJndW1l bnRzOgorKyAgICAgICAgICAgIG9iamZpbGU6IEEgZ2RiLk9iamZpbGUgZm9yIHdoaWNoIEdEQiBj b3VsZCBub3QgZmluZCBhbnkKKysgICAgICAgICAgICAgICAgZGVidWcgaW5mb3JtYXRpb24uCisr CisrICAgICAgICBSZXR1cm5zOgorKyAgICAgICAgICAgIFRydWU6IEdEQiBzaG91bGQgdHJ5IGFn YWluIHRvIGxvY2F0ZSB0aGUgZGVidWcgaW5mb3JtYXRpb24KKysgICAgICAgICAgICAgICAgZm9y IG9iamZpbGUsIHRoZSBoYW5kbGVyIG1heSBoYXZlIGluc3RhbGxlZCB0aGUKKysgICAgICAgICAg ICAgICAgbWlzc2luZyBpbmZvcm1hdGlvbi4KKysgICAgICAgICAgICBGYWxzZTogR0RCIHNob3Vs ZCBtb3ZlIG9uIHdpdGhvdXQgdGhlIGRlYnVnIGluZm9ybWF0aW9uCisrICAgICAgICAgICAgICAg IGZvciBvYmpmaWxlLgorKyAgICAgICAgICAgIEEgc3RyaW5nOiBHREIgc2hvdWxkIGxvYWQgdGhl IGZpbGUgYXQgdGhlIGdpdmVuIHBhdGg7IGl0CisrICAgICAgICAgICAgICAgIGNvbnRhaW5zIHRo ZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3Igb2JqZmlsZS4KKysgICAgICAgICAgICBOb25lOiBUaGlz IGhhbmRsZXIgY2FuJ3QgaGVscCB3aXRoIG9iamZpbGUuICBHREIgc2hvdWxkCisrICAgICAgICAg ICAgICAgIHRyeSBhbnkgb3RoZXIgcmVnaXN0ZXJlZCBoYW5kbGVycy4KKysgICAgICAgICIiIgor KyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiTWlzc2luZ0RlYnVnSGFuZGxlci5f X2NhbGxfXygpIikKKysKKysKKytkZWYgcmVnaXN0ZXJfaGFuZGxlcihsb2N1cywgaGFuZGxlciwg cmVwbGFjZT1GYWxzZSk6CisrICAgICIiIlJlZ2lzdGVyIGhhbmRsZXIgaW4gZ2l2ZW4gbG9jdXMu CisrCisrICAgIFRoZSBoYW5kbGVyIGlzIHByZXBlbmRlZCB0byB0aGUgbG9jdXMncyBtaXNzaW5n IGRlYnVnIGhhbmRsZXJzCisrICAgIGxpc3QuIFRoZSBuYW1lIG9mIGhhbmRsZXIgc2hvdWxkIGJl IHVuaXF1ZSAob3IgcmVwbGFjZSBtdXN0IGJlCisrICAgIFRydWUpLgorKworKyAgICBBcmd1bWVu dHM6CisrICAgICAgICBsb2N1czogRWl0aGVyIGEgcHJvZ3NwYWNlLCBvciBOb25lIChpbiB3aGlj aCBjYXNlIHRoZSB1bndpbmRlcgorKyAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgZ2xvYmFs bHkpLgorKyAgICAgICAgaGFuZGxlcjogQW4gb2JqZWN0IG9mIGEgZ2RiLk1pc3NpbmdEZWJ1Z0hh bmRsZXIgc3ViY2xhc3MuCisrCisrICAgICAgICByZXBsYWNlOiBJZiBUcnVlLCByZXBsYWNlcyBl eGlzdGluZyBoYW5kbGVyIHdpdGggdGhlIHNhbWUgbmFtZQorKyAgICAgICAgICAgICAgICAgd2l0 aGluIGxvY3VzLiAgT3RoZXJ3aXNlLCByYWlzZXMgUnVudGltZUV4Y2VwdGlvbiBpZgorKyAgICAg ICAgICAgICAgICAgdW53aW5kZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLgor KworKyAgICBSZXR1cm5zOgorKyAgICAgICAgTm90aGluZy4KKysKKysgICAgUmFpc2VzOgorKyAg ICAgICAgUnVudGltZUVycm9yOiBUaGUgbmFtZSBvZiBoYW5kbGVyIGlzIG5vdCB1bmlxdWUuCisr ICAgICAgICBUeXBlRXJyb3I6IEJhZCBsb2N1cyB0eXBlLgorKyAgICAgICAgQXR0cmlidXRlRXJy b3I6IFJlcXVpcmVkIGF0dHJpYnV0ZXMgb2YgaGFuZGxlciBhcmUgbWlzc2luZy4KKysgICAgIiIi CisrCisrICAgIGlmIGxvY3VzIGlzIE5vbmU6CisrICAgICAgICBpZiBnZGIucGFyYW1ldGVyKCJ2 ZXJib3NlIik6CisrICAgICAgICAgICAgZ2RiLndyaXRlKCJSZWdpc3RlcmluZyBnbG9iYWwgJXMg aGFuZGxlciAuLi5cbiIgJSBoYW5kbGVyLm5hbWUpCisrICAgICAgICBsb2N1cyA9IGdkYgorKyAg ICBlbGlmIGlzaW5zdGFuY2UobG9jdXMsIGdkYi5Qcm9nc3BhY2UpOgorKyAgICAgICAgaWYgZ2Ri LnBhcmFtZXRlcigidmVyYm9zZSIpOgorKyAgICAgICAgICAgIGdkYi53cml0ZSgKKysgICAgICAg ICAgICAgICAgIlJlZ2lzdGVyaW5nICVzIGhhbmRsZXIgZm9yICVzIC4uLlxuIiAlIChoYW5kbGVy Lm5hbWUsIGxvY3VzLmZpbGVuYW1lKQorKyAgICAgICAgICAgICkKKysgICAgZWxzZToKKysgICAg ICAgIHJhaXNlIFR5cGVFcnJvcigibG9jdXMgc2hvdWxkIGJlIGdkYi5Qcm9nc3BhY2Ugb3IgTm9u ZSIpCisrCisrICAgICMgU29tZSBzYW5pdHkgY2hlY2tzIG9uIEhBTkRMRVIuICBDYWxsaW5nIGdl dGF0dHIgd2lsbCByYWlzZSBhbgorKyAgICAjIGV4Y2VwdGlvbiBpZiB0aGUgYXR0cmlidXRlIGRv ZXNuJ3QgZXhpc3QsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4KKysgICAgIyBUaGVzZSBjaGVja3Mg YXJlIG5vdCBleGhhdXN0aXZlOyB3ZSBkb24ndCBjaGVjayB0aGUgYXR0cmlidXRlcworKyAgICAj IGhhdmUgdGhlIGNvcnJlY3QgdHlwZXMsIG9yIHRoZSBtZXRob2QgaGFzIHRoZSBjb3JyZWN0IHNp Z25hdHVyZSwKKysgICAgIyBidXQgdGhpcyBzaG91bGQgY2F0Y2ggc29tZSBiYXNpYyBtaXN0YWtl cy4KKysgICAgZ2V0YXR0cihoYW5kbGVyLCAibmFtZSIpCisrICAgIGdldGF0dHIoaGFuZGxlciwg ImVuYWJsZWQiKQorKyAgICBjYWxsX21ldGhvZCA9IGdldGF0dHIoaGFuZGxlciwgIl9fY2FsbF9f IikKKysgICAgaWYgbm90IGNhbGxhYmxlKGNhbGxfbWV0aG9kKToKKysgICAgICAgIHJhaXNlIEF0 dHJpYnV0ZUVycm9yKAorKyAgICAgICAgICAgICInJXMnIG9iamVjdCdzICdfX2NhbGxfXycgYXR0 cmlidXRlIGlzIG5vdCBjYWxsYWJsZSIKKysgICAgICAgICAgICAlIHR5cGUoaGFuZGxlcikuX19u YW1lX18KKysgICAgICAgICkKKysKKysgICAgaSA9IDAKKysgICAgZm9yIG5lZWRsZSBpbiBsb2N1 cy5taXNzaW5nX2RlYnVnX2hhbmRsZXJzOgorKyAgICAgICAgaWYgbmVlZGxlLm5hbWUgPT0gaGFu ZGxlci5uYW1lOgorKyAgICAgICAgICAgIGlmIHJlcGxhY2U6CisrICAgICAgICAgICAgICAgIGRl bCBsb2N1cy5taXNzaW5nX2RlYnVnX2hhbmRsZXJzW2ldCisrICAgICAgICAgICAgZWxzZToKKysg ICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJIYW5kbGVyICVzIGFscmVhZHkgZXhp c3RzLiIgJSBoYW5kbGVyLm5hbWUpCisrICAgICAgICBpICs9IDEKKysgICAgbG9jdXMubWlzc2lu Z19kZWJ1Z19oYW5kbGVycy5pbnNlcnQoMCwgaGFuZGxlcikKK2RpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL3B5LXByb2dzcGFjZS5jIGIvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2UuYworLS0tIGEvZ2Ri L3B5dGhvbi9weS1wcm9nc3BhY2UuYworKysrIGIvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2UuYwor QEAgLTU0LDYgKzU0LDkgQEAgc3RydWN0IHBzcGFjZV9vYmplY3QKKyAKKyAgIC8qIFRoZSBkZWJ1 ZyBtZXRob2QgbGlzdC4gICovCisgICBQeU9iamVjdCAqeG1ldGhvZHM7CisrCisrICAvKiBUaGUg bWlzc2luZyBkZWJ1ZyBoYW5kbGVyIGxpc3QuICAqLworKyAgUHlPYmplY3QgKm1pc3NpbmdfZGVi dWdfaGFuZGxlcnM7CisgfTsKKyAKKyBleHRlcm4gUHlUeXBlT2JqZWN0IHBzcGFjZV9vYmplY3Rf dHlwZQorQEAgLTE2Myw2ICsxNjYsNyBAQCBwc3B5X2RlYWxsb2MgKFB5T2JqZWN0ICpzZWxmKQor ICAgUHlfWERFQ1JFRiAocHNfc2VsZi0+ZnJhbWVfdW53aW5kZXJzKTsKKyAgIFB5X1hERUNSRUYg KHBzX3NlbGYtPnR5cGVfcHJpbnRlcnMpOworICAgUHlfWERFQ1JFRiAocHNfc2VsZi0+eG1ldGhv ZHMpOworKyAgUHlfWERFQ1JFRiAocHNfc2VsZi0+bWlzc2luZ19kZWJ1Z19oYW5kbGVycyk7Cisg ICBQeV9UWVBFIChzZWxmKS0+dHBfZnJlZSAoc2VsZik7CisgfQorIAorQEAgLTE5OCw2ICsyMDIs MTAgQEAgcHNweV9pbml0aWFsaXplIChwc3BhY2Vfb2JqZWN0ICpzZWxmKQorICAgaWYgKHNlbGYt PnhtZXRob2RzID09IE5VTEwpCisgICAgIHJldHVybiAwOworIAorKyAgc2VsZi0+bWlzc2luZ19k ZWJ1Z19oYW5kbGVycyA9IFB5TGlzdF9OZXcgKDApOworKyAgaWYgKHNlbGYtPm1pc3NpbmdfZGVi dWdfaGFuZGxlcnMgPT0gbnVsbHB0cikKKysgICAgcmV0dXJuIDA7CisrCisgICByZXR1cm4gMTsK KyB9CisgCitAQCAtMzUyLDYgKzM2MCw0NyBAQCBwc3B5X2dldF94bWV0aG9kcyAoUHlPYmplY3Qg Km8sIHZvaWQgKmlnbm9yZSkKKyAgIHJldHVybiBzZWxmLT54bWV0aG9kczsKKyB9CisgCisrLyog UmV0dXJuIHRoZSBsaXN0IG9mIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMgZm9yIHRoaXMgcHJvZ3Jh bSBzcGFjZS4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytwc3B5X2dldF9taXNzaW5nX2Rl YnVnX2hhbmRsZXJzIChQeU9iamVjdCAqbywgdm9pZCAqaWdub3JlKQorK3sKKysgIHBzcGFjZV9v YmplY3QgKnNlbGYgPSAocHNwYWNlX29iamVjdCAqKSBvOworKworKyAgUHlfSU5DUkVGIChzZWxm LT5taXNzaW5nX2RlYnVnX2hhbmRsZXJzKTsKKysgIHJldHVybiBzZWxmLT5taXNzaW5nX2RlYnVn X2hhbmRsZXJzOworK30KKysKKysvKiBTZXQgdGhpcyBwcm9ncmFtIHNwYWNlJ3MgbGlzdCBvZiBt aXNzaW5nIGRlYnVnIGhhbmRsZXJzIHRvIEhBTkRMRVJTLiAgKi8KKysKKytzdGF0aWMgaW50Cisr cHNweV9zZXRfbWlzc2luZ19kZWJ1Z19oYW5kbGVycyAoUHlPYmplY3QgKm8sIFB5T2JqZWN0ICpo YW5kbGVycywKKysJCQkJIHZvaWQgKmlnbm9yZSkKKyt7CisrICBwc3BhY2Vfb2JqZWN0ICpzZWxm ID0gKHBzcGFjZV9vYmplY3QgKikgbzsKKysKKysgIGlmIChoYW5kbGVycyA9PSBudWxscHRyKQor KyAgICB7CisrICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19UeXBlRXJyb3IsCisrCQkgICAg ICAgImNhbm5vdCBkZWxldGUgdGhlIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMgbGlzdCIpOworKyAg ICAgIHJldHVybiAtMTsKKysgICAgfQorKworKyAgaWYgKCFQeUxpc3RfQ2hlY2sgKGhhbmRsZXJz KSkKKysgICAgeworKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfVHlwZUVycm9yLAorKwkJ ICAgICAgICJ0aGUgbWlzc2luZyBkZWJ1ZyBoYW5kbGVycyBhdHRyaWJ1dGUgbXVzdCBiZSBhIGxp c3QiKTsKKysgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysKKysgIC8qIFRha2UgY2FyZSBpbiBj YXNlIHRoZSBMSFMgYW5kIFJIUyBhcmUgcmVsYXRlZCBzb21laG93LiAgKi8KKysgIGdkYnB5X3Jl Zjw+IHRtcCAoc2VsZi0+bWlzc2luZ19kZWJ1Z19oYW5kbGVycyk7CisrICBQeV9JTkNSRUYgKGhh bmRsZXJzKTsKKysgIHNlbGYtPm1pc3NpbmdfZGVidWdfaGFuZGxlcnMgPSBoYW5kbGVyczsKKysK KysgIHJldHVybiAwOworK30KKysKKyAvKiBTZXQgdGhlICd0eXBlX3ByaW50ZXJzJyBhdHRyaWJ1 dGUuICAqLworIAorIHN0YXRpYyBpbnQKK0BAIC03NDQsNiArNzkzLDggQEAgc3RhdGljIGdkYl9Q eUdldFNldERlZiBwc3BhY2VfZ2V0c2V0W10gPQorICAgICAiVHlwZSBwcmludGVycy4iLCBOVUxM IH0sCisgICB7ICJ4bWV0aG9kcyIsIHBzcHlfZ2V0X3htZXRob2RzLCBOVUxMLAorICAgICAiRGVi dWcgbWV0aG9kcy4iLCBOVUxMIH0sCisrICB7ICJtaXNzaW5nX2RlYnVnX2hhbmRsZXJzIiwgcHNw eV9nZXRfbWlzc2luZ19kZWJ1Z19oYW5kbGVycywKKysgICAgcHNweV9zZXRfbWlzc2luZ19kZWJ1 Z19oYW5kbGVycywgIk1pc3NpbmcgZGVidWcgaGFuZGxlcnMuIiwgTlVMTCB9LAorICAgeyBOVUxM IH0KKyB9OworIAorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMgYi9nZGIvcHl0aG9u L3B5dGhvbi5jCistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCisrKysgYi9nZGIvcHl0aG9uL3B5 dGhvbi5jCitAQCAtMTI0LDcgKzEyNCw5IEBAIHN0YXRpYyBlbnVtIGV4dF9sYW5nX3JjIGdkYnB5 X2JlZm9yZV9wcm9tcHRfaG9vaworIHN0YXRpYyBnZGI6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBn ZGJweV9jb2xvcml6ZQorICAgKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlbmFtZSwgY29uc3Qgc3Rk OjpzdHJpbmcgJmNvbnRlbnRzKTsKKyBzdGF0aWMgZ2RiOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4g Z2RicHlfY29sb3JpemVfZGlzYXNtCistICAoY29uc3Qgc3RkOjpzdHJpbmcgJmNvbnRlbnQsIGdk YmFyY2ggKmdkYmFyY2gpOworKyhjb25zdCBzdGQ6OnN0cmluZyAmY29udGVudCwgZ2RiYXJjaCAq Z2RiYXJjaCk7Cisrc3RhdGljIGV4dF9sYW5nX21pc3NpbmdfZGVidWdpbmZvX3Jlc3VsdCBnZGJw eV9oYW5kbGVfbWlzc2luZ19kZWJ1Z2luZm8KKysgIChjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xh bmd1YWdlX2RlZm4gKmV4dGxhbmcsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKyAKKyAvKiBU aGUgaW50ZXJmYWNlIGJldHdlZW4gZ2RiIHByb3BlciBhbmQgbG9hZGluZyBvZiBweXRob24gc2Ny aXB0cy4gICovCisgCitAQCAtMTcwLDYgKzE3Miw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0 ZW5zaW9uX2xhbmd1YWdlX29wcyBweXRob25fZXh0ZW5zaW9uX29wcyA9CisgICBnZGJweV9jb2xv cml6ZV9kaXNhc20sCisgCisgICBnZGJweV9wcmludF9pbnNuLAorKworKyAgZ2RicHlfaGFuZGxl X21pc3NpbmdfZGVidWdpbmZvCisgfTsKKyAKKyAjZW5kaWYgLyogSEFWRV9QWVRIT04gKi8KK0BA IC0xNjYxLDYgKzE2NjUsODMgQEAgZ2RicHlfZ2V0X2N1cnJlbnRfb2JqZmlsZSAoUHlPYmplY3Qg KnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQorICAgcmV0dXJuIG9iamZpbGVfdG9fb2JqZmls ZV9vYmplY3QgKGdkYnB5X2N1cnJlbnRfb2JqZmlsZSkucmVsZWFzZSAoKTsKKyB9CisgCisrLyog SW1wbGVtZW50IHRoZSAnaGFuZGxlX21pc3NpbmdfZGVidWdpbmZvJyBob29rIGZvciBQeXRob24u ICBHREIgaGFzCisrICAgZmFpbGVkIHRvIGZpbmQgYW55IGRlYnVnIGluZm9ybWF0aW9uIGZvciBP QkpGSUxFLiAgVGhlIGV4dGVuc2lvbiBoYXMgYQorKyAgIGNoYW5jZSB0byByZWNvcmQgdGhpcywg b3IgZXZlbiBpbnN0YWxsIHRoZSByZXF1aXJlZCBkZWJ1ZyBpbmZvcm1hdGlvbi4KKysgICBTZWUg dGhlIGRlc2NyaXB0aW9uIG9mIGV4dF9sYW5nX21pc3NpbmdfZGVidWdpbmZvX3Jlc3VsdCBpbgor KyAgIGV4dGVuc2lvbi1wcml2LmggZm9yIGRldGFpbHMgb2YgdGhlIHJldHVybiB2YWx1ZS4gICov CisrCisrc3RhdGljIGV4dF9sYW5nX21pc3NpbmdfZGVidWdpbmZvX3Jlc3VsdAorK2dkYnB5X2hh bmRsZV9taXNzaW5nX2RlYnVnaW5mbyAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9k ZWZuICpleHRsYW5nLAorKwkJCQlzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICAvKiBF YXJseSBleGl0IGlmIFB5dGhvbiBpcyBub3QgaW5pdGlhbGlzZWQuICAqLworKyAgaWYgKCFnZGJf cHl0aG9uX2luaXRpYWxpemVkKQorKyAgICByZXR1cm4ge307CisrCisrICBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCA9IG9iamZpbGUtPmFyY2ggKCk7CisrCisrICBnZGJweV9lbnRlciBlbnRlcl9w eSAoZ2RiYXJjaCk7CisrCisrICAvKiBDb252ZXJ0IE9CSkZJTEUgaW50byB0aGUgY29ycmVzcG9u ZGluZyBQeXRob24gb2JqZWN0LiAgKi8KKysgIGdkYnB5X3JlZjw+IHB5b19vYmpmaWxlID0gb2Jq ZmlsZV90b19vYmpmaWxlX29iamVjdCAob2JqZmlsZSk7CisrICBpZiAocHlvX29iamZpbGUgPT0g bnVsbHB0cikKKysgICAgeworKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworKyAgICAgIHJl dHVybiB7fTsKKysgICAgfQorKworKyAgLyogTG9va3VwIHRoZSBoZWxwZXIgZnVuY3Rpb24gd2l0 aGluIHRoZSBHREIgbW9kdWxlLiAgKi8KKysgIGdkYnB5X3JlZjw+IHB5b19oYW5kbGVyCisrICAg IChQeU9iamVjdF9HZXRBdHRyU3RyaW5nIChnZGJfcHl0aG9uX21vZHVsZSwgIl9oYW5kbGVfbWlz c2luZ19kZWJ1Z2luZm8iKSk7CisrICBpZiAocHlvX2hhbmRsZXIgPT0gbnVsbHB0cikKKysgICAg eworKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworKyAgICAgIHJldHVybiB7fTsKKysgICAg fQorKworKyAgLyogQ2FsbCB0aGUgZnVuY3Rpb24sIHBhc3NpbmcgaW4gdGhlIFB5dGhvbiBvYmpm aWxlIG9iamVjdC4gICovCisrICBnZGJweV9yZWY8PiBweW9fZXhlY3V0ZV9yZXQKKysgICAgKFB5 T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MgKHB5b19oYW5kbGVyLmdldCAoKSwgcHlvX29iamZp bGUuZ2V0ICgpLAorKwkJCQkgICBudWxscHRyKSk7CisrICBpZiAocHlvX2V4ZWN1dGVfcmV0ID09 IG51bGxwdHIpCisrICAgIHsKKysgICAgICAvKiBJZiB0aGUgaGFuZGxlciBpcyBjYW5jZWxsZWQg ZHVlIHRvIGEgQ3RybC1DLCB0aGVuIHByb3BhZ2F0ZQorKwkgdGhlIEN0cmwtQyBhcyBhIEdEQiBl eGNlcHRpb24gaW5zdGVhZCBvZiBzd2FsbG93aW5nIGl0LiAgKi8KKysgICAgICBnZGJweV9wcmlu dF9zdGFja19vcl9xdWl0ICgpOworKyAgICAgIHJldHVybiB7fTsKKysgICAgfQorKworKyAgLyog UGFyc2UgdGhlIHJlc3VsdCwgYW5kIGNvbnZlcnQgaXQgYmFjayB0byB0aGUgQysrIG9iamVjdC4g ICovCisrICBpZiAocHlvX2V4ZWN1dGVfcmV0ID09IFB5X05vbmUpCisrICAgIHJldHVybiB7fTsK KysKKysgIGlmIChQeUJvb2xfQ2hlY2sgKHB5b19leGVjdXRlX3JldC5nZXQgKCkpKQorKyAgICB7 CisrICAgICAgYm9vbCB0cnlfYWdhaW4gPSBQeU9iamVjdF9Jc1RydWUgKHB5b19leGVjdXRlX3Jl dC5nZXQgKCkpOworKyAgICAgIHJldHVybiBleHRfbGFuZ19taXNzaW5nX2RlYnVnaW5mb19yZXN1 bHQgKHRyeV9hZ2Fpbik7CisrICAgIH0KKysKKysgIGlmICghZ2RicHlfaXNfc3RyaW5nIChweW9f ZXhlY3V0ZV9yZXQuZ2V0ICgpKSkKKysgICAgeworKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlF eGNfVmFsdWVFcnJvciwKKysJCSAgICAgICAicmV0dXJuIHZhbHVlIGZyb20gX2hhbmRsZV9taXNz aW5nX2RlYnVnaW5mbyBzaG91bGQgIgorKwkJICAgICAgICJiZSBOb25lLCBhIEJvb2wsIG9yIGEg U3RyaW5nIik7CisrICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisrICAgICAgcmV0dXJuIHt9 OworKyAgICB9CisrCisrICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiBmaWxlbmFtZQor KyAgICA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKHB5b19leGVjdXRlX3JldC5nZXQg KCkpOworKyAgaWYgKGZpbGVuYW1lID09IG51bGxwdHIpCisrICAgIHsKKysgICAgICBnZGJweV9w cmludF9zdGFjayAoKTsKKysgICAgICByZXR1cm4ge307CisrICAgIH0KKysKKysgIHJldHVybiBl eHRfbGFuZ19taXNzaW5nX2RlYnVnaW5mb19yZXN1bHQgKHN0ZDo6c3RyaW5nIChmaWxlbmFtZS5n ZXQgKCkpKTsKKyt9CisrCisgLyogQ29tcHV0ZSB0aGUgbGlzdCBvZiBhY3RpdmUgcHl0aG9uIHR5 cGUgcHJpbnRlcnMgYW5kIHN0b3JlIHRoZW0gaW4KKyAgICBFWFRfUFJJTlRFUlMtPnB5X3R5cGVf cHJpbnRlcnMuICBUaGUgcHJvZHVjdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkKKyAgICBn ZGJweV9hcHBseV90eXBlX3ByaW50ZXJzLCBhbmQgZnJlZWQgYnkgZ2RicHlfZnJlZV90eXBlX3By aW50ZXJzLgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNzaW5n LWRlYnVnLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktbWlzc2luZy1kZWJ1Zy5jCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcuYworQEAgLTAsMCArMSwyMiBAQAorKy8qIFRoaXMg dGVzdCBwcm9ncmFtIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENv cHlyaWdodCAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytpbnQKKyttYWluICgpCisrewor KyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1taXNzaW5nLWRlYnVnLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNzaW5n LWRlYnVnLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLmV4cAorQEAgLTAsMCArMSw0 NzMgQEAKKysjIENvcHlyaWdodCAoQykgMjAyMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrbG9hZF9saWIgZ2RiLXB5 dGhvbi5leHAKKysKKytyZXF1aXJlIGFsbG93X3B5dGhvbl90ZXN0cworKworK3N0YW5kYXJkX3Rl c3RmaWxlCisrCisraWYge1tidWlsZF9leGVjdXRhYmxlICJmYWlsZWQgdG8gcHJlcGFyZSIgJHt0 ZXN0ZmlsZX0gJHtzcmNmaWxlfV19IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMgUmVtb3Zl IGRlYnVnIGluZm9ybWF0aW9uIGZyb20gQklORklMRSBhbmQgcGxhY2UgaXQgaW50bworKyMgQklO RklMRS5kZWJ1Zy4KKytpZiB7W2dkYl9nbnVfc3RyaXBfZGVidWcgJGJpbmZpbGVdfSB7CisrICAg IHVuc3VwcG9ydGVkICJjYW5ub3QgcHJvZHVjZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGZpbGVzIgor KyAgICByZXR1cm4gLTEKKyt9CisrCisrc2V0IHJlbW90ZV9weXRob25fZmlsZSBcCisrICAgIFtn ZGJfcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5w eV0KKysKKytzZXQgZGVidWdfZmlsZW5hbWUgJHtiaW5maWxlfS5kZWJ1ZworK3NldCBoaWRkZW5f ZmlsZW5hbWUgJHtiaW5maWxlfS5oaWRkZW4KKysKKysjIFN0YXJ0IEdEQi4KKytjbGVhbl9yZXN0 YXJ0CisrCisrIyBTb21lIGluaXRpYWwgc2FuaXR5IGNoZWNrczsgaW5pdGlhbGx5LCB3ZSBjYW4g ZmluZCB0aGUgZGVidWcgaW5mb3JtYXRpb24KKysjICh0aGlzIHdpbGwgdXNlIHRoZSAuZ251X2Rl YnVnbGluayksIHRoZW4gYWZ0ZXIgd2UgbW92ZSB0aGUgZGVidWcKKysjIGluZm9ybWF0aW9uLCBy ZWxvYWQgdGhlIGV4ZWN1dGFibGUsIG5vdyB0aGUgZGVidWcgY2FuJ3QgYmUgZm91bmQuCisrd2l0 aF90ZXN0X3ByZWZpeCAiaW5pdGlhbCBjaGVja3MiIHsKKysgICAgIyBMb2FkIEJJTkZJTEUsIHdl IHNob3VsZCBmaW5kIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvcm1hdGlvbi4KKysgICAgZ2RiX2Zp bGVfY21kICRiaW5maWxlCisrICAgIGdkYl9hc3NlcnQgeyRnZGJfZmlsZV9jbWRfZGVidWdfaW5m byA9PSAiZGVidWcifSBcCisrCSJkZWJ1ZyBpbmZvIGlzIGZvdW5kIgorKworKyAgICAjIFJlbmFt ZSB0aGUgZGVidWcgaW5mb3JtYXRpb24gZmlsZSwgcmUtbG9hZCBCSU5GSUxFLCBHREIgc2hvdWxk IGZhaWwKKysgICAgIyB0byBmaW5kIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbgorKyAgICByZW1vdGVf ZXhlYyBidWlsZCAibXYgJGRlYnVnX2ZpbGVuYW1lICRoaWRkZW5fZmlsZW5hbWUiCisrICAgIGdk Yl9maWxlX2NtZCAkYmluZmlsZQorKyAgICBnZGJfYXNzZXJ0IHskZ2RiX2ZpbGVfY21kX2RlYnVn X2luZm8gPT0gIm5vZGVidWcifSBcCisrCSJkZWJ1ZyBpbmZvIG5vIGxvbmdlciBmb3VuZCIKKyt9 CisrCisrIyBMb2FkIHRoZSBQeXRob24gc2NyaXB0IGludG8gR0RCLgorK2dkYl90ZXN0ICJzb3Vy Y2UgJHJlbW90ZV9weXRob25fZmlsZSIgIl5TdWNjZXNzIiBcCisrICAgICJzb3VyY2UgcHl0aG9u IHNjcmlwdCIKKysKKysjIFNldHVwIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGRpcmVjdG9yeS4g IFRoaXMgaXNuJ3QgYWN0dWFsbHkgbmVlZGVkIHVudGlsCisrIyBzb21lIG9mIHRoZSBsYXRlciB0 ZXN0cywgYnV0IG1pZ2h0IGFzIHdlbGwgZ2V0IHRoaXMgZG9uZSBub3cuCisrc2V0IGRlYnVnX2Rp cmVjdG9yeSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgImRlYnVnLWRpciJdCisrcmVtb3RlX2V4ZWMg YnVpbGQgIm1rZGlyIC1wICRkZWJ1Z19kaXJlY3RvcnkiCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJz ZXQgZGVidWctZmlsZS1kaXJlY3RvcnkgJGRlYnVnX2RpcmVjdG9yeSIgXAorKyAgICAic2V0IGRl YnVnLWZpbGUtZGlyZWN0b3J5IgorKworKyMgSW5pdGlhbGx5IHRoZSBtaXNzaW5nIGRlYnVnIGhh bmRsZXIgd2UgaW5zdGFsbCBpcyBpbiBhIG1vZGUgd2hlcmUgaXQKKysjIHJldHVybnMgTm9uZSwg aW5kaWNhdGluZyB0aGF0IGl0IGNhbid0IGhlbHAgbG9jYXRlIHRoZSBkZWJ1ZyBpbmZvcm1hdGlv bi4KKysjIENoZWNrIHRoaXMgd29ya3MgYXMgZXhwZWN0ZWQuCisrd2l0aF90ZXN0X3ByZWZpeCAi aGFuZGxlciByZXR1cm5pbmcgTm9uZSIgeworKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgXAorKwki cHl0aG9uIGdkYi5taXNzaW5nX2RlYnVnLnJlZ2lzdGVyX2hhbmRsZXIoTm9uZSwgaGFuZGxlcl9v YmopIiBcCisrCSJyZWdpc3RlciB0aGUgaW5pdGlhbCBoYW5kbGVyIgorKworKyAgICBnZGJfZmls ZV9jbWQgJGJpbmZpbGUKKysgICAgZ2RiX2Fzc2VydCB7JGdkYl9maWxlX2NtZF9kZWJ1Z19pbmZv ID09ICJub2RlYnVnIn0gXAorKwkiZGVidWcgaW5mbyBub3QgZm91bmQiCisrCisrICAgICMgQ2hl Y2sgdGhlIGhhbmRsZXIgd2FzIG9ubHkgY2FsbGVkIG9uY2UuCisrICAgIGdkYl90ZXN0ICJweXRo b24gcHJpbnQoaGFuZGxlcl9vYmouY2FsbF9jb3VudCkiICJeMSIgXAorKwkiY2hlY2sgaGFuZGxl ciB3YXMgb25seSBjYWxsZWQgb25jZSIKKyt9CisrCisrIyBOb3cgY29uZmlndXJlIHRoZSBoYW5k bGVyIHRvIG1vdmUgdGhlIGRlYnVnIGZpbGUgYmFjayB0byB0aGUKKysjIC5nbnVfZGVidWdsaW5r IGxvY2F0aW9uIGFuZCB0aGVuIHJldHVybiBUcnVlLCB0aGlzIHdpbGwgY2F1c2UgR0RCIHRvCisr IyByZWNoZWNrLCBhdCB3aGljaCBwb2ludCBpdCBzaG91bGQgZmluZCB0aGUgZGVidWcgaW5mby4K Kyt3aXRoX3Rlc3RfcHJlZml4ICJoYW5kbGVyIGluIGdudV9kZWJ1Z2xpbmsgbW9kZSIgeworKyAg ICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBoYW5kbGVyX29iai5zZXRfbW9kZShNb2RlLlJF VFVSTl9UUlVFLCBcCisrCQkJCQkJICAgIFwiJGhpZGRlbl9maWxlbmFtZVwiLCBcCisrCQkJCQkJ ICAgIFwiJGRlYnVnX2ZpbGVuYW1lXCIpIiBcCisrCSJjb25maXJndXJlIGhhbmRsZXIiCisrICAg IGdkYl9maWxlX2NtZCAkYmluZmlsZQorKyAgICBnZGJfYXNzZXJ0IHskZ2RiX2ZpbGVfY21kX2Rl YnVnX2luZm8gPT0gImRlYnVnIn0gImRlYnVnIGluZm8gZm91bmQiCisrCisrICAgICMgQ2hlY2sg dGhlIGhhbmRsZXIgd2FzIG9ubHkgY2FsbGVkIG9uY2UuCisrICAgIGdkYl90ZXN0ICJweXRob24g cHJpbnQoaGFuZGxlcl9vYmouY2FsbF9jb3VudCkiICJeMSIgXAorKwkiY2hlY2sgaGFuZGxlciB3 YXMgb25seSBjYWxsZWQgb25jZSIKKyt9CisrCisrIyBTZXR1cCBhIGRpcmVjdG9yeSBzdHJ1Y3R1 cmUgYmFzZWQgb24gdGhlIGJ1aWxkLWlkIG9mIEJJTkZJTEUsIGJ1dCBkb24ndAorKyMgbW92ZSB0 aGUgZGVidWcgaW5mb3JtYXRpb24gaW50byBwbGFjZSBqdXN0IHlldC4KKysjCisrIyBJbnN0ZWFk LCBjb25maWd1cmUgdGhlIGhhbmRsZXIgdG8gbW92ZSB0aGUgZGVidWcgaW5mbyBpbnRvIHRoZSBi dWlsZC1pZAorKyMgZGlyZWN0b3J5LgorKyMKKysjIFJlbG9hZCBCSU5GSUxFLCBhdCB3aGljaCBw b2ludCB0aGUgaGFuZGxlciB3aWxsIG1vdmUgdGhlIGRlYnVnIGluZm8gaW50bworKyMgdGhlIGJ1 aWxkLWlkIGRpcmVjdG9yeSBhbmQgcmV0dXJuIFRydWUsIEdEQiB3aWxsIHRoZW4gcmVjaGVjayBm b3IgdGhlCisrIyBkZWJ1ZyBpbmZvcm1hdGlvbiwgYW5kIHNob3VsZCBmaW5kIGl0LgorK3dpdGhf dGVzdF9wcmVmaXggImhhbmRsZXIgaW4gYnVpbGQtaWQgbW9kZSIgeworKyAgICAjIE1vdmUgdGhl IGRlYnVnIGZpbGUgb3V0IG9mIHRoZSB3YXkgb25jZSBtb3JlLgorKyAgICByZW1vdGVfZXhlYyBi dWlsZCAibXYgJGRlYnVnX2ZpbGVuYW1lICRoaWRkZW5fZmlsZW5hbWUiCisrCisrICAgICMgQ3Jl YXRlIHRoZSBidWlsZC1pZCBiYXNlZCBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGRlYnVnIGluZm9y bWF0aW9uCisrICAgICMgd2lsbCBiZSBwbGFjZWQuCisrICAgIHNldCBidWlsZF9pZF9maWxlbmFt ZSBcCisrCSRkZWJ1Z19kaXJlY3RvcnkvW2J1aWxkX2lkX2RlYnVnX2ZpbGVuYW1lX2dldCAkYmlu ZmlsZV0KKysgICAgcmVtb3RlX2V4ZWMgYnVpbGQgIm1rZGlyIC1wIFtmaWxlIGRpcm5hbWUgJGJ1 aWxkX2lkX2ZpbGVuYW1lXSIKKysKKysgICAgIyBDb25maWd1cmUgdGhlIGhhbmRsZXIgdG8gbW92 ZSB0aGUgZGVidWcgaW5mbyBpbnRvIHRoZSBidWlsZC1pZCBkaXIuCisrICAgIGdkYl90ZXN0X25v X291dHB1dCAicHl0aG9uIGhhbmRsZXJfb2JqLnNldF9tb2RlKE1vZGUuUkVUVVJOX1RSVUUsIFwK KysJCQkJCQkgICAgXCIkaGlkZGVuX2ZpbGVuYW1lXCIsIFwKKysJCQkJCQkgICAgXCIkYnVpbGRf aWRfZmlsZW5hbWVcIikiIFwKKysJImNvbmZpcmd1cmUgaGFuZGxlciIKKysKKysgICAgIyBSZWxv YWQgdGhlIGJpbmFyeSBhbmQgY2hlY2sgdGhlIGRlYnVnIGluZm9ybWF0aW9uIGlzIGZvdW5kLgor KyAgICBnZGJfZmlsZV9jbWQgJGJpbmZpbGUKKysgICAgZ2RiX2Fzc2VydCB7JGdkYl9maWxlX2Nt ZF9kZWJ1Z19pbmZvID09ICJkZWJ1ZyJ9ICJkZWJ1ZyBpbmZvIGZvdW5kIgorKworKyAgICAjIENo ZWNrIHRoZSBoYW5kbGVyIHdhcyBvbmx5IGNhbGxlZCBvbmNlLgorKyAgICBnZGJfdGVzdCAicHl0 aG9uIHByaW50KGhhbmRsZXJfb2JqLmNhbGxfY291bnQpIiAiXjEiIFwKKysJImNoZWNrIGhhbmRs ZXIgd2FzIG9ubHkgY2FsbGVkIG9uY2UiCisrfQorKworKyMgTW92ZSB0aGUgZGVidWcgaW5mb3Jt YXRpb24gYmFjayB0byBhIGhpZGRlbiBsb2NhdGlvbiBhbmQgY29uZmlndXJlIHRoZQorKyMgaGFu ZGxlciB0byByZXR1cm4gdGhlIGZpbGVuYW1lIG9mIHRoZSBoaWRkZW4gZGVidWcgaW5mbyBsb2Nh dGlvbi4gIEdEQgorKyMgc2hvdWxkIGltbWVkaWF0ZWx5IHVzZSB0aGlzIGZpbGUgYXMgdGhlIGRl YnVnIGluZm9ybWF0aW9uLgorK3dpdGhfdGVzdF9wcmVmaXggImhhbmRsZXIgcmV0dXJuaW5nIGEg c3RyaW5nIiB7CisrICAgIHJlbW90ZV9leGVjIGJ1aWxkICJtdiAkYnVpbGRfaWRfZmlsZW5hbWUg JGhpZGRlbl9maWxlbmFtZSIKKysKKysgICAgIyBDb25maWd1cmUgdGhlIGhhbmRsZXIgcmV0dXJu IGEgZmlsZW5hbWUgc3RyaW5nLgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBoYW5k bGVyX29iai5zZXRfbW9kZShNb2RlLlJFVFVSTl9TVFJJTkcsIFwKKysJCQkJCQkgICAgXCIkaGlk ZGVuX2ZpbGVuYW1lXCIpIiBcCisrCSJjb25maXJndXJlIGhhbmRsZXIiCisrCisrICAgICMgUmVs b2FkIHRoZSBiaW5hcnkgYW5kIGNoZWNrIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbiBpcyBmb3VuZC4K KysgICAgZ2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl9hc3NlcnQgeyRnZGJfZmlsZV9j bWRfZGVidWdfaW5mbyA9PSAiZGVidWcifSAiZGVidWcgaW5mbyBmb3VuZCIKKysKKysgICAgIyBD aGVjayB0aGUgaGFuZGxlciB3YXMgb25seSBjYWxsZWQgb25jZS4KKysgICAgZ2RiX3Rlc3QgInB5 dGhvbiBwcmludChoYW5kbGVyX29iai5jYWxsX2NvdW50KSIgIl4xIiBcCisrCSJjaGVjayBoYW5k bGVyIHdhcyBvbmx5IGNhbGxlZCBvbmNlIgorK30KKysKKysjIFJlZ2lzdGVyIGFub3RoZXIgZ2xv YmFsIGhhbmRsZXIsIHRoaXMgb25lIHJhaXNlcyBhbiBleGNlcHRpb24uICBSZWxvYWQgdGhlCisr IyBkZWJ1ZyBpbmZvcm1hdGlvbiwgdGhlIGJhZCBoYW5kbGVyIHNob3VsZCBiZSBpbnZva2VkIGZp cnN0LCB3aGljaCByYWlzZXMKKysjIGFuIGV4Y2V0cHRpb24sIGF0IHdoaWNoIHBvaW50IEdEQiBz aG91bGQgc2tpcCBmdXJ0aGVyIFB5dGhvbiBoYW5kbGVycy4KKyt3aXRoX3Rlc3RfcHJlZml4ICJo YW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24iIHsKKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0IFwK KysJInB5dGhvbiBnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKE5vbmUsIHJoYW5k bGVyKSIKKysKKysgICAgZm9yZWFjaF93aXRoX3ByZWZpeCBleGNlcHRpb25fdHlwZSB7Z2RiLkdk YkVycm9yIFR5cGVFcnJvcn0geworKwlnZGJfdGVzdF9ub19vdXRwdXQgXAorKwkgICAgInB5dGhv biByaGFuZGxlci5leGNlcHRpb25fdHlwZSA9ICRleGNlcHRpb25fdHlwZSIKKysKKysJZ2RiX2Zp bGVfY21kICRiaW5maWxlCisrCWdkYl9hc3NlcnQgeyRnZGJfZmlsZV9jbWRfZGVidWdfaW5mbyA9 PSAibm9kZWJ1ZyJ9IFwKKysJICAgICJkZWJ1ZyBpbmZvIG5vdCBmb3VuZCIKKysKKysJc2V0IHJl IFtzdHJpbmdfdG9fcmVnZXhwIFwKKysJCSAgICAiUHl0aG9uIEV4Y2VwdGlvbiA8Y2xhc3MgJyRl eGNlcHRpb25fdHlwZSc+OiBtZXNzYWdlIl0KKysJZ2RiX2Fzc2VydCB7W3JlZ2V4cCAkcmUgJGdk Yl9maWxlX2NtZF9tc2ddfSBcCisrCSAgICAiY2hlY2sgZm9yIGV4Y2VwdGlvbiBpbiBmaWxlIGNv bW1hbmQgb3V0cHV0IgorKworKwkjIE91ciBvcmlnaW5hbCBoYW5kbGVyIGlzIHN0aWxsIHJlZ2lz dGVyZWQsIGJ1dCBzaG91bGQgbm90IGhhdmUgYmVlbgorKwkjIGNhbGxlZCBhZ2FpbiAoYXMgdGhl IGV4Y2VwdGlvbiBvY2N1cnMgZmlyc3QpLgorKwlnZGJfdGVzdCAicHl0aG9uIHByaW50KGhhbmRs ZXJfb2JqLmNhbGxfY291bnQpIiAiXjEiIFwKKysJICAgICJjaGVjayBnb29kIGhhbmRsZXIgaGFz bid0IGJlZW4gY2FsbGVkIGFnYWluIgorKyAgICB9CisrfQorKworK2dkYl90ZXN0ICJpbmZvIG1p c3NpbmctZGVidWctaGFuZGxlcnMiIFwKKysgICAgW211bHRpX2xpbmUgXAorKwkgIkdsb2JhbDoi IFwKKysJICIgIGV4Y2VwdGlvbl9oYW5kbGVyIiBcCisrCSAiICBoYW5kbGVyIl0gXAorKyAgICAi Y2hlY2sgYm90aCBoYW5kbGVycyBhcmUgdmlzaWJsZSIKKysKKysjIFJlLXN0YXJ0IEdEQi4KKytj bGVhbl9yZXN0YXJ0CisrCisrIyBMb2FkIHRoZSBQeXRob24gc2NyaXB0IGludG8gR0RCLgorK2dk Yl90ZXN0ICJzb3VyY2UgJHJlbW90ZV9weXRob25fZmlsZSIgIl5TdWNjZXNzIiBcCisrICAgICJz b3VyY2UgcHl0aG9uIHNjcmlwdCBmb3IgYmFkIGhhbmRsZXIgbmFtZSBjaGVja3MiCisrCisrIyBB dHRlbXB0IHRvIHJlZ2lzdGVyIGEgbWlzc2luZy1kZWJ1Zy1oYW5kbGVyIHdpdGggTkFNRS4gIFRo ZSBleHBlY3RhdGlvbiBpcworKyMgdGhhdCB0aGlzIHNob3VsZCBmYWlsIGFzIE5BTUUgY29udGFp bnMgc29tZSBpbnZhbGlkIGNoYXJhY3RlcnMuCisrcHJvYyBjaGVja19iYWRfbmFtZSB7bmFtZX0g eworKyAgICBzZXQgbmFtZV9yZSBbc3RyaW5nX3RvX3JlZ2V4cCAkbmFtZV0KKysgICAgc2V0IHJl IFwKKysJW211bHRpX2xpbmUgXAorKwkgICAgICJWYWx1ZUVycm9yOiBpbnZhbGlkIGNoYXJhY3Rl ciAnLicgaW4gaGFuZGxlciBuYW1lOiAkbmFtZV9yZSIgXAorKwkgICAgICJFcnJvciB3aGlsZSBl eGVjdXRpbmcgUHl0aG9uIGNvZGVcXC4iXQorKworKyAgICBnZGJfdGVzdCAicHl0aG9uIHJlZ2lz dGVyKFwiJG5hbWVcIikiICRyZSBcCisrCSJjaGVjayB0aGF0ICckbmFtZScgaXMgbm90IGFjY2Vw dGVkIgorK30KKysKKysjIFdlIGRvbid0IGF0dGVtcHQgdG8gYmUgZXhoYXVzdGl2ZSBoZXJlLCBq dXN0IGNoZWNrIGEgZmV3IHJhbmRvbSBleGFtcGxlcworKyMgb2YgaW52YWxpZCBuYW1lcy4KKytj aGVja19iYWRfbmFtZSAiISEgQmFkIE5hbWUiCisrY2hlY2tfYmFkX25hbWUgIkJhZCBOYW1lIgor K2NoZWNrX2JhZF9uYW1lICIoQmFkIE5hbWUpIgorK2NoZWNrX2JhZF9uYW1lICJCYWQgXFtOYW1l XF0iCisrY2hlY2tfYmFkX25hbWUgIkJhZCxOYW1lIgorK2NoZWNrX2JhZF9uYW1lICJCYWQ7TmFt ZSIKKysKKysjIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIGhhbmRsZXJzIHJlZ2lzdGVyZWQuCisr Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxlcnMiIFwKKysgICAg ImNoZWNrIG5vIGhhbmRsZXJzIGFyZSByZWdpc3RlcmVkIgorKworKyMgQ2hlY2sgd2UgY2FuIHVz ZSB0aGUgZW5hYmxlL2Rpc2FibGUgY29tbWFuZHMgd2hlcmUgdGhlcmUgYXJlIG5vIGhhbmRsZXJz CisrIyByZWdpc3RlcmVkLgorK2dkYl90ZXN0ICJlbmFibGUgbWlzc2luZy1kZWJ1Zy1oYW5kbGVy IGZvbyIgXAorKyAgICAiXjAgbWlzc2luZyBkZWJ1ZyBoYW5kbGVycyBlbmFibGVkIgorK2dkYl90 ZXN0ICJkaXNhYmxlIG1pc3NpbmctZGVidWctaGFuZGxlciBmb28iIFwKKysgICAgIl4wIG1pc3Np bmcgZGVidWcgaGFuZGxlcnMgZGlzYWJsZWQiCisrCisrIyBHcmFiIHRoZSBjdXJyZW50IHByb2dy YW0gc3BhY2Ugb2JqZWN0LCB1c2VkIGZvciByZWdpc3RlcmluZyBoYW5kbGVyIGxhdGVyLgorK2dk Yl90ZXN0X25vX291dHB1dCAicHl0aG9uIHBzcGFjZSA9IGdkYi5zZWxlY3RlZF9pbmZlcmlvcigp LnByb2dzcGFjZSIKKysKKysjIE5vdyByZWdpc3RlciBzb21lIGhhbmRsZXJzLgorK2ZvcmVhY2gg aHNwZWMge3tcIkZvb1wiIE5vbmV9CisrICAgIHtcIi1iYXJcIiBOb25lfQorKyAgICB7XCJiYXot XCIgcHNwYWNlfQorKyAgICB7XCJhYmMtZGVmXCIgcHNwYWNlfX0geworKyAgICBsYXNzaWduICRo c3BlYyBuYW1lIGxvY3VzCisrICAgIGdkYl90ZXN0ICJweXRob24gcmVnaXN0ZXIoJG5hbWUsICRs b2N1cykiCisrfQorKworK3dpdGhfdGVzdF9wcmVmaXggImFsbCBoYW5kbGVycyBlbmFibGVkIiB7 CisrICAgIGdkYl90ZXN0ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxlcnMiIFwKKysJW211bHRp X2xpbmUgXAorKwkgICAgICJDdXJyZW50IFByb2dzcGFjZToiIFwKKysJICAgICAiICBhYmMtZGVm IiBcCisrCSAgICAgIiAgYmF6LSIgXAorKwkgICAgICJHbG9iYWw6IiBcCisrCSAgICAgIiAgLWJh ciIgXAorKwkgICAgICIgIEZvbyJdCisrCisrICAgIGdkYl9maWxlX2NtZCAkYmluZmlsZQorKyAg ICBnZGJfdGVzdCAicHl0aG9uIHByaW50KGhhbmRsZXJfY2FsbF9sb2cpIiBcCisrCVtzdHJpbmdf dG9fcmVnZXhwIHtbJ2FiYy1kZWYnLCAnYmF6LScsICctYmFyJywgJ0ZvbyddfV0KKysgICAgZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gaGFuZGxlcl9jYWxsX2xvZyA9IFxbXF0iIFwKKysJInJl c2V0IGNhbGwgbG9nIgorK30KKysKKyt3aXRoX3Rlc3RfcHJlZml4ICJkaXNhYmxlICdiYXotJyIg eworKyAgICBnZGJfdGVzdCAiZGlzYWJsZSBtaXNzaW5nLWRlYnVnLWhhbmRsZXIgcHJvZ3NwYWNl IGJhei0iIFwKKysJIl4xIG1pc3NpbmcgZGVidWcgaGFuZGxlciBkaXNhYmxlZCIKKysKKysgICAg Z2RiX3Rlc3QgImluZm8gbWlzc2luZy1kZWJ1Zy1oYW5kbGVycyIgXAorKwlbbXVsdGlfbGluZSBc CisrCSAgICAgIlByb2dzcGFjZSBcW15cclxuXF0rOiIgXAorKwkgICAgICIgIGFiYy1kZWYiIFwK KysJICAgICAiICBiYXotIFxcXFtkaXNhYmxlZFxcXF0iIFwKKysJICAgICAiR2xvYmFsOiIgXAor KwkgICAgICIgIC1iYXIiIFwKKysJICAgICAiICBGb28iXQorKworKyAgICBnZGJfZmlsZV9jbWQg JGJpbmZpbGUKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludChoYW5kbGVyX2NhbGxfbG9nKSIg XAorKwlbc3RyaW5nX3RvX3JlZ2V4cCB7WydhYmMtZGVmJywgJy1iYXInLCAnRm9vJ119XQorKyAg ICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBoYW5kbGVyX2NhbGxfbG9nID0gXFtcXSIgXAor KwkicmVzZXQgY2FsbCBsb2ciCisrfQorKworK3dpdGhfdGVzdF9wcmVmaXggImRpc2FibGUgJ0Zv byciIHsKKysgICAgZ2RiX3Rlc3QgImRpc2FibGUgbWlzc2luZy1kZWJ1Zy1oYW5kbGVyIC4qIEZv byIgXAorKwkiXjEgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyIGRpc2FibGVkIgorKworKyAgICBnZGJf dGVzdCAiaW5mbyBtaXNzaW5nLWRlYnVnLWhhbmRsZXJzIiBcCisrCVttdWx0aV9saW5lIFwKKysJ ICAgICAiUHJvZ3NwYWNlIFxbXlxyXG5cXSs6IiBcCisrCSAgICAgIiAgYWJjLWRlZiIgXAorKwkg ICAgICIgIGJhei0gXFxcW2Rpc2FibGVkXFxcXSIgXAorKwkgICAgICJHbG9iYWw6IiBcCisrCSAg ICAgIiAgLWJhciIgXAorKwkgICAgICIgIEZvbyBcXFxbZGlzYWJsZWRcXFxdIl0KKysKKysgICAg Z2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoaGFuZGxl cl9jYWxsX2xvZykiIFwKKysJW3N0cmluZ190b19yZWdleHAge1snYWJjLWRlZicsICctYmFyJ119 XQorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBoYW5kbGVyX2NhbGxfbG9nID0gXFtc XSIgXAorKwkicmVzZXQgY2FsbCBsb2ciCisrfQorKworK3dpdGhfdGVzdF9wcmVmaXggImRpc2Fi bGUgZXZlcnl0aGluZyIgeworKyAgICBnZGJfdGVzdCAiZGlzYWJsZSBtaXNzaW5nLWRlYnVnLWhh bmRsZXIgLiogLioiIFwKKysJIl4yIG1pc3NpbmcgZGVidWcgaGFuZGxlcnMgZGlzYWJsZWQiCisr CisrICAgIGdkYl90ZXN0ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxlcnMiIFwKKysJW211bHRp X2xpbmUgXAorKwkgICAgICJQcm9nc3BhY2UgXFteXHJcblxdKzoiIFwKKysJICAgICAiICBhYmMt ZGVmIFxcXFtkaXNhYmxlZFxcXF0iIFwKKysJICAgICAiICBiYXotIFxcXFtkaXNhYmxlZFxcXF0i IFwKKysJICAgICAiR2xvYmFsOiIgXAorKwkgICAgICIgIC1iYXIgXFxcW2Rpc2FibGVkXFxcXSIg XAorKwkgICAgICIgIEZvbyBcXFxbZGlzYWJsZWRcXFxdIl0KKysKKysgICAgZ2RiX2ZpbGVfY21k ICRiaW5maWxlCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoaGFuZGxlcl9jYWxsX2xvZyki IFwKKysJW3N0cmluZ190b19yZWdleHAge1tdfV0KKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJw eXRob24gaGFuZGxlcl9jYWxsX2xvZyA9IFxbXF0iIFwKKysJInJlc2V0IGNhbGwgbG9nIgorK30K KysKKyt3aXRoX3Rlc3RfcHJlZml4ICJlbmFibGUgJ2FiYy1kZWYnIiB7CisrICAgIHNldCByZSBb c3RyaW5nX3RvX3JlZ2V4cCAkYmluZmlsZV0KKysKKysgICAgZ2RiX3Rlc3QgImVuYWJsZSBtaXNz aW5nLWRlYnVnLWhhbmRsZXIgXCIkcmVcIiBhYmMtZGVmIiBcCisrCSJeMSBtaXNzaW5nIGRlYnVn IGhhbmRsZXIgZW5hYmxlZCIKKysKKysgICAgZ2RiX3Rlc3QgImluZm8gbWlzc2luZy1kZWJ1Zy1o YW5kbGVycyIgXAorKwlbbXVsdGlfbGluZSBcCisrCSAgICAgIlByb2dzcGFjZSBcW15cclxuXF0r OiIgXAorKwkgICAgICIgIGFiYy1kZWYiIFwKKysJICAgICAiICBiYXotIFxcXFtkaXNhYmxlZFxc XF0iIFwKKysJICAgICAiR2xvYmFsOiIgXAorKwkgICAgICIgIC1iYXIgXFxcW2Rpc2FibGVkXFxc XSIgXAorKwkgICAgICIgIEZvbyBcXFxbZGlzYWJsZWRcXFxdIl0KKysKKysgICAgZ2RiX2ZpbGVf Y21kICRiaW5maWxlCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoaGFuZGxlcl9jYWxsX2xv ZykiIFwKKysJW3N0cmluZ190b19yZWdleHAge1snYWJjLWRlZiddfV0KKysgICAgZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJweXRob24gaGFuZGxlcl9jYWxsX2xvZyA9IFxbXF0iIFwKKysJInJlc2V0IGNh bGwgbG9nIgorK30KKysKKyt3aXRoX3Rlc3RfcHJlZml4ICJlbmFibGUgZ2xvYmFsIGhhbmRsZXJz IiB7CisrICAgIHNldCByZSBbc3RyaW5nX3RvX3JlZ2V4cCAkYmluZmlsZV0KKysKKysgICAgZ2Ri X3Rlc3QgImVuYWJsZSBtaXNzaW5nLWRlYnVnLWhhbmRsZXIgZ2xvYmFsIiBcCisrCSJeMiBtaXNz aW5nIGRlYnVnIGhhbmRsZXJzIGVuYWJsZWQiCisrCisrICAgIGdkYl90ZXN0ICJpbmZvIG1pc3Np bmctZGVidWctaGFuZGxlcnMiIFwKKysJW211bHRpX2xpbmUgXAorKwkgICAgICJQcm9nc3BhY2Ug XFteXHJcblxdKzoiIFwKKysJICAgICAiICBhYmMtZGVmIiBcCisrCSAgICAgIiAgYmF6LSBcXFxb ZGlzYWJsZWRcXFxdIiBcCisrCSAgICAgIkdsb2JhbDoiIFwKKysJICAgICAiICAtYmFyIiBcCisr CSAgICAgIiAgRm9vIl0KKysKKysgICAgZ2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl90 ZXN0ICJweXRob24gcHJpbnQoaGFuZGxlcl9jYWxsX2xvZykiIFwKKysJW3N0cmluZ190b19yZWdl eHAge1snYWJjLWRlZicsICctYmFyJywgJ0ZvbyddfV0KKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0 ICJweXRob24gaGFuZGxlcl9jYWxsX2xvZyA9IFxbXF0iIFwKKysJInJlc2V0IGNhbGwgbG9nIgor K30KKysKKysjIEFkZCBoYW5kbGVyX29iaiB0byB0aGUgZ2xvYmFsIGhhbmRsZXIgbGlzdCwgYW5k IGNvbmZpZ3VyZSBpdCB0bworKyMgcmV0dXJuIEZhbHNlLiAgV2Ugc2hvdWxkIGNhbGwgYWxsIG9m IHRoZSBwcm9ncmFtIHNwYWNlIHNwZWNpZmljCisrIyBoYW5kbGVycyAod2hpY2ggcmV0dXJuIE5v bmUpLCBhbmQgdGhlbiBjYWxsIGhhbmRsZXJfb2JqIGZyb20gdGhlCisrIyBnbG9iYWwgbGlzdCwg d2hpY2ggcmV0dXJucyBGYWxzZSwgYXQgd2hpY2ggcG9pbnQgd2Ugc2hvdWxkbid0IGNhbGwKKysj IGFueW9uZSBlbHNlLgorK3dpdGhfdGVzdF9wcmVmaXggInJldHVybiBGYWxzZSBoYW5kbGVyIGlu IHByb2dzcGFjZSBsaXN0IiB7CisrICAgIGdkYl90ZXN0ICJlbmFibGUgbWlzc2luZy1kZWJ1Zy1o YW5kbGVyIHByb2dzcGFjZSIgXAorKwkiXjEgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyIGVuYWJsZWQi CisrCisrICAgIGdkYl90ZXN0X25vX291dHB1dCBcCisrCSJweXRob24gZ2RiLm1pc3NpbmdfZGVi dWcucmVnaXN0ZXJfaGFuZGxlcihOb25lLCBoYW5kbGVyX29iaikiIFwKKysJInJlZ2lzdGVyIHRo ZSBpbml0aWFsIGhhbmRsZXIiCisrCisrICAgIGdkYl90ZXN0ICJpbmZvIG1pc3NpbmctZGVidWct aGFuZGxlcnMiIFwKKysJW211bHRpX2xpbmUgXAorKwkgICAgICJQcm9nc3BhY2UgXFteXHJcblxd KzoiIFwKKysJICAgICAiICBhYmMtZGVmIiBcCisrCSAgICAgIiAgYmF6LSIgXAorKwkgICAgICJH bG9iYWw6IiBcCisrCSAgICAgIiAgaGFuZGxlciIgXAorKwkgICAgICIgIC1iYXIiIFwKKysJICAg ICAiICBGb28iXQorKworKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBoYW5kbGVyX29i ai5zZXRfbW9kZShNb2RlLlJFVFVSTl9GQUxTRSkiIFwKKysJImNvbmZpcmd1cmUgaGFuZGxlciIK KysKKysgICAgZ2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJp bnQoaGFuZGxlcl9jYWxsX2xvZykiIFwKKysJW3N0cmluZ190b19yZWdleHAge1snYWJjLWRlZics ICdiYXotJywgJ2hhbmRsZXInXX1dCisrICAgIGdkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGhh bmRsZXJfY2FsbF9sb2cgPSBcW1xdIiBcCisrCSJyZXNldCBjYWxsIGxvZyIKKyt9CisrCisrIyBO b3cgYWRkIGhhbmRsZXJfb2JqIHRvIHRoZSBjdXJyZW50IHByb2dyYW0gc3BhY2UncyBoYW5kbGVy IGxpc3QuICBXZQorKyMgdXNlIHRoZSBzYW1lIGhhbmRsZXIgb2JqZWN0IGhlcmUsIHRoYXQncyBm aW5lLiAgV2Ugc2hvdWxkIG9ubHkgc2VlIGEKKysjIGNhbGwgdG8gdGhlIGZpcnN0IGhhbmRsZXIg b2JqZWN0IGluIHRoZSBjYWxsIGxvZy4KKyt3aXRoX3Rlc3RfcHJlZml4ICJyZXR1cm4gRmFsc2Ug aGFuZGxlciBpbiBnbG9iYWwgbGlzdCIgeworKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgXAorKwki cHl0aG9uIGdkYi5taXNzaW5nX2RlYnVnLnJlZ2lzdGVyX2hhbmRsZXIocHNwYWNlLCBoYW5kbGVy X29iaikiIFwKKysJInJlZ2lzdGVyIHRoZSBpbml0aWFsIGhhbmRsZXIiCisrCisrICAgIGdkYl90 ZXN0ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxlcnMiIFwKKysJW211bHRpX2xpbmUgXAorKwkg ICAgICJQcm9nc3BhY2UgXFteXHJcblxdKzoiIFwKKysJICAgICAiICBoYW5kbGVyIiBcCisrCSAg ICAgIiAgYWJjLWRlZiIgXAorKwkgICAgICIgIGJhei0iIFwKKysJICAgICAiR2xvYmFsOiIgXAor KwkgICAgICIgIGhhbmRsZXIiIFwKKysJICAgICAiICAtYmFyIiBcCisrCSAgICAgIiAgRm9vIl0K KysKKysgICAgZ2RiX2ZpbGVfY21kICRiaW5maWxlCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJp bnQoaGFuZGxlcl9jYWxsX2xvZykiIFwKKysJW3N0cmluZ190b19yZWdleHAge1snaGFuZGxlcidd fV0KKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gaGFuZGxlcl9jYWxsX2xvZyA9IFxb XF0iIFwKKysJInJlc2V0IGNhbGwgbG9nIgorK30KKysKKyt3aXRoX3Rlc3RfcHJlZml4ICJjaGVj ayBoYW5kbGVyIHJlcGxhY2VtZW50IiB7CisrICAgICMgRmlyc3QsIGNoZWNrIHdlIGNhbiBoYXZl IHRoZSBzYW1lIG5hbWUgYXBwZWFyIGluIGJvdGggcHJvZ3JhbQorKyAgICAjIHNwYWNlIGFuZCBn bG9iYWwgbGlzdHMgd2l0aG91dCBnaXZpbmcgYW4gZXJyb3IuCisrICAgIGdkYl90ZXN0X25vX291 dHB1dCAicHl0aG9uIHJlZ2lzdGVyKFwiRm9vXCIsIHBzcGFjZSkiCisrCisrICAgIGdkYl90ZXN0 ICJpbmZvIG1pc3NpbmctZGVidWctaGFuZGxlcnMiIFwKKysJW211bHRpX2xpbmUgXAorKwkgICAg ICJQcm9nc3BhY2UgXFteXHJcblxdKzoiIFwKKysJICAgICAiICBGb28iIFwKKysJICAgICAiICBo YW5kbGVyIiBcCisrCSAgICAgIiAgYWJjLWRlZiIgXAorKwkgICAgICIgIGJhei0iIFwKKysJICAg ICAiR2xvYmFsOiIgXAorKwkgICAgICIgIGhhbmRsZXIiIFwKKysJICAgICAiICAtYmFyIiBcCisr CSAgICAgIiAgRm9vIl0KKysKKysgICAgIyBOb3cgY2hlY2sgdGhhdCB3ZSBnZXQgYW4gZXJyb3Ig aWYgd2UgdHJ5IHRvIGFkZCBhIGhhbmRsZXIgd2l0aAorKyAgICAjIHRoZSBzYW1lIG5hbWUuCisr ICAgIGdkYl90ZXN0ICJweXRob24gZ2RiLm1pc3NpbmdfZGVidWcucmVnaXN0ZXJfaGFuZGxlcihw c3BhY2UsIGxvZ19oYW5kbGVyKFwiRm9vXCIpKSIgXAorKwlbbXVsdGlfbGluZSBcCisrCSAgICAg IlJ1bnRpbWVFcnJvcjogSGFuZGxlciBGb28gYWxyZWFkeSBleGlzdHNcXC4iIFwKKysJICAgICAi RXJyb3Igd2hpbGUgZXhlY3V0aW5nIFB5dGhvbiBjb2RlXFwuIl0KKysKKysgICAgZ2RiX3Rlc3Qg InB5dGhvbiBnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKGhhbmRsZXI9bG9nX2hh bmRsZXIoXCJGb29cIiksIGxvY3VzPXBzcGFjZSkiIFwKKysJW211bHRpX2xpbmUgXAorKwkgICAg ICJSdW50aW1lRXJyb3I6IEhhbmRsZXIgRm9vIGFscmVhZHkgZXhpc3RzXFwuIiBcCisrCSAgICAg IkVycm9yIHdoaWxlIGV4ZWN1dGluZyBQeXRob24gY29kZVxcLiJdCisrCisrICAgICMgQW5kIG5v dyB0cnkgYWdhaW4sIGJ1dCB0aGlzIHRpbWUgd2l0aCAncmVwbGFjZT1UcnVlJywgd2UKKysgICAg IyBzaG91bGRuJ3QgZ2V0IGFuIGVycm9yIGluIHRoaXMgY2FzZS4KKysgICAgZ2RiX3Rlc3Rfbm9f b3V0cHV0IFwKKysJInB5dGhvbiBnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKHBz cGFjZSwgbG9nX2hhbmRsZXIoXCJGb29cIiksIHJlcGxhY2U9VHJ1ZSkiCisrCisrICAgIGdkYl90 ZXN0X25vX291dHB1dCBcCisrCSJweXRob24gZ2RiLm1pc3NpbmdfZGVidWcucmVnaXN0ZXJfaGFu ZGxlcihoYW5kbGVyPWxvZ19oYW5kbGVyKFwiRm9vXCIpLCBsb2N1cz1Ob25lLCByZXBsYWNlPVRy dWUpIgorKworKyAgICAjIE5vdyBkaXNhYmxlIGEgaGFuZGxlciBhbmQgY2hlY2sgd2Ugc3RpbGwg bmVlZCB0byB1c2UgJ3JlcGxhY2U9VHJ1ZScuCisrICAgIGdkYl90ZXN0ICJkaXNhYmxlIG1pc3Np bmctZGVidWctaGFuZGxlciBwcm9nc3BhY2UgRm9vIiBcCisrCSJeMSBtaXNzaW5nIGRlYnVnIGhh bmRsZXIgZGlzYWJsZWQiCisrCisrICAgIGdkYl90ZXN0ICJweXRob24gZ2RiLm1pc3NpbmdfZGVi dWcucmVnaXN0ZXJfaGFuZGxlcihwc3BhY2UsIGxvZ19oYW5kbGVyKFwiRm9vXCIpKSIgXAorKwlb bXVsdGlfbGluZSBcCisrCSAgICAgIlJ1bnRpbWVFcnJvcjogSGFuZGxlciBGb28gYWxyZWFkeSBl eGlzdHNcXC4iIFwKKysJICAgICAiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIFB5dGhvbiBjb2RlXFwu Il0gXAorKwkic3RpbGwgZ2V0IGFuIGVycm9yIHdoZW4gaGFuZGxlciBpcyBkaXNhYmxlZCIKKysK KysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0IFwKKysJInB5dGhvbiBnZGIubWlzc2luZ19kZWJ1Zy5y ZWdpc3Rlcl9oYW5kbGVyKHBzcGFjZSwgbG9nX2hhbmRsZXIoXCJGb29cIiksIHJlcGxhY2U9VHJ1 ZSkiIFwKKysJImNhbiByZXBsYWNlIGEgZGlzYWJsZWQgaGFuZGxlciIKKyt9CitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcucHkgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktbWlzc2luZy1kZWJ1Zy5weQorbmV3IGZpbGUgbW9kZSAxMDA2 NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNz aW5nLWRlYnVnLnB5CitAQCAtMCwwICsxLDEyMCBAQAorKyMgQ29weXJpZ2h0IChDKSAyMDIzIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKysKKytpbXBvcnQgZ2RiCisrZnJvbSBnZGIubWlzc2luZ19kZWJ1ZyBpbXBvcnQgTWlz c2luZ0RlYnVnSGFuZGxlcgorK2Zyb20gZW51bSBpbXBvcnQgRW51bQorK2ltcG9ydCBvcworKwor KyMgQSBnbG9iYWwgbG9nIHRoYXQgaXMgZmlsbGVkIGluIGJ5IGluc3RhbmNlcyBvZiB0aGUgTE9H X0hBTkRMRVIgY2xhc3MKKysjIHdoZW4gdGhleSBhcmUgY2FsbGVkLgorK2hhbmRsZXJfY2FsbF9s b2cgPSBbXQorKworKworK2NsYXNzIE1vZGUoRW51bSk6CisrICAgIFJFVFVSTl9OT05FID0gMAor KyAgICBSRVRVUk5fVFJVRSA9IDEKKysgICAgUkVUVVJOX0ZBTFNFID0gMgorKyAgICBSRVRVUk5f U1RSSU5HID0gMworKworKworK2NsYXNzIGhhbmRsZXIoTWlzc2luZ0RlYnVnSGFuZGxlcik6Cisr ICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKysgICAgICAgIHN1cGVyKCkuX19pbml0X18oImhhbmRs ZXIiKQorKyAgICAgICAgc2VsZi5fY2FsbF9jb3VudCA9IDAKKysgICAgICAgIHNlbGYuX21vZGUg PSBNb2RlLlJFVFVSTl9OT05FCisrCisrICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmpmaWxlKToK KysgICAgICAgIGdsb2JhbCBoYW5kbGVyX2NhbGxfbG9nCisrICAgICAgICBoYW5kbGVyX2NhbGxf bG9nLmFwcGVuZChzZWxmLm5hbWUpCisrICAgICAgICBzZWxmLl9jYWxsX2NvdW50ICs9IDEKKysg ICAgICAgIGlmIHNlbGYuX21vZGUgPT0gTW9kZS5SRVRVUk5fTk9ORToKKysgICAgICAgICAgICBy ZXR1cm4gTm9uZQorKworKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBNb2RlLlJFVFVSTl9UUlVF OgorKyAgICAgICAgICAgIG9zLnJlbmFtZShzZWxmLl9zcmMsIHNlbGYuX2Rlc3QpCisrICAgICAg ICAgICAgcmV0dXJuIFRydWUKKysKKysgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gTW9kZS5SRVRV Uk5fRkFMU0U6CisrICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisrCisrICAgICAgICBpZiBzZWxm Ll9tb2RlID09IE1vZGUuUkVUVVJOX1NUUklORzoKKysgICAgICAgICAgICByZXR1cm4gc2VsZi5f ZGVzdAorKworKyAgICAgICAgYXNzZXJ0IEZhbHNlCisrCisrICAgIEBwcm9wZXJ0eQorKyAgICBk ZWYgY2FsbF9jb3VudChzZWxmKToKKysgICAgICAgICIiIlJldHVybiBhIGNvdW50LCB0aGUgbnVt YmVyIG9mIGNhbGxzIHRvIF9fY2FsbF9fIHNpbmNlIHRoZSBsYXN0CisrICAgICAgICBjYWxsIHRv IHNldF9tb2RlLgorKyAgICAgICAgIiIiCisrICAgICAgICByZXR1cm4gc2VsZi5fY2FsbF9jb3Vu dAorKworKyAgICBkZWYgc2V0X21vZGUoc2VsZiwgbW9kZSwgKmFyZ3MpOgorKyAgICAgICAgc2Vs Zi5fY2FsbF9jb3VudCA9IDAKKysgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlCisrCisrICAgICAg ICBpZiBtb2RlID09IE1vZGUuUkVUVVJOX05PTkU6CisrICAgICAgICAgICAgYXNzZXJ0IGxlbihh cmdzKSA9PSAwCisrICAgICAgICAgICAgcmV0dXJuCisrCisrICAgICAgICBpZiBtb2RlID09IE1v ZGUuUkVUVVJOX1RSVUU6CisrICAgICAgICAgICAgYXNzZXJ0IGxlbihhcmdzKSA9PSAyCisrICAg ICAgICAgICAgc2VsZi5fc3JjID0gYXJnc1swXQorKyAgICAgICAgICAgIHNlbGYuX2Rlc3QgPSBh cmdzWzFdCisrICAgICAgICAgICAgcmV0dXJuCisrCisrICAgICAgICBpZiBtb2RlID09IE1vZGUu UkVUVVJOX0ZBTFNFOgorKyAgICAgICAgICAgIGFzc2VydCBsZW4oYXJncykgPT0gMAorKyAgICAg ICAgICAgIHJldHVybgorKworKyAgICAgICAgaWYgbW9kZSA9PSBNb2RlLlJFVFVSTl9TVFJJTkc6 CisrICAgICAgICAgICAgYXNzZXJ0IGxlbihhcmdzKSA9PSAxCisrICAgICAgICAgICAgc2VsZi5f ZGVzdCA9IGFyZ3NbMF0KKysgICAgICAgICAgICByZXR1cm4KKysKKysgICAgICAgIGFzc2VydCBG YWxzZQorKworKworK2NsYXNzIGV4Y2VwdGlvbl9oYW5kbGVyKE1pc3NpbmdEZWJ1Z0hhbmRsZXIp OgorKyAgICBkZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJl eGNlcHRpb25faGFuZGxlciIpCisrICAgICAgICBzZWxmLmV4Y2VwdGlvbl90eXBlID0gTm9uZQor KworKyAgICBkZWYgX19jYWxsX18oc2VsZiwgb2JqZmlsZSk6CisrICAgICAgICBnbG9iYWwgaGFu ZGxlcl9jYWxsX2xvZworKyAgICAgICAgaGFuZGxlcl9jYWxsX2xvZy5hcHBlbmQoc2VsZi5uYW1l KQorKyAgICAgICAgYXNzZXJ0IHNlbGYuZXhjZXB0aW9uX3R5cGUgaXMgbm90IE5vbmUKKysgICAg ICAgIHJhaXNlIHNlbGYuZXhjZXB0aW9uX3R5cGUoIm1lc3NhZ2UiKQorKworKworK2NsYXNzIGxv Z19oYW5kbGVyKE1pc3NpbmdEZWJ1Z0hhbmRsZXIpOgorKyAgICBkZWYgX19jYWxsX18oc2VsZiwg b2JqZmlsZSk6CisrICAgICAgICBnbG9iYWwgaGFuZGxlcl9jYWxsX2xvZworKyAgICAgICAgaGFu ZGxlcl9jYWxsX2xvZy5hcHBlbmQoc2VsZi5uYW1lKQorKyAgICAgICAgcmV0dXJuIE5vbmUKKysK KysKKysjIEEgYmFzaWMgaGVscGVyIGZ1bmN0aW9uLCB0aGlzIGtlZXBzIGxpbmVzIHNob3J0ZXIg aW4gdGhlIFRDTCBzY3JpcHQuCisrZGVmIHJlZ2lzdGVyKG5hbWUsIGxvY3VzPU5vbmUpOgorKyAg ICBnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKGxvY3VzLCBsb2dfaGFuZGxlcihu YW1lKSkKKysKKysKKysjIENyZWF0ZSBpbnN0YW5jZXMgb2YgdGhlIGhhbmRsZXJzLCBidXQgZG9u J3QgaW5zdGFsbCBhbnkuICBXZSBpbnN0YWxsCisrIyB0aGVzZSBhcyBuZWVkZWQgZnJvbSB0aGUg VENMIHNjcmlwdC4KKytyaGFuZGxlciA9IGV4Y2VwdGlvbl9oYW5kbGVyKCkKKytoYW5kbGVyX29i aiA9IGhhbmRsZXIoKQorKworK3ByaW50KCJTdWNjZXNzIikKCmRpZmYgLS1naXQgYS9nZGItYWRk LXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaCBiL2dkYi1hZGQtcnBtLXN1Z2dlc3Rpb24tc2Ny aXB0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MGJjNTgKLS0t IC9kZXYvbnVsbAorKysgYi9nZGItYWRkLXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaApAQCAt MCwwICsxLDE1NyBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IEFuZHJldyBCdXJnZXNzIDxhYnVyZ2Vzc0ByZWRoYXQuY29tPgorRGF0ZTogVGh1 LCA3IE1hciAyMDI0IDE1OjE0OjIzICswMDAwCitTdWJqZWN0OiBnZGItYWRkLXJwbS1zdWdnZXN0 aW9uLXNjcmlwdC5wYXRjaAorCis7OyBOb3QgYSBiYWNrcG9ydC4gIEFkZCBhIG5ldyBzY3JpcHQg d2hpY2ggaG9va3MgaW50byBHREIgYW5kIHN1Z2dlc3RzCis7OyBSUE1zIHRvIGluc3RhbGwgd2hl biBHREIgZmluZHMgYW4gb2JqZmlsZSB3aXRoIG5vIGRlYnVnIGluZm8uCisKK2dkYjogYWRkIHNj cmlwdCB3aGljaCB3aWxsIHN1Z2dlc3QgZGVidWdpbmZvIFJQTXMgdG8gaW5zdGFsbAorCitUaGlz IHNjcmlwdCBob29rcyBpbnRvIEdEQidzIG1pc3NpbmcgZGVidWcgaW5mbyBQeXRob24gQVBJIGFu ZAorc3VnZ2VzdHMgZGVidWdpbmZvIFJQTXMgdG8gaW5zdGFsbC4KKworZGlmZiAtLWdpdCBhL2dk Yi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbiBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmls ZS5pbgorLS0tIGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCisrKysgYi9nZGIvZGF0 YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KK0BAIC04Niw2ICs4Niw3IEBAIFBZVEhPTl9GSUxFX0xJ U1QgPSBcCisgCWdkYi9jb21tYW5kL21pc3NpbmdfZGVidWcucHkgXAorIAlnZGIvY29tbWFuZC9w cmV0dHlfcHJpbnRlcnMucHkgXAorIAlnZGIvY29tbWFuZC9wcm9tcHQucHkgXAorKwlnZGIvY29t bWFuZC9ycG0tc3VnZ2VzdGlvbnMucHkgXAorIAlnZGIvY29tbWFuZC90eXBlX3ByaW50ZXJzLnB5 IFwKKyAJZ2RiL2NvbW1hbmQvdW53aW5kZXJzLnB5IFwKKyAJZ2RiL2NvbW1hbmQveG1ldGhvZHMu cHkgXAorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JwbS1zdWdnZXN0 aW9ucy5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JwbS1zdWdnZXN0aW9ucy5weQor bmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9weXRob24vbGli L2dkYi9jb21tYW5kL3JwbS1zdWdnZXN0aW9ucy5weQorQEAgLTAsMCArMSwxMTEgQEAKKysjIENv cHlyaWdodCAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytpbXBvcnQgZ2RiCisraW1wb3J0IGdkYi5taXNzaW5n X2RlYnVnCisraW1wb3J0IHJwbQorKworKyMgVHJhY2sgYWxsIHRoZSBSUE1zIHN1Z2dlc3RlZCBk dXJpbmcgYSBzaW5nbGUgZGVidWcgc2Vzc2lvbiBzbyB3ZQorKyMgZG9uJ3Qgc3VnZ2VzdCB0aGUg c2FtZSBSUE0gdHdpY2UuICBUaGlzIGlzIG9ubHkgY2xlYXJlZCB3aGVuIHRoZQorKyMgbWFpbiBl eGVjdXRhYmxlIGlzIGNoYW5nZWQuCisrX19taXNzaW5nX3JwbXMgPSB7fQorKworKyMgVHJhY2sg YW55IG1pc3NpbmcgUlBNcyB0aGF0IGhhdmUgYmVlbiBkaXNjb3ZlcmVkIHNpbmNlIHRoZSBsYXN0 IHRpbWUKKysjIHRoZSBwcm9tcHQgd2FzIGRpc3BsYXllZC4gIFJQTXMgaW4gaGVyZSBhcmUgYWxz byBwcmVzZW50IGluIHRoZQorKyMgX19NSVNTSU5HX1JQTVMgZGljdGlvbmFyeSwgYnV0IHRoaXMg ZGljdGlvbmFyeSBpcyBjbGVhcmVkIGVhY2ggdGltZQorKyMgdGhlIHByb21wdCBpcyBzaG93bi4K KytfX3N1Z2dlc3RfcnBtcyA9IHt9CisrCisrCisrIyBMb29rdXAgUlBNcyB0aGF0IG1pZ2h0IHBy b3ZpZGUgdGhlIGRlYnVnIGluZm9ybWF0aW9uIGZvciBGSUxFTkFNRSwKKysjIHdoaWNoIGlzIGEg c3RyaW5nIGNvbnRhaW5pbmcgdGhlIHBhdGggdG8gYW4gb2JqZWN0IGZpbGUgR0RCIGNvdWxkCisr IyBub3QgZmluZCBhbnkgZGVidWcgaW5mb3JtYXRpb24gZm9yLgorKyMKKysjIElmIGEgcG9zc2li bGUgUlBNIGlzIGZvdW5kIHRoZW4gdGhpcyBpcyBhZGRlZCB0byB0aGUgZ2xvYmFscworKyMgX19N SVNTSU5HX1JQTVMgYW5kIF9fU1VHR0VTVF9SUE1TLCB3aGljaCBhcmUgdXNlZCBlbHNld2hlcmUg aW4gdGhpcworKyMgc2NyaXB0LgorK2RlZiBmaW5kX3N1Z2dlc3Rpb25zKGZpbGVuYW1lKToKKysg ICAgdHMgPSBycG0uVHJhbnNhY3Rpb25TZXQoKQorKworKyAgICBtaSA9IHRzLmRiTWF0Y2gocnBt LlJQTURCSV9CQVNFTkFNRVMsIGZpbGVuYW1lKQorKyAgICBmb3IgaCBpbiBtaToKKysgICAgICAg ICMgQnVpbGQgdGhlIGRlYnVnaW5mbyBwYWNrYWdlIG5hbWUuCisrICAgICAgICBvYmogPSBoLmZv cm1hdCgiJXtuYW1lfS1kZWJ1Z2luZm8tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LiV7YXJjaH0iKQor KworKyAgICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkLgor KyAgICAgICAgbWkyID0gdHMuZGJNYXRjaChycG0uUlBNREJJX0xBQkVMLCBzdHIob2JqKSkKKysg ICAgICAgIGlmIGxlbihtaTIpID4gMDoKKysgICAgICAgICAgICBjb250aW51ZQorKworKyAgICAg ICAgIyBOb3cgYnVpbGQgdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UgRklMRU5BTUUgY2FtZSBmcm9t LgorKyAgICAgICAgb2JqID0gaC5mb3JtYXQoIiV7bmFtZX0tJXt2ZXJzaW9ufS0le3JlbGVhc2V9 LiV7YXJjaH0iKQorKyAgICAgICAgcnBtX25hbWUgPSBzdHIob2JqKQorKyAgICAgICAgaWYgbm90 IHJwbV9uYW1lIGluIF9fbWlzc2luZ19ycG1zOgorKyAgICAgICAgICAgIF9fc3VnZ2VzdF9ycG1z W3JwbV9uYW1lXSA9IFRydWUKKysgICAgICAgICAgICBfX21pc3NpbmdfcnBtc1tycG1fbmFtZV0g PSBUcnVlCisrCisrCisrIyBBIG1pc3NpbmcgZGVidWcgaGFuZGxlciBjbGFzcy4gIEp1c3QgZm9y d2FyZHMgdGhlIG5hbWUgb2YgdGhlCisrIyBvYmpmaWxlIGZvciB3aGljaCB3ZSBhcmUgbWlzc2lu ZyBkZWJ1ZyBpbmZvcm1hdGlvbiB0bworKyMgZmluZF9zdWdnZXN0aW9ucy4KKytjbGFzcyBSUE1T dWdnZXN0aW9uSGFuZGxlcihnZGIubWlzc2luZ19kZWJ1Zy5NaXNzaW5nRGVidWdIYW5kbGVyKToK KysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygicnBt LXN1Z2dlc3Rpb25zIikKKysKKysgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iamZpbGUpOgorKyAg ICAgICAgIyBUcmFkaXRpb25hbGx5IHRoZSAnYnVpbGQtaWQtdmVyYm9zZScgcGFyYW1ldGVyIGlz IHdoYXQKKysgICAgICAgICMgY29udHJvbGxlZCBhbGwgUlBNIHN1Z2dlc3Rpb24uICBNYXliZSBv bmNlIGFsbCB0aGUgUlBNCisrICAgICAgICAjIHN1Z2dlc3Rpb24gaXMgcGVyZm9ybWVkIHZpYSBQ eXRob24gZXh0ZW5zaW9ucyB0aGVuIHdlIG1pZ2h0CisrICAgICAgICAjIGNvbnNpZGVyIHJlbmFt aW5nIHRoaXMgcGFyYW1ldGVyIHRvIHNvbWV0aGluZyBlbHNlLCBidXQgZm9yCisrICAgICAgICAj IG5vdywgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIEkndmUgcmV0YWluZWQgdGhpcyBuYW1l LgorKyAgICAgICAgaWYgZ2RiLnBhcmFtZXRlcigiYnVpbGQtaWQtdmVyYm9zZSIpID4gMDoKKysg ICAgICAgICAgICBmaW5kX3N1Z2dlc3Rpb25zKG9iamZpbGUuZmlsZW5hbWUpCisrICAgICAgICAg ICAgcmV0dXJuIEZhbHNlCisrICAgICAgICByZXR1cm4gTm9uZQorKworKworKyMgQ2FsbGVkIGJl Zm9yZSBHREIgZGlzcGxheXMgaXRzIHByb21wdC4gIElmIHRoZSBnbG9iYWwgX19TVUdHRVNUX1JQ TVMKKysjIGRpY3Rpb25hcnkgaXMgbm90IGVtcHR5LCB0aGVuIHRoaXMgaG9vayBwcmludHMgdHJl YXRzIHRoZSBrZXlzIG9mCisrIyB0aGlzIGRpY3Rpb25hcnkgYXMgc3RyaW5ncyB3aGljaCBhcmUg dGhlIG5hbWVzIG9mIFJQTXMuICBUaGlzIGhvb2sKKysjIGZvcm1hdHMgZWFjaCBSUE0gbmFtZSBp bnRvIGEgc3VnZ2VzdGVkIGRlYnVnaW5mby1pbnN0YWxsIGNvbW1hbmQgYW5kCisrIyBzdWdnZXN0 cyB0aGlzIHRvIHRoZSB1c2VyLgorK2RlZiBiZWZvcmVfcHJvbXB0KCk6CisrICAgIGdsb2JhbCBf X3N1Z2dlc3RfcnBtcworKworKyAgICBpZiBsZW4oX19zdWdnZXN0X3JwbXMpID4gMDoKKysgICAg ICAgIGZvciBwIGluIF9fc3VnZ2VzdF9ycG1zLmtleXMoKToKKysgICAgICAgICAgICBwcmludCgi TWlzc2luZyBkZWJ1Z2luZm8sIHRyeTogZG5mIGRlYnVnaW5mby1pbnN0YWxsICIgKyBwKQorKyAg ICAgICAgX19zdWdnZXN0X3JwbXMgPSB7fQorKworKworKyMgQ2FsbGVkIHdoZW4gdGhlIGV4ZWN1 dGFibGUgd2l0aGluIGEgcHJvZ3JtIHNwYWNlIGlzIGNoYW5nZWQuICBDbGVhcgorKyMgdGhlIGxp c3RzIG9mIFJQTSBzdWdnZXN0aW9ucy4gIFdlIG9ubHkgY2xlYXIgdGhlIHByZXZpb3VzIHN1Z2dl c3Rpb24KKysjIGxpc3Qgd2hlbiB0aGUgZXhlY3V0YWJsZSByZWFsbHkgY2hhbmdlcy4gIElmIHRo ZSB1c2VyIHNpbXBseQorKyMgcmVjb21waWxlcyB0aGUgZXhlY3V0YWJsZSwgdGhlbiB3ZSBkb24n dCBib3RoIGNsZWFyaW5nIHRoaXMgbGlzdC4KKytkZWYgZXhlY3V0YWJsZV9jaGFuZ2VkX2hhbmRs ZXIoZXZlbnQpOgorKyAgICBnbG9iYWwgX19taXNzaW5nX3JwbXMKKysgICAgZ2xvYmFsIF9fc3Vn Z2VzdF9ycG1zCisrCisrICAgIGlmIG5vdCBldmVudC5yZWxvYWQ6CisrICAgICAgICBfX21pc3Np bmdfcnBtcyA9IHt9CisrICAgICAgICBfX3N1Z2dlc3RfcnBtcyA9IHt9CisrCisrCisrIyBBdHRh Y2ggdG8gdGhlIHJlcXVpcmVkIEdEQiBldmVudHMuCisrZ2RiLmV2ZW50cy5leGVjdXRhYmxlX2No YW5nZWQuY29ubmVjdChleGVjdXRhYmxlX2NoYW5nZWRfaGFuZGxlcikKKytnZGIuZXZlbnRzLmJl Zm9yZV9wcm9tcHQuY29ubmVjdChiZWZvcmVfcHJvbXB0KQorKworKyMgUmVnaXN0ZXIgdGhlIG1p c3NpbmcgZGVidWcgaGFuZGxlciB3aXRoIEdEQi4KKytnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rl cl9oYW5kbGVyKE5vbmUsIFJQTVN1Z2dlc3Rpb25IYW5kbGVyKCkpCitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcucHkgYi9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktbWlzc2luZy1kZWJ1Zy5weQorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LW1pc3NpbmctZGVidWcucHkKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1taXNzaW5nLWRlYnVnLnB5CitAQCAtMTgsNiArMTgsMTMgQEAgZnJvbSBnZGIubWlzc2lu Z19kZWJ1ZyBpbXBvcnQgTWlzc2luZ0RlYnVnSGFuZGxlcgorIGZyb20gZW51bSBpbXBvcnQgRW51 bQorIGltcG9ydCBvcworIAorKyMgVGhpcyBpcyBhIFJIRUwvRmVkb3JhIHdvcmsgYXJvdW5kOiBU aGVyZSdzIGFscmVhZHkgYQorKyMgbWlzc2luZy1kZWJ1Zy1pbmZvIGhhbmRsZXIgcmVnaXN0ZXJl ZCBmb3IgdGhlc2UgdmVyc2lvbnMgb2YgR0RCLgorKyMgRGlzY2FyZCB0aGUgaGFuZGxlciBub3cg c28gdGhhdCB0aGUgdGVzdHMgd2lsbCBwYXNzICh0aGUgdGVzdHMKKysjIGFzc3VtZSBubyBoYW5k bGVyIGlzIGN1cnJlbnRseSByZWdpc3RlcmVkKS4KKytnZGIubWlzc2luZ19kZWJ1Z19oYW5kbGVy cyA9IFtdCisrCisrCisgIyBBIGdsb2JhbCBsb2cgdGhhdCBpcyBmaWxsZWQgaW4gYnkgaW5zdGFu Y2VzIG9mIHRoZSBMT0dfSEFORExFUiBjbGFzcworICMgd2hlbiB0aGV5IGFyZSBjYWxsZWQuCisg aGFuZGxlcl9jYWxsX2xvZyA9IFtdCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci1uZXh0LW92ZXIt dGhyb3ctY3h4LWV4ZWMucGF0Y2ggYi9nZGItYXJjaGVyLW5leHQtb3Zlci10aHJvdy1jeHgtZXhl Yy5wYXRjaAppbmRleCBiYTcxY2QzLi5jNWQ1OGIzIDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLW5l eHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaAorKysgYi9nZGItYXJjaGVyLW5leHQtb3Zlci10 aHJvdy1jeHgtZXhlYy5wYXRjaApAQCAtNTksNyArNTksNyBAQCBuZXcgZmlsZSBtb2RlIDEwMDY0 NAogKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotK2lmIHsgW3NraXBfY3BsdXNfdGVz dHNdIH0geyBjb250aW51ZSB9CisrcmVxdWlyZSBhbGxvd19jcGx1c190ZXN0cwogKwogK3NldCB0 ZXN0ZmlsZSBjeHhleGVjCiAraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5l eHAgJHt0ZXN0ZmlsZX0gJHt0ZXN0ZmlsZX0uY2Mge2MrKyBkZWJ1Z31dIH0gewoKZGlmZiAtLWdp dCBhL2dkYi1iejYzNDEwOC1zb2xpYl9hZGRyZXNzLnBhdGNoIGIvZ2RiLWJ6NjM0MTA4LXNvbGli X2FkZHJlc3MucGF0Y2gKaW5kZXggNThiNDczZi4uMTMxZTFjMSAxMDA2NDQKLS0tIGEvZ2RiLWJ6 NjM0MTA4LXNvbGliX2FkZHJlc3MucGF0Y2gKKysrIGIvZ2RiLWJ6NjM0MTA4LXNvbGliX2FkZHJl c3MucGF0Y2gKQEAgLTE0LDcgKzE0LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9yaDYzNDEwOC1zb2xpYl9hZGRyZXNzLmV4cCBiL2dkYi90ZXN0c3VpdGUKIG5ldyBm aWxlIG1vZGUgMTAwNjQ0CiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcmg2MzQxMDgtc29saWJfYWRkcmVzcy5leHAKLUBAIC0wLDAgKzEsMjQgQEAKK0BAIC0w LDAgKzEsMjUgQEAKICsjIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0zMiwxMCArMzIsMTEg QEAgbmV3IGZpbGUgbW9kZSAxMDA2NDQKICsKICsjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNv bS9zaG93X2J1Zy5jZ2k/aWQ9NjM0MTA4CiArCisrbG9hZF9saWIgZ2RiLXB5dGhvbi5leHAKKysK KytyZXF1aXJlIGFsbG93X3B5dGhvbl90ZXN0cworKwogK2dkYl9leGl0CiArZ2RiX3N0YXJ0CiAr Ci0rIyBTa2lwIGFsbCB0ZXN0cyBpZiBQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBlbmFibGVkLgot K2lmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQotKwogK2dkYl90ZXN0ICJw eXRob24gcHJpbnQgKGdkYi5zb2xpYl9uYW1lKC0xKSkiICJOb25lIiAiZ2RiLnNvbGliX25hbWUg ZXhpc3RzIgoKZGlmZiAtLWdpdCBhL2dkYi1kby1ub3QtaW1wb3J0LXB5LWN1cnNlcy1hc2NpaS1t b2R1bGUucGF0Y2ggYi9nZGItZG8tbm90LWltcG9ydC1weS1jdXJzZXMtYXNjaWktbW9kdWxlLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZTU0NGIKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItZG8tbm90LWltcG9ydC1weS1jdXJzZXMtYXNjaWktbW9kdWxlLnBhdGNo CkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+CitEYXRlOiBXZWQs IDIyIE5vdiAyMDIzIDE5OjAyOjM0ICswMTAwCitTdWJqZWN0OiBnZGItZG8tbm90LWltcG9ydC1w eS1jdXJzZXMtYXNjaWktbW9kdWxlLnBhdGNoCisKKzs7IEJhY2twb3J0IHVwc3RyZWFtIGNvbW1p dCBlOGMzZGFmYTVmNS4KKworW2dkYi9weXRob25dIERvbid0IGltcG9ydCBjdXJzZXMuYXNjaWkg bW9kdWxlIHVubGVzcyBuZWNlc3NhcnkKKworSSByYW4gaW50byBhIGZhaWx1cmUgaW4gdGVzdC1j YXNlIGdkYi5weXRob24vcHktbWlzc2luZy1kZWJ1Zy5leHAgd2l0aCBweXRob24KKzMuNiwgd2hp Y2ggd2FzIGZpeGVkIGJ5IGNvbW1pdCA3ZGI3OTViYzY3YSAoImdkYi9weXRob246IHJlbW92ZSB1 c2Ugb2YKK3N0ci5pc2FzY2lpKCkiKS4KKworSG93ZXZlciwgSSBzdWJzZXF1ZW50bHkgcmFuIGlu dG8gYSBmYWlsdXJlIHdpdGggcHl0aG9uIDMuMTE6CisuLi4KKyhnZGIpIFBBU1M6ICRleHA6IGlu aXRpYWwgY2hlY2tzOiBkZWJ1ZyBpbmZvIG5vIGxvbmdlciBmb3VuZAorc291cmNlIHB5LW1pc3Np bmctZGVidWcucHleTQorVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOl5NCisgIEZp bGUgInB5LW1pc3NpbmctZGVidWcucHkiLCBsaW5lIDE3LCBpbiA8bW9kdWxlPl5NCisgICAgZnJv bSBnZGIubWlzc2luZ19kZWJ1ZyBpbXBvcnQgTWlzc2luZ0RlYnVnSGFuZGxlcl5NCisgIEZpbGUg Im1pc3NpbmdfZGVidWcucHkiLCBsaW5lIDIxLCBpbiA8bW9kdWxlPl5NCisgICAgZnJvbSBjdXJz ZXMuYXNjaWkgaW1wb3J0IGlzYXNjaWksIGlzYWxudW1eTQorICBGaWxlICIvdXNyL2xpYjY0L3B5 dGhvbjMuMTEvX2ltcG9ydF9mYWlsZWQvY3Vyc2VzLnB5IiwgbGluZSAxNiwgaW4gPG1vZHVsZT5e TQorICAgIHJhaXNlIEltcG9ydEVycm9yKGYiIiJNb2R1bGUgJ3tmYWlsZWRfbmFtZX0nIGlzIG5v dCBpbnN0YWxsZWQuXk0KK0ltcG9ydEVycm9yOiBNb2R1bGUgJ2N1cnNlcycgaXMgbm90IGluc3Rh bGxlZC5eTQorVXNlOl5NCisgIHN1ZG8genlwcGVyIGluc3RhbGwgcHl0aG9uMzExLWN1cnNlc15N Cit0byBpbnN0YWxsIGl0Ll5NCisoZ2RiKSBGQUlMOiAkZXhwOiBzb3VyY2UgcHl0aG9uIHNjcmlw dAorLi4uCisKK0FwcGFyZW50bHkgSSBoYXZlIHRoZSBjdXJzZXMgbW9kdWxlIGluc3RhbGxlZCBm b3IgMy42LCBidXQgbm90IDMuMTEuCisKK0kgY291bGQganVzdCBpbnN0YWxsIGl0LCBidXQgdGhl IHRlc3QtY2FzZSB3b3JrZWQgZmluZSB3aXRoIDMuMTEgYmVmb3JlIGNvbW1pdAorN2RiNzk1YmM2 N2EuCisKK0ZpeCB0aGlzIGJ5IG9ubHkgdXNpbmcgdGhlIGN1cnNlcyBtb2R1bGUgd2hlbiBuZWNl c3NhcnksIGZvciBweXRob24gPD0gMy43LgorCitUZXN0ZWQgb24geDg2XzY0LWxpbnV4LCB3aXRo IGJvdGggcHl0aG9uIDMuNiBhbmQgMy4xMS4KKworZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGli L2dkYi9taXNzaW5nX2RlYnVnLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL21pc3NpbmdfZGVidWcu cHkKKy0tLSBhL2dkYi9weXRob24vbGliL2dkYi9taXNzaW5nX2RlYnVnLnB5CisrKysgYi9nZGIv cHl0aG9uL2xpYi9nZGIvbWlzc2luZ19kZWJ1Zy5weQorQEAgLTE4LDggKzE4LDE4IEBAIE1pc3Np bmdEZWJ1Z0hhbmRsZXIgYmFzZSBjbGFzcywgYW5kIHJlZ2lzdGVyX2hhbmRsZXIgZnVuY3Rpb24u CisgIiIiCisgCisgaW1wb3J0IGdkYgorLWZyb20gY3Vyc2VzLmFzY2lpIGltcG9ydCBpc2FzY2lp LCBpc2FsbnVtCistCisraW1wb3J0IHN5cworK2lmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDcp OgorKyAgICAjIEZ1bmN0aW9ucyBzdHIuaXNhc2NpaSgpIGFuZCBzdHIuaXNhbG51bSBhcmUgYXZh aWxhYmxlIHN0YXJ0aW5nIFB5dGhvbgorKyAgICAjIDMuNy4KKysgICAgZGVmIGlzYXNjaWkoY2gp OgorKyAgICAgICAgcmV0dXJuIGNoLmlzYXNjaWkoKQorKyAgICBkZWYgaXNhbG51bShjaCk6Cisr ICAgICAgICByZXR1cm4gY2guaXNhbG51bSgpCisrZWxzZToKKysgICAgIyBGYWxsIGJhY2sgdG8g Y3Vyc2VzLmFzY2lpLmlzYXNjaWkoKSBhbmQgY3Vyc2VzLmFzY2lpLmlzYWxudW0oKSBmb3IKKysg ICAgIyBlYXJsaWVyIHZlcnNpb25zLgorKyAgICBmcm9tIGN1cnNlcy5hc2NpaSBpbXBvcnQgaXNh c2NpaSwgaXNhbG51bQorIAorIGRlZiBfdmFsaWRhdGVfbmFtZShuYW1lKToKKyAgICAgIiIiVmFs aWRhdGUgYSBtaXNzaW5nIGRlYnVnIGhhbmRsZXIgbmFtZSBzdHJpbmcuCgpkaWZmIC0tZ2l0IGEv Z2RiLWZlZG9yYS1saWJuY3Vyc2Vzdy5wYXRjaCBiL2dkYi1mZWRvcmEtbGlibmN1cnNlc3cucGF0 Y2gKaW5kZXggMWJiNjQwZC4uM2VlNGFiNiAxMDA2NDQKLS0tIGEvZ2RiLWZlZG9yYS1saWJuY3Vy c2Vzdy5wYXRjaAorKysgYi9nZGItZmVkb3JhLWxpYm5jdXJzZXN3LnBhdGNoCkBAIC0xMiwyNjkg KzEyLDcgQEAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMjcw NTM0CiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKIC0tLSBhL2dk Yi9jb25maWd1cmUKICsrKyBiL2dkYi9jb25maWd1cmUKLUBAIC03ODAsOSArNzgwLDYgQEAgRU5B QkxFX0JGRF82NF9CSVRfVFJVRQotIHN1YmRpcnMKLSBSUE1fTElCUwotIFJQTV9DRkxBR1MKLS1Q S0dfQ09ORklHX0xJQkRJUgotLVBLR19DT05GSUdfUEFUSAotLVBLR19DT05GSUcKLSBHREJfREFU QURJUgotIERFQlVHRElSCi0gTUFLRUlORk9fRVhUUkFfRkxBR1MKLUBAIC05OTAsMTIgKzk4Nywx MiBAQCBQS0dfQ09ORklHX1BBVEgKLSBQS0dfQ09ORklHX0xJQkRJUgotIE1BS0VJTkZPCi0gTUFL RUlORk9GTEFHUwotK1JQTV9DRkxBR1MKLStSUE1fTElCUwotIEFNRF9EQkdBUElfQ0ZMQUdTCi0g QU1EX0RCR0FQSV9MSUJTCi0gREVCVUdJTkZPRF9DRkxBR1MKLSBERUJVR0lORk9EX0xJQlMKLS1S UE1fQ0ZMQUdTCi0tUlBNX0xJQlMKLSBZQUNDCi0gWUZMQUdTCi0gWlNURF9DRkxBR1MKLUBAIC0x Njg0LDExICsxNjgxLDExIEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgWy0td2l0aC1hdXRvLWxvYWQtZGlyXQotICAgLS13aXRob3V0LWF1dG8tbG9hZC1z YWZlLXBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCByZXN0cmljdCBhdXRv LWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKLSsgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5 IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQotICAgLS13aXRoLWFtZC1kYmdh cGkgICAgICAgc3VwcG9ydCBmb3IgdGhlIGFtZC1kYmdhcGkgdGFyZ2V0ICh5ZXMgLyBubyAvIGF1 dG8pCi0gICAtLXdpdGgtZGVidWdpbmZvZCAgICAgICBFbmFibGUgZGVidWdpbmZvIGxvb2t1cHMg d2l0aCBkZWJ1Z2luZm9kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoYXV0by95ZXMvbm8p Ci0tICAtLXdpdGgtcnBtICAgICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3Np bmcgZGVidWdpbmZvcyAoeWVzL25vLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLiBh dXRvPWxpYnJwbS5zbykKLSAgIC0td2l0aC1saWJ1bndpbmQtaWE2NCAgIHVzZSBsaWJ1bndpbmQg ZnJhbWUgdW53aW5kaW5nIGZvciBpYTY0IHRhcmdldHMKLSAgIC0td2l0aC1jdXJzZXMgICAgICAg ICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUgdGVybWNhcAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQotQEAgLTE3NjEsNiArMTc1OCw4IEBAIFNvbWUg aW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgTUFLRUlORk8gICAgUGFyZW50 IGNvbmZpZ3VyZSBkZXRlY3RzIGlmIGl0IGlzIG9mIHN1ZmZpY2llbnQgdmVyc2lvbi4KLSAgIE1B S0VJTkZPRkxBR1MKLSAgICAgICAgICAgICAgIFBhcmFtZXRlcnMgZm9yIE1BS0VJTkZPLgotKyAg UlBNX0NGTEFHUyAgQyBjb21waWxlciBmbGFncyBmb3IgUlBNLCBvdmVycmlkaW5nIHBrZy1jb25m aWcKLSsgIFJQTV9MSUJTICAgIGxpbmtlciBmbGFncyBmb3IgUlBNLCBvdmVycmlkaW5nIHBrZy1j b25maWcKLSAgIEFNRF9EQkdBUElfQ0ZMQUdTCi0gICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZs YWdzIGZvciBBTURfREJHQVBJLCBvdmVycmlkaW5nIHBrZy1jb25maWcKLSAgIEFNRF9EQkdBUElf TElCUwotQEAgLTE3NjksOCArMTc2OCw2IEBAIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQg dmFyaWFibGVzOgotICAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgREVCVUdJTkZP RCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCi0gICBERUJVR0lORk9EX0xJQlMKLSAgICAgICAgICAg ICAgIGxpbmtlciBmbGFncyBmb3IgREVCVUdJTkZPRCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCi0t ICBSUE1fQ0ZMQUdTICBDIGNvbXBpbGVyIGZsYWdzIGZvciBSUE0sIG92ZXJyaWRpbmcgcGtnLWNv bmZpZwotLSAgUlBNX0xJQlMgICAgbGlua2VyIGZsYWdzIGZvciBSUE0sIG92ZXJyaWRpbmcgcGtn LWNvbmZpZwotICAgWUFDQyAgICAgICAgVGhlIGBZZXQgQW5vdGhlciBDb21waWxlciBDb21waWxl cicgaW1wbGVtZW50YXRpb24gdG8gdXNlLgotICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gdGhl IGZpcnN0IHByb2dyYW0gZm91bmQgb3V0IG9mOiBgYmlzb24gLXknLCBgYnlhY2MnLAotICAgICAg ICAgICAgICAgYHlhY2MnLgotQEAgLTExNDk1LDcgKzExNDkyLDcgQEAgZWxzZQotICAgbHRfZGx1 bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3Rh dHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0t I2xpbmUgMTE0ODYgImNvbmZpZ3VyZSIKLSsjbGluZSAxMTQ5NSAiY29uZmlndXJlIgotICNpbmNs dWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTYwMSw3ICsxMTU5 OCw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5l ZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVz dC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExNTkyICJjb25maWd1cmUiCi0rI2xpbmUgMTE2 MDEgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZD Tl9ICi1AQCAtMTgxMDIsOCArMTgwOTksOCBAQCAkYXNfZWNob19uICJjaGVja2luZyBzcGVjaWZp YyBsaWJycG0gdmVyc2lvbi4uLiAiID4mNjsgfQotICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGlu ZyIgPSB5ZXM7IHRoZW4gOgotICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1Ci0gJGFzX2VjaG8gIiRhc19tZTogZXJy b3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotLWFzX2ZuX2Vycm9yICJjYW5ub3QgcnVuIHRlc3Qg cHJvZ3JhbSB3aGlsZSBjcm9zcyBjb21waWxpbmcKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9y ZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH0KLSthc19mbl9lcnJvciAkPyAiY2Fubm90IHJ1biB0 ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nCi0rU2VlIFxgY29uZmlnLmxvZycgZm9y IG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLSBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotQEAg LTE4Mjc1LDEzMiArMTgyNzIsMTIgQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MSUJSUE0gMSIg Pj5jb25mZGVmcy5oCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSAgICAgTElCUz0iJHNhdmVfTElC UyIKLSAgICAgaWYgJERMT1BFTl9SRVFVSVJFOyB0aGVuCi0tICAgICAgYXNfZm5fZXJyb3IgIlNw ZWNpZmljIG5hbWUgJExJQlJQTSB3YXMgcmVxdWVzdGVkIGJ1dCBpdCBjb3VsZCBub3QgYmUgb3Bl bmVkLiIgIiRMSU5FTk8iIDUKLSsgICAgICBhc19mbl9lcnJvciAkPyAiU3BlY2lmaWMgbmFtZSAk TElCUlBNIHdhcyByZXF1ZXN0ZWQgYnV0IGl0IGNvdWxkIG5vdCBiZSBvcGVuZWQuIiAiJExJTkVO TyIgNQotICAgICBmaQotIAotLQotLQotLQotLQotLQotLQotLWlmIHRlc3QgIngkYWNfY3ZfZW52 X1BLR19DT05GSUdfc2V0IiAhPSAieHNldCI7IHRoZW4KLS0JaWYgdGVzdCAtbiAiJGFjX3Rvb2xf cHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xf cHJlZml4fXBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz LgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXBrZy1jb25maWc7IGFjX3dvcmQ9JDIKLS17 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNf d29yZCIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9 Ci0taWYgdGVzdCAiJHthY19jdl9wYXRoX1BLR19DT05GSUcrc2V0fSIgPSBzZXQ7IHRoZW4gOgot LSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLS1lbHNlCi0tICBjYXNlICRQS0dfQ09ORklH IGluCi0tICBbXFwvXSogfCA/OltcXC9dKikKLS0gIGFjX2N2X3BhdGhfUEtHX0NPTkZJRz0iJFBL R19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgot LSAgOzsKLS0gICopCi0tICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0t Zm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16 ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4 ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcGF0aF9QS0dfQ09ORklHPSIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IgotLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLS0gICAgYnJlYWsgMgot LSAgZmkKLS1kb25lCi0tICBkb25lCi0tSUZTPSRhc19zYXZlX0lGUwotLQotLSAgOzsKLS1lc2Fj Ci0tZmkKLS1QS0dfQ09ORklHPSRhY19jdl9wYXRoX1BLR19DT05GSUcKLS1pZiB0ZXN0IC1uICIk UEtHX0NPTkZJRyI7IHRoZW4KLS0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkUEtHX0NPTkZJRyIgPiY1Ci0tJGFzX2VjaG8gIiRQS0dfQ09ORklHIiA+ JjY7IH0KLS1lbHNlCi0tICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogbm8iID4mNQotLSRhc19lY2hvICJubyIgPiY2OyB9Ci0tZmkKLS0KLS0KLS1maQot LWlmIHRlc3QgLXogIiRhY19jdl9wYXRoX1BLR19DT05GSUciOyB0aGVuCi0tICBhY19wdF9QS0df Q09ORklHPSRQS0dfQ09ORklHCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInBrZy1j b25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1t eSBwa2ctY29uZmlnOyBhY193b3JkPSQyCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLSRhc19lY2hvX24gImNoZWNr aW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9hY19w dF9QS0dfQ09ORklHK3NldH0iID0gc2V0OyB0aGVuIDoKLS0gICRhc19lY2hvX24gIihjYWNoZWQp ICIgPiY2Ci0tZWxzZQotLSAgY2FzZSAkYWNfcHRfUEtHX0NPTkZJRyBpbgotLSAgW1xcL10qIHwg PzpbXFwvXSopCi0tICBhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUc9IiRhY19wdF9QS0dfQ09O RklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLS0gIDs7 Ci0tICAqKQotLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotLWZvciBh c19kaXIgaW4gJFBBVEgKLS1kbwotLSAgSUZTPSRhc19zYXZlX0lGUwotLSAgdGVzdCAteiAiJGFz X2RpciIgJiYgYXNfZGlyPS4KLS0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRh YmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9 OyB0aGVuCi0tICAgIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0iJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCIKLS0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIK LS0gIGZpCi0tZG9uZQotLSAgZG9uZQotLUlGUz0kYXNfc2F2ZV9JRlMKLS0KLS0gIDs7Ci0tZXNh YwotLWZpCi0tYWNfcHRfUEtHX0NPTkZJRz0kYWNfY3ZfcGF0aF9hY19wdF9QS0dfQ09ORklHCi0t aWYgdGVzdCAtbiAiJGFjX3B0X1BLR19DT05GSUciOyB0aGVuCi0tICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X1BLR19DT05GSUciID4mNQot LSRhc19lY2hvICIkYWNfcHRfUEtHX0NPTkZJRyIgPiY2OyB9Ci0tZWxzZQotLSAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLS0kYXNfZWNo byAibm8iID4mNjsgfQotLWZpCi0tCi0tICBpZiB0ZXN0ICJ4JGFjX3B0X1BLR19DT05GSUciID0g eDsgdGhlbgotLSAgICBQS0dfQ09ORklHPSIiCi0tICBlbHNlCi0tICAgIGNhc2UgJGNyb3NzX2Nv bXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLS15ZXM6KQotLXsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZp eGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLS0kYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1 c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0t YWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0tZXNhYwotLSAgICBQS0dfQ09ORklHPSRhY19wdF9QS0df Q09ORklHCi0tICBmaQotLWVsc2UKLS0gIFBLR19DT05GSUc9IiRhY19jdl9wYXRoX1BLR19DT05G SUciCi0tZmkKLS0KLS1maQotLWlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotLQlfcGtn X21pbl92ZXJzaW9uPTAuOS4wCi0tCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgcGtnLWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uICRfcGtnX21pbl92 ZXJzaW9uIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBwa2ctY29uZmlnIGlzIGF0IGxlYXN0 IHZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb24uLi4gIiA+JjY7IH0KLS0JaWYgJFBLR19DT05GSUcg LS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9uOyB0aGVuCi0tCQl7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUK LS0kYXNfZWNobyAieWVzIiA+JjY7IH0KLS0JZWxzZQotLQkJeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLS0kYXNfZWNobyAibm8iID4mNjsg fQotLQkJUEtHX0NPTkZJRz0iIgotLQlmaQotLWZpCi0tCi0gcGtnX2ZhaWxlZD1ubwotLXsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFJQTSIgPiY1 Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIFJQTS4uLiAiID4mNjsgfQotK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHJwbSIgPiY1Ci0rJGFz X2VjaG9fbiAiY2hlY2tpbmcgZm9yIHJwbS4uLiAiID4mNjsgfQotIAotIGlmIHRlc3QgLW4gIiRS UE1fQ0ZMQUdTIjsgdGhlbgotICAgICBwa2dfY3ZfUlBNX0NGTEFHUz0iJFJQTV9DRkxBR1MiCi1A QCAtMTg0MzcsNiArMTgzMTQsMzAgQEAgZmkKLSAgICAgcGtnX2ZhaWxlZD11bnRyaWVkCi0gZmkK LSAKLStpZiB0ZXN0ICRwa2dfZmFpbGVkID0gbm87IHRoZW4KLSsgIHBrZ19zYXZlX0xERkxBR1M9 IiRMREZMQUdTIgotKyAgTERGTEFHUz0iJExERkxBR1MgJHBrZ19jdl9SUE1fTElCUyIKLSsgIGNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRl ZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsgIHJldHVybiAwOwot K30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0rCi0r ZWxzZQotKyAgcGtnX2ZhaWxlZD15ZXMKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19vYmpleHQgXAotKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFj X2V4dAotKyAgTERGTEFHUz0kcGtnX3NhdmVfTERGTEFHUwotK2ZpCi0rCi0gCi0gCi0gaWYgdGVz dCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgotQEAgLTE4NTMxLDcgKzE4NDMyLDcgQEAgJGFzX2Vj aG8gIiNkZWZpbmUgSEFWRV9MSUJSUE0gMSIgPj5jb25mZGVmcy5oCi0gICAgICAgTElCUz0iJExJ QlMgJFJQTV9MSUJTIgotICAgICBlbHNlCi0gICAgICAgaWYgJFJQTV9SRVFVSVJFOyB0aGVuCi0t CWFzX2ZuX2Vycm9yICIkUlBNX1BLR19FUlJPUlMiICIkTElORU5PIiA1Ci0rCWFzX2ZuX2Vycm9y ICQ/ICIkUlBNX1BLR19FUlJPUlMiICIkTElORU5PIiA1Ci0gICAgICAgZWxzZQotIAl7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRSUE1fUEtHX0VSUk9S UyIgPiY1Ci0gJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJFJQTV9QS0dfRVJST1JTIiA+JjI7 fQotQEAgLTIxMTY0LDYgKzIxMDY1LDcgQEAgaWYgdGVzdCB4IiRwcmVmZXJfY3Vyc2VzIiA9IHh5 ZXM7IHRoZW4KK0BAIC0yMDY2Myw2ICsyMDY2Myw3IEBAIGlmIHRlc3QgeCIkcHJlZmVyX2N1cnNl cyIgPSB4eWVzOyB0aGVuCiAgICAjIHNlYXJjaCAvdXNyL2xvY2FsL2luY2x1ZGUsIGlmIG5jdXJz ZXMgaXMgaW5zdGFsbGVkIGluIC91c3IvbG9jYWwuICBBCiAgICAjIGRlZmF1bHQgaW5zdGFsbGF0 aW9uIG9mIG5jdXJzZXMgb24gYWxwaGEqLWRlYy1vc2YqIHdpbGwgbGVhZCB0byBzdWNoCiAgICAj IGEgc2l0dWF0aW9uLgpAQCAtMjgyLDcgKzIwLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1 cmUgYi9nZGIvY29uZmlndXJlCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgd2FkZHN0ciIgPiY1CiAgJGFz X2VjaG9fbiAiY2hlY2tpbmcgZm9yIGxpYnJhcnkgY29udGFpbmluZyB3YWRkc3RyLi4uICIgPiY2 OyB9CiAgaWYgJHthY19jdl9zZWFyY2hfd2FkZHN0cis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtMjEx ODgsNyArMjEwOTAsNyBAQCByZXR1cm4gd2FkZHN0ciAoKTsKK0BAIC0yMDY4Nyw3ICsyMDY4OCw3 IEBAIHJldHVybiB3YWRkc3RyICgpOwogICAgcmV0dXJuIDA7CiAgfQogIF9BQ0VPRgpAQCAtMjkx LDcgKzI5LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCiAg ICBpZiB0ZXN0IC16ICIkYWNfbGliIjsgdGhlbgogICAgICBhY19yZXM9Im5vbmUgcmVxdWlyZWQi CiAgICBlbHNlCi1AQCAtMjEyNjAsNiArMjExNjIsNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAt MjA3NTksNiArMjA3NjAsNyBAQCBjYXNlICRob3N0X29zIGluCiAgZXNhYwogIAogICMgVGhlc2Ug YXJlIHRoZSBsaWJyYXJpZXMgY2hlY2tlZCBieSBSZWFkbGluZS4KQEAgLTI5OSw3ICszNyw3IEBA IGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxpYnJhcnkgY29udGFp bmluZyB0Z2V0ZW50IiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbGlicmFyeSBjb250 YWluaW5nIHRnZXRlbnQuLi4gIiA+JjY7IH0KICBpZiAke2FjX2N2X3NlYXJjaF90Z2V0ZW50Kzp9 IGZhbHNlOyB0aGVuIDoKLUBAIC0yMTI4NCw3ICsyMTE4Nyw3IEBAIHJldHVybiB0Z2V0ZW50ICgp OworQEAgLTIwNzgzLDcgKzIwNzg1LDcgQEAgcmV0dXJuIHRnZXRlbnQgKCk7CiAgICByZXR1cm4g MDsKICB9CiAgX0FDRU9GCkBAIC0zMTEsNyArNDksNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZp Z3VyZSBiL2dkYi9jb25maWd1cmUKIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLmFjIGIvZ2Ri L2NvbmZpZ3VyZS5hYwogLS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYwogKysrIGIvZ2RiL2NvbmZpZ3Vy ZS5hYwotQEAgLTc0OSw3ICs3NDksOCBAQCBpZiB0ZXN0IHgiJHByZWZlcl9jdXJzZXMiID0geHll czsgdGhlbgorQEAgLTU1NSw3ICs1NTUsOCBAQCBpZiB0ZXN0IHgiJHByZWZlcl9jdXJzZXMiID0g eHllczsgdGhlbgogICAgIyBzZWFyY2ggL3Vzci9sb2NhbC9pbmNsdWRlLCBpZiBuY3Vyc2VzIGlz IGluc3RhbGxlZCBpbiAvdXNyL2xvY2FsLiAgQQogICAgIyBkZWZhdWx0IGluc3RhbGxhdGlvbiBv ZiBuY3Vyc2VzIG9uIGFscGhhKi1kZWMtb3NmKiB3aWxsIGxlYWQgdG8gc3VjaAogICAgIyBhIHNp dHVhdGlvbi4KQEAgLTMyMSw3ICs1OSw3IEBAIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLmFj IGIvZ2RiL2NvbmZpZ3VyZS5hYwogICAgICAgICAgICAgICAgICAgW2N1cnNlc19mb3VuZD15ZXMK ICAgICAgICAgICAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfTElCQ1VSU0VTXSwgWzFdLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgY3Vyc2VzIGlzIGVuYWJs ZWQuXSkKLUBAIC03ODksNyArNzkwLDggQEAgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTU5NSw3ICs1 OTYsOCBAQCBjYXNlICRob3N0X29zIGluCiAgZXNhYwogIAogICMgVGhlc2UgYXJlIHRoZSBsaWJy YXJpZXMgY2hlY2tlZCBieSBSZWFkbGluZS4KCmRpZmYgLS1naXQgYS9nZGItZ2xpYmMtc3Ryc3Ry LXdvcmthcm91bmQucGF0Y2ggYi9nZGItZ2xpYmMtc3Ryc3RyLXdvcmthcm91bmQucGF0Y2gKaW5k ZXggZGE5YzVkZS4uYWQwYmQwZiAxMDA2NDQKLS0tIGEvZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJv dW5kLnBhdGNoCisrKyBiL2dkYi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5wYXRjaApAQCAtMTAs NyArMTAsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMt c3Ryc3RyLXdvcmthcm91bmQuZXhwIGIvZ2RiL3Rlc3RzdQogbmV3IGZpbGUgbW9kZSAxMDA2NDQK IC0tLSAvZGV2L251bGwKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLXN0 cnN0ci13b3JrYXJvdW5kLmV4cAotQEAgLTAsMCArMSwxMTkgQEAKK0BAIC0wLDAgKzEsMTE3IEBA CiArIyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAr CiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQpAQCAtMzAsOSArMzAsNyBAQCBuZXcgZmlsZSBtb2RlIDEwMDY0NAog KyMgaW52YWxpZCBJRlVOQyBEV19BVF9saW5rYWdlX25hbWU6IG1lbW1vdmUgc3Ryc3RyIHRpbWUK ICsjIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTQxNjYK ICsKLStpZiB7W3NraXBfc2hsaWJfdGVzdHNdfSB7Ci0rICAgIHJldHVybiAwCi0rfQorK3JlcXVp cmUgYWxsb3dfc2hsaWJfdGVzdHMKICsKICtzZXQgdGVzdGZpbGUgImdudS1pZnVuYy1zdHJzdHIt d29ya2Fyb3VuZCIKICtzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQoKZGlmZiAtLWdpdCBhL2dk Yi1oYW5kbGUtbm8tcHl0aG9uLWdkYi1tb2R1bGUucGF0Y2ggYi9nZGItaGFuZGxlLW5vLXB5dGhv bi1nZGItbW9kdWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIx OTY2YTUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItaGFuZGxlLW5vLXB5dGhvbi1nZGItbW9kdWxl LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBUb20gVHJvbWV5IDx0cm9tZXlAYWRhY29yZS5jb20+CitEYXRl OiBXZWQsIDE1IE5vdiAyMDIzIDA2OjQ4OjU1IC0wNzAwCitTdWJqZWN0OiBnZGItaGFuZGxlLW5v LXB5dGhvbi1nZGItbW9kdWxlLnBhdGNoCisKKzs7IEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCA3 ZDIxNjAwYjMxZmUuCisKK0NoZWNrIGdkYl9weXRob25fbW9kdWxlIGluIGdkYnB5X2hhbmRsZV9t aXNzaW5nX2RlYnVnaW5mbworCitJZiB5b3UgcnVuIGdkYiBpbiB0aGUgYnVpbGQgdHJlZSB3aXRo b3V0IC0tZGF0YS1kaXJlY3RvcnksIG9uIGEKK3Byb2dyYW0gdGhhdCBkb2VzIG5vdCBoYXZlIGRl YnVnIGluZm8sIGl0IHdpbGwgY3Jhc2gsIGJlY2F1c2UKK2dkYnB5X2hhbmRsZV9taXNzaW5nX2Rl YnVnaW5mbyB1bmNvbmRpdGlvbmFsbHkgdXNlcyBnZGJfcHl0aG9uX21vZHVsZS4KKworT3RoZXIg Y29kZSBpbiBnZGIgdXNpbmcgZ2RiX3B5dGhvbl9tb2R1bGUgY2hlY2tzIGl0IGZpcnN0IGFuZCBp dAorc2VlbWVzIGhhcm1sZXNzIHRvIGRvIHRoZSBzYW1lIHRoaW5nIGhlcmUuICAoZ2RiX3B5dGhv bl9pbml0aWFsaXplZAorZG9lcyBub3QgY292ZXIgdGhpcyBjYXNlIHNvIHRoYXQgcHl0aG9uIGNh biBiZSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQKK2FuZCBzdGlsbCBzb21ld2hhdCB3b3JrLikKKwor ZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCist LS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCitAQCAt MTY3Niw3ICsxNjc2LDcgQEAgZ2RicHlfaGFuZGxlX21pc3NpbmdfZGVidWdpbmZvIChjb25zdCBz dHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX2RlZm4gKmV4dGxhbmcsCisgCQkJCXN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKQorIHsKKyAgIC8qIEVhcmx5IGV4aXQgaWYgUHl0aG9uIGlzIG5vdCBpbml0 aWFsaXNlZC4gICovCistICBpZiAoIWdkYl9weXRob25faW5pdGlhbGl6ZWQpCisrICBpZiAoIWdk Yl9weXRob25faW5pdGlhbGl6ZWQgfHwgZ2RiX3B5dGhvbl9tb2R1bGUgPT0gbnVsbHB0cikKKyAg ICAgcmV0dXJuIHt9OworIAorICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBvYmpmaWxlLT5h cmNoICgpOwoKZGlmZiAtLWdpdCBhL2dkYi1tZXJnZS1kZWJ1Zy1zeW1ib2wtbG9va3VwLnBhdGNo IGIvZ2RiLW1lcmdlLWRlYnVnLXN5bWJvbC1sb29rdXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZTliNTA1OAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1tZXJnZS1k ZWJ1Zy1zeW1ib2wtbG9va3VwLnBhdGNoCkBAIC0wLDAgKzEsMjY1IEBACitGcm9tIEZFRE9SQV9Q QVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV3IEJ1cmdlc3MgPGFi dXJnZXNzQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDEzIE9jdCAyMDIzIDA5OjUwOjMzICswMTAw CitTdWJqZWN0OiBnZGItbWVyZ2UtZGVidWctc3ltYm9sLWxvb2t1cC5wYXRjaAorCis7OyBCYWNr cG9ydCB1cHN0cmVhbSBjb21taXQgMjc4MDdkYTU4NDkuCisKK2dkYjogbWVyZ2UgZGVidWcgc3lt Ym9sIGZpbGUgbG9va3VwIGNvZGUgZnJvbSBjb2ZmcmVhZCAmIGVsZnJlYWQgcGF0aHMKKworVGhp cyBjb21taXQgbWVyZ2VzIHRoZSBjb2RlIHRoYXQgbG9va3MgZm9yIGFuZCBsb2FkcyB0aGUgc2Vw YXJhdGUKK2RlYnVnIHN5bWJvbCBmaWxlcyBmcm9tIGNvZmZyZWFkLmMgYW5kIGVsZnJlYWQuYy4g IFRoZSBmYWN0b3JlZCBvdXQKK2NvZGUgaXMgbW92ZWQgaW50byBhIG5ldyBvYmpmaWxlOjpmaW5k X2FuZF9hZGRfc2VwYXJhdGVfc3ltYm9sX2ZpbGUoKQorbWV0aG9kLgorCitGb3IgdGhlIGVsZnJl YWQuYyBwYXRoIHRoZXJlIHNob3VsZCBiZSBubyB1c2VyIHZpc2libGUgY2hhbmdlcyBhZnRlcgor dGhpcyBjb21taXQuCisKK0ZvciB0aGUgY29mZnJlYWQuYyBwYXRoIEdEQiB3aWxsIG5vdyBhdHRl bXB0IHRvIHBlcmZvcm0gYSBkZWJ1Z2luZm9kCitsb29rdXAgZm9yIHRoZSBtaXNzaW5nIGRlYnVn IGluZm9ybWF0aW9uLCBhc3N1bWluZyB0aGF0IEdEQiBjYW4gZmluZCBhCitidWlsZC1pZCBpbiB0 aGUgQ09GRiBmaWxlLgorCitJIGRvbid0IGtub3cgaWYgQ09GRiBmaWxlcyBjYW4gaW5jbHVkZSBh IGJ1aWxkLWlkLCBidXQgSSB0aGUgZXhpc3RpbmcKK2NvZmZyZWFkLmMgY29kZSBhbHJlYWR5IGlu Y2x1ZGVzIGEgY2FsbCB0bworZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkLWlkLCBz byBJIGtub3cgdGhhdCBpdCBpcyBhdCBsZWFzdCBPSworZm9yIEdEQiB0byBhc2sgYSBDT0ZGIGZp bGUgZm9yIGEgYnVpbGQtaWQuICBJZiB0aGUgQ09GRiBmaWxlIGRvZXNuJ3QKK2luY2x1ZGUgYSBi dWlsZC1pZCB0aGVuIHRoZSBkZWJ1Z2luZm9kIGxvb2t1cCBjb2RlIHdpbGwgbm90IHRyaWdnZXIK K2FuZCB0aGUgbmV3IGNvZGUgaXMgaGFybWxlc3MuCisKK0lmIHRoZSBDT0ZGIGZpbGUgZG9lcyBp bmNsdWRlIGEgYnVpbGQtaWQsIHRoZW4gd2UncmUgZ29pbmcgdG8gZW5kIHVwCithc2tpbmcgZGVi dWdpbmZvZCBmb3IgdGhlIGRlYnVnIGZpbGUuICBBcyBidWlsZC1pZHMgc2hvdWxkIGJlIHVuaXF1 ZSwKK3RoaXMgc2hvdWxkIGJlIGhhcm1sZXNzLCBldmVuIGlmIGRlYnVnaW5mb2QgZG9lc24ndCBj b250YWluIGFueQorc3VpdGFibGUgZGVidWcgZGF0YSwgaXQganVzdCBjb3N0cyB1cyBvbmUgZGVi dWdpbmZvZCBsb29rdXAsIHNvIEknbQorbm90IHRvbyB3b3JyaWVkIGFib3V0IHRoaXMgZm9yIG5v dy4KKworQXMgd2l0aCB0aGUgcHJldmlvdXMgY29tbWl0LCBJJ3ZlIGRvbmUgc29tZSBtaW5pbWFs IHRlc3RpbmcgdXNpbmcgdGhlCittaW5ndyB0b29sY2hhaW4gb24gYSBMaW51eCBtYWNoaW5lLCBH REIgc2VlbXMgdG8gc3RpbGwgYWNjZXNzIHRoZQorc3BsaXQgZGVidWcgaW5mb3JtYXRpb24ganVz dCBmaW5lLgorCitBcHByb3ZlZC1CeTogVG9tIFRyb21leSA8dG9tQHRyb21leS5jb20+CisKK2Rp ZmYgLS1naXQgYS9nZGIvY29mZnJlYWQuYyBiL2dkYi9jb2ZmcmVhZC5jCistLS0gYS9nZGIvY29m ZnJlYWQuYworKysrIGIvZ2RiL2NvZmZyZWFkLmMKK0BAIC00MCw4ICs0MCw2IEBACisgCisgI2lu Y2x1ZGUgImNvZmYtcGUtcmVhZC5oIgorIAorLSNpbmNsdWRlICJidWlsZC1pZC5oIgorLQorIC8q IFRoZSBvYmpmaWxlIHdlIGFyZSBjdXJyZW50bHkgcmVhZGluZy4gICovCisgCisgc3RhdGljIHN0 cnVjdCBvYmpmaWxlICpjb2ZmcmVhZF9vYmpmaWxlOworQEAgLTcyOSwyNiArNzI3LDggQEAgY29m Zl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzeW1maWxlX2FkZF9mbGFn cyBzeW1maWxlX2ZsYWdzKQorIAkgICAmJiBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxl ID09IE5VTEwKKyAJICAgJiYgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGlu ayA9PSBOVUxMKQorICAgICB7CistICAgICAgZGVmZXJyZWRfd2FybmluZ3Mgd2FybmluZ3M7Cist ICAgICAgc3RkOjpzdHJpbmcgZGVidWdmaWxlCistCT0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxl X2J5X2J1aWxkaWQgKG9iamZpbGUsICZ3YXJuaW5ncyk7CistCistICAgICAgaWYgKGRlYnVnZmls ZS5lbXB0eSAoKSkKKy0JZGVidWdmaWxlCistCSAgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVf YnlfZGVidWdsaW5rIChvYmpmaWxlLCAmd2FybmluZ3MpOworLQorLSAgICAgIGlmICghZGVidWdm aWxlLmVtcHR5ICgpKQorLQl7CistCSAgZ2RiX2JmZF9yZWZfcHRyIGRlYnVnX2JmZCAoc3ltZmls ZV9iZmRfb3BlbiAoZGVidWdmaWxlLmNfc3RyICgpKSk7CistCistCSAgc3ltYm9sX2ZpbGVfYWRk X3NlcGFyYXRlIChkZWJ1Z19iZmQsIGRlYnVnZmlsZS5jX3N0ciAoKSwKKy0JCQkJICAgIHN5bWZp bGVfZmxhZ3MsIG9iamZpbGUpOworLQl9CistICAgICAgLyogSWYgYWxsIHRoZSBtZXRob2RzIHRv IGNvbGxlY3QgdGhlIGRlYnVnaW5mbyBmYWlsZWQsIHByaW50IGFueQorLQkgd2FybmluZ3MgdGhh dCB3ZXJlIGNvbGxlY3RlZCwgdGhpcyBpcyBhIG5vLW9wIGlmIHRoZXJlIGFyZSBubworLQkgd2Fy bmluZ3MuICAqLworLSAgICAgIGlmIChkZWJ1Z2ZpbGUuZW1wdHkgKCkpCistCXdhcm5pbmdzLmVt aXQgKCk7CisrICAgICAgaWYgKG9iamZpbGUtPmZpbmRfYW5kX2FkZF9zZXBhcmF0ZV9zeW1ib2xf ZmlsZSAoc3ltZmlsZV9mbGFncykpCisrCWdkYl9hc3NlcnQgKG9iamZpbGUtPnNlcGFyYXRlX2Rl YnVnX29iamZpbGUgIT0gbnVsbHB0cik7CisgICAgIH0KKyB9CisgCitkaWZmIC0tZ2l0IGEvZ2Ri L2VsZnJlYWQuYyBiL2dkYi9lbGZyZWFkLmMKKy0tLSBhL2dkYi9lbGZyZWFkLmMKKysrKyBiL2dk Yi9lbGZyZWFkLmMKK0BAIC00MSwxNCArNDEsMTIgQEAKKyAjaW5jbHVkZSAicmVnY2FjaGUuaCIK KyAjaW5jbHVkZSAiYmNhY2hlLmgiCisgI2luY2x1ZGUgImdkYl9iZmQuaCIKKy0jaW5jbHVkZSAi YnVpbGQtaWQuaCIKKyAjaW5jbHVkZSAibG9jYXRpb24uaCIKKyAjaW5jbHVkZSAiYXV4di5oIgor ICNpbmNsdWRlICJtZGVidWdyZWFkLmgiCisgI2luY2x1ZGUgImN0ZnJlYWQuaCIKKyAjaW5jbHVk ZSAiZ2Ric3VwcG9ydC9nZGJfc3RyaW5nX3ZpZXcuaCIKKyAjaW5jbHVkZSAiZ2Ric3VwcG9ydC9z Y29wZWRfZmQuaCIKKy0jaW5jbHVkZSAiZGVidWdpbmZvZC1zdXBwb3J0LmgiCisgI2luY2x1ZGUg ImR3YXJmMi9wdWJsaWMuaCIKKyAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCisgCitAQCAtMTIx OCw1OSArMTIxNiwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkX2R3YXJmMiAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCisgCSAgICYmIG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUgPT0gTlVM TAorIAkgICAmJiBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5V TEwpCisgICAgIHsKKy0gICAgICBkZWZlcnJlZF93YXJuaW5ncyB3YXJuaW5nczsKKy0KKy0gICAg ICBzdGQ6OnN0cmluZyBkZWJ1Z2ZpbGUKKy0JPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlf YnVpbGRpZCAob2JqZmlsZSwgJndhcm5pbmdzKTsKKy0KKy0gICAgICBpZiAoZGVidWdmaWxlLmVt cHR5ICgpKQorLQlkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfZGVidWds aW5rIChvYmpmaWxlLCAmd2FybmluZ3MpOworLQorLSAgICAgIGlmICghZGVidWdmaWxlLmVtcHR5 ICgpKQorLQl7CistCSAgZ2RiX2JmZF9yZWZfcHRyIGRlYnVnX2JmZAorLQkgICAgKHN5bWZpbGVf YmZkX29wZW5fbm9fZXJyb3IgKGRlYnVnZmlsZS5jX3N0ciAoKSkpOworLQorLQkgIGlmIChkZWJ1 Z19iZmQgIT0gbnVsbHB0cikKKy0JICAgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAoZGVidWdf YmZkLCBkZWJ1Z2ZpbGUuY19zdHIgKCksCistCQkJCSAgICAgIHN5bWZpbGVfZmxhZ3MsIG9iamZp bGUpOworLQl9CisrICAgICAgaWYgKG9iamZpbGUtPmZpbmRfYW5kX2FkZF9zZXBhcmF0ZV9zeW1i b2xfZmlsZSAoc3ltZmlsZV9mbGFncykpCisrCWdkYl9hc3NlcnQgKG9iamZpbGUtPnNlcGFyYXRl X2RlYnVnX29iamZpbGUgIT0gbnVsbHB0cik7CisgICAgICAgZWxzZQorLQl7CistCSAgaGFzX2R3 YXJmMiA9IGZhbHNlOworLQkgIGNvbnN0IHN0cnVjdCBiZmRfYnVpbGRfaWQgKmJ1aWxkX2lkCist CSAgICA9IGJ1aWxkX2lkX2JmZF9nZXQgKG9iamZpbGUtPm9iZmQuZ2V0ICgpKTsKKy0JICBjb25z dCBjaGFyICpmaWxlbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKG9iamZpbGUtPm9iZmQuZ2V0ICgp KTsKKy0KKy0JICBpZiAoYnVpbGRfaWQgIT0gbnVsbHB0cikKKy0JICAgIHsKKy0JICAgICAgZ2Ri Ojp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gc3ltZmlsZV9wYXRoOworLQkgICAgICBzY29wZWRf ZmQgZmQgKGRlYnVnaW5mb2RfZGVidWdpbmZvX3F1ZXJ5IChidWlsZF9pZC0+ZGF0YSwKKy0JCQkJ CQkJYnVpbGRfaWQtPnNpemUsCistCQkJCQkJCWZpbGVuYW1lLAorLQkJCQkJCQkmc3ltZmlsZV9w YXRoKSk7CistCistCSAgICAgIGlmIChmZC5nZXQgKCkgPj0gMCkKKy0JCXsKKy0JCSAgLyogRmls ZSBzdWNjZXNzZnVsbHkgcmV0cmlldmVkIGZyb20gc2VydmVyLiAgKi8KKy0JCSAgZ2RiX2JmZF9y ZWZfcHRyIGRlYnVnX2JmZAorLQkJICAgIChzeW1maWxlX2JmZF9vcGVuX25vX2Vycm9yIChzeW1m aWxlX3BhdGguZ2V0ICgpKSk7CistCistCQkgIGlmIChkZWJ1Z19iZmQgIT0gbnVsbHB0cgorLQkJ ICAgICAgJiYgYnVpbGRfaWRfdmVyaWZ5IChkZWJ1Z19iZmQuZ2V0ICgpLCBidWlsZF9pZC0+c2l6 ZSwKKy0JCQkJCSAgYnVpbGRfaWQtPmRhdGEpKQorLQkJICAgIHsKKy0JCSAgICAgIHN5bWJvbF9m aWxlX2FkZF9zZXBhcmF0ZSAoZGVidWdfYmZkLCBzeW1maWxlX3BhdGguZ2V0ICgpLAorLQkJCQkJ CXN5bWZpbGVfZmxhZ3MsIG9iamZpbGUpOworLQkJICAgICAgaGFzX2R3YXJmMiA9IHRydWU7Cist CQkgICAgfQorLQkJfQorLQkgICAgfQorLQl9CistICAgICAgLyogSWYgYWxsIHRoZSBtZXRob2Rz IHRvIGNvbGxlY3QgdGhlIGRlYnVnaW5mbyBmYWlsZWQsIHByaW50IHRoZQorLQkgd2FybmluZ3Ms IHRoaXMgaXMgYSBuby1vcCBpZiB0aGVyZSBhcmUgbm8gd2FybmluZ3MuICAqLworLSAgICAgIGlm IChkZWJ1Z2ZpbGUuZW1wdHkgKCkgJiYgIWhhc19kd2FyZjIpCistCXdhcm5pbmdzLmVtaXQgKCk7 CisrCWhhc19kd2FyZjIgPSBmYWxzZTsKKyAgICAgfQorIAorICAgcmV0dXJuIGhhc19kd2FyZjI7 CitkaWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVzLmggYi9nZGIvb2JqZmlsZXMuaAorLS0tIGEvZ2Ri L29iamZpbGVzLmgKKysrKyBiL2dkYi9vYmpmaWxlcy5oCitAQCAtNTEzLDYgKzUxMywxNiBAQCBz dHJ1Y3Qgb2JqZmlsZQorIAorICAgYm9vbCBoYXNfcGFydGlhbF9zeW1ib2xzICgpOworIAorKyAg LyogTG9vayBmb3IgYSBzZXBhcmF0ZSBkZWJ1ZyBzeW1ib2wgZmlsZSBmb3IgdGhpcyBvYmpmaWxl LCBtYWtlIHVzZSBvZgorKyAgICAgYnVpbGQtaWQsIGRlYnVnLWxpbmssIGFuZCBkZWJ1Z2luZm9k IGFzIG5lY2Vzc2FyeS4gIElmIGEgc3VpdGFibGUKKysgICAgIHNlcGFyYXRlIGRlYnVnIHN5bWJv bCBmaWxlIGlzIGZvdW5kIHRoZW4gaXQgaXMgbG9hZGVkIHVzaW5nIGEgY2FsbCB0bworKyAgICAg c3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChTWU1GSUxFX0ZMQUdTIGlzIHBhc3NlZCB0aHJvdWdo IHVubW9kaWZpZWQKKysgICAgIHRvIHRoaXMgY2FsbCkgYW5kIHRoaXMgZnVuY3Rpb24gcmV0dXJu cyB0cnVlLiAgSWYgbm8gc3VpdGFibGUgc2VwYXJhdGUKKysgICAgIGRlYnVnIHN5bWJvbCBmaWxl IGlzIGZvdW5kIGFuZCBsb2FkZWQgdGhlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMKKysgICAgIGZh bHNlLiAgKi8KKysKKysgIGJvb2wgZmluZF9hbmRfYWRkX3NlcGFyYXRlX3N5bWJvbF9maWxlIChz eW1maWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKTsKKysKKyAgIC8qIFJldHVybiB0cnVlIGlm IHRoaXMgb2JqZmlsZSBoYXMgYW55IHVuZXhwYW5kZWQgc3ltYm9scy4gIEEgcmV0dXJuCisgICAg ICB2YWx1ZSBvZiBmYWxzZSBpbmRpY2F0ZXMgZWl0aGVyLCB0aGF0IHRoaXMgb2JqZmlsZSBoYXMg YWxsIGl0cworICAgICAgc3ltYm9scyBmdWxseSBleHBhbmRlZCAoaS5lLiBmdWxseSByZWFkIGlu KSwgb3IgdGhhdCB0aGlzIG9iamZpbGUgaGFzCitkaWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUtZGVi dWcuYyBiL2dkYi9zeW1maWxlLWRlYnVnLmMKKy0tLSBhL2dkYi9zeW1maWxlLWRlYnVnLmMKKysr KyBiL2dkYi9zeW1maWxlLWRlYnVnLmMKK0BAIC0zNSw2ICszNSw4IEBACisgI2luY2x1ZGUgImJs b2NrLmgiCisgI2luY2x1ZGUgImZpbGVuYW1lcy5oIgorICNpbmNsdWRlICJjbGkvY2xpLXN0eWxl LmgiCisrI2luY2x1ZGUgImJ1aWxkLWlkLmgiCisrI2luY2x1ZGUgImRlYnVnaW5mb2Qtc3VwcG9y dC5oIgorIAorIC8qIFdlIG5lZWQgdG8gc2F2ZSBhIHBvaW50ZXIgdG8gdGhlIHJlYWwgc3ltYm9s IGZ1bmN0aW9ucy4KKyAgICBQbHVzLCB0aGUgZGVidWcgdmVyc2lvbnMgYXJlIG1hbGxvYydkIGJl Y2F1c2Ugd2UgaGF2ZSB0byBOVUxMIG91dCB0aGUKK0BAIC01NTgsNiArNTYwLDcwIEBAIG9iamZp bGU6OnJlcXVpcmVfcGFydGlhbF9zeW1ib2xzIChib29sIHZlcmJvc2UpCisgICAgIH0KKyB9Cisg CisrLyogU2VlIG9iamZpbGVzLmguICAqLworKworK2Jvb2wKKytvYmpmaWxlOjpmaW5kX2FuZF9h ZGRfc2VwYXJhdGVfc3ltYm9sX2ZpbGUgKHN5bWZpbGVfYWRkX2ZsYWdzIHN5bWZpbGVfZmxhZ3Mp CisreworKyAgYm9vbCBoYXNfZHdhcmYyID0gdHJ1ZTsKKysKKysgIGRlZmVycmVkX3dhcm5pbmdz IHdhcm5pbmdzOworKworKyAgc3RkOjpzdHJpbmcgZGVidWdmaWxlCisrICAgID0gZmluZF9zZXBh cmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHRoaXMsICZ3YXJuaW5ncyk7CisrCisrICBpZiAo ZGVidWdmaWxlLmVtcHR5ICgpKQorKyAgICBkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVn X2ZpbGVfYnlfZGVidWdsaW5rICh0aGlzLCAmd2FybmluZ3MpOworKworKyAgaWYgKCFkZWJ1Z2Zp bGUuZW1wdHkgKCkpCisrICAgIHsKKysgICAgICBnZGJfYmZkX3JlZl9wdHIgZGVidWdfYmZkCisr CShzeW1maWxlX2JmZF9vcGVuX25vX2Vycm9yIChkZWJ1Z2ZpbGUuY19zdHIgKCkpKTsKKysKKysg ICAgICBpZiAoZGVidWdfYmZkICE9IG51bGxwdHIpCisrCXN5bWJvbF9maWxlX2FkZF9zZXBhcmF0 ZSAoZGVidWdfYmZkLCBkZWJ1Z2ZpbGUuY19zdHIgKCksCisrCQkJCSAgc3ltZmlsZV9mbGFncywg dGhpcyk7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIGhhc19kd2FyZjIgPSBmYWxz ZTsKKysgICAgICBjb25zdCBzdHJ1Y3QgYmZkX2J1aWxkX2lkICpidWlsZF9pZAorKwk9IGJ1aWxk X2lkX2JmZF9nZXQgKHRoaXMtPm9iZmQuZ2V0ICgpKTsKKysgICAgICBjb25zdCBjaGFyICpmaWxl bmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKHRoaXMtPm9iZmQuZ2V0ICgpKTsKKysKKysgICAgICBp ZiAoYnVpbGRfaWQgIT0gbnVsbHB0cikKKysJeworKwkgIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRy PGNoYXI+IHN5bWZpbGVfcGF0aDsKKysJICBzY29wZWRfZmQgZmQgKGRlYnVnaW5mb2RfZGVidWdp bmZvX3F1ZXJ5IChidWlsZF9pZC0+ZGF0YSwKKysJCQkJCQkgICAgYnVpbGRfaWQtPnNpemUsCisr CQkJCQkJICAgIGZpbGVuYW1lLAorKwkJCQkJCSAgICAmc3ltZmlsZV9wYXRoKSk7CisrCisrCSAg aWYgKGZkLmdldCAoKSA+PSAwKQorKwkgICAgeworKwkgICAgICAvKiBGaWxlIHN1Y2Nlc3NmdWxs eSByZXRyaWV2ZWQgZnJvbSBzZXJ2ZXIuICAqLworKwkgICAgICBnZGJfYmZkX3JlZl9wdHIgZGVi dWdfYmZkCisrCQkoc3ltZmlsZV9iZmRfb3Blbl9ub19lcnJvciAoc3ltZmlsZV9wYXRoLmdldCAo KSkpOworKworKwkgICAgICBpZiAoZGVidWdfYmZkICE9IG51bGxwdHIKKysJCSAgJiYgYnVpbGRf aWRfdmVyaWZ5IChkZWJ1Z19iZmQuZ2V0ICgpLCBidWlsZF9pZC0+c2l6ZSwKKysJCQkJICAgICAg YnVpbGRfaWQtPmRhdGEpKQorKwkJeworKwkJICBzeW1ib2xfZmlsZV9hZGRfc2VwYXJhdGUgKGRl YnVnX2JmZCwgc3ltZmlsZV9wYXRoLmdldCAoKSwKKysJCQkJCSAgICBzeW1maWxlX2ZsYWdzLCB0 aGlzKTsKKysJCSAgaGFzX2R3YXJmMiA9IHRydWU7CisrCQl9CisrCSAgICB9CisrCX0KKysgICAg fQorKyAgLyogSWYgYWxsIHRoZSBtZXRob2RzIHRvIGNvbGxlY3QgdGhlIGRlYnVnaW5mbyBmYWls ZWQsIHByaW50IHRoZQorKyAgICAgd2FybmluZ3MsIHRoaXMgaXMgYSBuby1vcCBpZiB0aGVyZSBh cmUgbm8gd2FybmluZ3MuICAqLworKyAgaWYgKGRlYnVnZmlsZS5lbXB0eSAoKSAmJiAhaGFzX2R3 YXJmMikKKysgICAgd2FybmluZ3MuZW1pdCAoKTsKKysKKysgIHJldHVybiBoYXNfZHdhcmYyOwor K30KKysKKyAMCisgLyogRGVidWdnaW5nIHZlcnNpb24gb2Ygc3RydWN0IHN5bV9wcm9iZV9mbnMu ICAqLworIAoKZGlmZiAtLWdpdCBhL2dkYi1yZWZhY3Rvci1maW5kLWFuZC1hZGQtc2VwYXJhdGUt c3ltYm9sLWZpbGUucGF0Y2ggYi9nZGItcmVmYWN0b3ItZmluZC1hbmQtYWRkLXNlcGFyYXRlLXN5 bWJvbC1maWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzY2Vh YmIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcmVmYWN0b3ItZmluZC1hbmQtYWRkLXNlcGFyYXRl LXN5bWJvbC1maWxlLnBhdGNoCkBAIC0wLDAgKzEsMTkwIEBACitGcm9tIEZFRE9SQV9QQVRDSEVT IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNz QHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDEzIE9jdCAyMDIzIDE2OjE3OjIwICswMTAwCitTdWJq ZWN0OiBnZGItcmVmYWN0b3ItZmluZC1hbmQtYWRkLXNlcGFyYXRlLXN5bWJvbC1maWxlLnBhdGNo CisKKzs7IEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCA2MjM0YmExNzU5OC4KKworZ2RiOiByZWZh Y3RvciBvYmpmaWxlOjpmaW5kX2FuZF9hZGRfc2VwYXJhdGVfc3ltYm9sX2ZpbGUKKworVGhpcyBp cyBwdXJlbHkgYSByZWZhY3RvcmluZyBjb21taXQuCisKK1RoaXMgY29tbWl0IHNwbGl0cyBvYmpm aWxlOjpmaW5kX2FuZF9hZGRfc2VwYXJhdGVfc3ltYm9sX2ZpbGUgaW50bworc29tZSBzZXBhcmF0 ZSBoZWxwZXIgZnVuY3Rpb25zLiAgTXkgaG9wZSBpcyB0aGF0IHRoZSBzdGVwcyBmb3IgbG9va2lu ZwordXAgc2VwYXJhdGUgZGVidWcgaW5mb3JtYXRpb24gYXJlIG5vdyBjbGVhcmVyLgorCitJbiBh IGxhdGVyIGNvbW1pdCBJJ20gZ29pbmcgdG8gZXh0ZW5kCitvYmpmaWxlOjpmaW5kX2FuZF9hZGRf c2VwYXJhdGVfc3ltYm9sX2ZpbGUsIHdpdGggc29tZSBhZGRpdGlvbmFsCitsb2dpYywgc28gc3Rh cnRpbmcgd2l0aCBhIHNpbXBsZXIgZnVuY3Rpb24gd2lsbCBtYWtlIHRoZSBmb2xsb3dpbmcKK2No YW5nZXMgZWFzaWVyLgorCitXaGVuIHJlYWRpbmcgb2JqZmlsZTo6ZmluZF9hbmRfYWRkX3NlcGFy YXRlX3N5bWJvbF9maWxlIGFmdGVyIHRoaXMKK2NvbW1pdCwgeW91IG1pZ2h0IGJlIHRlbXB0ZWQg dG8gdGhpbmsgdGhhdCByZW1vdmluZyB0aGUgYGhhc19kd2FyZmAKK2xvY2FsIHZhcmlhYmxlIHdv dWxkIGJlIGEgZ29vZCBhZGRpdGlvbmFsIGNsZWFudXAuICBBZnRlciB0aGUgbmV4dAorY29tbWl0 IHRob3VnaCBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIHJldGFpbiB0aGlzIGxvY2FsLCBzbyBJJ3Zl IGxlZnQKK3RoaXMgaW4gcGxhY2UgZm9yIG5vdy4KKworVGhlcmUgc2hvdWxkIGJlIG5vIHVzZXIg dmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29tbWl0LgorCitBcHByb3ZlZC1CeTogVG9tIFRy b21leSA8dG9tQHRyb21leS5jb20+CisKK2RpZmYgLS1naXQgYS9nZGIvc3ltZmlsZS1kZWJ1Zy5j IGIvZ2RiL3N5bWZpbGUtZGVidWcuYworLS0tIGEvZ2RiL3N5bWZpbGUtZGVidWcuYworKysrIGIv Z2RiL3N5bWZpbGUtZGVidWcuYworQEAgLTU2MCw2OCArNTYwLDEwOSBAQCBvYmpmaWxlOjpyZXF1 aXJlX3BhcnRpYWxfc3ltYm9scyAoYm9vbCB2ZXJib3NlKQorICAgICB9CisgfQorIAorKy8qIENh bGwgTE9PS1VQX0ZVTkMgdG8gZmluZCB0aGUgZmlsZW5hbWUgb2YgYSBmaWxlIGNvbnRhaW5pbmcg dGhlIHNlcGFyYXRlCisrICAgZGVidWcgaW5mb3JtYXRpb24gbWF0Y2hpbmcgT0JKRklMRS4gIElm IExPT0tVUF9GVU5DIGRvZXMgcmV0dXJuIGEKKysgICBmaWxlbmFtZSB0aGVuIG9wZW4gdGhpcyBm aWxlIGFuZCByZXR1cm4gYSBzdGQ6OnBhaXIgY29udGFpbmluZyB0aGUKKysgICBnZGJfYmZkX3Jl Zl9wdHIgb2YgdGhlIG9wZW4gZmlsZSBhbmQgdGhlIGZpbGVuYW1lIHJldHVybmVkIGJ5CisrICAg TE9PS1VQX0ZVTkMsIG90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgcGFp cjsgdGhlIGZpcnN0CisrICAgaXRlbSB3aWxsIGJlIG51bGxwdHIsIGFuZCB0aGUgc2Vjb25kIHdp bGwgYmUgYW4gZW1wdHkgc3RyaW5nLgorKworKyAgIEFueSB3YXJuaW5ncyBnZW5lcmF0ZWQgYnkg dGhpcyBmdW5jdGlvbiwgb3IgYnkgY2FsbGluZyBMT09LVVBfRlVOQyBhcmUKKysgICBwbGFjZWQg aW50byBXQVJOSU5HUywgdGhlc2Ugd2FybmluZ3MgYXJlIG9ubHkgZGlzcGxheWVkIHRvIHRoZSB1 c2VyIGlmCisrICAgR0RCIGlzIHVuYWJsZSB0byBmaW5kIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZv cm1hdGlvbiB2aWEgYW55IHJvdXRlLiAgKi8KKytzdGF0aWMgc3RkOjpwYWlyPGdkYl9iZmRfcmVm X3B0ciwgc3RkOjpzdHJpbmc+Cisrc2ltcGxlX2ZpbmRfYW5kX29wZW5fc2VwYXJhdGVfc3ltYm9s X2ZpbGUKKysgIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysgICBzdGQ6OnN0cmluZyAoKmxv b2t1cF9mdW5jKSAoc3RydWN0IG9iamZpbGUgKiwgZGVmZXJyZWRfd2FybmluZ3MgKiksCisrICAg ZGVmZXJyZWRfd2FybmluZ3MgKndhcm5pbmdzKQorK3sKKysgIHN0ZDo6c3RyaW5nIGZpbGVuYW1l ID0gbG9va3VwX2Z1bmMgKG9iamZpbGUsIHdhcm5pbmdzKTsKKysKKysgIGlmICghZmlsZW5hbWUu ZW1wdHkgKCkpCisrICAgIHsKKysgICAgICBnZGJfYmZkX3JlZl9wdHIgc3ltZmlsZV9iZmQKKysJ PSBzeW1maWxlX2JmZF9vcGVuX25vX2Vycm9yIChmaWxlbmFtZS5jX3N0ciAoKSk7CisrICAgICAg aWYgKHN5bWZpbGVfYmZkICE9IG51bGxwdHIpCisrCXJldHVybiB7IHN5bWZpbGVfYmZkLCBmaWxl bmFtZSB9OworKyAgICB9CisrCisrICByZXR1cm4ge307CisrfQorKworKy8qIExvb2t1cCBzZXBh cmF0ZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgT0JKRklMRSB2aWEgZGVidWdpbmZvZC4gIElmCisr ICAgc3VjY2Vzc2Z1bCB0aGUgZGVidWcgaW5mb3JtYXRpb24gd2lsbCBiZSBoYXZlIGJlZW4gZG93 bmxvYWRlZCBpbnRvIHRoZQorKyAgIGRlYnVnaW5mb2QgY2FjaGUgYW5kIHRoaXMgZnVuY3Rpb24g d2lsbCByZXR1cm4gYSBzdGQ6OnBhaXIgY29udGFpbmluZyBhCisrICAgZ2RiX2JmZF9yZWZfcHRy IG9mIHRoZSBvcGVuIGRlYnVnIGluZm9ybWF0aW9uIGZpbGUgYW5kIHRoZSBmaWxlbmFtZSBmb3IK KysgICB0aGUgZmlsZSB3aXRoaW4gdGhlIGRlYnVnaW5mb2QgY2FjaGUuICBJZiBubyBkZWJ1ZyBp bmZvcm1hdGlvbiBjb3VsZCBiZQorKyAgIGZvdW5kIHRoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5z IGFuIGVtcHR5IHBhaXI7IHRoZSBmaXJzdCBpdGVtIHdpbGwgYmUKKysgICBudWxscHRyLCBhbmQg dGhlIHNlY29uZCB3aWxsIGJlIGFuIGVtcHR5IHN0cmluZy4gICovCisrCisrc3RhdGljIHN0ZDo6 cGFpcjxnZGJfYmZkX3JlZl9wdHIsIHN0ZDo6c3RyaW5nPgorK2RlYnVnaW5mb2RfZmluZF9hbmRf b3Blbl9zZXBhcmF0ZV9zeW1ib2xfZmlsZSAoc3RydWN0IG9iamZpbGUgKiBvYmpmaWxlKQorK3sK KysgIGNvbnN0IHN0cnVjdCBiZmRfYnVpbGRfaWQgKmJ1aWxkX2lkCisrICAgID0gYnVpbGRfaWRf YmZkX2dldCAob2JqZmlsZS0+b2JmZC5nZXQgKCkpOworKyAgY29uc3QgY2hhciAqZmlsZW5hbWUg PSBiZmRfZ2V0X2ZpbGVuYW1lIChvYmpmaWxlLT5vYmZkLmdldCAoKSk7CisrCisrICBpZiAoYnVp bGRfaWQgIT0gbnVsbHB0cikKKysgICAgeworKyAgICAgIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRy PGNoYXI+IHN5bWZpbGVfcGF0aDsKKysgICAgICBzY29wZWRfZmQgZmQgKGRlYnVnaW5mb2RfZGVi dWdpbmZvX3F1ZXJ5IChidWlsZF9pZC0+ZGF0YSwgYnVpbGRfaWQtPnNpemUsCisrCQkJCQkJZmls ZW5hbWUsICZzeW1maWxlX3BhdGgpKTsKKysKKysgICAgICBpZiAoZmQuZ2V0ICgpID49IDApCisr CXsKKysJICAvKiBGaWxlIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgZnJvbSBzZXJ2ZXIuICAqLwor KwkgIGdkYl9iZmRfcmVmX3B0ciBkZWJ1Z19iZmQKKysJICAgIChzeW1maWxlX2JmZF9vcGVuX25v X2Vycm9yIChzeW1maWxlX3BhdGguZ2V0ICgpKSk7CisrCisrCSAgaWYgKGRlYnVnX2JmZCAhPSBu dWxscHRyCisrCSAgICAgICYmIGJ1aWxkX2lkX3ZlcmlmeSAoZGVidWdfYmZkLmdldCAoKSwKKysJ CQkJICBidWlsZF9pZC0+c2l6ZSwgYnVpbGRfaWQtPmRhdGEpKQorKwkgICAgcmV0dXJuIHsgZGVi dWdfYmZkLCBzdGQ6OnN0cmluZyAoc3ltZmlsZV9wYXRoLmdldCAoKSkgfTsKKysJfQorKyAgICB9 CisrCisrICByZXR1cm4ge307CisrfQorKworIC8qIFNlZSBvYmpmaWxlcy5oLiAgKi8KKyAKKyBi b29sCisgb2JqZmlsZTo6ZmluZF9hbmRfYWRkX3NlcGFyYXRlX3N5bWJvbF9maWxlIChzeW1maWxl X2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKQorIHsKKy0gIGJvb2wgaGFzX2R3YXJmMiA9IHRydWU7 CisrICBib29sIGhhc19kd2FyZiA9IGZhbHNlOworIAorICAgZGVmZXJyZWRfd2FybmluZ3Mgd2Fy bmluZ3M7CisgCistICBzdGQ6OnN0cmluZyBkZWJ1Z2ZpbGUKKy0gICAgPSBmaW5kX3NlcGFyYXRl X2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAodGhpcywgJndhcm5pbmdzKTsKKy0KKy0gIGlmIChkZWJ1 Z2ZpbGUuZW1wdHkgKCkpCistICAgIGRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmls ZV9ieV9kZWJ1Z2xpbmsgKHRoaXMsICZ3YXJuaW5ncyk7CisrICBnZGJfYmZkX3JlZl9wdHIgZGVi dWdfYmZkOworKyAgc3RkOjpzdHJpbmcgZmlsZW5hbWU7CisgCistICBpZiAoIWRlYnVnZmlsZS5l bXB0eSAoKSkKKy0gICAgeworLSAgICAgIGdkYl9iZmRfcmVmX3B0ciBkZWJ1Z19iZmQKKy0JKHN5 bWZpbGVfYmZkX29wZW5fbm9fZXJyb3IgKGRlYnVnZmlsZS5jX3N0ciAoKSkpOworKyAgc3RkOjp0 aWUgKGRlYnVnX2JmZCwgZmlsZW5hbWUpID0gc2ltcGxlX2ZpbmRfYW5kX29wZW5fc2VwYXJhdGVf c3ltYm9sX2ZpbGUKKysgICAgKHRoaXMsIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWls ZGlkLCAmd2FybmluZ3MpOworIAorLSAgICAgIGlmIChkZWJ1Z19iZmQgIT0gbnVsbHB0cikKKy0J c3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChkZWJ1Z19iZmQsIGRlYnVnZmlsZS5jX3N0ciAoKSwK Ky0JCQkJICBzeW1maWxlX2ZsYWdzLCB0aGlzKTsKKy0gICAgfQorLSAgZWxzZQorLSAgICB7Cist ICAgICAgaGFzX2R3YXJmMiA9IGZhbHNlOworLSAgICAgIGNvbnN0IHN0cnVjdCBiZmRfYnVpbGRf aWQgKmJ1aWxkX2lkCistCT0gYnVpbGRfaWRfYmZkX2dldCAodGhpcy0+b2JmZC5nZXQgKCkpOwor LSAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gYmZkX2dldF9maWxlbmFtZSAodGhpcy0+b2Jm ZC5nZXQgKCkpOworLQorLSAgICAgIGlmIChidWlsZF9pZCAhPSBudWxscHRyKQorLQl7CistCSAg Z2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gc3ltZmlsZV9wYXRoOworLQkgIHNjb3BlZF9m ZCBmZCAoZGVidWdpbmZvZF9kZWJ1Z2luZm9fcXVlcnkgKGJ1aWxkX2lkLT5kYXRhLAorLQkJCQkJ CSAgICBidWlsZF9pZC0+c2l6ZSwKKy0JCQkJCQkgICAgZmlsZW5hbWUsCistCQkJCQkJICAgICZz eW1maWxlX3BhdGgpKTsKKysgIGlmIChkZWJ1Z19iZmQgPT0gbnVsbHB0cikKKysgICAgc3RkOjp0 aWUgKGRlYnVnX2JmZCwgZmlsZW5hbWUpCisrICAgICAgPSBzaW1wbGVfZmluZF9hbmRfb3Blbl9z ZXBhcmF0ZV9zeW1ib2xfZmlsZQorKwkgICh0aGlzLCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVf YnlfZGVidWdsaW5rLCAmd2FybmluZ3MpOworIAorLQkgIGlmIChmZC5nZXQgKCkgPj0gMCkKKy0J ICAgIHsKKy0JICAgICAgLyogRmlsZSBzdWNjZXNzZnVsbHkgcmV0cmlldmVkIGZyb20gc2VydmVy LiAgKi8KKy0JICAgICAgZ2RiX2JmZF9yZWZfcHRyIGRlYnVnX2JmZAorLQkJKHN5bWZpbGVfYmZk X29wZW5fbm9fZXJyb3IgKHN5bWZpbGVfcGF0aC5nZXQgKCkpKTsKKysgIGlmIChkZWJ1Z19iZmQg PT0gbnVsbHB0cikKKysgICAgc3RkOjp0aWUgKGRlYnVnX2JmZCwgZmlsZW5hbWUpCisrICAgICAg PSBkZWJ1Z2luZm9kX2ZpbmRfYW5kX29wZW5fc2VwYXJhdGVfc3ltYm9sX2ZpbGUgKHRoaXMpOwor IAorLQkgICAgICBpZiAoZGVidWdfYmZkICE9IG51bGxwdHIKKy0JCSAgJiYgYnVpbGRfaWRfdmVy aWZ5IChkZWJ1Z19iZmQuZ2V0ICgpLCBidWlsZF9pZC0+c2l6ZSwKKy0JCQkJICAgICAgYnVpbGRf aWQtPmRhdGEpKQorLQkJeworLQkJICBzeW1ib2xfZmlsZV9hZGRfc2VwYXJhdGUgKGRlYnVnX2Jm ZCwgc3ltZmlsZV9wYXRoLmdldCAoKSwKKy0JCQkJCSAgICBzeW1maWxlX2ZsYWdzLCB0aGlzKTsK Ky0JCSAgaGFzX2R3YXJmMiA9IHRydWU7CistCQl9CistCSAgICB9CistCX0KKysgIGlmIChkZWJ1 Z19iZmQgIT0gbnVsbHB0cikKKysgICAgeworKyAgICAgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0 ZSAoZGVidWdfYmZkLCBmaWxlbmFtZS5jX3N0ciAoKSwgc3ltZmlsZV9mbGFncywKKysJCQkJdGhp cyk7CisrICAgICAgaGFzX2R3YXJmID0gdHJ1ZTsKKyAgICAgfQorLSAgLyogSWYgYWxsIHRoZSBt ZXRob2RzIHRvIGNvbGxlY3QgdGhlIGRlYnVnaW5mbyBmYWlsZWQsIHByaW50IHRoZQorLSAgICAg d2FybmluZ3MsIHRoaXMgaXMgYSBuby1vcCBpZiB0aGVyZSBhcmUgbm8gd2FybmluZ3MuICAqLwor LSAgaWYgKGRlYnVnZmlsZS5lbXB0eSAoKSAmJiAhaGFzX2R3YXJmMikKKysKKysgIC8qIElmIHdl IHN0aWxsIGhhdmUgbm90IGdvdCBhIHNlcGFyYXRlIGRlYnVnIHN5bWJvbCBmaWxlLCB0aGVuCisr ICAgICBlbWl0IGFueSB3YXJuaW5ncyB3ZSd2ZSBjb2xsZWN0ZWQgc28gZmFyLiAgKi8KKysgIGlm ICghaGFzX2R3YXJmKQorICAgICB3YXJuaW5ncy5lbWl0ICgpOworIAorLSAgcmV0dXJuIGhhc19k d2FyZjI7CisrICByZXR1cm4gaGFzX2R3YXJmOworIH0KKyAKKyAMCgpkaWZmIC0tZ2l0IGEvZ2Ri LXJlZm9ybWF0LW1pc3NpbmctZGVidWctcHktZmlsZS5wYXRjaCBiL2dkYi1yZWZvcm1hdC1taXNz aW5nLWRlYnVnLXB5LWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYzk4OGZhMgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1yZWZvcm1hdC1taXNzaW5nLWRlYnVn LXB5LWZpbGUucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRvbSBkZSBWcmllcyA8dGRldnJpZXNAc3VzZS5k ZT4KK0RhdGU6IFRodSwgMjMgTm92IDIwMjMgMDc6Mzc6MTkgKzAxMDAKK1N1YmplY3Q6IGdkYi1y ZWZvcm1hdC1taXNzaW5nLWRlYnVnLXB5LWZpbGUucGF0Y2gKKworOzsgQmFja3BvcnQgdXBzdHJl YW0gY29tbWl0IGRkNTUxNmJmOThmLgorCitbZ2RiL3B5dGhvbl0gUmVmb3JtYXQgbWlzc2luZ19k ZWJ1Zy5weSB1c2luZyBibGFjaworCitSZWZvcm1hdCBnZGIvcHl0aG9uL2xpYi9nZGIvbWlzc2lu Z19kZWJ1Zy5weSB3aXRoIGJsYWNrIGFmdGVyIGNvbW1pdAorZThjM2RhZmE1ZjUgKCJbZ2RiL3B5 dGhvbl0gRG9uJ3QgaW1wb3J0IGN1cnNlcy5hc2NpaSBtb2R1bGUgdW5sZXNzIG5lY2Vzc2FyeSIp LgorCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL21pc3NpbmdfZGVidWcucHkgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvbWlzc2luZ19kZWJ1Zy5weQorLS0tIGEvZ2RiL3B5dGhvbi9saWIv Z2RiL21pc3NpbmdfZGVidWcucHkKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9taXNzaW5nX2Rl YnVnLnB5CitAQCAtMTksMTggKzE5LDIyIEBAIE1pc3NpbmdEZWJ1Z0hhbmRsZXIgYmFzZSBjbGFz cywgYW5kIHJlZ2lzdGVyX2hhbmRsZXIgZnVuY3Rpb24uCisgCisgaW1wb3J0IGdkYgorIGltcG9y dCBzeXMKKysKKyBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA3KToKKyAgICAgIyBGdW5jdGlv bnMgc3RyLmlzYXNjaWkoKSBhbmQgc3RyLmlzYWxudW0gYXJlIGF2YWlsYWJsZSBzdGFydGluZyBQ eXRob24KKyAgICAgIyAzLjcuCisgICAgIGRlZiBpc2FzY2lpKGNoKToKKyAgICAgICAgIHJldHVy biBjaC5pc2FzY2lpKCkKKysKKyAgICAgZGVmIGlzYWxudW0oY2gpOgorICAgICAgICAgcmV0dXJu IGNoLmlzYWxudW0oKQorKworIGVsc2U6CisgICAgICMgRmFsbCBiYWNrIHRvIGN1cnNlcy5hc2Np aS5pc2FzY2lpKCkgYW5kIGN1cnNlcy5hc2NpaS5pc2FsbnVtKCkgZm9yCisgICAgICMgZWFybGll ciB2ZXJzaW9ucy4KKyAgICAgZnJvbSBjdXJzZXMuYXNjaWkgaW1wb3J0IGlzYXNjaWksIGlzYWxu dW0KKyAKKysKKyBkZWYgX3ZhbGlkYXRlX25hbWUobmFtZSk6CisgICAgICIiIlZhbGlkYXRlIGEg bWlzc2luZyBkZWJ1ZyBoYW5kbGVyIG5hbWUgc3RyaW5nLgorIAoKZGlmZiAtLWdpdCBhL2dkYi1y ZW1vdmUtcGF0aC1pbi10ZXN0LW5hbWUucGF0Y2ggYi9nZGItcmVtb3ZlLXBhdGgtaW4tdGVzdC1u YW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MzdhYjkKLS0t IC9kZXYvbnVsbAorKysgYi9nZGItcmVtb3ZlLXBhdGgtaW4tdGVzdC1uYW1lLnBhdGNoCkBAIC0w LDAgKzEsMjkgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBUb20gVHJvbWV5IDx0cm9tZXlAYWRhY29yZS5jb20+CitEYXRlOiBUdWUsIDE0IE5v diAyMDIzIDExOjQ3OjI3IC0wNzAwCitTdWJqZWN0OiBnZGItcmVtb3ZlLXBhdGgtaW4tdGVzdC1u YW1lLnBhdGNoCisKKzs7IEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCAxMTQ2ZDI3NzQ5Zi4KKwor UmVtb3ZlIHBhdGggbmFtZSBmcm9tIHRlc3QgY2FzZQorCisncnVudGVzdCcgY29tcGxhaW5zIGFi b3V0IGEgcGF0aCBpbiBhIHRlc3QgbmFtZSwgZnJvbSB0aGUgbmV3IHRlc3QKK2Nhc2UgcHktbWlz c2luZy1kZWJ1Zy5leHAuCisKK1RoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0gYnkgcHJvdmlk aW5nIGFuIGV4cGxpY2l0IHRlc3QgbmFtZSB0bworZ2RiX3Rlc3QuICBJIGNob3NlIHNvbWV0aGlu ZyB2ZXJ5IGJhc2ljIGJlY2F1c2UgdGhlIGJsb2NrIGluIHF1ZXN0aW9uCitpcyBhbHJlYWR5IHdy YXBwZWQgaW4gd2l0aF90ZXN0X3ByZWZpeC4KKworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1taXNzaW5nLWRlYnVnLmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LW1pc3NpbmctZGVidWcuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktbWlz c2luZy1kZWJ1Zy5leHAKK0BAIC0zMjEsNyArMzIxLDggQEAgd2l0aF90ZXN0X3ByZWZpeCAiZW5h YmxlICdhYmMtZGVmJyIgeworICAgICBzZXQgcmUgW3N0cmluZ190b19yZWdleHAgJGJpbmZpbGVd CisgCisgICAgIGdkYl90ZXN0ICJlbmFibGUgbWlzc2luZy1kZWJ1Zy1oYW5kbGVyIFwiJHJlXCIg YWJjLWRlZiIgXAorLQkiXjEgbWlzc2luZyBkZWJ1ZyBoYW5kbGVyIGVuYWJsZWQiCisrCSJeMSBt aXNzaW5nIGRlYnVnIGhhbmRsZXIgZW5hYmxlZCIgXAorKwkiZW5hYmxlIG1pc3NpbmctZGVidWct aGFuZGxlciIKKyAKKyAgICAgZ2RiX3Rlc3QgImluZm8gbWlzc2luZy1kZWJ1Zy1oYW5kbGVycyIg XAorIAlbbXVsdGlfbGluZSBcCgpkaWZmIC0tZ2l0IGEvZ2RiLXJlbW92ZS11c2Utb2YtcHktaXNh c2NpaSBiL2dkYi1yZW1vdmUtdXNlLW9mLXB5LWlzYXNjaWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYTYwNWQxYwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1yZW1vdmUtdXNl LW9mLXB5LWlzYXNjaWkKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJldyBCdXJnZXNzIDxhYnVyZ2Vzc0ByZWRo YXQuY29tPgorRGF0ZTogVGh1LCAxNiBOb3YgMjAyMyAxMDo1MzozNCArMDAwMAorU3ViamVjdDog Z2RiLXJlbW92ZS11c2Utb2YtcHktaXNhc2NpaQorCis7OyBCYWNrcG9ydCB1cHN0cmVhbSBjb21t aXQgN2RiNzk1YmM2N2EuCisKK2dkYi9weXRob246IHJlbW92ZSB1c2Ugb2Ygc3RyLmlzYXNjaWko KQorCitUaGlzIGNvbW1pdDoKKworICBjb21taXQgOGY2YzQ1MmI1YTRlNTBmYmI1NWZmMWQxMzMy OGIzOTJhZDFmZDQxNgorICBEYXRlOiAgIFN1biBPY3QgMTUgMjI6NDg6NDIgMjAyMyArMDEwMAor CisgICAgICBnZGI6IGltcGxlbWVudCBtaXNzaW5nIGRlYnVnIGhhbmRsZXIgaG9vayBmb3IgUHl0 aG9uCisKK2ludHJvZHVjZWQgYSB1c2Ugb2Ygc3RyLmlzYXNjaWkoKSwgd2hpY2ggd2FzIG9ubHkg YWRkZWQgaW4gUHl0aG9uIDMuNy4KKworVGhpcyBjb21taXQgc3dpdGNoZXMgdG8gdXNlIGN1cnNl cy5hc2NpaS5pc2FzY2lpKCksIGFzIHRoaXMgd2FzCithdmFpbGFibGUgaW4gMy42LgorCitUaGUg c2FtZSBpcyB0cnVlIGZvciBzdHIuaXNhbG51bSgpLCB3aGljaCBpcyByZXBsYWNlZCB3aXRoCitj dXJzZXMuYXNjaWkuaXNhbG51bSgpLgorCitUaGVyZSBzaG91bGQgYmUgbm8gdXNlciB2aXNpYmxl IGNoYW5nZXMgYWZ0ZXIgdGhpcyBjb21taXQuCisKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xp Yi9nZGIvbWlzc2luZ19kZWJ1Zy5weSBiL2dkYi9weXRob24vbGliL2dkYi9taXNzaW5nX2RlYnVn LnB5CistLS0gYS9nZGIvcHl0aG9uL2xpYi9nZGIvbWlzc2luZ19kZWJ1Zy5weQorKysrIGIvZ2Ri L3B5dGhvbi9saWIvZ2RiL21pc3NpbmdfZGVidWcucHkKK0BAIC0xOCw2ICsxOCw3IEBAIE1pc3Np bmdEZWJ1Z0hhbmRsZXIgYmFzZSBjbGFzcywgYW5kIHJlZ2lzdGVyX2hhbmRsZXIgZnVuY3Rpb24u CisgIiIiCisgCisgaW1wb3J0IGdkYgorK2Zyb20gY3Vyc2VzLmFzY2lpIGltcG9ydCBpc2FzY2lp LCBpc2FsbnVtCisgCisgCisgZGVmIF92YWxpZGF0ZV9uYW1lKG5hbWUpOgorQEAgLTM4LDcgKzM5 LDcgQEAgZGVmIF92YWxpZGF0ZV9uYW1lKG5hbWUpOgorICAgICAgICAgICAgICAgICAgICAgbmFt ZS4KKyAgICAgIiIiCisgICAgIGZvciBjaCBpbiBuYW1lOgorLSAgICAgICAgaWYgbm90IGNoLmlz YXNjaWkoKSBvciBub3QgKGNoLmlzYWxudW0oKSBvciBjaCBpbiAiXy0iKToKKysgICAgICAgIGlm IG5vdCBpc2FzY2lpKGNoKSBvciBub3QgKGlzYWxudW0oY2gpIG9yIGNoIGluICJfLSIpOgorICAg ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgY2hhcmFjdGVyICclcycgaW4gaGFu ZGxlciBuYW1lOiAlcyIgJSAoY2gsIG5hbWUpKQorIAorIAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6 MTAwNzYxNC1tZW1sZWFrLWluZnB5X3JlYWRfbWVtb3J5LXRlc3QucGF0Y2ggYi9nZGItcmhiejEw MDc2MTQtbWVtbGVhay1pbmZweV9yZWFkX21lbW9yeS10ZXN0LnBhdGNoCmluZGV4IDRkMDViYTUu LjU1NWVlZmIgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6MTAwNzYxNC1tZW1sZWFrLWluZnB5X3JlYWRf bWVtb3J5LXRlc3QucGF0Y2gKKysrIGIvZ2RiLXJoYnoxMDA3NjE0LW1lbWxlYWstaW5mcHlfcmVh ZF9tZW1vcnktdGVzdC5wYXRjaApAQCAtNjQsNyArNjQsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LWdkYi1yaGJ6MTAwNzYxNC1tZW1sZWFrLWluZnB5X3JlYWRf bWVtbwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIC0tLSAvZGV2L251bGwKICsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1nZGItcmhiejEwMDc2MTQtbWVtbGVhay1pbmZweV9yZWFkX21l bW9yeS5leHAKLUBAIC0wLDAgKzEsNjggQEAKK0BAIC0wLDAgKzEsNzIgQEAKICsjIENvcHlyaWdo dCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK QEAgLTgwLDYgKzgwLDEwIEBAIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiArIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCiArCisrbG9hZF9saWIgZ2RiLXB5dGhvbi5leHAKKysKKytyZXF1aXJlIGFs bG93X3B5dGhvbl90ZXN0cworKwogK3NldCB0ZXN0ZmlsZSBweS1nZGItcmhiejEwMDc2MTQtbWVt bGVhay1pbmZweV9yZWFkX21lbW9yeQogK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKICtzZXQg YmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dCkBAIC04OCw4ICs5Miw2 IEBAIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiArICAgIHJldHVybiAtMQogK30KICsKLStpZiB7IFtz a2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KLSsKICtzZXQgcGlkX29mX2dkYiBbZXhw X3BpZCAtaSBbYm9hcmRfaW5mbyBob3N0IGZpbGVpZF1dCiArCiArcHJvYyBtZW1vcnlfdl9wYWdl c19nZXQge30gewpAQCAtMTExLDEyICsxMTMsMTQgQEAgbmV3IGZpbGUgbW9kZSAxMDA2NDQKICsK ICtnZGJfdGVzdCAic291cmNlICR7cmVtb3RlX3B5dGhvbl9maWxlfSIgIiIKICsKLStnZGJfdGVz dCAiaGVsbG8td29ybGQiICIiCisrZ2RiX3Rlc3QgImhlbGxvLXdvcmxkIiAiIiBcCisrICAgICJm aXJzdCBoZWxsby13b3JsZCB0ZXN0IgogKwogK3NldCBrYnl0ZXNfYmVmb3JlIFttZW1vcnlfdl9w YWdlc19nZXRdCiArdmVyYm9zZSAtbG9nICJrYnl0ZXNfYmVmb3JlID0gJGtieXRlc19iZWZvcmUi CiArCi0rZ2RiX3Rlc3QgImhlbGxvLXdvcmxkIiAiIgorK2dkYl90ZXN0ICJoZWxsby13b3JsZCIg IiIgXAorKyAgICAic2Vjb25kIGhlbGxvLXdvcmxkIHRlc3QiCiArCiArc2V0IGtieXRlc19hZnRl ciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XQogK3ZlcmJvc2UgLWxvZyAia2J5dGVzX2FmdGVyID0gJGti eXRlc19hZnRlciIKCmRpZmYgLS1naXQgYS9nZGItcmhiejExNTYxOTItcmVjdXJzaXZlLWRsb3Bl bi10ZXN0LnBhdGNoIGIvZ2RiLXJoYnoxMTU2MTkyLXJlY3Vyc2l2ZS1kbG9wZW4tdGVzdC5wYXRj aAppbmRleCA5NmI5M2FlLi5lMGEyMjcwIDEwMDY0NAotLS0gYS9nZGItcmhiejExNTYxOTItcmVj dXJzaXZlLWRsb3Blbi10ZXN0LnBhdGNoCisrKyBiL2dkYi1yaGJ6MTE1NjE5Mi1yZWN1cnNpdmUt ZGxvcGVuLXRlc3QucGF0Y2gKQEAgLTIxMSw3ICsyMTEsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9nZGItcmhiejExNTYxOTItcmVjdXJzaXZlLWRsb3Blbi5leHAgYi9n ZGIvdAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIC0tLSAvZGV2L251bGwKICsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZ2RiLXJoYnoxMTU2MTkyLXJlY3Vyc2l2ZS1kbG9wZW4uZXhwCi1AQCAt MCwwICsxLDE1NyBAQAorQEAgLTAsMCArMSwxNTIgQEAKICsjIENvcHlyaWdodCAyMDE0IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKyMKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0yMjcsMTMg KzIyNyw4IEBAIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCiArCi0raWYge1tza2lwX3NobGliX3Rlc3RzXX0gewotKyAgICB1bnRlc3RlZCAic2tpcHBp bmcgc2hsaWIgdGVzdHMiCi0rICAgIHJldHVybiAwCi0rfSBlbHNlaWYge1t1c2VfZ2RiX3N0dWJd fSB7Ci0rICAgIHVudGVzdGVkICJza2lwcGluZyB0ZXN0cyBiZWNhdXNlIG9mIHN0dWIiCi0rICAg IHJldHVybiAwCi0rfQorK3JlcXVpcmUgYWxsb3dfc2hsaWJfdGVzdHMKKytyZXF1aXJlICF1c2Vf Z2RiX3N0dWIKICsKICsjIExpYnJhcnkgZm9vCiArc2V0IGxpYm5hbWUxICJnZGItcmhiejExNTYx OTItcmVjdXJzaXZlLWRsb3Blbi1saWJmb28iCgpkaWZmIC0tZ2l0IGEvZ2RiLXN5bmMtY29mZnJl YWQtd2l0aC1lbGZyZWFkLnBhdGNoIGIvZ2RiLXN5bmMtY29mZnJlYWQtd2l0aC1lbGZyZWFkLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYzllNmQKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItc3luYy1jb2ZmcmVhZC13aXRoLWVsZnJlYWQucGF0Y2gKQEAgLTAsMCAr MSw0NyBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IEFuZHJldyBCdXJnZXNzIDxhYnVyZ2Vzc0ByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAxMiBP Y3QgMjAyMyAxOTo0MjoxOSArMDEwMAorU3ViamVjdDogZ2RiLXN5bmMtY29mZnJlYWQtd2l0aC1l bGZyZWFkLnBhdGNoCisKKzs7IEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCA3NjI4YTk5N2YyNy4K KworZ2RiL2NvZmZyZWFkOiBicmluZyBzZXBhcmF0ZSBkZWJ1ZyBmaWxlIGxvZ2ljIGludG8gbGlu ZSB3aXRoIGVsZnJlYWQuYworCitJbiB0aGlzIGNvbW1pdDoKKworICBjb21taXQgOGE5MjMzNWJm Y2E4MGNjOWI0Y2QyMTc1MDVlYTBkY2JmZGVmYmYwNworICBEYXRlOiAgIEZyaSBGZWIgMSAxOToz OTowNCAyMDEzICswMDAwCisKK3RoZSBsb2dpYyBmb3Igd2hlbiB3ZSB0cnkgdG8gbG9hZCBhIHNl cGFyYXRlIGRlYnVnIGZpbGUgaW4gZWxmcmVhZC5jCit3YXMgZXh0ZW5kZWQuICBUaGUgbmV3IGNv ZGUgY2hlY2tzIHRoYXQgdGhlIG9iamZpbGUgZG9lc24ndCBhbHJlYWR5CitoYXZlIGEgc2VwYXJh dGUgZGVidWcgb2JqZmlsZSBsaW5rZWQgdG8gaXQsIGFuZCB0aGF0IHRoZSBvYmpmaWxlIGlzbid0 CitpdHNlbGYgYSBzZXBhcmF0ZSBkZWJ1ZyBvYmpmaWxlIGZvciBzb21lIG90aGVyIG9iamZpbGUu CisKK1RoZSBjb2ZmcmVhZCBjb2RlIHdhc24ndCBleHRlbmRlZCBhdCB0aGUgc2FtZSB0aW1lLgor CitJIGRvbid0IGtub3cgaWYgaXQncyBwb3NzaWJsZSBmb3IgdGhlIGNvZmZyZWFkIGNvZGUgdG8g Z2V0IGludG8gdGhlCitzYW1lIHN0YXRlIHdoZXJlIHRoZXNlIGNoZWNrcyBhcmUgbmVlZGVkLCBi dXQgSSBkb24ndCBzZWUgd2h5IGhhdmluZwordGhlc2UgY2hlY2tzIHdvdWxkIGJlIGEgcHJvYmxl bS4gIEluIGEgbGF0ZXIgY29tbWl0IEkgcGxhbiB0byBtZXJnZQordGhpcyBwYXJ0IG9mIHRoZSBl bGZyZWFkIGFuZCBjb2ZmcmVhZCBjb2RlLCBzbyBicmluZ2luZyB0aGVzZSB0d28KK3BpZWNlcyBv ZiBjb2RlIGludG8gbGluZSBmaXJzdCBtYWtlcyB0aGF0IGpvYiBlYXNpZXIuCisKK0kndmUgdGVz dGVkIHRoaXMgd2l0aCBhIHNpbXBsZSB0ZXN0IGJpbmFyeSBjb21waWxlZCB3aXRoIHRoZSBtaW5n dwordG9vbGNoYWluIG9uIGEgTGludXggaG9zdC4gIEFmdGVyIGNvbXBpbGluZyB0aGUgYmluYXJ5 IGFuZCBzcGxpdHRpbmcKK291dCB0aGUgZGVidWcgaW5mbyBHREIgc3RpbGwgZmluZHMgYW5kIGxv YWRzIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvLgorCitBcHByb3ZlZC1CeTogVG9tIFRyb21leSA8 dG9tQHRyb21leS5jb20+CisKK2RpZmYgLS1naXQgYS9nZGIvY29mZnJlYWQuYyBiL2dkYi9jb2Zm cmVhZC5jCistLS0gYS9nZGIvY29mZnJlYWQuYworKysrIGIvZ2RiL2NvZmZyZWFkLmMKK0BAIC03 MjUsNyArNzI1LDkgQEAgY29mZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBzeW1maWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKQorICAgICB9CisgCisgICAvKiBUcnkg dG8gYWRkIHNlcGFyYXRlIGRlYnVnIGZpbGUgaWYgbm8gc3ltYm9scyB0YWJsZSBmb3VuZC4gICAq LworLSAgaWYgKCFvYmpmaWxlLT5oYXNfcGFydGlhbF9zeW1ib2xzICgpKQorKyAgZWxzZSBpZiAo IW9iamZpbGUtPmhhc19wYXJ0aWFsX3N5bWJvbHMgKCkKKysJICAgJiYgb2JqZmlsZS0+c2VwYXJh dGVfZGVidWdfb2JqZmlsZSA9PSBOVUxMCisrCSAgICYmIG9iamZpbGUtPnNlcGFyYXRlX2RlYnVn X29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCkKKyAgICAgeworICAgICAgIGRlZmVycmVkX3dhcm5p bmdzIHdhcm5pbmdzOworICAgICAgIHN0ZDo6c3RyaW5nIGRlYnVnZmlsZQoKZGlmZiAtLWdpdCBh L2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggMTlmODMyMy4uMjNiNjU0ZiAxMDA2NDQKLS0tIGEv Z2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTU3LDcgKzU3LDcgQEAgVmVyc2lvbjogMTQuMgog CiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVy LCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRv IHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4K LVJlbGVhc2U6IDMlez9kaXN0fQorUmVsZWFzZTogNCV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTC0z LjAtb3ItbGF0ZXIgQU5EIEJTRC0zLUNsYXVzZSBBTkQgRlNGQVAgQU5EIExHUEwtMi4xLW9yLWxh dGVyIEFORCBHUEwtMi4wLW9yLWxhdGVyIEFORCBMR1BMLTIuMC1vci1sYXRlciBBTkQgTGljZW5z ZVJlZi1GZWRvcmEtUHVibGljLURvbWFpbiBBTkQgR0ZETC0xLjMtb3ItbGF0ZXIgQU5EIExHUEwt Mi4wLW9yLWxhdGVyIFdJVEggR0NDLWV4Y2VwdGlvbi0yLjAgQU5EIEdQTC0zLjAtb3ItbGF0ZXIg V0lUSCBHQ0MtZXhjZXB0aW9uLTMuMSBBTkQgR1BMLTIuMC1vci1sYXRlciBXSVRIIEdOVS1jb21w aWxlci1leGNlcHRpb24KICMgRG8gbm90IHByb3ZpZGUgVVJMIGZvciBzbmFwc2hvdHMgYXMgdGhl IGZpbGUgbGFzdHMgdGhlcmUgb25seSBmb3IgMiBkYXlzLgpAQCAtMTI1MCw2ICsxMjUwLDE1IEBA IGZpCiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBXZWQgTWFyIDEzIDIwMjQgQW5kcmV3IEJ1cmdl c3MgPGFidXJnZXNzQHJlZGhhdC5jb20+CistIFJlbW92ZSB0aGUgdXNlIG9mIGxpYnJwbSBmcm9t IEdEQidzIEMrKyBjb2RlLCBhbmQgaW5zdGVhZCBwcm92aWRlCisgIHNpbWlsYXIgUlBNIHN1Z2dl c3Rpb24gZmVhdHVyZSB1c2luZyBhIFB5dGhvbiBleHRlbnNpb24uICBUaGUgUHl0aG9uCisgIGV4 dGVuc2lvbiBmZWF0dXJlIHRoYXQgc3VwcG9ydHMgdGhpcyBpcyBhbiB1cHN0cmVhbSBmZWF0dXJl IHdoaWNoCisgIGhhcyBiZWVuIGJhY2stcG9ydGVkIChhbG9uZyB3aXRoIHNldmVyYWwgZGVwZW5k ZW5jaWVzIGFuZCByZWxhdGVkCisgIGZpeGVzKS4gIFRoZSBhY3R1YWwgUlBNIHN1Z2dlc3Rpb24g aXMgbm93IHByb3ZpZGVkIGFzIGEgUHl0aG9uCisgIHNjcmlwdCB3aGljaCBpcyBhdXRvLWxvYWRl ZCBieSBHREIuICBSZW1vdmluZyB0aGUgdXNlIG9mIGxpYnJwbSBmcm9tCisgIHRoZSBDKysgY29k ZSBhbGxvd3Mgc29tZSBjbGVhbnVwIG9mIHRoZSBjb25maWd1cmUgc2NyaXB0cy4KKwogKiBGcmkg TWFyICA4IDIwMjQgQW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNzQHJlZGhhdC5jb20+CiAtIFJlZHVj ZSBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoIGJ5IHJlbW92aW5nIHNvbWUgdW5uZWNlc3Nh cnkKICAgY2FzdHMgYWRkZWQgdG8gYmZkLyBzb3VyY2UgZmlsZXMuCg==