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: Michal Kolar To: git-commits@fedoraproject.org Subject: [rpms/gdb] rawhide: Rebase to FSF GDB 17.2. Date: Thu, 02 Jul 2026 18:09:44 GMT Message-ID: <178301578425.1.5343792764869868915.rpms-gdb-2ce014e86e7d@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: rawhide X-Git-Rev: 2ce014e86e7d598130265ed3521f10cfe8ab74e5 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IHJhd2hpZGUKICAgICAgICAgICAg Q29tbWl0IDogMmNlMDE0ZTg2ZTdkNTk4MTMwMjY1ZWQzNTIxZjEwY2ZlOGFiNzRlNQogICAgICAg ICAgICBBdXRob3IgOiBNaWNoYWwgS29sYXIgPG1rb2xhckByZWRoYXQuY29tPgogICAgICAgICAg ICBEYXRlICAgOiAyMDI2LTA2LTIzVDA5OjU4OjE2KzAwOjAwCiAgICAgICAgICAgIFN0YXRzICA6 ICsyOTg4Ly0xNjQgaW4gMTEgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczovL3Ny Yy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzJjZTAxNGU4NmU3ZDU5ODEzMDI2NWVkMzUy MWYxMGNmZThhYjc0ZTU/YnJhbmNoPXJhd2hpZGUKCiAgICAgICAgICAgIExvZzoKICAgICAgICAg ICAgUmViYXNlIHRvIEZTRiBHREIgMTcuMi4KCkRlbGV0ZWQ6IGdkYi1yaGJ6MjQzNTk1MC1za2lw LXJldmVydC5wYXRjaAoKQmFja3BvcnQgZTQ5MmZiMjJiNzAsIGdkYjogYmFja3BvcnQgREFQIGNv cmUgZmlsZSBzdXBwb3J0CgpSZXBsYWNlIG1hbnVhbCwgbXVsdGktZmlsZSBwYXRjaCBpbmNsdXNp b24gd2l0aCBtb2Rlcm4gYXV0b3NldHVwCgpBZGQgcnBtaW5zcGVjdC55YW1sIHRvIGRlZmluZSBw YWNrYWdlLXNwZWNpZmljIHRlc3RpbmcgcG9saWN5CgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25v cmUgYi8uZ2l0aWdub3JlCmluZGV4IDVjMThiNjUuLmU2OWE1ZmIgMTAwNjQ0Ci0tLSBhLy5naXRp Z25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMSw1ICsxLDQgQEAKIC9uZXctZmVkb3JhLXJlbGVh c2UKIC9nZGItbGlic3RkYysrLXYzLXB5dGhvbi04LjEuMS0yMDE4MDYyNi50YXIueHoKIC92Mi4w LjUudGFyLmd6Ci0vZ2RiLTE2LjMudGFyLnh6Ci0vZ2RiLTE3LjEudGFyLnh6CisvZ2RiLTE3LjIu dGFyLnh6CgpkaWZmIC0tZ2l0IGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUgYi9fZ2RiLnNwZWMu UGF0Y2guaW5jbHVkZQppbmRleCAyZDRkYWIxLi5kOWY3ZTA5IDEwMDY0NAotLS0gYS9fZ2RiLnNw ZWMuUGF0Y2guaW5jbHVkZQorKysgYi9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQpAQCAtNDQsMzYg KzQ0LDMyIEBAIFBhdGNoMDA3OiBnZGItcmhiejI0MDM1ODAtbWlzcGxhY2VkLXN5bXRhYnMucGF0 Y2gKICMgVGhlc2UgYmFja3BvcnRzIHdpbGwgYWxsIGRyb3Agb3V0IHdoZW4gcmViYXNpbmcgb250 byBHREIgMTguCiBQYXRjaDAwODogZ2RiLWluZGV4LWdlbmVyYXRpb24tZml4ZXMucGF0Y2gKIAot IyBCYWNrcG9ydCBvZiB1cHN0cmVhbSBjb21taXQgZjA4ZmZiYmYyNjkxYmFkMmQ1ZGY2NjBlZTY0 NDY0NzY4Nzc3NWYwYwotIyBDYW4gYmUgZHJvcHBlZCBvbiBhIHJlYmFzZSB0byBnZGIgMTcuMiBv ciAxOC4xCi1QYXRjaDAwOTogZ2RiLXJoYnoyNDM1OTUwLXNraXAtcmV2ZXJ0LnBhdGNoCi0KICMg QmFja3BvcnQgb2YgdXBzdHJlYW0gY29tbWl0IGMxZGEwMTM5MTVlIGZyb20gS2V2aW4gQnVldHRu ZXIKICMgKFJIQlogMjQxMzQwNSkuCi1QYXRjaDAxMDogZ2RiLXJoYnoyNDEzNDA1LWdjb3JlLXVu cmVhZGFibGUtcGFnZXMucGF0Y2gKK1BhdGNoMDA5OiBnZGItcmhiejI0MTM0MDUtZ2NvcmUtdW5y ZWFkYWJsZS1wYWdlcy5wYXRjaAogCiAjIEJhY2twb3J0IG9mIHVwc3RyZWFtIGNvbW1pdCBkMmNj MTZjZDdmYyBmcm9tIEphbiBWcmFueSBmaXhpbmcKICMgRkFJTHMgaW4gZ2RiLmJhc2UvZmlsZWlv LmV4cCBjYXVzZWQgYnkgbWFjcm8gZXhwYW5zaW9uIG9mIHBhdGgKICMgY29tcG9uZW50cyAoZS5n LiAibGludXgiKSBpbiBPVVRESVIuCi1QYXRjaDAxMTogZ2RiLWZpbGVpby10ZXN0LWZpeGVzLnBh dGNoCitQYXRjaDAxMDogZ2RiLWZpbGVpby10ZXN0LWZpeGVzLnBhdGNoCiAKICMgRml4IHVzZSBv ZiBkZXByZWNhdGVkIHRyYWNlIHZhcmlhYmxlIHN1YmNvbW1hbmQKICMgKFRvbSBkZSBWcmllcykK LVBhdGNoMDEyOiBnZGItZml4LXRlc3RzdWl0ZS1uZXdlci10Y2wucGF0Y2gKK1BhdGNoMDExOiBn ZGItZml4LXRlc3RzdWl0ZS1uZXdlci10Y2wucGF0Y2gKIAogIyBCYWNrcG9ydCB1cHN0cmVhbSBj b21taXQgOGJkMDhlZTkyYzQgdG8gYWRkcmVzcyByaGJ6MjM2NjQ2MS4gIFRoaXMKICMgY29tbWl0 IHdpbGwgZHJvcCBvdXQgd2l0aCBHREIgMTguCi1QYXRjaDAxMzogZ2RiLXJoYnoyMzY2NDYxLW1p c3NpbmctdGhyZWFkLnBhdGNoCitQYXRjaDAxMjogZ2RiLXJoYnoyMzY2NDYxLW1pc3NpbmctdGhy ZWFkLnBhdGNoCiAKICMgQmFja3BvcnQgdXBzdHJlYW0gY29tbWl0IGNkMjg5ZGYwNjhlIHRvIGFk ZHJlc3MgcmhiejIzNjY0NjEuICBUaGlzCiAjIGNvbW1pdCB3aWxsIGRyb3Agb3V0IHdpdGggR0RC IDE4LgotUGF0Y2gwMTQ6IGdkYi1yaGJ6MjM2NjQ2MS1iYWQtc29saWItZW50cnktYWRkci5wYXRj aAorUGF0Y2gwMTM6IGdkYi1yaGJ6MjM2NjQ2MS1iYWQtc29saWItZW50cnktYWRkci5wYXRjaAog CiAjIEJhY2twb3J0IHRoZSBmb2xsb3dpbmcgdXBzdHJlYW0gY29tbWl0cyBpbiBvcmRlciB0byBh ZGRyZXNzIFJIQloKICMgMjQ2NzI1MTogZDk4MDMxN2M3ZjEsIDk1OGQwNjI2MmE3LCA3ZDFkNzM4 NjU2MSwgODkxNWRlMDg4M2MsCiAjIDhmNjVhYjdiNzFmLiAgVGhlc2UgY29tbWl0cyB3aWxsIGFs bCBkcm9wIG91dCB3aGVuIHdlIHJlYmFzZSB0byBHREIKICMgMTguCi1QYXRjaDAxNTogZ2RiLXJo YnoyNDY3MjUxLWNvbXB1dGVkLWxvY2F0aW9uLXN5bnRoZXRpYy1wb2ludGVycy5wYXRjaAorUGF0 Y2gwMTQ6IGdkYi1yaGJ6MjQ2NzI1MS1jb21wdXRlZC1sb2NhdGlvbi1zeW50aGV0aWMtcG9pbnRl cnMucGF0Y2gKIAogIyBGaXggRUlMU0VRIHByb2JsZW1zIGZvciBVVEY4IHJlbGF0ZWQgdGVzdHMg d2hlbiB1c2luZyBleHBlY3QKICMgZW5hYmxlZCB3aXRoIFRjbCA5IGFuZCBmdWxsIHNldCBvZiBU Y2wgOSBjb21wYXRpYmlsaXR5IGZpeGVzCkBAIC04NCw1ICs4MCw5IEBAIFBhdGNoMDE1OiBnZGIt cmhiejI0NjcyNTEtY29tcHV0ZWQtbG9jYXRpb24tc3ludGhldGljLXBvaW50ZXJzLnBhdGNoCiAj IEZvciBpdHMgc3RhdHVzLCBzZWU6CiAjCiAjIGh0dHBzOi8vaW5ib3guc291cmNld2FyZS5vcmcv Z2RiLXBhdGNoZXMvMjAyNjA1MjYxOTI3MDEuMzgzNTI2Mi0yLWtldmluYkByZWRoYXQuY29tL1Qv I3UKLVBhdGNoMDE2OiBnZGItdGNsOS11dGY4LWVuY29kaW5nLWZpeC5wYXRjaAorUGF0Y2gwMTU6 IGdkYi10Y2w5LXV0ZjgtZW5jb2RpbmctZml4LnBhdGNoCisKKyMgQmFja3BvcnQgb2YgdXBzdHJl YW0gY29tbWl0IGU0OTJmYjIyYjcwCisjIGdkYjogYmFja3BvcnQgREFQIGNvcmUgZmlsZSBzdXBw b3J0CitQYXRjaDAxNjogZ2RiLWJhY2twb3J0LWRhcC1jb3JlLWZpbGUtc3VwcG9ydC5wYXRjaAog CgpkaWZmIC0tZ2l0IGEvX2dpdF91cHN0cmVhbV9jb21taXQgYi9fZ2l0X3Vwc3RyZWFtX2NvbW1p dAppbmRleCA0NTJjYTUzLi5kYTRjOTJlIDEwMDY0NAotLS0gYS9fZ2l0X3Vwc3RyZWFtX2NvbW1p dAorKysgYi9fZ2l0X3Vwc3RyZWFtX2NvbW1pdApAQCAtMSArMSBAQAotNjMxYTQ5YzQ1MmE0YTQ1 NmRkOTg4OWQxNzI1NDFlYTc4OWY4YmNhZQorN2FkZjlmYTZiMWNjYjNjNzBmODZjYjYzMDM2OGI5 ZDNkZmZjZjNhYQoKZGlmZiAtLWdpdCBhL19wYXRjaF9vcmRlciBiL19wYXRjaF9vcmRlcgppbmRl eCA2NjEwOTk1Li5jNmRkNDg3IDEwMDY0NAotLS0gYS9fcGF0Y2hfb3JkZXIKKysrIGIvX3BhdGNo X29yZGVyCkBAIC02LDcgKzYsNiBAQCBnZGItcmhiejI0MjQzMjUtYzIzLW1vcmUtY29uc3QtZml4 ZXMucGF0Y2gKIGdkYi1yaGJ6MjQyNDMyNS1jKysyMC1pbXBsaWNpdC1sYW1iZGEtY2FwdHVyZS5w YXRjaAogZ2RiLXJoYnoyNDAzNTgwLW1pc3BsYWNlZC1zeW10YWJzLnBhdGNoCiBnZGItaW5kZXgt Z2VuZXJhdGlvbi1maXhlcy5wYXRjaAotZ2RiLXJoYnoyNDM1OTUwLXNraXAtcmV2ZXJ0LnBhdGNo CiBnZGItcmhiejI0MTM0MDUtZ2NvcmUtdW5yZWFkYWJsZS1wYWdlcy5wYXRjaAogZ2RiLWZpbGVp by10ZXN0LWZpeGVzLnBhdGNoCiBnZGItZml4LXRlc3RzdWl0ZS1uZXdlci10Y2wucGF0Y2gKQEAg LTE0LDMgKzEzLDQgQEAgZ2RiLXJoYnoyMzY2NDYxLW1pc3NpbmctdGhyZWFkLnBhdGNoCiBnZGIt cmhiejIzNjY0NjEtYmFkLXNvbGliLWVudHJ5LWFkZHIucGF0Y2gKIGdkYi1yaGJ6MjQ2NzI1MS1j b21wdXRlZC1sb2NhdGlvbi1zeW50aGV0aWMtcG9pbnRlcnMucGF0Y2gKIGdkYi10Y2w5LXV0Zjgt ZW5jb2RpbmctZml4LnBhdGNoCitnZGItYmFja3BvcnQtZGFwLWNvcmUtZmlsZS1zdXBwb3J0LnBh dGNoCgpkaWZmIC0tZ2l0IGEvZ2RiLWJhY2twb3J0LWRhcC1jb3JlLWZpbGUtc3VwcG9ydC5wYXRj aCBiL2dkYi1iYWNrcG9ydC1kYXAtY29yZS1maWxlLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYzODAzMQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1i YWNrcG9ydC1kYXAtY29yZS1maWxlLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwyOTU2IEBACitG cm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFs IEtvbGFyIDxta29sYXJAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMjMgSnVuIDIwMjYgMDk6Mzc6 NDUgKzAwMDAKK1N1YmplY3Q6IGdkYi1iYWNrcG9ydC1kYXAtY29yZS1maWxlLXN1cHBvcnQucGF0 Y2gKKworOzsgQmFja3BvcnQgb2YgdXBzdHJlYW0gY29tbWl0IGU0OTJmYjIyYjcwCis7OyBnZGI6 IGJhY2twb3J0IERBUCBjb3JlIGZpbGUgc3VwcG9ydAorCitCYWNrLXBvcnQgdGhlIGZvbGxvd2lu ZyB1cHN0cmVhbSBjb21taXRzIHRvIGVuYWJsZSBjb3JlIGZpbGUgc3VwcG9ydAord2l0aGluIEdE QidzIERBUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbjoKKworICAqIDBhNDgxYmI5YTZkIGdkYi9k YXA6IGFkZCBzdXBwb3J0IGZvciBvcGVuaW5nIGNvcmUgZmlsZXMKKyAgKiA0ZWNhYWMzOWMyNiBn ZGIvcHl0aG9uOiBuZXcgZXZlbnRzLmNvcmVmaWxlX2NoYW5nZWQgZXZlbnQKKyAgKiBlY2FjNDJh ZjczNSBBbHdheXMgcHJvcGFnYXRlIGV4Y2VwdGlvbnMgaW4gREFQCisgICogZmM4ZTVhNTY1YjMg Z2RiOiBtYWtlIHN0cnVjdHVyZWQgY29yZSBmaWxlIG1hcHBpbmdzIHByb2Nlc3NpbmcgZ2xvYmFs CisgICogZjY5YzFkMDNjNGQgZ2RiL3B5dGhvbjogYWRkIENvcmVmaWxlLm1hcHBlZF9maWxlcyBt ZXRob2QKKyAgKiA3ODYyNTU0YmNmNCBnZGIvcHl0aG9uOiBpbnRyb2R1Y2UgZ2RiLkNvcmVmaWxl IEFQSQorCitUaGUgY29tbWl0IG1lc3NhZ2VzIGZvciBlYWNoIGluZGl2aWR1YWwgY29tbWl0IGZv bGxvdzoKKworLS0tIDBhNDgxYmI5YTZkOgorCitnZGIvZGFwOiBhZGQgc3VwcG9ydCBmb3Igb3Bl bmluZyBjb3JlIGZpbGVzCisKK1RoaXMgcGF0Y2ggYWRkcyBjb3JlIGZpbGUgc3VwcG9ydCB0byBH REIncyBEQVAgaW50ZXJmYWNlLgorCitDb3JlIGZpbGVzIGFyZSBzdXBwb3J0ZWQgYXMgYSBHREIg c3BlY2lmaWMgYXJndW1lbnQgdG8gJ2F0dGFjaCcsIHRoZQorbmV3IGFyZ3VtZW50IGlzICdjb3Jl RmlsZScsIHRoZSBuYW1lIG9mIHRoZSBjb3JlIGZpbGUgdG8gZGVidWcuCisKK0kgdGhpbmsgaGFu ZGxpbmcgY29yZSBmaWxlcyB2aWEgYXR0YWNoIG1ha2VzIHRoZSBtb3N0IHNlbnNlOyBhdHRhY2gg aXMKK2ZvciBjb25uZWN0aW5nIHRvIGV4aXN0aW5nIHByb2Nlc3NlcywgYnV0IHRoZXNlIHRhcmdl dHMgYXJlICh1c3VhbGx5KQorc3RvcHBlZCBhcyBzb29uIGFzIEdEQiBhdHRhY2hlcywgYW5kIHRo YXQncyB3aGF0IGEgY29yZSBmaWxlIGxvb2tzCitsaWtlLCBhIHRhcmdldCB0aGF0IHdhcyBydW5u aW5nLCBidXQgaXMgbm93IHN0b3BwZWQuICBJdCBqdXN0IGhhcHBlbnMKK3RoYXQgY29yZSBmaWxl IHRhcmdldHMgYXJlIHNwZWNpYWwgaW4gdGhhdCB0aGUgdGFyZ2V0IGNhbm5vdCBiZQorcmVzdW1l ZCBhZ2Fpbiwgbm9yIGNhbiB0aGUgdXNlciBtb2RpZnkgdGhlIHByb2dyYW0gc3RhdGUgKGUuZy4g d3JpdGUKK3RvIG1lbW9yeSBvciByZWdpc3RlcnMpLgorCitQcmlvciB0byBzdGFydGluZyB0aGlz IHdvcmsgSSB0b29rIGEgbG9vayBhdCB3aGF0IGxsZGIgZG9lcy4gIFRoZQorZG9jdW1lbnRhdGlv biBpcyBub3Qgc3VwZXIgY2xlYXIsIGJ1dCB0aGlzIHBhZ2Ugc2VlbXMgdG8gaW5kaWNhdGUgdGhh dAorbGxkYiBtaWdodCBhbHNvIHVzZSB0aGUgJ2NvcmVGaWxlJyBhcmd1bWVudCB0byAnYXR0YWNo JzoKKworICBodHRwczovL2xsZGIubGx2bS5vcmcvdXNlL2xsZGJkYXAuaHRtbCNjb25maWd1cmF0 aW9uLXNldHRpbmdzLXJlZmVyZW5jZQorCitMaWtlIEkgc2FpZCwgaXQncyBub3QgdmVyeSBjbGVh ciwgYnV0IHNlYXJjaCBmb3IgImNvcmVGaWxlIiBhbmQgeW91J2xsCitzZWUgaXQgbWVudGlvbmVk LCBqdXN0IG9uY2UsIHVuZGVyIHRoZSAiYXR0YWNoIiBoZWFkZXIuICBJbiBvcmRlciB0bworYmUg Y29tcGF0aWJsZSB3aXRoIGxsZGIgSSB1c2VkIHRoZSBzYW1lIGFyZ3VtZW50IG5hbWUgd2l0aCB0 aGUgc2FtZQorY2FwaXRhbGlzYXRpb24uCisKK1RoZSBuZXcgYXJndW1lbnQgaXMgYWRkZWQgdG8g dGhlIGRvY3VtZW50YXRpb24gYW5kIG1lbnRpb25lZCBpbiBORVdTLgorCitJIGhhZCB0byBtYWtl IHNvbWUgY2hhbmdlcyB0byB0ZXN0c3VpdGUvbGliL2RhcC1zdXBwb3J0LmV4cCB0byBzdXBwb3J0 Cit0aGlzIG5ldyBmZWF0dXJlLiAgVGhlcmUncyBhIG5ldyBkYXBfY29yZWZpbGUgcHJvYyB0byBo YW5kbGUgc2V0dGluZwordXAgdGhlIGluaXRpYWwgY29ubmVjdGlvbi4gIFRoaXMgc2VlbWVkIGNs ZWFuZXIgdGhhdCBvdmVybG9hZGluZworZGFwX2F0dGFjaCwgZXZlbiB0aG91Z2ggdW5kZXIgdGhl IGhvb2QgaXQgaXMgc3RpbGwgYW4gJ2F0dGFjaCcgcmVxdWVzdAordGhhdCBnZXRzIHNlbnQuCisK K1RoZSBuZXcgdGVzdCB0cmllcyB0byB3cml0ZSB0byBtZW1vcnkgYW5kIHJlZ2lzdGVycyB3aXRo IHRoZSBjb3JlIGZpbGUKK3RhcmdldCBpbiBwbGFjZSwgbmVpdGhlciBvZiB0aGVzZSByZXF1ZXN0 cyBzdWNjZWVkLCB3aGljaCBpcyB3aGF0IHdlCit3YW50LCBidXQgdGhlIGV4Y2VwdGlvbnMgYXJl IGxvZ2dlZCBpbnRvIHRoZSBkYXAgbG9nIGZpbGUuICBUaGUKK2RhcF9zaHV0ZG93biBwcm9jIGNh bGxzIGRhcF9jaGVja19sb2dfZmlsZSB0byBjaGVjayB0aGUgbG9nIGZvcgorZXhjZXB0aW9ucywg YW5kIHRoZXNlIHR3byBleGNlcHRpb25zIGFyZSBzcG90dGVkIGFuZCB0cmlnZ2VyIGEgRkFJTC4K K1RvIGF2b2lkIHRoaXMgSSd2ZSBhZGRlZCBhIG5ldyAiZXhwZWN0ZWRfZXhjZXB0aW9uX2NvdW50 IiBhcmd1bWVudAorZm9yIGRhcF9zaHV0ZG93bi4gIE5vdyB3ZSBjaGVjayB0aGF0IHdlIHNlZSB0 aGUgZXhwZWN0ZWQgbnVtYmVyIG9mCitleGNlcHRpb25zLiAgV2UgZG9uJ3QgY2hlY2sgZm9yIHRo ZSBzcGVjaWZpYyBleGNlcHRpb24gdHlwZXMgcmlnaHQKK25vdywgYnV0IGFzIHRoZSB0ZXN0IGlz IGFscmVhZHkgY2hlY2tpbmcgdGhhdCB0aGUgZXhwZWN0ZWQgcmVxdWVzdHMKK2ZhaWwsIEkgdGhp bmsgd2UncmUgT0suCisKK0FwcHJvdmVkLUJ5OiBUb20gVHJvbWV5IDx0b21AdHJvbWV5LmNvbT4K KworLS0tICA0ZWNhYWMzOWMyNjoKKworZ2RiL3B5dGhvbjogbmV3IGV2ZW50cy5jb3JlZmlsZV9j aGFuZ2VkIGV2ZW50CisKK0FkZCBhIG5ldyBQeXRob24gZXZlbnQgcmVnaXN0cnksIGV2ZW50cy5j b3JlZmlsZV9jaGFuZ2VkLiAgVGhpcyBldmVudAoraXMgZW1pdHRlZCBlYWNoIHRpbWUgdGhlIGNv cmVmaWxlIHdpdGhpbiBhbiBpbmZlcmlvciBjaGFuZ2VzLgorCitUaGUgZXZlbnQgb2JqZWN0IGhh cyBhIHNpbmdsZSAnaW5mZXJpb3InIGF0dHJpYnV0ZSB3aGljaCBpcyB0aGUKK2dkYi5JbmZlcmlv ciBvYmplY3QgZm9yIHdoaWNoIHRoZSBjb3JlIGZpbGUgY2hhbmdlZC4gIFRoZSB1c2VyIGNhbgor dGhlbiBpbnNwZWN0IEluZmVyaW9yLmNvcmVmaWxlIHRvIHNlZSBkZXRhaWxzIGFib3V0IHRoZSBu ZXcgY29yZSBmaWxlLAorb3IgdGhpcyB3aWxsIGJlIE5vbmUgaWYgdGhlIGNvcmUgZmlsZSB3YXMg cmVtb3ZlZCBmcm9tIHRoZSBpbmZlcmlvci4KKworSSd2ZSB1cGRhdGVkIHRoZSBleGlzdGluZyB0 ZXN0IHRvIGNvdmVyIHRoaXMgbmV3IGV2ZW50LgorCitUaGUgbmV3IHRlc3QgY292ZXJzIGJvdGgg dGhlIGNvcmVmaWxlX2NoYW5nZWQgZXZlbnQsIGJ1dCBhbHNvIG1vbml0b3JzCit0aGUgZXhpdGVk IGV2ZW50LiAgVGhpcyB0aWVzIGludG8gdGhlIHdvcmsgZG9uZSBpbiB0aGUgcHJldmlvdXMKK2Nv bW1pdCB3aGVyZSB3ZSB1c2Ugd2hldGhlciB0aGUgaW5mZXJpb3IgaGFzIGV4aXRlZCBvciBub3Qg YXMgYSBndWFyZAorZm9yIHdoZXRoZXIgY29yZV90YXJnZXQ6OmV4aXRfY29yZV9maWxlX2luZmVy aW9yIHNob3VsZCBiZSBjYWxsZWQuCitVbmxvYWRpbmcgYSBjb3JlIGZpbGUgc2hvdWxkIHJlc3Vs dCBpbiBhIHNpbmdsZSBjb3JlZmlsZV9jaGFuZ2VkIGV2ZW50CithbmQgYSBzaW5nbGUgZXhpdGVk IGV2ZW50LgorCitSZXZpZXdlZC1CeTogRWxpIFphcmV0c2tpaSA8ZWxpekBnbnUub3JnPgorCist LS0gZWNhYzQyYWY3MzU6CisKK0Fsd2F5cyBwcm9wYWdhdGUgZXhjZXB0aW9ucyBpbiBEQVAKKwor VGhpcyBjaGFuZ2VzIHRoZSBEQVAgZXhlY19hbmRfbG9nIGZ1bmN0aW9uIHRvIGFsd2F5cyB0cmFu c2Zvcm0gYW4KK2V4Y2VwdGlvbiBpbnRvIGEgREFQRXhjZXB0aW9uIGFuZCBwcm9wYWdhdGUgaXQu CisKK0FzIHRoZSBidWcgcG9pbnRzIG91dCwgd2UgaGF2ZW4ndCBhbHdheXMgd3JhcHBlZCBjYWxs cyB3aGVuCithcHByb3ByaWF0ZS4gIEkgdGhpbmsgaXQncyBiZXR0ZXIgdG8gY2F1c2UgdGhlIHJl cXVlc3QgdG8gZmFpbCBieQorZGVmYXVsdDsgaWYgYW55IHNwb3QgdHJ1bHkgbmVlZHMgdG8gaWdu b3JlIGVycm9ycywgdGhhdCBpcyByZWFkaWx5Citkb25lIGF0IHRoZSBwb2ludCBvZiBjYWxsLgor CitCdWc6IGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTMz MzQ2CisKKy0tLSBmYzhlNWE1NjViMzoKKworZ2RiOiBtYWtlIHN0cnVjdHVyZWQgY29yZSBmaWxl IG1hcHBpbmdzIHByb2Nlc3NpbmcgZ2xvYmFsCisKK0luIGNvcmVsb3cuYywgd2l0aGluIGNvcmVf dGFyZ2V0OjpidWlsZF9maWxlX21hcHBpbmdzLCB3ZSBoYXZlIGNvZGUKK3RoYXQgd3JhcHMgYXJv dW5kIGEgY2FsbCB0byBnZGJhcmNoX3JlYWRfY29yZV9maWxlX21hcHBpbmdzIGFuZAorcHJvdmlk ZXMgbW9yZSBzdHJ1Y3R1cmUgdG8gdGhlIHJlc3VsdHMuCisKK1NwZWNpZmljYWxseSwgZ2RiYXJj aF9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyBjYWxscyBhIGNhbGxiYWNrIG9uY2UKK2ZvciBldmVy eSByZWdpb24gb2YgZXZlcnkgbWFwcGVkIGZpbGUuICBUaGUgd3JhcHBlciBjb2RlIGdyb3VwcyBh bGwgb2YKK3RoZSBtYXBwaW5ncyBmb3Igb25lIGZpbGUgaW50byBhbiBpbnN0YW5jZSBvZiAnc3Ry dWN0IG1hcHBlZF9maWxlJywKK3RoaXMgYWxsb3dzIGFsbCBvZiB0aGUgbWFwcGVkIHJlZ2lvbnMg dG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZQorYnVpbGQtaWQgYW5kIGZpbGVuYW1lIG9mIGEgZmls ZS4KKworSW4gdGhlIG5leHQgY29tbWl0IEkgcGxhbiB0byBtYWtlIHRoaXMgaW5mb3JtYXRpb24g YXZhaWxhYmxlIHZpYSB0aGUKK1B5dGhvbiBBUEksIGFuZCBzbyBJIG5lZWQgdG8gYWxsb3cgYWNj ZXNzIHRvIHRoaXMgc3RydWN0dXJlZCB3cmFwcGluZworb3V0c2lkZSBvZiBjb3JlbG93LmMuCisK K1RoaXMgY29tbWl0IHJlbmFtZXMgJ3N0cnVjdCBtYXBwZWRfZmlsZScgdG8gJ3N0cnVjdCBjb3Jl X21hcHBlZF9maWxlJworYW5kIG1vdmVzIHRoZSBzdHJ1Y3QgaW50byBnZGJjb3JlLmguICBUaGVu IGEgbmV3IGdsb2JhbCBmdW5jdGlvbgorZ2RiX3JlYWRfY29yZV9maWxlX21hcHBpbmdzIGlzIGNy ZWF0ZWQgaW50byB3aGljaCBJIG1vdmUgdGhlIGNvZGUgdG8KK2J1aWxkIHRoZSBzdHJ1Y3R1cmVk IGRhdGEuCisKK1RoZW4gY29yZWxvdy5jIGlzIHVwZGF0ZWQgdG8gY2FsbCBnZGJfcmVhZF9jb3Jl X2ZpbGVfbWFwcGluZ3MuCisKK1RoaXMgY29tbWl0IGRvZXMgbm90IGV4dGVuZCB0aGUgUHl0aG9u IEFQSSwgdGhhdCBpcyBmb3IgdGhlIG5leHQKK2NvbW1pdC4KKworVGhlcmUgc2hvdWxkIGJlIG5v IHVzZXIgdmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29tbWl0LgorCitCdWc6IGh0dHBzOi8v c291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTMyODQ0CisKK0FwcHJvdmVk LUJ5OiBUb20gVHJvbWV5IDx0b21AdHJvbWV5LmNvbT4KKworLS0tIGY2OWMxZDAzYzRkOgorCitn ZGIvcHl0aG9uOiBhZGQgQ29yZWZpbGUubWFwcGVkX2ZpbGVzIG1ldGhvZAorCitBZGQgYSBuZXcg Q29yZWZpbGUubWFwcGVkX2ZpbGVzIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgbGlzdCBvZgorZ2Ri LkNvcmVmaWxlTWFwcGVkRmlsZSBvYmplY3RzLgorCitFYWNoIGdkYi5Db3JlZmlsZU1hcHBlZEZp bGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgd2FzIG1hcHBlZAoraW50byB0aGUgcHJv Y2VzcyB3aGVuIHRoZSBjb3JlIGZpbGUgd2FzIGNyZWF0ZWQuCisKK0EgZ2RiLkNvcmVmaWxlTWFw cGVkRmlsZSBoYXMgYXR0cmlidXRlczoKKworICArIGZpbGVuYW1lICAtLSBBIHN0cmluZywgdGhl IG5hbWUgb2YgdGhlIG1hcHBlZCBmaWxlLgorICArIGJ1aWxkX2lkIC0tIEEgc3RyaW5nIG9yIE5v bmUsIHRoZSBidWlsZC1pZCBvZiB0aGUgbWFwcGVkIGZpbGUgaWYKKyAgICAgICAgICAgICAgICBH REIgY291bGQgZmluZCBpdCAoTm9uZSBpZiBub3QpLgorICArIGlzX21haW5fZXhlY3V0YWJsZSAt LSBBIGJvb2xlYW4sIFRydWUgaWYgdGhpcyBtYXBwaW5nIGlzIHRoZSBtYWluCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUuCisgICsgcmVnaW9ucyAtLSBBIGxpc3QgY29udGFp bmluZyB0aGUgcmVnaW9ucyBvZiB0aGlzIGZpbGUgdGhhdCB3ZXJlCisgICAgICAgICAgICAgICBt YXBwZWQgaW50byB0aGUgcHJvY2Vzcy4KKworVGhlICdyZWdpb25zJyBsaXN0IGlzIGEgbGlzdCBv ZiBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uIG9iamVjdHMsCitlYWNoIG9mIHRoZXNlIG9i amVjdHMgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworICArIHN0YXJ0IC0tIHRoZSBz dGFydCBhZGRyZXNzIHdpdGhpbiB0aGUgaW5mZXJpb3IuCisgICsgZW5kIC0tIHRoZSBlbmQgYWRk cmVzcyB3aXRoaW4gdGhlIGluZmVyaW9yLgorICArIGZpbGVfb2Zmc2V0IC0tIHRoZSBvZmZzZXQg d2l0aGluIHRoZSBtYXBwZWQgZmlsZSBmb3IgdGhpcyBtYXBwaW5nLgorCitUaGVyZSBhcmUgZG9j cyBhbmQgdGVzdHMuCisKK0J1ZzogaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93 X2J1Zy5jZ2k/aWQ9MzI4NDQKKworQXBwcm92ZWQtQnk6IFRvbSBUcm9tZXkgPHRvbUB0cm9tZXku Y29tPgorCistLS0gNzg2MjU1NGJjZjQ6CisKK2dkYi9weXRob246IGludHJvZHVjZSBnZGIuQ29y ZWZpbGUgQVBJCisKK1RoaXMgY29tbWl0IHN0YXJ0cyBhZGRpbmcgc29tZSBjb3JlIGZpbGUgcmVs YXRlZCBmZWF0dXJlcyB0byB0aGUKK1B5dGhvbiBBUEkuCisKK0luIHRoaXMgaW5pdGlhbCBjb21t aXQgSSd2ZSB0cmllZCB0byBrZWVwIHRoZSBjaGFuZ2VzIGFzIHNtYWxsIGFzCitwb3NzaWJsZSBm b3IgZWFzeSByZXZpZXcuCisKK1RoZXJlJ3MgYSBuZXcgUHl0aG9uIGNsYXNzIGdkYi5Db3JlZmls ZSwgd2hpY2ggcmVwcmVzZW50cyBhIGxvYWRlZAorY29yZSBmaWxlLiAgVGhpcyBBUEkgZG9lc24n dCBhbGxvdyB0aGUgdXNlciB0byBjcmVhdGUgdGhlaXIgb3duCitnZGIuQ29yZWZpbGUgb2JqZWN0 cywgYSBjb3JlIGZpbGUgbXVzdCBiZSBsb2FkZWQgdXNpbmcgdGhlICdjb3JlLWZpbGUnCitjb21t YW5kLCB0aGVuIGEgZ2RiLkNvcmVmaWxlIG9iamVjdCBjYW4gYmUgb2J0YWluZWQgYnkgcXVlcnlp bmcgdGhlCitpbmZlcmlvciBpbiB3aGljaCB0aGUgY29yZSBmaWxlIHdhcyBsb2FkZWQuCisKK1Ro ZXJlJ3MgYSBuZXcgYXR0cmlidXRlIGdkYi5JbmZlcmlvci5jb3JlZmlsZSwgdGhpcyBpcyBOb25l IHdoZW4gbm8KK2NvcmUgZmlsZSBpcyBsb2FkZWQsIG9yIGNvbnRhaW5zIGEgZ2RiLkNvcmVmaWxl IG9iamVjdCBpZiBhIGNvcmUgZmlsZQoraGFzIGJlZW4gbG9hZGVkLgorCitDdXJyZW50bHksIHRo ZSBnZGIuQ29yZWZpbGUgb2JqZWN0IGhhcyBvbmUgYXR0cmlidXRlLCBhbmQgb25lIG1ldGhvZCwK K3RoZXNlIGFyZToKKworICBnZGIuQ29yZWZpbGUuZmlsZW5hbWUgLS0gdGhlIGZpbGUgbmFtZSBv ZiB0aGUgbG9hZGVkIGNvcmUgZmlsZS4KKworICBnZGIuQ29yZWZpbGUuaXNfdmFsaWQoKSAtLSBp bmRpY2F0ZXMgaWYgYSBnZGIuQ29yZWZpbGUgb2JqZWN0IGlzCisgIHZhbGlkIG9yIG5vdC4gIFNl ZSBub3RlcyBiZWxvdy4KKworQSBnZGIuQ29yZWZpbGUgb2JqZWN0IGlzIG9ubHkgdmFsaWQgd2hp bGUgdGhlIGNvcnJlc3BvbmRpbmcgY29yZSBmaWxlCitpcyBsb2FkZWQgaW50byBhbiBpbmZlcmlv ci4gIFVubG9hZGluZyB0aGUgY29yZSBmaWxlLCBvciBsb2FkaW5nIGEKK2RpZmZlcmVudCBvbmUg d2lsbCBjYXVzZSBhIGdkYi5Db3JlZmlsZSBvYmplY3QgdG8gYmVjb21lIGludmFsaWQuICBGb3IK K2V4YW1wbGU6CisKKyAgKGdkYikgY29yZS1maWxlIC90bXAvY29yZS41NDMxMworICAuLi4gc25p cCAuLi4KKyAgKGdkYikgcHl0aG9uIGNvcmU9Z2RiLnNlbGVjdGVkX2luZmVyaW9yKCkuY29yZWZp bGUKKyAgKGdkYikgcHl0aG9uIHByaW50KGNvcmUpCisgIDxnZGIuQ29yZWZpbGUgaW5mZXJpb3I9 MSBmaWxlbmFtZT0nL3RtcC9jb3JlLjU0MzEzJz4KKyAgKGdkYikgcHl0aG9uIHByaW50KGNvcmUu aXNfdmFsaWQoKSkKKyAgVHJ1ZQorICAoZ2RiKSBjb3JlLWZpbGUKKyAgTm8gY29yZSBmaWxlIG5v dy4KKyAgKGdkYikgcHl0aG9uIHByaW50KGNvcmUpCisgIDxnZGIuQ29yZWZpbGUgKGludmFsaWQp PgorICAoZ2RiKSBweXRob24gcHJpbnQoY29yZS5pc192YWxpZCgpKQorICBGYWxzZQorICAoZ2Ri KQorCitJbiBvcmRlciB0byB0cmFjayBjaGFuZ2VzIHRvIHRoZSBjb3JlIGZpbGUsIHRoZXJlIGlz IGEgbmV3IG9ic2VydmFibGUKKydjb3JlX2ZpbGVfY2hhbmdlZCcsIHdoaWNoIGFjY291bnRzIGZv ciB0aGUgY2hhbmdlcyBpbiBjb3JlbG93LmMsCitvYnNlcnZhYmxlLGMsIGFuZCBvYnNlcnZhYmxl LmguICBDdXJyZW50bHksIHRoaXMgb2JzZXJ2YWJsZSBpcyBub3QKK3Zpc2libGUgYXMgYSBQeXRo b24gZXZlbnQuCisKK0kgY2hvc2UgdG8gYWNjZXNzIHRoZSBjb3JlIGZpbGUgdmlhIHRoZSBpbmZl cmlvciBldmVuIHRob3VnaCB0aGUgY29yZQorZmlsZSBCRkQgb2JqZWN0IGlzIGFjdHVhbGx5IHN0 b3JlZCB3aXRoaW4gdGhlIHByb2dyYW1fc3BhY2UuICBBcyBzdWNoLAoraXQgbWlnaHQgc2VlbSB0 aGF0IHRoZSBuYXR1cmFsIGNob2ljZSB3b3VsZCBiZSB0byBhZGQgdGhlIGF0dHJpYnV0ZSBhcwor Z2RiLlByb2dzcGFjZS5jb3JlZmlsZS4KKworRm9yIGJhY2tncm91bmQgcmVhZGluZyBvbiBteSBj aG9pY2UsIHBsZWFzZSBzZWU6CisKKyAgaHR0cHM6Ly9pbmJveC5zb3VyY2V3YXJlLm9yZy9nZGIt cGF0Y2hlcy81NzdmMmM0Nzc5M2FjYjUwMWMyNjExYzBlNmM3ZWEzNzlmNzc0ODMwLjE2Njg3ODk2 NTguZ2l0LmFidXJnZXNzQHJlZGhhdC5jb20KKworVGhpcyBwYXRjaCB3YXMgbmV2ZXIgbWVyZ2Vk LCBpdCBpcyBzdGlsbCBvbiBteSBiYWNrbG9nLCBidXQgdGhlCitvYnNlcnZhdGlvbiBpbiB0aGF0 IHdvcmsgaXMgdGhhdCBzb21lIHRhcmdldHMgYXJlIG5vdCByZWFsbHkKK3NoYXJlYWJsZS4gIEZv ciBleGFtcGxlLCB0aGUgY29yZV90YXJnZXQgKGNvcmVsb3cuYykgc3RvcmVzCitpbmZvcm1hdGlv biBhYm91dCB0aGUgbG9hZGVkIGNvcmUgZmlsZSB3aXRoaW4gdGhlIHRhcmdldCBpbnN0YW5jZS4g IEFzCitzdWNoLCBlYWNoIHRhcmdldCBpbnN0YW5jZSByZXByZXNlbnRzIGEgc2luZ2xlIGxvYWRl ZCBjb3JlIGZpbGUuCisKK0V4Y2VwdCB0aGF0IHRoZSBCRkQgcGFydCBvZiB0aGUgY29yZSBmaWxl IGlzIHN0b3JlZCBpbiB0aGUKK3Byb2dyYW1fc3BhY2UsIHdoaWNoIGlzIGEgbGl0dGxlIHdlaXJk LgorCitEdXJpbmcgcmV2aWV3LCBUb20gbWFkZSB0aGUgb2JzZXJ2YXRpb24sIHRoYXQgbWF5YmUg d2Ugc2hvdWxkCitpbnZlc3RpZ2F0ZSBtb3ZpbmcgdGhlIGNvcmUgZmlsZSBCRkQgaW50byB0aGUg Y29yZV90YXJnZXQuICBJJ20KK2luY2xpbmVkIHRvIGFncmVlIHdpdGggdGhpcyBhcyBhIGRpcmVj dGlvbiBvZiB0cmF2ZWwuCisKK0FsbCB0aGlzIGxlYXZlcyB1cyB3aXRoIHR3byBvYnNlcnZhdGlv bnM6CisKKyAgMS4gQ3VycmVudGx5LCBsb2FkaW5nIGEgY29yZSBmaWxlIGludG8gYW4gaW5mZXJp b3IsIHRoZW4gdXNpbmcKKyAgICAgJ2FkZC1pbmZlcmlvcicgd2lsbCB0cnkgdG8gc2hhcmUgdGhl IGNvcmVfdGFyZ2V0IGJldHdlZW4KKyAgICAgaW5mZXJpb3JzLiAgVGhpcyBpcyBicm9rZW4sIGFu ZCBjYW4gdHJpZ2dlciBHREIgY3Jhc2hlcy4gIFRoZQorICAgICBvYnZpb3VzIGZpeCwgd2l0aG91 dCByZXdvcmtpbmcgY29yZV90YXJnZXQsIGlzIGp1c3QgdG8gcHJldmVudAorICAgICB0aGlzIHNo YXJpbmcsIG1ha2luZyBjb3JlX3RhcmdldCBwZXItaW5mZXJpb3IuCisKKyAgMi4gSGF2aW5nIHRo ZSBjb3JlIGZpbGUgaW5mb3JtYXRpb24gc3BsaXQgYmV0d2VlbiB0aGUgY29yZV90YXJnZXQKKyAg ICAgaW5zdGFuY2UsIGFuZCB0aGUgQkZEIHN0b3JlZCBpbiB0aGUgcHJvZ3JhbV9zcGFjZSBpcyBh IGxpdHRsZQorICAgICB3ZWlyZCwgYW5kIGlzIHJlYWxseSBqdXN0IGhpc3RvcmljYWwuICBQbGFu bmluZyBmb3IgYSBmdXR1cmUKKyAgICAgd2hlcmUgdGhlIEJGRCBpcyBhbHNvIHN0b3JlZCBpbiB0 aGUgY29yZV90YXJnZXQgbWlnaHQgYmUgd2lzZS4KKworU28sIGlmIHdlIGltYWdpbmUgdGhhdCB0 aGUgQkZEIGlzIChvbmUgZGF5KSBtb3ZlZCBpbnRvIHRoZQorY29yZV90YXJnZXQsIGFuZCB0aGF0 IHRoZSBjb3JlX3RhcmdldCByZWFsbHkgYmVjb21lcyBub24tc2hhcmVhYmxlLAordGhlbiBpdCBp cywgSSB0aGluaywgY2xlYXJlciB0aGF0IHRoZSBjb3JlZmlsZSBhdHRyaWJ1dGUgc2hvdWxkIGxp dmUKK29uIHRoZSBnZGIuSW5mZXJpb3Igb2JqZWN0LCBub3QgdGhlIGdkYi5Qcm9nc3BhY2Ugb2Jq ZWN0LgorCitUaGVyZSdzIHRlc3RpbmcgZm9yIGFsbCB0aGUgZnVuY3Rpb25hbGl0eSBhZGRlZCBp biB0aGlzIGNvbW1pdC4KKworQnVnOiBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3No b3dfYnVnLmNnaT9pZD0zMjg0NAorCitSZXZpZXdlZC1CeTogRWxpIFphcmV0c2tpaSA8ZWxpekBn bnUub3JnPgorQXBwcm92ZWQtQnk6IFRvbSBUcm9tZXkgPHRvbUB0cm9tZXkuY29tPgorCitkaWZm IC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCistLS0gYS9nZGIvTWFr ZWZpbGUuaW4KKysrKyBiL2dkYi9NYWtlZmlsZS5pbgorQEAgLTM5OSw2ICszOTksNyBAQCBTVUJE SVJfUFlUSE9OX1NSQ1MgPSBcCisgCXB5dGhvbi9weS1jb2xvci5jIFwKKyAJcHl0aG9uL3B5LWNv bm5lY3Rpb24uYyBcCisgCXB5dGhvbi9weS1jb250aW51ZWV2ZW50LmMgXAorKwlweXRob24vcHkt Y29yZWZpbGUuYyBcCisgCXB5dGhvbi9weS1kYXAuYyBcCisgCXB5dGhvbi9weS1kaXNhc20uYyBc CisgCXB5dGhvbi9weS1ldmVudC5jIFwKK2RpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dkYi9ORVdT CistLS0gYS9nZGIvTkVXUworKysrIGIvZ2RiL05FV1MKK0BAIC0xMyw2ICsxMyw4IEBACisgCisg ICAqKiBHREIgbm93IHN1cHBvcnRzIHRoZSAiY29tcGxldGlvbnMiIHJlcXVlc3QuCisgCisrICAq KiBUaGUgYXR0YWNoIHJlcXVlc3Qgbm93IGFjY2VwdHMgdGhlIGNvcmVGaWxlIHBhcmFtZXRlci4K KysKKyAqICJzZXQgc3R5bGUiIGNvbW1hbmRzIG5vdyBzdXBwb3J0cyBudW1lcmljIGZvcm1hdCBm b3IgYmFzaWMgY29sb3JzCisgICBmcm9tIDAgdG8gMjU1IGFuZCAjUlJHR0JCIGZvcm1hdCBmb3Ig VHJ1ZUNvbG9yLgorIAorQEAgLTE4MSw2ICsxODMsMzIgQEAgaW5mbyB0aHJlYWRzIFstZ2lkXSBb LXN0b3BwZWRdIFstcnVubmluZ10gW0lEXS4uLgorICAgICAgdW5hdmFpbGFiaWxpdHkgbGlrZSBn ZGIuVmFsdWUuaXNfb3B0aW1pemVkX291dCBjaGVja3MgZm9yCisgICAgICBvcHRpbWl6ZWQgb3V0 IHZhbHVlcy4KKyAKKysgICoqIE5ldyBnZGIuQ29yZWZpbGUgY2xhc3Mgd2hpY2ggcmVwcmVzZW50 cyBhIGxvYWRlZCBjb3JlIGZpbGUuICBUaGlzCisrICAgICBoYXMgYW4gYXR0cmlidXRlIENvcmVm aWxlLmZpbGVuYW1lLCB0aGUgZmlsZSBuYW1lIG9mIHRoZSBsb2FkZWQKKysgICAgIGNvcmUgZmls ZSwgYW5kIGEgbWV0aG9kIENvcmVmaWxlLmlzX3ZhbGlkKCksIHdoaWNoIHJldHVybnMgRmFsc2UK KysgICAgIHdoZW4gYSBDb3JlZmlsZSBvYmplY3QgYmVjb21lcyBpbnZhbGlkIChlLmcuIHdoZW4g dGhlIGNvcmUgZmlsZQorKyAgICAgaXMgdW5sb2FkZWQpLiAgVGhlcmUgaXMgYWxzbyBDb3JlZmls ZS5tYXBwZWRfZmlsZXMoKSB3aGljaAorKyAgICAgcmV0dXJucyBhIGxpc3Qgb2YgQ29yZWZpbGVN YXBwZWRGaWxlIG9iamVjdHMsIHJlcHJlc2VudGluZyBmaWxlcworKyAgICAgdGhhdCB3ZXJlIG1h cHBlZCBpbnRvIHRoZSBjb3JlIGZpbGUgd2hlbiBpdCB3YXMgY3JlYXRlZC4KKysKKysgICoqIE5l dyBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlIHR5cGUgcmVwcmVzZW50aW5nIGEgZmlsZSB0aGF0IHdh cworKyAgICAgbWFwcGVkIHdoZW4gdGhlIGNvcmUgZmlsZSB3YXMgY3JlYXRlZC4gIEhhcyByZWFk LW9ubHkgYXR0cmlidXRlcworKyAgICAgZmlsZW5hbWUgKHN0cmluZyksIGJ1aWxkX2lkIChzdHJp bmcpLCBpc19tYWluX2V4ZWN1dGFibGUKKysgICAgIChib29sZWFuKSwgYW5kIHJlZ2lvbnMgKGxp c3Qgb2YgQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uIG9iamVjdHMpLgorKworKyAgKiogTmV3IGdk Yi5Db3JlZmlsZU1hcHBlZEZpbGVSZWdpb24gdHlwZSwgd2hpY2ggcmVwcmVzZW50cyBhIG1hcHBl ZAorKyAgICAgcmVnaW9uIG9mIGEgZmlsZSAoc2VlIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGUgYWJv dmUpLiAgSGFzCisrICAgICByZWFkLW9ubHkgYXR0cmlidXRlcyBzdGFydCwgZW5kLCBhbmQgZmls ZV9vZmZzZXQuCisrCisrICAqKiBOZXcgSW5mZXJpb3IuY29yZWZpbGUgYXR0cmlidXRlLiAgVGhp cyByZWFkIG9ubHkgYXR0cmlidXRlCisrICAgICBjb250YWlucyB0aGUgZ2RiLkNvcmVmaWxlIG9i amVjdCBpZiBhIGNvcmUgZmlsZSBpcyBsb2FkZWQgaW50bworKyAgICAgdGhlIGluZmVyaW9yLCBv dGhlcndpc2UsIHRoaXMgY29udGFpbnMgTm9uZS4KKysKKysgICoqIE5ldyBldmVudCByZWdpc3Ry eSBnZGIuZXZlbnRzLmNvcmVmaWxlX2NoYW5nZWQsIHdoaWNoIGVtaXRzIGEKKysgICAgIENvcmVm aWxlQ2hhbmdlZEV2ZW50IHdoZW5ldmVyIHRoZSBjb3JlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGFu CisrICAgICBpbmZlcmlvciBjaGFuZ2VzLiAgVGhlIGV2ZW50IGhhcyBhbiAnaW5mZXJpb3InIGF0 dHJpYnV0ZSB3aGljaCBpcworKyAgICAgdGhlIGdkYi5JbmZlcmlvciBpbiB3aGljaCB0aGUgY29y ZSBmaWxlIGhhcyBjaGFuZ2VkLgorKworICogR3VpbGUgQVBJCisgCisgICAqKiBOZXcgdHlwZSA8 Z2RiOmNvbG9yPiBmb3IgZGVhbGluZyB3aXRoIGNvbG9ycy4KK2RpZmYgLS1naXQgYS9nZGIvY29y ZWxvdy5jIGIvZ2RiL2NvcmVsb3cuYworLS0tIGEvZ2RiL2NvcmVsb3cuYworKysrIGIvZ2RiL2Nv cmVsb3cuYworQEAgLTUzLDYgKzUzLDcgQEAKKyAjaW5jbHVkZSAieG1sLXRkZXNjLmgiCisgI2lu Y2x1ZGUgIm1lbXRhZy5oIgorICNpbmNsdWRlICJjbGkvY2xpLXN0eWxlLmgiCisrI2luY2x1ZGUg Im9ic2VydmFibGUuaCIKKyAKKyAjaWZuZGVmIE9fTEFSR0VGSUxFCisgI2RlZmluZSBPX0xBUkdF RklMRSAwCitAQCAtMzY1LDEwOCArMzY2LDI3IEBAIGNvcmVfdGFyZ2V0Ojpjb3JlX3RhcmdldCAo KQorIHZvaWQKKyBjb3JlX3RhcmdldDo6YnVpbGRfZmlsZV9tYXBwaW5ncyAoKQorIHsKKy0gIC8q IFR5cGUgaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBmaWxlIG1hcHBlZCBpbnRv IHRoZSBpbmZlcmlvcgorLSAgICAgYXQgdGhlIHBvaW50IHdoZW4gdGhlIGNvcmUgZmlsZSB3YXMg Y3JlYXRlZC4gIEFzc29jaWF0ZXMgYSBidWlsZC1pZAorLSAgICAgd2l0aCB0aGUgbGlzdCBvZiBy ZWdpb25zIHRoZSBmaWxlIGlzIG1hcHBlZCBpbnRvLiAgKi8KKy0gIHN0cnVjdCBtYXBwZWRfZmls ZQorLSAgeworLSAgICAvKiBUeXBlIGZvciBhIHJlZ2lvbiBvZiBhIGZpbGUgdGhhdCB3YXMgbWFw cGVkIGludG8gdGhlIGluZmVyaW9yIHdoZW4KKy0gICAgICAgdGhlIGNvcmUgZmlsZSB3YXMgZ2Vu ZXJhdGVkLiAgKi8KKy0gICAgc3RydWN0IHJlZ2lvbgorLSAgICB7CistICAgICAgLyogQ29uc3Ry dWN0b3IuICAgU2VlIG1lbWJlciB2YXJpYWJsZXMgZm9yIGFyZ3VtZW50IGRlc2NyaXB0aW9ucy4g ICovCistICAgICAgcmVnaW9uIChDT1JFX0FERFIgc3RhcnRfLCBDT1JFX0FERFIgZW5kXywgQ09S RV9BRERSIGZpbGVfb2ZzXykKKy0JOiBzdGFydCAoc3RhcnRfKSwKKy0JICBlbmQgKGVuZF8pLAor LQkgIGZpbGVfb2ZzIChmaWxlX29mc18pCistICAgICAgeyAvKiBOb3RoaW5nLiAgKi8gfQorLQor LSAgICAgIC8qIFRoZSBpbmZlcmlvciBhZGRyZXNzIGZvciB0aGUgc3RhcnQgb2YgdGhlIG1hcHBl ZCByZWdpb24uICAqLworLSAgICAgIENPUkVfQUREUiBzdGFydDsKKy0KKy0gICAgICAvKiBUaGUg aW5mZXJpb3IgYWRkcmVzcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgbWFwcGVkIHJlZ2lvbi4gICov CistICAgICAgQ09SRV9BRERSIGVuZDsKKy0KKy0gICAgICAvKiBUaGUgb2Zmc2V0IHdpdGhpbiB0 aGUgbWFwcGVkIGZpbGUgZm9yIHRoaXMgY29udGVudC4gICovCistICAgICAgQ09SRV9BRERSIGZp bGVfb2ZzOworLSAgICB9OworLQorLSAgICAvKiBJZiBub3QgbnVsbHB0ciwgdGhlbiB0aGlzIGlz IHRoZSBidWlsZC1pZCBhc3NvY2lhdGVkIHdpdGggdGhpcworLSAgICAgICBmaWxlLiAgKi8KKy0g ICAgY29uc3QgYmZkX2J1aWxkX2lkICpidWlsZF9pZCA9IG51bGxwdHI7CistCistICAgIC8qIElm IHRydWUgdGhlbiB3ZSBoYXZlIHNlZW4gbXVsdGlwbGUgZGlmZmVyZW50IGJ1aWxkLWlkcyBhc3Nv Y2lhdGVkCistICAgICAgIHdpdGggdGhlIHNhbWUgZmlsZW5hbWUuICBUaGUgYnVpbGRfaWQgZmll bGQgd2lsbCBoYXZlIGJlZW4gc2V0IGJhY2sKKy0gICAgICAgdG8gbnVsbHB0ciwgYW5kIHdlIHNo b3VsZCBub3Qgc2V0IGJ1aWxkX2lkIGluIGZ1dHVyZS4gICovCistICAgIGJvb2wgaWdub3JlX2J1 aWxkX2lkX3AgPSBmYWxzZTsKKy0KKy0gICAgLyogQWxsIHRoZSBtYXBwZWQgcmVnaW9ucyBvZiB0 aGlzIGZpbGUuICAqLworLSAgICBzdGQ6OnZlY3RvcjxyZWdpb24+IHJlZ2lvbnM7CistICB9Owor LQorICAgZ2RiOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdHJ1Y3QgYmZkICo+IGJmZF9t YXA7CisgICBnZGI6OnVub3JkZXJlZF9zZXQ8c3RkOjpzdHJpbmc+IHVuYXZhaWxhYmxlX3BhdGhz OworIAorICAgLyogQWxsIGZpbGVzIG1hcHBlZCBpbnRvIHRoZSBjb3JlIGZpbGUuICBUaGUga2V5 IGlzIHRoZSBmaWxlbmFtZS4gICovCistICBnZGI6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcs IG1hcHBlZF9maWxlPiBtYXBwZWRfZmlsZXM7CistCistICAvKiBTZWUgbGludXhfcmVhZF9jb3Jl X2ZpbGVfbWFwcGluZ3MoKSBpbiBsaW51eC10ZGVwLmMgZm9yIGFuIGV4YW1wbGUKKy0gICAgIHJl YWRfY29yZV9maWxlX21hcHBpbmdzIG1ldGhvZC4gICovCistICBnZGJhcmNoX3JlYWRfY29yZV9m aWxlX21hcHBpbmdzIChtX2NvcmVfZ2RiYXJjaCwKKy0JCQkJICAgY3VycmVudF9wcm9ncmFtX3Nw YWNlLT5jb3JlX2JmZCAoKSwKKy0KKy0gICAgLyogQWZ0ZXIgZGV0ZXJtaW5pbmcgdGhlIG51bWJl ciBvZiBtYXBwaW5ncywgcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MKKy0gICAgICAgd2lsbCBpbnZv a2UgdGhpcyBsYW1iZGEuICAqLworLSAgICBbJl0gKFVMT05HRVNUKQorLSAgICAgIHsKKy0gICAg ICB9LAorLQorLSAgICAvKiByZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyB3aWxsIGludm9rZSB0aGlz IGxhbWJkYSBmb3IgZWFjaCBtYXBwaW5nCistICAgICAgIHRoYXQgaXQgZmluZHMuICAqLworLSAg ICBbJl0gKGludCBudW0sIFVMT05HRVNUIHN0YXJ0LCBVTE9OR0VTVCBlbmQsIFVMT05HRVNUIGZp bGVfb2ZzLAorLQkgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGJmZF9idWlsZF9pZCAqYnVp bGRfaWQpCistICAgICAgeworLQkvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgcmVhZF9jb3JlX21h cHBpbmcgbWV0aG9kcyBhcmUgZXhwZWN0ZWQgdG8KKy0JICAgd2VlZCBvdXQgbm9uLWZpbGUtYmFj a2VkIG1hcHBpbmdzLiAgKi8KKy0JZ2RiX2Fzc2VydCAoZmlsZW5hbWUgIT0gbnVsbHB0cik7Cisr ICBzdGQ6OnZlY3Rvcjxjb3JlX21hcHBlZF9maWxlPiBtYXBwZWRfZmlsZXMKKysgICAgPSBnZGJf cmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgKG1fY29yZV9nZGJhcmNoLAorKwkJCQkgICBjdXJyZW50 X3Byb2dyYW1fc3BhY2UtPmNvcmVfYmZkICgpKTsKKyAKKy0JLyogQWRkIHRoaXMgbWFwcGVkIHJl Z2lvbiB0byB0aGUgZGF0YSBmb3IgRklMRU5BTUUuICAqLworLQltYXBwZWRfZmlsZSAmZmlsZV9k YXRhID0gbWFwcGVkX2ZpbGVzW2ZpbGVuYW1lXTsKKy0JZmlsZV9kYXRhLnJlZ2lvbnMuZW1wbGFj ZV9iYWNrIChzdGFydCwgZW5kLCBmaWxlX29mcyk7CistCWlmIChidWlsZF9pZCAhPSBudWxscHRy ICYmICFmaWxlX2RhdGEuaWdub3JlX2J1aWxkX2lkX3ApCistCSAgeworLQkgICAgaWYgKGZpbGVf ZGF0YS5idWlsZF9pZCA9PSBudWxscHRyKQorLQkgICAgICBmaWxlX2RhdGEuYnVpbGRfaWQgPSBi dWlsZF9pZDsKKy0JICAgIGVsc2UgaWYgKCFidWlsZF9pZF9lcXVhbCAoYnVpbGRfaWQsIGZpbGVf ZGF0YS5idWlsZF9pZCkpCistCSAgICAgIHsKKy0JCXdhcm5pbmcgKF8oIk11bHRpcGxlIGJ1aWxk LWlkcyBmb3VuZCBmb3IgJXBzIiksCistCQkJIHN0eWxlZF9zdHJpbmcgKGZpbGVfbmFtZV9zdHls ZS5zdHlsZSAoKSwgZmlsZW5hbWUpKTsKKy0JCWZpbGVfZGF0YS5idWlsZF9pZCA9IG51bGxwdHI7 CistCQlmaWxlX2RhdGEuaWdub3JlX2J1aWxkX2lkX3AgPSB0cnVlOworLQkgICAgICB9CistCSAg fQorLSAgICAgIH0pOworLQorLSAgLyogR2V0IHRoZSBidWlsZC1pZCBvZiB0aGUgY29yZSBmaWxl LiAgKi8KKy0gIGNvbnN0IGJmZF9idWlsZF9pZCAqY29yZV9idWlsZF9pZAorLSAgICA9IGJ1aWxk X2lkX2JmZF9nZXQgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZS0+Y29yZV9iZmQgKCkpOworLQorLSAg Zm9yIChjb25zdCBhdXRvICZbZmlsZW5hbWUsIGZpbGVfZGF0YV0gOiBtYXBwZWRfZmlsZXMpCisr ICBmb3IgKGNvbnN0IGNvcmVfbWFwcGVkX2ZpbGUgJmZpbGVfZGF0YSA6IG1hcHBlZF9maWxlcykK KyAgICAgeworLSAgICAgIC8qIElmIHRoaXMgbWFwcGVkIGZpbGUgaGFzIHRoZSBzYW1lIGJ1aWxk LWlkIGFzIHdhcyBkaXNjb3ZlcmVkIGZvcgorLQkgdGhlIGNvcmUtZmlsZSBpdHNlbGYsIHRoZW4g d2UgYXNzdW1lIHRoaXMgaXMgdGhlIG1haW4KKy0JIGV4ZWN1dGFibGUuICBSZWNvcmQgdGhlIGZp bGVuYW1lIGFzIHdlIGNhbiB1c2UgdGhpcyBsYXRlci4gICovCistICAgICAgaWYgKGZpbGVfZGF0 YS5idWlsZF9pZCAhPSBudWxscHRyCistCSAgJiYgbV9leHBlY3RlZF9leGVjX2ZpbGVuYW1lLmVt cHR5ICgpCistCSAgJiYgYnVpbGRfaWRfZXF1YWwgKGZpbGVfZGF0YS5idWlsZF9pZCwgY29yZV9i dWlsZF9pZCkpCistCW1fZXhwZWN0ZWRfZXhlY19maWxlbmFtZSA9IGZpbGVuYW1lOworKyAgICAg IC8qIElmIHRoaXMgbWFwcGVkIGZpbGUgaXMgbWFya2VkIGFzIHRoZSBtYWluIGV4ZWN1dGFibGUg dGhlbiByZWNvcmQKKysJIHRoZSBmaWxlbmFtZSBhcyB3ZSBjYW4gdXNlIHRoaXMgbGF0ZXIuICAq LworKyAgICAgIGlmIChmaWxlX2RhdGEuaXNfbWFpbl9leGVjICYmIG1fZXhwZWN0ZWRfZXhlY19m aWxlbmFtZS5lbXB0eSAoKSkKKysJbV9leHBlY3RlZF9leGVjX2ZpbGVuYW1lID0gZmlsZV9kYXRh LmZpbGVuYW1lOworIAorICAgICAgIC8qIFVzZSBleGVjX2ZpbGVfZmluZCgpIHRvIGRvIHN5c3Jv b3QgZXhwYW5zaW9uLiAgSXQnbGwKKyAJIGFsc28gc3RyaXAgdGhlIHBvdGVudGlhbCBzeXNyb290 ICJ0YXJnZXQ6IiBwcmVmaXguICBJZgorIAkgdGhlcmUgaXMgbm8gc3lzcm9vdCwgYW4gZXF1aXZh bGVudCAocG9zc2libHkgbW9yZQorIAkgY2Fub25pY2FsKSBwYXRobmFtZSB3aWxsIGJlIHByb3Zp ZGVkLiAgKi8KKyAgICAgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiBleHBhbmRlZF9m bmFtZQorLQk9IGV4ZWNfZmlsZV9maW5kIChmaWxlbmFtZS5jX3N0ciAoKSwgbnVsbHB0cik7Cisr CT0gZXhlY19maWxlX2ZpbmQgKGZpbGVfZGF0YS5maWxlbmFtZS5jX3N0ciAoKSwgbnVsbHB0cik7 CisgCisgICAgICAgYm9vbCBidWlsZF9pZF9taXNtYXRjaCA9IGZhbHNlOworICAgICAgIGlmIChl eHBhbmRlZF9mbmFtZSAhPSBudWxscHRyICYmIGZpbGVfZGF0YS5idWlsZF9pZCAhPSBudWxscHRy KQorQEAgLTUwOCw3ICs0MjgsNyBAQCBjb3JlX3RhcmdldDo6YnVpbGRfZmlsZV9tYXBwaW5ncyAo KQorIAl7CisgCSAgYWJmZCA9IGZpbmRfb2JqZmlsZV9ieV9idWlsZF9pZCAoY3VycmVudF9wcm9n cmFtX3NwYWNlLAorIAkJCQkJICAgZmlsZV9kYXRhLmJ1aWxkX2lkLAorLQkJCQkJICAgZmlsZW5h bWUuY19zdHIgKCkpOworKwkJCQkJICAgZmlsZV9kYXRhLmZpbGVuYW1lLmNfc3RyICgpKTsKKyAK KyAJICBpZiAoYWJmZCAhPSBudWxscHRyKQorIAkgICAgeworQEAgLTUyNiw3ICs0NDYsNyBAQCBj b3JlX3RhcmdldDo6YnVpbGRfZmlsZV9tYXBwaW5ncyAoKQorIAl9CisgCisgICAgICAgc3RkOjp2 ZWN0b3I8bWVtX3JhbmdlPiByYW5nZXM7CistICAgICAgZm9yIChjb25zdCBtYXBwZWRfZmlsZTo6 cmVnaW9uICZyZWdpb24gOiBmaWxlX2RhdGEucmVnaW9ucykKKysgICAgICBmb3IgKGNvbnN0IGNv cmVfbWFwcGVkX2ZpbGU6OnJlZ2lvbiAmcmVnaW9uIDogZmlsZV9kYXRhLnJlZ2lvbnMpCisgCXJh bmdlcy5lbXBsYWNlX2JhY2sgKHJlZ2lvbi5zdGFydCwgcmVnaW9uLmVuZCAtIHJlZ2lvbi5zdGFy dCk7CisgCisgICAgICAgaWYgKGV4cGFuZGVkX2ZuYW1lID09IG51bGxwdHIKK0BAIC01NDQsNyAr NDY0LDcgQEAgY29yZV90YXJnZXQ6OmJ1aWxkX2ZpbGVfbWFwcGluZ3MgKCkKKyAJICBib29sIGNv bnRlbnRfaXNfaW5fY29yZV9maWxlX3AgPSB0cnVlOworIAorIAkgIC8qIFJlY29yZCBhbGwgcmVn aW9ucyBmb3IgdGhpcyBmaWxlIGFzIHVuYXZhaWxhYmxlLiAgKi8KKy0JICBmb3IgKGNvbnN0IG1h cHBlZF9maWxlOjpyZWdpb24gJnJlZ2lvbiA6IGZpbGVfZGF0YS5yZWdpb25zKQorKwkgIGZvciAo Y29uc3QgY29yZV9tYXBwZWRfZmlsZTo6cmVnaW9uICZyZWdpb24gOiBmaWxlX2RhdGEucmVnaW9u cykKKyAJICAgIHsKKyAJICAgICAgLyogQ2hlY2sgdG8gc2VlIGlmIHRoZSByZWdpb24gaXMgYXZh aWxhYmxlIHdpdGhpbiB0aGUgY29yZQorIAkJIGZpbGUuICAqLworQEAgLTU3NiwzMyArNDk2LDMz IEBAIGNvcmVfdGFyZ2V0OjpidWlsZF9maWxlX21hcHBpbmdzICgpCisgCSAgaWYgKGJ1aWxkX2lk X21pc21hdGNoKQorIAkgICAgeworIAkgICAgICBpZiAoZXhwYW5kZWRfZm5hbWUgPT0gbnVsbHB0 cgorLQkJICB8fCBmaWxlbmFtZSA9PSBleHBhbmRlZF9mbmFtZS5nZXQgKCkpCisrCQkgIHx8IGZp bGVfZGF0YS5maWxlbmFtZSA9PSBleHBhbmRlZF9mbmFtZS5nZXQgKCkpCisgCQl3YXJuaW5nIChf KCJGaWxlICVwcyBkb2Vzbid0IG1hdGNoIGJ1aWxkLWlkIGZyb20gY29yZS1maWxlICIKKyAJCQkg ICAiZHVyaW5nIGZpbGUtYmFja2VkIG1hcHBpbmcgcHJvY2Vzc2luZyIpLAorIAkJCSBzdHlsZWRf c3RyaW5nIChmaWxlX25hbWVfc3R5bGUuc3R5bGUgKCksCistCQkJCQlmaWxlbmFtZS5jX3N0ciAo KSkpOworKwkJCQkJZmlsZV9kYXRhLmZpbGVuYW1lLmNfc3RyICgpKSk7CisgCSAgICAgIGVsc2UK KyAJCXdhcm5pbmcgKF8oIkZpbGUgJXBzIHdoaWNoIHdhcyBleHBhbmRlZCB0byAlcHMsIGRvZXNu J3QgbWF0Y2ggIgorIAkJCSAgICJidWlsZC1pZCBmcm9tIGNvcmUtZmlsZSBkdXJpbmcgZmlsZS1i YWNrZWQgIgorIAkJCSAgICJtYXBwaW5nIHByb2Nlc3NpbmciKSwKKyAJCQkgc3R5bGVkX3N0cmlu ZyAoZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpLAorLQkJCQkJZmlsZW5hbWUuY19zdHIgKCkpLAor KwkJCQkJZmlsZV9kYXRhLmZpbGVuYW1lLmNfc3RyICgpKSwKKyAJCQkgc3R5bGVkX3N0cmluZyAo ZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpLAorIAkJCQkJZXhwYW5kZWRfZm5hbWUuZ2V0ICgpKSk7 CisgCSAgICB9CisgCSAgZWxzZSBpZiAoIWNvbnRlbnRfaXNfaW5fY29yZV9maWxlX3ApCisgCSAg ICB7CisgCSAgICAgIGlmIChleHBhbmRlZF9mbmFtZSA9PSBudWxscHRyCistCQkgIHx8IGZpbGVu YW1lID09IGV4cGFuZGVkX2ZuYW1lLmdldCAoKSkKKysJCSAgfHwgZmlsZV9kYXRhLmZpbGVuYW1l ID09IGV4cGFuZGVkX2ZuYW1lLmdldCAoKSkKKyAJCXdhcm5pbmcgKF8oIkNhbid0IG9wZW4gZmls ZSAlcHMgZHVyaW5nIGZpbGUtYmFja2VkIG1hcHBpbmcgIgorIAkJCSAgICJub3RlIHByb2Nlc3Np bmciKSwKKyAJCQkgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpLAorLQkJ CQkJZmlsZW5hbWUuY19zdHIgKCkpKTsKKysJCQkJCWZpbGVfZGF0YS5maWxlbmFtZS5jX3N0ciAo KSkpOworIAkgICAgICBlbHNlCisgCQl3YXJuaW5nIChfKCJDYW4ndCBvcGVuIGZpbGUgJXBzIHdo aWNoIHdhcyBleHBhbmRlZCB0byAlcHMgIgorIAkJCSAgICJkdXJpbmcgZmlsZS1iYWNrZWQgbWFw cGluZyBub3RlIHByb2Nlc3NpbmciKSwKKyAJCQkgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0 eWxlLnN0eWxlICgpLAorLQkJCQkJZmlsZW5hbWUuY19zdHIgKCkpLAorKwkJCQkJZmlsZV9kYXRh LmZpbGVuYW1lLmNfc3RyICgpKSwKKyAJCQkgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0eWxl LnN0eWxlICgpLAorIAkJCQkJZXhwYW5kZWRfZm5hbWUuZ2V0ICgpKSk7CisgCSAgICB9CitAQCAt NjE2LDcgKzUzNiw3IEBAIGNvcmVfdGFyZ2V0OjpidWlsZF9maWxlX21hcHBpbmdzICgpCisgCQkJ CSAgICBhYmZkLmdldCAoKSk7CisgCisgCSAgLyogQ3JlYXRlIHNlY3Rpb25zIGZvciBlYWNoIG1h cHBlZCByZWdpb24uICAqLworLQkgIGZvciAoY29uc3QgbWFwcGVkX2ZpbGU6OnJlZ2lvbiAmcmVn aW9uIDogZmlsZV9kYXRhLnJlZ2lvbnMpCisrCSAgZm9yIChjb25zdCBjb3JlX21hcHBlZF9maWxl OjpyZWdpb24gJnJlZ2lvbiA6IGZpbGVfZGF0YS5yZWdpb25zKQorIAkgICAgeworIAkgICAgICAv KiBNYWtlIG5ldyBCRkQgc2VjdGlvbi4gIEFsbCBzZWN0aW9ucyBoYXZlIHRoZSBzYW1lIG5hbWUs CisgCQkgd2hpY2ggaXMgcGVybWl0dGVkIGJ5IGJmZF9tYWtlX3NlY3Rpb25fYW55d2F5KCkuICAq LworQEAgLTY1Miw3ICs1NzIsNyBAQCBjb3JlX3RhcmdldDo6YnVpbGRfZmlsZV9tYXBwaW5ncyAo KQorIAkgICAgICBzb25hbWUgPSBnZGJfYmZkX3JlYWRfZWxmX3NvbmFtZSAoYWN0dWFsX2ZpbGVu YW1lKTsKKyAJICAgIH0KKyAKKy0JICBtX21hcHBlZF9maWxlX2luZm8uYWRkIChzb25hbWUuZ2V0 ICgpLCBmaWxlbmFtZS5jX3N0ciAoKSwKKysJICBtX21hcHBlZF9maWxlX2luZm8uYWRkIChzb25h bWUuZ2V0ICgpLCBmaWxlX2RhdGEuZmlsZW5hbWUuY19zdHIgKCksCisgCQkJCSAgYWN0dWFsX2Zp bGVuYW1lLCBzdGQ6Om1vdmUgKHJhbmdlcyksCisgCQkJCSAgZmlsZV9kYXRhLmJ1aWxkX2lkKTsK KyAJfQorQEAgLTY3OCw2ICs1OTgsOSBAQCBjb3JlX3RhcmdldDo6Y2xlYXJfY29yZSAoKQorICAg ICAgIGNsZWFyX3NvbGliIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworIAorICAgICAgIGN1cnJl bnRfcHJvZ3JhbV9zcGFjZS0+Y2JmZC5yZXNldCAobnVsbHB0cik7CisrCisrICAgICAgLyogTm90 aWZ5IHRoYXQgdGhlIGNvcmUgZmlsZSBoYXMgY2hhbmdlZC4gICovCisrICAgICAgZ2RiOjpvYnNl cnZlcnM6OmNvcmVfZmlsZV9jaGFuZ2VkLm5vdGlmeSAoY3VycmVudF9pbmZlcmlvciAoKSk7Cisg ICAgIH0KKyB9CisgCitAQCAtMTI3OCw2ICsxMjAxLDkgQEAgY29yZV90YXJnZXRfb3BlbiAoY29u c3QgY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCisgCSAgZXhjZXB0aW9uX3ByaW50IChnZGJfc3Rk ZXJyLCBleGNlcHQpOworIAl9CisgICAgIH0KKysKKysgIC8qIE5vdGlmeSB0aGF0IHRoZSBjb3Jl IGZpbGUgaGFzIGNoYW5nZWQuICAqLworKyAgZ2RiOjpvYnNlcnZlcnM6OmNvcmVfZmlsZV9jaGFu Z2VkLm5vdGlmeSAoY3VycmVudF9pbmZlcmlvciAoKSk7CisgfQorIAorIHZvaWQKK0BAIC0yMTU2 LDYgKzIwODIsMTAzIEBAIG1hcHBlZF9maWxlX2luZm86Omxvb2t1cCAoY29uc3QgY2hhciAqZmls ZW5hbWUsCisgCisgLyogU2VlIGdkYmNvcmUuaC4gICovCisgCisrc3RkOjp2ZWN0b3I8Y29yZV9t YXBwZWRfZmlsZT4KKytnZGJfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBzdHJ1Y3QgYmZkICpjYmZkKQorK3sKKysgIHN0ZDo6dmVjdG9yPGNvcmVfbWFw cGVkX2ZpbGU+IHJlc3VsdHM7CisrCisrICAvKiBBIG1hcCBlbnRyeSB1c2VkIHdoaWxlIGJ1aWxk aW5nIFJFU1VMVFMuICAqLworKyAgc3RydWN0IG1hcF9lbnRyeQorKyAgeworKyAgICBleHBsaWNp dCBtYXBfZW50cnkgKGNvcmVfbWFwcGVkX2ZpbGUgKnB0cikKKysgICAgICA6IGZpbGVfZGF0YSAo cHRyKQorKyAgICB7IC8qIE5vdGhpbmcuICAqLyB9CisrCisrICAgIC8qIFBvaW50cyB0byBhbiBl bnRyeSBpbiBSRVNVTFRTLCB0aGlzIGFsbG93cyBlbnRyaWVzIHRvIGJlIHF1aWNrbHkKKysgICAg ICAgbG9va2VkIHVwIGFuZCB1cGRhdGVkIGFzIG5ldyBtYXBwaW5ncyBhcmUgcmVhZC4gICovCisr ICAgIGNvcmVfbWFwcGVkX2ZpbGUgKmZpbGVfZGF0YSA9IG51bGxwdHI7CisrCisrICAgIC8qIElm IHRydWUgdGhlbiB3ZSBoYXZlIHNlZW4gbXVsdGlwbGUgZGlmZmVyZW50IGJ1aWxkLWlkcyBhc3Nv Y2lhdGVkCisrICAgICAgIHdpdGggdGhlIGZpbGVuYW1lIG9mIEZJTEVfREFUQS4gIFRoZSBGSUxF X0RBVEEtPmJ1aWxkX2lkIGZpZWxkIHdpbGwKKysgICAgICAgaGF2ZSBiZWVuIHNldCB0byBudWxs cHRyLCBhbmQgd2Ugc2hvdWxkIG5vdCBzZXQgRklMRV9EQVRBLT5idWlsZF9pZAorKyAgICAgICBp biBmdXR1cmUuICAqLworKyAgICBib29sIGlnbm9yZV9idWlsZF9pZF9wID0gZmFsc2U7CisrICB9 OworKworKyAgLyogQWxsIGZpbGVzIG1hcHBlZCBpbnRvIHRoZSBjb3JlIGZpbGUuICBUaGUga2V5 IGlzIHRoZSBmaWxlbmFtZS4gICovCisrICBnZGI6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcs IG1hcF9lbnRyeT4gbWFwcGVkX2ZpbGVzOworKworKyAgLyogR2V0IHRoZSBidWlsZC1pZCBvZiB0 aGUgY29yZSBmaWxlLiAgQXQgbGVhc3Qgb24gTGludXgsIHRoaXMgd2lsbCBiZQorKyAgICAgdGhl IGJ1aWxkLWlkIGZvciB0aGUgbWFpbiBleGVjdXRhYmxlLiAgSWYgb3RoZXIgdGFyZ2V0cyBhZGQg dGhlCisrICAgICBnZGJhcmNoX3JlYWRfY29yZV9maWxlX21hcHBpbmdzIG1ldGhvZCwgdGhlbiBp dCBtaWdodCB0dXJuIG91dCB0aGF0CisrICAgICB0aGlzIGxvZ2ljIGlzIG5vIGxvbmdlciB0cnVl LCBpbiB3aGljaCBjYXNlIHRoaXMgbWlnaHQgbmVlZCB0byBtb3ZlCisrICAgICBpbnRvIHRoZSBn ZGJhcmNoX3JlYWRfY29yZV9maWxlX21hcHBpbmdzIG1ldGhvZC4gICovCisrICBjb25zdCBiZmRf YnVpbGRfaWQgKmNvcmVfYnVpbGRfaWQgPSBidWlsZF9pZF9iZmRfZ2V0IChjYmZkKTsKKysKKysg IC8qIFNlZSBsaW51eF9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncygpIGluIGxpbnV4LXRkZXAuYyBm b3IgYW4gZXhhbXBsZQorKyAgICAgcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgbWV0aG9kLiAgKi8K KysgIGdkYmFyY2hfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgKGdkYmFyY2gsIGNiZmQsCisrICAg IC8qIEFmdGVyIGRldGVybWluaW5nIHRoZSBudW1iZXIgb2YgbWFwcGluZ3MsIHJlYWRfY29yZV9m aWxlX21hcHBpbmdzCisrICAgICAgIHdpbGwgaW52b2tlIHRoaXMgbGFtYmRhLiAgKi8KKysgICAg WyZdIChVTE9OR0VTVCkKKysgICAgICB7CisrICAgICAgfSwKKysKKysgICAgLyogcmVhZF9jb3Jl X2ZpbGVfbWFwcGluZ3Mgd2lsbCBpbnZva2UgdGhpcyBsYW1iZGEgZm9yIGVhY2ggbWFwcGluZwor KyAgICAgICB0aGF0IGl0IGZpbmRzLiAgKi8KKysgICAgWyZdIChpbnQgbnVtLCBVTE9OR0VTVCBz dGFydCwgVUxPTkdFU1QgZW5kLCBVTE9OR0VTVCBmaWxlX29mcywKKysJIGNvbnN0IGNoYXIgKmZp bGVuYW1lLCBjb25zdCBiZmRfYnVpbGRfaWQgKmJ1aWxkX2lkKQorKyAgICAgIHsKKysJLyogQXJj aGl0ZWN0dXJlLXNwZWNpZmljIHJlYWRfY29yZV9tYXBwaW5nIG1ldGhvZHMgYXJlIGV4cGVjdGVk IHRvCisrCSAgIHdlZWQgb3V0IG5vbi1maWxlLWJhY2tlZCBtYXBwaW5ncy4gICovCisrCWdkYl9h c3NlcnQgKGZpbGVuYW1lICE9IG51bGxwdHIpOworKworKwkvKiBBZGQgdGhpcyBtYXBwZWQgcmVn aW9uIHRvIHRoZSBkYXRhIGZvciBGSUxFTkFNRS4gICovCisrCWF1dG8gaXRlciA9IG1hcHBlZF9m aWxlcy5maW5kIChmaWxlbmFtZSk7CisrCWlmIChpdGVyID09IG1hcHBlZF9maWxlcy5lbmQgKCkp CisrCSAgeworKwkgICAgLyogQ3JlYXRlIGVudHJ5IGluIHJlc3VsdHMgbGlzdC4gICovCisrCSAg ICByZXN1bHRzLmVtcGxhY2VfYmFjayAoKTsKKysKKysJICAgIC8qIFRoZSBlbnRyeSB0byBiZSBh ZGRlZCB0byB0aGUgbG9va3VwIG1hcC4gICovCisrCSAgICBtYXBfZW50cnkgZW50cnkgKCZyZXN1 bHRzLmJhY2sgKCkpOworKwkgICAgZW50cnkuZmlsZV9kYXRhLT5maWxlbmFtZSA9IGZpbGVuYW1l OworKworKwkgICAgLyogQWRkIGVudHJ5IHRvIHRoZSBxdWljayBsb29rdXAgbWFwIGFuZCB1cGRh dGUgSVRFUi4gICovCisrCSAgICBhdXRvIGluc2VydGVkX3Jlc3VsdAorKwkgICAgICA9IG1hcHBl ZF9maWxlcy5pbnNlcnQgKHtmaWxlbmFtZSwgc3RkOjptb3ZlIChlbnRyeSl9KTsKKysJICAgIGdk Yl9hc3NlcnQgKGluc2VydGVkX3Jlc3VsdC5zZWNvbmQpOworKwkgICAgaXRlciA9IGluc2VydGVk X3Jlc3VsdC5maXJzdDsKKysJICB9CisrCisrCWNvcmVfbWFwcGVkX2ZpbGUgJmZpbGVfZGF0YSA9 ICppdGVyLT5zZWNvbmQuZmlsZV9kYXRhOworKwlib29sICZpZ25vcmVfYnVpbGRfaWRfcCA9IGl0 ZXItPnNlY29uZC5pZ25vcmVfYnVpbGRfaWRfcDsKKysKKysJZmlsZV9kYXRhLnJlZ2lvbnMuZW1w bGFjZV9iYWNrIChzdGFydCwgZW5kLCBmaWxlX29mcyk7CisrCWlmIChidWlsZF9pZCAhPSBudWxs cHRyICYmICFpZ25vcmVfYnVpbGRfaWRfcCkKKysJICB7CisrCSAgICBpZiAoZmlsZV9kYXRhLmJ1 aWxkX2lkID09IG51bGxwdHIpCisrCSAgICAgIGZpbGVfZGF0YS5idWlsZF9pZCA9IGJ1aWxkX2lk OworKwkgICAgZWxzZSBpZiAoIWJ1aWxkX2lkX2VxdWFsIChidWlsZF9pZCwgZmlsZV9kYXRhLmJ1 aWxkX2lkKSkKKysJICAgICAgeworKwkJd2FybmluZyAoXygiTXVsdGlwbGUgYnVpbGQtaWRzIGZv dW5kIGZvciAlcHMiKSwKKysJCQkgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0eWxlLnN0eWxl ICgpLCBmaWxlbmFtZSkpOworKwkJZmlsZV9kYXRhLmJ1aWxkX2lkID0gbnVsbHB0cjsKKysJCWln bm9yZV9idWlsZF9pZF9wID0gdHJ1ZTsKKysJICAgICAgfQorKwkgIH0KKysKKysJaWYgKGJ1aWxk X2lkICE9IG51bGxwdHIKKysJICAgICYmIGNvcmVfYnVpbGRfaWQgIT0gbnVsbHB0cgorKwkgICAg JiYgYnVpbGRfaWRfZXF1YWwgKGJ1aWxkX2lkLCBjb3JlX2J1aWxkX2lkKSkKKysJICBmaWxlX2Rh dGEuaXNfbWFpbl9leGVjID0gdHJ1ZTsKKysgICAgICB9KTsKKysKKysgIHJldHVybiByZXN1bHRz OworK30KKysKKysvKiBTZWUgZ2RiY29yZS5oLiAgKi8KKysKKyBzdGQ6Om9wdGlvbmFsIDxjb3Jl X3RhcmdldF9tYXBwZWRfZmlsZV9pbmZvPgorIGNvcmVfdGFyZ2V0X2ZpbmRfbWFwcGVkX2ZpbGUg KGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorIAkJCSAgICAgIHN0ZDo6b3B0aW9uYWw8Q09SRV9BRERS PiBhZGRyKQorZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50 ZXhpbmZvCistLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCisrKysgYi9nZGIvZG9jL2dkYi50ZXhp bmZvCitAQCAtNDAwMjksMTAgKzQwMDI5LDEwIEBAIHdpbGwgc2V0IGEgdGVtcG9yYXJ5IGJyZWFr cG9pbnQgYXQgdGhlIHByb2dyYW0ncyBmaXJzdCBpbnN0cnVjdGlvbiwgdXNpbmcKKyB0aGUgc2Ft ZSBhcHByb2FjaCBhcyB0aGUgQGNvZGV7c3RhcnRpfSBjb21tYW5kLiAgQHhyZWZ7U3RhcnRpbmd9 LgorIEBlbmQgdGFibGUKKyAKKy1AdmFsdWV7R0RCTn0gZGVmaW5lcyBzb21lIHBhcmFtZXRlcnMg dGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZQorLUBjb2Rle2F0dGFjaH0gcmVxdWVzdC4gIEVpdGhl ciBAY29kZXtwaWR9IG9yIEBjb2Rle3RhcmdldH0gbXVzdCBiZQorLXNwZWNpZmllZCwgYnV0IGlm IGJvdGggYXJlIHNwZWNpZmllZCB0aGVuIEBjb2Rle3RhcmdldH0gd2lsbCBiZQorLWlnbm9yZWQu CisrQHZhbHVle0dEQk59IGRlZmluZXMgc29tZSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgdGhhdCBj YW4gYmUgcGFzc2VkIHRvCisrdGhlIEBjb2Rle2F0dGFjaH0gcmVxdWVzdC4gIE9uZSBvZiBAY29k ZXtwaWR9LCBAY29kZXt0YXJnZXR9LCBvcgorK0Bjb2Rle2NvcmVGaWxlfSBtdXN0IGJlIHNwZWNp ZmllZC4gIElmIG11bHRpcGxlIGFyZSBzcGVjaWZpZWQsIHRoZXkKKythcmUgY2hlY2tlZCBmb3Ig aW4gdGhhdCBvcmRlciwgYW5kIHRoZSBmaXJzdCBvbmUgZm91bmQgaXMgdXNlZC4KKyAKKyBAdGFi bGUgQGNvZGUKKyBAaXRlbSBwaWQKK0BAIC00MDA0OCw2ICs0MDA0OCwxMCBAQCBzaG91bGQgYmUg c3VwcGxpZWQuCisgQGl0ZW0gdGFyZ2V0CisgVGhlIHRhcmdldCB0byB3aGljaCBAdmFsdWV7R0RC Tn0gc2hvdWxkIGNvbm5lY3QuICBUaGlzIGlzIGEgc3RyaW5nIGFuZAorIGlzIHBhc3NlZCB0byB0 aGUgQGNvZGV7dGFyZ2V0IHJlbW90ZX0gY29tbWFuZC4gIEB4cmVme0Nvbm5lY3Rpbmd9LgorKwor K0BpdGVtIGNvcmVGaWxlCisrQSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgYSBjb3JlIGZpbGUgdG8g dXNlLiAgVGhpcyBjb3JyZXNwb25kcyB0byB0aGUKKytAa2Jke2NvcmUtZmlsZX0gY29tbWFuZC4g IEB4cmVme2NvcmUtZmlsZSBjb21tYW5kfS4KKyBAZW5kIHRhYmxlCisgCisgSW4gcmVzcG9uc2Ug dG8gdGhlIEBjb2Rle2Rpc2Fzc2VtYmxlfSByZXF1ZXN0LCBEQVAgYWxsb3dzIHRoZSBjbGllbnQK K2RpZmYgLS1naXQgYS9nZGIvZG9jL3B5dGhvbi50ZXhpIGIvZ2RiL2RvYy9weXRob24udGV4aQor LS0tIGEvZ2RiL2RvYy9weXRob24udGV4aQorKysrIGIvZ2RiL2RvYy9weXRob24udGV4aQorQEAg LTIzMyw2ICsyMzMsNyBAQCBvcHRpb25hbCBhcmd1bWVudHMgd2hpbGUgc2tpcHBpbmcgb3RoZXJz LiAgRXhhbXBsZToKKyAqIERpc2Fzc2VtYmx5IEluIFB5dGhvbjo6ICAgICAgIEluc3RydWN0aW9u IERpc2Fzc2VtYmx5IEluIFB5dGhvbgorICogTWlzc2luZyBEZWJ1ZyBJbmZvIEluIFB5dGhvbjo6 IEhhbmRsZSBtaXNzaW5nIGRlYnVnIGluZm8gZnJvbSBQeXRob24uCisgKiBNaXNzaW5nIE9iamZp bGVzIEluIFB5dGhvbjo6ICBIYW5kbGUgb2JqZmlsZXMgZnJvbSBQeXRob24uCisrKiBDb3JlIEZp bGVzIEluIFB5dGhvbjo6ICAgICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgY29yZSBmaWxl cy4KKyBAZW5kIG1lbnUKKyAKKyBAbm9kZSBCYXNpYyBQeXRob24KK0BAIC0zNjI2LDYgKzM2Mjcs MTUgQEAgbmVjZXNzYXJ5IHF1b3RpbmcgZm9yIHRoZSBzaGVsbDsgd2hlbiBhIHNlcXVlbmNlIGlz IGFzc2lnbmVkLCB0aGUKKyBxdW90aW5nIGlzIGFwcGxpZWQgYnkgQHZhbHVle0dEQk59LgorIEBl bmQgZGVmdmFyCisgCisrQGRlZnZhciBJbmZlcmlvci5jb3JlZmlsZQorK0lmIGEgY29yZSBmaWxl IGhhcyBiZWVuIGxvYWRlZCBpbnRvIHRoaXMgaW5mZXJpb3IgKEBweHJlZntjb3JlLWZpbGUKKytj b21tYW5kfSksIHRoZW4gdGhpcyBjb250YWlucyBhIEBjb2Rle2dkYi5Db3JlZmlsZX0gb2JqZWN0 IHRoYXQKKytyZXByZXNlbnRzIHRoZSBsb2FkZWQgY29yZSBmaWxlIChAcHhyZWZ7Q29yZSBGaWxl cyBJbiBQeXRob259KS4KKysKKytJZiBubyBjb3JlIGZpbGUgaGFzIGJlZW4gbG9hZGVkIGludG8g dGhpcyBpbmZlcmlvciwgdGhlbiB0aGlzCisrYXR0cmlidXRlIGNvbnRhaW5zIEBjb2Rle05vbmV9 LgorK0BlbmQgZGVmdmFyCisrCisgQSBAY29kZXtnZGIuSW5mZXJpb3J9IG9iamVjdCBoYXMgdGhl IGZvbGxvd2luZyBtZXRob2RzOgorIAorIEBkZWZ1biBJbmZlcmlvci5pc192YWxpZCAoKQorQEAg LTQwOTQsNiArNDEwNCwxNyBAQCBmaWxlIGlzIHVwZGF0ZWQgZmlyc3QsIHNvIHdoZW4gdGhpcyBl dmVudCBpcyBlbWl0dGVkLCB0aGUgZXhlY3V0YWJsZQorIGZpbGVuYW1lIHdpbGwgaGF2ZSBjaGFu Z2VkLCBidXQgdGhlIHN5bWJvbCBmaWxlbmFtZSBtaWdodCBzdGlsbCBob2xkCisgaXRzIHByZXZp b3VzIHZhbHVlLgorIAorK0BpdGVtIGV2ZW50cy5jb3JlZmlsZV9jaGFuZ2VkCisrRW1pdHMgQGNv ZGV7Z2RiLkNvcmVmaWxlQ2hhbmdlZEV2ZW50fSB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29y ZQorK2ZpbGUgYXNzb2NpYXRlZCB3aXRoIGEgQGNvZGV7Z2RiLkluZmVyaW9yfSBoYXMgY2hhbmdl ZCwgZWl0aGVyIGEgbmV3CisrY29yZSBmaWxlIGhhcyBiZWVuIGxvYWRlZCwgb3IgdGhlIGV4aXN0 aW5nIGNvcmUgZmlsZSBoYXMgYmVlbgorK3VubG9hZGVkIChAcHhyZWZ7Q29yZSBGaWxlcyBJbiBQ eXRob259KS4KKysKKytAZGVmdmFyIENvcmVmaWxlQ2hhbmdlZEV2ZW50LmluZmVyaW9yCisrVGhl IEBjb2Rle2dkYi5JbmZlcmlvcn0gaW4gd2hpY2ggdGhlIGNvcmUgZmlsZSBoYXMgY2hhbmdlZAor KyhAcHhyZWZ7SW5mZXJpb3JzIEluIFB5dGhvbn0pLgorK0BlbmQgZGVmdmFyCisrCisgQGl0ZW0g ZXZlbnRzLm5ld19wcm9nc3BhY2UKKyBUaGlzIGlzIGVtaXR0ZWQgd2hlbiBAdmFsdWV7R0RCTn0g YWRkcyBhIG5ldyBwcm9ncmFtIHNwYWNlCisgKEBweHJlZntQcm9nc3BhY2VzIEluIFB5dGhvbiws UHJvZ3JhbSBTcGFjZXMgSW4gUHl0aG9ufSkuICBUaGUgZXZlbnQKK0BAIC04NjI0LDYgKzg2NDUs MTA2IEBAIGhhbmRsZXJzLCBhbGwgb2YgdGhlIG1hdGNoaW5nIGhhbmRsZXJzIGFyZSBlbmFibGVk LiAgVGhlCisgQGNvZGV7ZW5hYmxlZH0gZmllbGQgb2YgZWFjaCBtYXRjaGluZyBoYW5kbGVyIGlz IHNldCB0byBAY29kZXtUcnVlfS4KKyBAZW5kIHRhYmxlCisgCisrQG5vZGUgQ29yZSBGaWxlcyBJ biBQeXRob24KKytAc3Vic3Vic2VjdGlvbiBDb3JlIEZpbGVzIEluIFB5dGhvbgorK0BjaW5kZXgg cHl0aG9uLCBjb3JlIGZpbGVzCisrCisrV2hlbiBhIGNvcmUgZmlsZSBpcyBsb2FkZWQgaW50byBh biBpbmZlcmlvciAoQHB4cmVme0luZmVyaW9ycyBJbgorK1B5dGhvbn0pIGZvciBleGFtaW5hdGlv biAoQHB4cmVme2NvcmUtZmlsZSBjb21tYW5kfSksIGluZm9ybWF0aW9uCisrYWJvdXQgdGhlIGNv cmUgZmlsZSBpcyBjb250YWluZWQgaW4gYSBAY29kZXtnZGIuQ29yZWZpbGV9IG9iamVjdC4KKysK KytUaGUgQGNvZGV7Z2RiLkNvcmVmaWxlfSBmb3IgYW4gaW5mZXJpb3IgY2FuIGJlIGFjY2Vzc2Vk IHVzaW5nIHRoZQorK0Bjb2Rle0luZmVyaW9yLmNvcmVmaWxlfSBhdHRyaWJ1dGUuICBUaGlzIHdp bGwgYmUgQGNvZGV7Tm9uZX0gaWYKKytubyBjb3JlIGZpbGUgaXMgbG9hZGVkLgorKworK0EgQGNv ZGV7Z2RiLkNvcmVmaWxlfSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKysK KytAZGVmdmFyIENvcmVmaWxlLmZpbGVuYW1lCisrVGhpcyByZWFkIG9ubHkgYXR0cmlidXRlIGNv bnRhaW5zIGEgbm9uLWVtcHR5IHN0cmluZywgdGhlIGZpbGUgbmFtZSBvZgorK3RoZSBjb3JlIGZp bGUuICBBdHRlbXB0aW5nIHRvIGFjY2VzcyB0aGlzIGF0dHJpYnV0ZSBvbiBhbiBpbnZhbGlkCisr QGNvZGV7Z2RiLkNvcmVmaWxlfSBvYmplY3Qgd2lsbCByYWlzZSBhIEBjb2Rle1J1bnRpbWVFcnJv cn0gZXhjZXB0aW9uLgorK0BlbmQgZGVmdmFyCisrCisrQSBAY29kZXtnZGIuQ29yZWZpbGV9IG9i amVjdCBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorKworK0BkZWZ1biBDb3JlZmlsZS5pc192 YWxpZCAoKQorK1JldHVybnMgQGNvZGV7VHJ1ZX0gaWYgdGhlIEBjb2Rle2dkYi5Db3JlZmlsZX0g b2JqZWN0IGlzIHZhbGlkLAorK0Bjb2Rle0ZhbHNlfSBpZiBub3QuICBBIEBjb2Rle2dkYi5Db3Jl ZmlsZX0gb2JqZWN0IHdpbGwgYmVjb21lIGludmFsaWQKKyt3aGVuIHRoZSBjb3JlIGZpbGUgaXMg dW5sb2FkZWQgZnJvbSB0aGUgaW5mZXJpb3IgdXNpbmcgdGhlCisrQGtiZHtjb3JlLWZpbGV9IGNv bW1hbmQgKEBweHJlZntjb3JlLWZpbGUgY29tbWFuZH0pLCBvciBpZiB0aGUKKytpbmZlcmlvciBp biB3aGljaCB0aGUgY29yZSBmaWxlIGlzIGxvYWRlZCBpcyBkZWxldGVkLiAgQWxsIG90aGVyCisr QGNvZGV7Z2RiLkNvcmVmaWxlfSBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzIHdpbGwgdGhyb3cgYW4g ZXhjZXB0aW9uIGlmCisraXQgaXMgaW52YWxpZCBhdCB0aGUgdGltZSB0aGUgbWV0aG9kIGlzIGNh bGxlZCwgb3IgdGhlIGF0dHJpYnV0ZQorK2FjY2Vzc2VkLgorK0BlbmQgZGVmdW4KKysKKytAZGVm dW4gQ29yZWZpbGUubWFwcGVkX2ZpbGVzICgpCisrUmV0dXJuIGEgbGlzdCBvZiBAY29kZXtnZGIu Q29yZWZpbGVNYXBwZWRGaWxlfSAoc2VlIGJlbG93KSBvYmplY3RzCisrcmVwcmVzZW50aW5nIGZp bGVzIHRoYXQgd2VyZSBtYXBwZWQgaW50byB0aGUgcHJvY2VzcyB3aGVuIHRoZSBjb3JlCisrZmls ZSB3YXMgY3JlYXRlZC4gIFRoaXMgaW5mb3JtYXRpb24gaXMgcmVhZCBmcm9tIHRoZSBAc2FtcHtO VF9GSUxFfQorK2NvcmUgZmlsZSBub3RlIG9uIExpbnV4LiAgTm90IGV2ZXJ5IHRhcmdldCBzdXBw b3J0cyBhY2Nlc3NpbmcgdGhpcworK2luZm9ybWF0aW9uLCBmb3IgdGFyZ2V0cyB3aXRob3V0IHN1 cHBvcnQsIGFuIGVtcHR5IGxpc3Qgd2lsbCBiZQorK3JldHVybmVkLgorK0BlbmQgZGVmdW4KKysK KytPbmUgbWF5IGFkZCBhcmJpdHJhcnkgYXR0cmlidXRlcyB0byBAY29kZXtnZGIuQ29yZWZpbGV9 IG9iamVjdHMgaW4gdGhlCisrdXN1YWwgUHl0aG9uIHdheS4gIFRoaXMgaXMgdXNlZnVsIGlmLCBm b3IgZXhhbXBsZSwgb25lIG5lZWRzIHRvIGRvCisrc29tZSBleHRyYSByZWNvcmQga2VlcGluZyBh c3NvY2lhdGVkIHdpdGggdGhlIGNvcmVmaWxlLgorK0B4cmVme2Nob29zaW5nIGF0dHJpYnV0ZSBu YW1lc30sIGZvciBndWlkYW5jZSBvbiBzZWxlY3RpbmcgYSBzdWl0YWJsZQorK25hbWUgZm9yIG5l dyBhdHRyaWJ1dGVzLgorKworK1RoZSBAY29kZXtDb3JlZmlsZS5tYXBwZWRfZmlsZXMgKCl9IG1l dGhvZCByZXR1cm5zIGEgbGlzdCBvZgorK0Bjb2Rle2dkYi5Db3JlZmlsZU1hcHBlZEZpbGV9IG9i amVjdHMuICBFYWNoIG9mIHRoZXNlIG9iamVjdHMKKytyZXByZXNlbnRzIGEgZmlsZSB0aGF0IHdh cyBmdWxseSwgb3IgcGFydGlhbGx5LCBtYXBwZWQgaW50byB0aGUKKytwcm9jZXNzZXMgYWRkcmVz cyBzcGFjZSB3aGVuIHRoZSBjb3JlIGZpbGUgd2FzIGNyZWF0ZWQuCisrCisrQSBAY29kZXtnZGIu Q29yZWZpbGVNYXBwZWRGaWxlfSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoK KysKKytAZGVmdmFyIENvcmVmaWxlTWFwcGVkRmlsZS5maWxlbmFtZQorK1RoaXMgcmVhZCBvbmx5 IGF0dHJpYnV0ZSBjb250YWlucyBhIG5vbi1lbXB0eSBzdHJpbmcsIHRoZSBmaWxlIG5hbWUgb2YK Kyt0aGUgbWFwcGVkIGZpbGUuCisrQGVuZCBkZWZ2YXIKKysKKytAZGVmdmFyIENvcmVmaWxlTWFw cGVkRmlsZS5idWlsZF9pZAorK1RoaXMgcmVhZCBvbmx5IGF0dHJpYnV0ZSBjb250YWlucyBhIG5v bi1lbXB0eSBzdHJpbmcgb3IgQGNvZGV7Tm9uZX0uCisrVGhpcyBpcyB0aGUgYnVpbGQtaWQgb2Yg dGhlIG1hcHBlZCBmaWxlIGV4dHJhY3RlZCBmcm9tIHRoZSBjb3JlIGZpbGUsCisrb3IgQGNvZGV7 Tm9uZX0gaWYgdGhlcmUgd2FzIG5vIGJ1aWxkLWlkLCBvciBAdmFsdWV7R0RCTn0gd2FzIHVuYWJs ZSB0bworK2V4dHJhY3QgdGhlIGJ1aWxkLWlkLgorK0BlbmQgZGVmdmFyCisrCisrQGRlZnZhciBD b3JlZmlsZU1hcHBlZEZpbGUuaXNfbWFpbl9leGVjdXRhYmxlCisrVGhpcyByZWFkIG9ubHkgYXR0 cmlidXRlIGlzIEBjb2Rle1RydWV9IGlmIEB2YWx1ZXtHREJOfSBiZWxpZXZlcyB0aGlzCisrbWFw cGluZyByZXByZXNlbnRzIHRoZSBtYWluIGV4ZWN1dGFibGUgZm9yIHdoaWNoIHRoaXMgY29yZSBm aWxlIHdhcworK2NyZWF0ZWQuICBUaGlzIHdpbGwgYmUgQGNvZGV7RmFsc2V9IGZvciBhbGwgb3Ro ZXIgbWFwcGluZ3MuCisrQGVuZCBkZWZ2YXIKKysKKytAZGVmdmFyIENvcmVmaWxlTWFwcGVkRmls ZS5yZWdpb25zCisrVGhpcyByZWFkIG9ubHkgYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZgor K0Bjb2Rle2dkYi5Db3JlZmlsZU1hcHBlZEZpbGVSZWdpb259IG9iamVjdHMuICBFYWNoIG9mIHRo ZXNlIG9iamVjdHMKKytkZXNjcmliZXMgYSByZWdpb24gb2YgdGhlIGZpbGUgdGhhdCB3YXMgbWFw cGVkIGludG8gdGhlIHByb2Nlc3Mgd2hlbgorK3RoZSBjb3JlIGZpbGUgd2FzIGNyZWF0ZWQsIGZ1 cnRoZXIgZGV0YWlscyBhcmUgZ2l2ZW4gYmVsb3cuCisrQGVuZCBkZWZ2YXIKKysKKytUaGUgQGNv ZGV7Z2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbn0gb2JqZWN0IGRlc2NyaWJlcyB3aGljaCBw YXJ0IG9mCisrYSBmaWxlIHRoYXQgd2FzIG1hcHBlZCBpbnRvIGEgcHJvY2VzcyB3aGVuIHRoZSBj b3JlIGZpbGUgd2FzIGNyZWF0ZWQuCisrCisrQSBAY29kZXtnZGIuQ29yZWZpbGVNYXBwZWRGaWxl fSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKysKKytAZGVmdmFyIENvcmVm aWxlTWFwcGVkRmlsZVJlZ2lvbi5zdGFydAorK1RoaXMgcmVhZCBvbmx5IGF0dHJpYnV0ZSBjb250 YWlucyB0aGUgc3RhcnQgYWRkcmVzcyBvZiB0aGlzIG1hcHBpbmcKKyt3aXRoaW4gdGhlIGluZmVy aW9yLgorK0BlbmQgZGVmdmFyCisrCisrQGRlZnZhciBDb3JlZmlsZU1hcHBlZEZpbGVSZWdpb24u ZW5kCisrVGhpcyByZWFkIG9ubHkgYXR0cmlidXRlIGNvbnRhaW5zIGVuZCBhZGRyZXNzIG9mIHRo aXMgbWFwcGluZyB3aXRoaW4KKyt0aGUgaW5mZXJpb3IuCisrQGVuZCBkZWZ2YXIKKysKKytAZGVm dmFyIENvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbi5maWxlX29mZnNldAorK1RoaXMgcmVhZCBvbmx5 IGF0dHJpYnV0ZSBjb250YWlucyB0aGUgb2Zmc2V0IHdpdGhpbiB0aGUgbWFwcGVkIGZpbGUKKytm b3IgdGhpcyBtYXBwaW5nLgorK0BlbmQgZGVmdmFyCisrCisgQG5vZGUgUHl0aG9uIEF1dG8tbG9h ZGluZworIEBzdWJzZWN0aW9uIFB5dGhvbiBBdXRvLWxvYWRpbmcKKyBAY2luZGV4IFB5dGhvbiBh dXRvLWxvYWRpbmcKK2RpZmYgLS1naXQgYS9nZGIvZ2RiY29yZS5oIGIvZ2RiL2dkYmNvcmUuaAor LS0tIGEvZ2RiL2dkYmNvcmUuaAorKysrIGIvZ2RiL2dkYmNvcmUuaAorQEAgLTI1OCw0ICsyNTgs NDcgQEAgc3RkOjpvcHRpb25hbDxjb3JlX3RhcmdldF9tYXBwZWRfZmlsZV9pbmZvPgorIGNvcmVf dGFyZ2V0X2ZpbmRfbWFwcGVkX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorIAkJCSAgICAg IHN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPiBhZGRyKTsKKyAKKysvKiBUeXBlIGhvbGRpbmcgaW5m b3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgZmlsZSBtYXBwZWQgaW50byB0aGUgaW5mZXJpb3IKKysg ICBhdCB0aGUgcG9pbnQgd2hlbiB0aGUgY29yZSBmaWxlIHdhcyBjcmVhdGVkLiAgQXNzb2NpYXRl cyBhIGJ1aWxkLWlkCisrICAgd2l0aCB0aGUgbGlzdCBvZiByZWdpb25zIHRoZSBmaWxlIGlzIG1h cHBlZCBpbnRvLiAgKi8KKytzdHJ1Y3QgY29yZV9tYXBwZWRfZmlsZQorK3sKKysgIC8qIFR5cGUg Zm9yIGEgcmVnaW9uIG9mIGEgZmlsZSB0aGF0IHdhcyBtYXBwZWQgaW50byB0aGUgaW5mZXJpb3Ig d2hlbgorKyAgICAgdGhlIGNvcmUgZmlsZSB3YXMgZ2VuZXJhdGVkLiAgKi8KKysgIHN0cnVjdCBy ZWdpb24KKysgIHsKKysgICAgLyogQ29uc3RydWN0b3IuICAgU2VlIG1lbWJlciB2YXJpYWJsZXMg Zm9yIGFyZ3VtZW50IGRlc2NyaXB0aW9ucy4gICovCisrICAgIHJlZ2lvbiAoQ09SRV9BRERSIHN0 YXJ0XywgQ09SRV9BRERSIGVuZF8sIENPUkVfQUREUiBmaWxlX29mc18pCisrICAgICAgOiBzdGFy dCAoc3RhcnRfKSwKKysJZW5kIChlbmRfKSwKKysJZmlsZV9vZnMgKGZpbGVfb2ZzXykKKysgICAg eyAvKiBOb3RoaW5nLiAgKi8gfQorKworKyAgICAvKiBUaGUgaW5mZXJpb3IgYWRkcmVzcyBmb3Ig dGhlIHN0YXJ0IG9mIHRoZSBtYXBwZWQgcmVnaW9uLiAgKi8KKysgICAgQ09SRV9BRERSIHN0YXJ0 OworKworKyAgICAvKiBUaGUgaW5mZXJpb3IgYWRkcmVzcyBpbW1lZGlhdGVseSBhZnRlciB0aGUg bWFwcGVkIHJlZ2lvbi4gICovCisrICAgIENPUkVfQUREUiBlbmQ7CisrCisrICAgIC8qIFRoZSBv ZmZzZXQgd2l0aGluIHRoZSBtYXBwZWQgZmlsZSBmb3IgdGhpcyBjb250ZW50LiAgKi8KKysgICAg Q09SRV9BRERSIGZpbGVfb2ZzOworKyAgfTsKKysKKysgIC8qIFRoZSBmaWxlbmFtZSBhcyByZWNv cmRlZCBpbiB0aGUgY29yZSBmaWxlLiAgKi8KKysgIHN0ZDo6c3RyaW5nIGZpbGVuYW1lOworKwor KyAgLyogSWYgbm90IG51bGxwdHIsIHRoZW4gdGhpcyBpcyB0aGUgYnVpbGQtaWQgYXNzb2NpYXRl ZCB3aXRoIHRoaXMKKysgICAgIGZpbGUuICAqLworKyAgY29uc3QgYmZkX2J1aWxkX2lkICpidWls ZF9pZCA9IG51bGxwdHI7CisrCisrICAvKiBBbGwgdGhlIG1hcHBlZCByZWdpb25zIG9mIHRoaXMg ZmlsZS4gICovCisrICBzdGQ6OnZlY3RvcjxyZWdpb24+IHJlZ2lvbnM7CisrCisrICAvKiBUcnVl IGlmIHRoaXMgaXMgdGhlIG1haW4gZXhlY3V0YWJsZS4gICovCisrICBib29sIGlzX21haW5fZXhl YyA9IGZhbHNlOworK307CisrCisrZXh0ZXJuIHN0ZDo6dmVjdG9yPGNvcmVfbWFwcGVkX2ZpbGU+ IGdkYl9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncworKyAgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBzdHJ1Y3QgYmZkICpjYmZkKTsKKysKKyAjZW5kaWYgLyogR0RCX0dEQkNPUkVfSCAqLworZGlm ZiAtLWdpdCBhL2dkYi9vYnNlcnZhYmxlLmMgYi9nZGIvb2JzZXJ2YWJsZS5jCistLS0gYS9nZGIv b2JzZXJ2YWJsZS5jCisrKysgYi9nZGIvb2JzZXJ2YWJsZS5jCitAQCAtNzYsNiArNzYsNyBAQCBE RUZJTkVfT0JTRVJWQUJMRSAodGFyZ2V0X3Bvc3Rfd2FpdCk7CisgREVGSU5FX09CU0VSVkFCTEUg KG5ld19wcm9ncmFtX3NwYWNlKTsKKyBERUZJTkVfT0JTRVJWQUJMRSAoZnJlZV9wcm9ncmFtX3Nw YWNlKTsKKyBERUZJTkVfT0JTRVJWQUJMRSAodHVpX2VuYWJsZWQpOworK0RFRklORV9PQlNFUlZB QkxFIChjb3JlX2ZpbGVfY2hhbmdlZCk7CisgCisgfSAvKiBuYW1lc3BhY2Ugb2JzZXJ2ZXJzICov CisgfSAvKiBuYW1lc3BhY2UgZ2RiICovCitkaWZmIC0tZ2l0IGEvZ2RiL29ic2VydmFibGUuaCBi L2dkYi9vYnNlcnZhYmxlLmgKKy0tLSBhL2dkYi9vYnNlcnZhYmxlLmgKKysrKyBiL2dkYi9vYnNl cnZhYmxlLmgKK0BAIC0yNjAsNiArMjYwLDEyIEBAIGV4dGVybiBvYnNlcnZhYmxlIDxwcm9ncmFt X3NwYWNlICovKiBwc3BhY2UgKi8+IGZyZWVfcHJvZ3JhbV9zcGFjZTsKKyAKKyBleHRlcm4gb2Jz ZXJ2YWJsZTxib29sIC8qIGVuYWJsZWQgKi8+IHR1aV9lbmFibGVkOworIAorKy8qIFRoZSBjb3Jl IGZpbGUgbG9hZGVkIGludG8gdGhlIHByb2dyYW0gc3BhY2UgaW5mZXJpb3IgSU5GIGhhcyBjaGFu Z2VkLgorKyAgIFRoZSBwcm9jZXNzIG9mIGNoYW5naW5nIGhhcyBjb21wbGV0ZWQsIGkuZS4gd2hl biB1bmxvYWRpbmcsIHRoZSB1bmxvYWQKKysgICBpcyBub3cgY29tcGxldGUuICBXaGVuIGxvYWRp bmcgYSBuZXcgY29yZSBmaWxlLCB0aGUgbG9hZCBpcyBjb21wbGV0ZSwKKysgICBzaGFyZWQgbGli cmFyaWVzIGhhdmUgYmVlbiBsb2FkZWQsIHJlZ2lzdGVycyBhbmQgdGhyZWFkcyByZWFkIGluLCBl dGMuICAqLworK2V4dGVybiBvYnNlcnZhYmxlPGluZmVyaW9yICovKiBpbmYgKi8+IGNvcmVfZmls ZV9jaGFuZ2VkOworKworIH0gLyogbmFtZXNwYWNlIG9ic2VydmVycyAqLworIAorIH0gLyogbmFt ZXNwYWNlIGdkYiAqLworZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9kYXAvZXZlbnRz LnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9ldmVudHMucHkKKy0tLSBhL2dkYi9weXRob24v bGliL2dkYi9kYXAvZXZlbnRzLnB5CisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL2V2ZW50 cy5weQorQEAgLTE2MSw3ICsxNjEsNyBAQCBfZXhwZWN0ZWRfcGF1c2UgPSBGYWxzZQorIAorIAor IEBpbl9nZGJfdGhyZWFkCistZGVmIGV4ZWNfYW5kX2V4cGVjdF9zdG9wKGNtZCwgZXhwZWN0ZWRf cGF1c2U9RmFsc2UsIHByb3BhZ2F0ZV9leGNlcHRpb249RmFsc2UpOgorK2RlZiBleGVjX2FuZF9l eHBlY3Rfc3RvcChjbWQsIGV4cGVjdGVkX3BhdXNlPUZhbHNlKToKKyAgICAgIiIiQSB3cmFwcGVy IGZvciBleGVjX2FuZF9sb2cgdGhhdCBzZXRzIHRoZSBjb250aW51ZS1zdXBwcmVzc2lvbiBmbGFn LgorIAorICAgICBXaGVuIEVYUEVDVEVEX1BBVVNFIGlzIFRydWUsIGEgc3RvcCB0aGF0IGxvb2tz IGxpa2UgYSBwYXVzZSAoZS5nLiwKK0BAIC0xNzQsNyArMTc0LDcgQEAgZGVmIGV4ZWNfYW5kX2V4 cGVjdF9zdG9wKGNtZCwgZXhwZWN0ZWRfcGF1c2U9RmFsc2UsIHByb3BhZ2F0ZV9leGNlcHRpb249 RmFsc2UpOgorICAgICAjIGNvbnRpbnVpbmcuCisgICAgIF9zdXBwcmVzc19jb250ID0gbm90IGV4 cGVjdGVkX3BhdXNlCisgICAgICMgRklYTUUgaWYgdGhlIGNhbGwgZmFpbHMgc2hvdWxkIHdlIGNs ZWFyIF9zdXBwcmVzc19jb250PworLSAgICBleGVjX2FuZF9sb2coY21kLCBwcm9wYWdhdGVfZXhj ZXB0aW9uKQorKyAgICBleGVjX2FuZF9sb2coY21kKQorIAorIAorICMgTWFwIGZyb20gZ2RiIHN0 b3AgcmVhc29ucyB0byBEQVAgc3RvcCByZWFzb25zLiAgU29tZSBvZiB0aGVzZSBjYW4ndAorQEAg LTI3Niw2ICsyNzYsMzEgQEAgZGVmIF9vbl9pbmZlcmlvcl9jYWxsKGV2ZW50KToKKyAgICAgICAg ICAgICBzZW5kX2V2ZW50KCJzdG9wcGVkIiwgb2JqKQorIAorIAorK0Bpbl9nZGJfdGhyZWFkCisr ZGVmIF9vbl9jb3JlZmlsZV9jaGFuZ2VkKGV2ZW50KToKKysgICAgIyBJZ25vcmUgZXZlbnRzIHJl bGF0aW5nIHRvIGNvcmVmaWxlIGJlaW5nIHVubG9hZGVkLgorKyAgICBpZiBldmVudC5pbmZlcmlv ci5jb3JlZmlsZSBpcyBOb25lOgorKyAgICAgICAgcmV0dXJuCisrCisrICAgICMgQ29yZWZpbGVz IGFyZSB1c3VhbGx5IGF0dGFjaGVkIHZpYSB0aGUgJ2F0dGFjaCcgcmVxdWVzdCwgd2hpY2gKKysg ICAgIyBzZXRzIHRoZSBnbG9iYWwgX2V4cGVjdGVkX3N0b3BfcmVhc29uIHRvICdhdHRhY2gnLiAg SXQgaXMKKysgICAgIyBiZWNhdXNlIG9mIHRoaXMgdGhhdCBpdCBpcyBzYWZlIHRvIGZvcndhcmQg dG8gX29uX3N0b3AsIGFzIHdoZW4KKysgICAgIyBfZXhwZWN0ZWRfc3RvcF9yZWFzb24gaXMgc2V0 IF9vbl9zdG9wIGRvZXNuJ3QgcmVhZCB0aGUKKysgICAgIyBldmVudC5kZXRhaWxzLCB3aGljaCBF VkVOVCBkb2Vzbid0IGhhdmUuCisrICAgICMKKysgICAgIyBIb3dldmVyLCBpZiB0aGUgdXNlciBs b2FkcyBhIGNvcmUgZmlsZSB2aWEgc29tZSBtZWNoYW5pc20gb3RoZXIKKysgICAgIyB0aGFuIHRo ZSAnYXR0YWNoJyByZXF1ZXN0LCBlLmcuIHRoZXkgdXNlIHRoZSByZXBsIHRvIGlzc3VlIGEgR0RC CisrICAgICMgJ2NvcmUtZmlsZScgY29tbWFuZCwgdGhlbiB3aGVuIHdlIGdldCBoZXJlIF9leHBl Y3RlZF9zdG9wX3JlYXNvbgorKyAgICAjIHdpbGwgbm90IGJlIHNldC4KKysgICAgIworKyAgICAj IFNvLCBpbiBlaXRoZXIgY2FzZSwgc2V0IF9leHBlY3RlZF9zdG9wX3JlYXNvbiBub3cuCisrICAg IGdsb2JhbCBfZXhwZWN0ZWRfc3RvcF9yZWFzb24KKysgICAgX2V4cGVjdGVkX3N0b3BfcmVhc29u ID0gImF0dGFjaCIKKysKKysgICAgIyBBIGNvcmVmaWxlIHdhcyBsb2FkZWQsIGFubm91bmNlIHRo YXQgdGhlIGluZmVyaW9yIGhhcyBzdG9wcGVkLgorKyAgICBfb25fc3RvcChldmVudCkKKysKKysK KyBnZGIuZXZlbnRzLnN0b3AuY29ubmVjdChfb25fc3RvcCkKKyBnZGIuZXZlbnRzLmV4aXRlZC5j b25uZWN0KF9vbl9leGl0KQorIGdkYi5ldmVudHMubmV3X3RocmVhZC5jb25uZWN0KF9uZXdfdGhy ZWFkKQorQEAgLTI4NCwzICszMDksNCBAQCBnZGIuZXZlbnRzLmNvbnQuY29ubmVjdChfY29udCkK KyBnZGIuZXZlbnRzLm5ld19vYmpmaWxlLmNvbm5lY3QoX25ld19vYmpmaWxlKQorIGdkYi5ldmVu dHMuZnJlZV9vYmpmaWxlLmNvbm5lY3QoX29iamZpbGVfcmVtb3ZlZCkKKyBnZGIuZXZlbnRzLmlu ZmVyaW9yX2NhbGwuY29ubmVjdChfb25faW5mZXJpb3JfY2FsbCkKKytnZGIuZXZlbnRzLmNvcmVm aWxlX2NoYW5nZWQuY29ubmVjdChfb25fY29yZWZpbGVfY2hhbmdlZCkKK2RpZmYgLS1naXQgYS9n ZGIvcHl0aG9uL2xpYi9nZGIvZGFwL2xhdW5jaC5weSBiL2dkYi9weXRob24vbGliL2dkYi9kYXAv bGF1bmNoLnB5CistLS0gYS9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL2xhdW5jaC5weQorKysrIGIv Z2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9sYXVuY2gucHkKK0BAIC01OSwxMiArNTksMTYgQEAgY2xh c3MgX0xhdW5jaE9yQXR0YWNoRGVmZXJyZWRSZXF1ZXN0KERlZmVycmVkUmVxdWVzdCk6CisgICAg ICAgICBzdXBlcigpLnJlc2NoZWR1bGUoKQorIAorIAorKyMgSGFuZGxlIHdoaXRlc3BhY2UsIHF1 b3RlcywgYW5kIGJhY2tzbGFzaGVzIGhlcmUuICBFeGFjdGx5IHdoYXQKKysjIHRvIHF1b3RlIGRl cGVuZHMgb24gbGliaWJlcnR5J3MgYnVpbGRhcmd2IGFuZCBzYWZlLWN0eXBlLgorK2RlZiBlc2Nh cGVfZmlsZW5hbWUoZmlsZW5hbWUpOgorKyAgICByZXR1cm4gcmUuc3ViKCJbIFx0XG5cclxmXHZc XFxcJ1wiXSIsICJcXFxcXFxnPDA+IiwgZmlsZW5hbWUpCisrCisrCisgIyBBIHdyYXBwZXIgZm9y IHRoZSAnZmlsZScgY29tbWFuZCB0aGF0IGNvcnJlY3RseSBxdW90ZXMgaXRzIGFyZ3VtZW50Lgor IEBpbl9nZGJfdGhyZWFkCisgZGVmIGZpbGVfY29tbWFuZChwcm9ncmFtKToKKy0gICAgIyBIYW5k bGUgd2hpdGVzcGFjZSwgcXVvdGVzLCBhbmQgYmFja3NsYXNoZXMgaGVyZS4gIEV4YWN0bHkgd2hh dAorLSAgICAjIHRvIHF1b3RlIGRlcGVuZHMgb24gbGliaWJlcnR5J3MgYnVpbGRhcmd2IGFuZCBz YWZlLWN0eXBlLgorLSAgICBwcm9ncmFtID0gcmUuc3ViKCJbIFx0XG5cclxmXHZcXFxcJ1wiXSIs ICJcXFxcXFxnPDA+IiwgcHJvZ3JhbSkKKysgICAgcHJvZ3JhbSA9IGVzY2FwZV9maWxlbmFtZShw cm9ncmFtKQorICAgICBleGVjX2FuZF9sb2coImZpbGUgIiArIHByb2dyYW0pCisgCisgCitAQCAt MTMyLDYgKzEzNiw3IEBAIGRlZiBhdHRhY2goCisgICAgIHByb2dyYW06IE9wdGlvbmFsW3N0cl0g PSBOb25lLAorICAgICBwaWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgICB0YXJnZXQ6IE9w dGlvbmFsW3N0cl0gPSBOb25lLAorKyAgICBjb3JlRmlsZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUs CisgICAgICoqYXJncywKKyApOgorICAgICAjIFRoZSBhY3R1YWwgYXR0YWNoIGlzIGhhbmRsZWQg YnkgdGhpcyBmdW5jdGlvbi4KK0BAIC0xNDMsMTEgKzE0OCwxNCBAQCBkZWYgYXR0YWNoKAorICAg ICAgICAgICAgIGNtZCA9ICJhdHRhY2ggIiArIHN0cihwaWQpCisgICAgICAgICBlbGlmIHRhcmdl dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICBjbWQgPSAidGFyZ2V0IHJlbW90ZSAiICsgdGFy Z2V0CisrICAgICAgICBlbGlmIGNvcmVGaWxlIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgIGNt ZCA9ICJjb3JlLWZpbGUgIiArIGVzY2FwZV9maWxlbmFtZShjb3JlRmlsZSkKKyAgICAgICAgIGVs c2U6CistICAgICAgICAgICAgcmFpc2UgREFQRXhjZXB0aW9uKCJhdHRhY2ggcmVxdWlyZXMgZWl0 aGVyICdwaWQnIG9yICd0YXJnZXQnIikKKysgICAgICAgICAgICByYWlzZSBEQVBFeGNlcHRpb24o ImF0dGFjaCByZXF1aXJlcyBlaXRoZXIgJ3BpZCcsICd0YXJnZXQnLCBvciAnY29yZUZpbGUnIikK KyAgICAgICAgIGV4cGVjdF9wcm9jZXNzKCJhdHRhY2giKQorICAgICAgICAgZXhwZWN0X3N0b3Ao ImF0dGFjaCIpCisgICAgICAgICBleGVjX2FuZF9sb2coY21kKQorKworICAgICAgICAgIyBBdHRh Y2ggcmVzcG9uc2UgZG9lcyBub3QgaGF2ZSBhIGJvZHkuCisgICAgICAgICByZXR1cm4gTm9uZQor IAorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9kYXAvbmV4dC5weSBiL2dkYi9weXRo b24vbGliL2dkYi9kYXAvbmV4dC5weQorLS0tIGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9uZXh0 LnB5CisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL25leHQucHkKK0BAIC03Niw3ICs3Niw3 IEBAIGRlZiBzdGVwX2luKAorIEByZXF1ZXN0KCJzdGVwT3V0IikKKyBkZWYgc3RlcF9vdXQoKiwg dGhyZWFkSWQ6IGludCwgc2luZ2xlVGhyZWFkOiBib29sID0gRmFsc2UsICoqYXJncyk6CisgICAg IF9oYW5kbGVfdGhyZWFkX3N0ZXAodGhyZWFkSWQsIHNpbmdsZVRocmVhZCwgVHJ1ZSkKKy0gICAg ZXhlY19hbmRfZXhwZWN0X3N0b3AoImZpbmlzaCAmIiwgcHJvcGFnYXRlX2V4Y2VwdGlvbj1UcnVl KQorKyAgICBleGVjX2FuZF9leHBlY3Rfc3RvcCgiZmluaXNoICYiKQorIAorIAorIEByZXF1ZXN0 KCJjb250aW51ZSIpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9zZXJ2ZXIu cHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL3NlcnZlci5weQorLS0tIGEvZ2RiL3B5dGhvbi9s aWIvZ2RiL2RhcC9zZXJ2ZXIucHkKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9kYXAvc2VydmVy LnB5CitAQCAtMTksNiArMTksNyBAQCBpbXBvcnQgaW5zcGVjdAorIGltcG9ydCBqc29uCisgaW1w b3J0IHRocmVhZGluZworIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKKytm cm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKyAKKyBpbXBvcnQgZ2RiCisgCitAQCAtNjEwLDEx ICs2MTEsMjkgQEAgZGVmIHRlcm1pbmF0ZSgqKmFyZ3MpOgorICAgICBleGVjX2FuZF9sb2coImtp bGwiKQorIAorIAorK0Bpbl9nZGJfdGhyZWFkCisrZGVmIF9kaXNjb25uZWN0X29yX2tpbGwodGVy bWluYXRlOiBPcHRpb25hbFtib29sXSk6CisrICAgIGluZiA9IGdkYi5zZWxlY3RlZF9pbmZlcmlv cigpCisrICAgIGlmIGluZi5jb25uZWN0aW9uIGlzIE5vbmU6CisrICAgICAgICAjIE5vdGhpbmcg dG8gZG8gaGVyZS4KKysgICAgICAgIHJldHVybgorKyAgICBpZiB0ZXJtaW5hdGUgaXMgTm9uZToK KysgICAgICAgICMgVGhlIGRlZmF1bHQgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBpbmZlcmlvciB3 YXMgYXR0YWNoZWQgb3IKKysgICAgICAgICMgbGF1bmNoZWQuCisrICAgICAgICB0ZXJtaW5hdGUg PSBub3QgaW5mLndhc19hdHRhY2hlZAorKworKyAgICBpZiBpbmYuY29yZWZpbGUgaXMgbm90IE5v bmU6CisrICAgICAgICBleGVjX2FuZF9sb2coImNvcmUtZmlsZSIpCisrICAgIGVsaWYgdGVybWlu YXRlOgorKyAgICAgICAgZXhlY19hbmRfbG9nKCJraWxsIikKKysgICAgZWxpZiBpbmYud2FzX2F0 dGFjaGVkOgorKyAgICAgICAgZXhlY19hbmRfbG9nKCJkZXRhY2giKQorKworKworIEByZXF1ZXN0 KCJkaXNjb25uZWN0Iiwgb25fZGFwX3RocmVhZD1UcnVlLCBleHBlY3Rfc3RvcHBlZD1GYWxzZSkK KyBAY2FwYWJpbGl0eSgic3VwcG9ydFRlcm1pbmF0ZURlYnVnZ2VlIikKKy1kZWYgZGlzY29ubmVj dCgqLCB0ZXJtaW5hdGVEZWJ1Z2dlZTogYm9vbCA9IEZhbHNlLCAqKmFyZ3MpOgorLSAgICBpZiB0 ZXJtaW5hdGVEZWJ1Z2dlZToKKy0gICAgICAgIHNlbmRfZ2RiX3dpdGhfcmVzcG9uc2UoImtpbGwi KQorK2RlZiBkaXNjb25uZWN0KCosIHRlcm1pbmF0ZURlYnVnZ2VlOiBPcHRpb25hbFtib29sXSA9 IE5vbmUsICoqYXJncyk6CisrICAgIHNlbmRfZ2RiX3dpdGhfcmVzcG9uc2UobGFtYmRhOiBfZGlz Y29ubmVjdF9vcl9raWxsKHRlcm1pbmF0ZURlYnVnZ2VlKSkKKyAgICAgX3NlcnZlci5zaHV0ZG93 bigpCisgCisgCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9zdGFydHVwLnB5 IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9zdGFydHVwLnB5CistLS0gYS9nZGIvcHl0aG9uL2xp Yi9nZGIvZGFwL3N0YXJ0dXAucHkKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9kYXAvc3RhcnR1 cC5weQorQEAgLTIwNCw3ICsyMDQsNyBAQCBkZWYgbG9nX3N0YWNrKGxldmVsPUxvZ0xldmVsLkRF RkFVTFQpOgorIAorIAorIEBpbl9nZGJfdGhyZWFkCistZGVmIGV4ZWNfYW5kX2xvZyhjbWQsIHBy b3BhZ2F0ZV9leGNlcHRpb249RmFsc2UpOgorK2RlZiBleGVjX2FuZF9sb2coY21kKToKKyAgICAg IiIiRXhlY3V0ZSB0aGUgZ2RiIGNvbW1hbmQgQ01ELgorICAgICBJZiBsb2dnaW5nIGlzIGVuYWJs ZWQsIGxvZyB0aGUgY29tbWFuZCBhbmQgaXRzIG91dHB1dC4iIiIKKyAgICAgbG9nKCIrKysgIiAr IGNtZCkKK0BAIC0yMTMsMTAgKzIxMywxMCBAQCBkZWYgZXhlY19hbmRfbG9nKGNtZCwgcHJvcGFn YXRlX2V4Y2VwdGlvbj1GYWxzZSk6CisgICAgICAgICBpZiBvdXRwdXQgIT0gIiI6CisgICAgICAg ICAgICAgbG9nKCI+Pj4gIiArIG91dHB1dCkKKyAgICAgZXhjZXB0IGdkYi5lcnJvciBhcyBlOgor LSAgICAgICAgaWYgcHJvcGFnYXRlX2V4Y2VwdGlvbjoKKy0gICAgICAgICAgICByYWlzZSBEQVBF eGNlcHRpb24oc3RyKGUpKSBmcm9tIGUKKy0gICAgICAgIGVsc2U6CistICAgICAgICAgICAgbG9n X3N0YWNrKCkKKysgICAgICAgICMgRG9uJ3Qgbm9ybWFsbHkgd2FudCB0byBzZWUgdGhpcywgYXMg aXQgaW50ZXJmZXJlcyB3aXRoIHRoZQorKyAgICAgICAgIyB0ZXN0IHN1aXRlLgorKyAgICAgICAg bG9nX3N0YWNrKExvZ0xldmVsLkZVTEwpCisrICAgICAgICByYWlzZSBEQVBFeGNlcHRpb24oc3Ry KGUpKSBmcm9tIGUKKyAKKyAKKyBAaW5fZ2RiX3RocmVhZAorZGlmZiAtLWdpdCBhL2dkYi9weXRo b24vcHktYWxsLWV2ZW50cy5kZWYgYi9nZGIvcHl0aG9uL3B5LWFsbC1ldmVudHMuZGVmCistLS0g YS9nZGIvcHl0aG9uL3B5LWFsbC1ldmVudHMuZGVmCisrKysgYi9nZGIvcHl0aG9uL3B5LWFsbC1l dmVudHMuZGVmCitAQCAtNDYsMyArNDYsNCBAQCBHREJfUFlfREVGSU5FX0VWRU5UKGV4ZWN1dGFi bGVfY2hhbmdlZCkKKyBHREJfUFlfREVGSU5FX0VWRU5UKG5ld19wcm9nc3BhY2UpCisgR0RCX1BZ X0RFRklORV9FVkVOVChmcmVlX3Byb2dzcGFjZSkKKyBHREJfUFlfREVGSU5FX0VWRU5UKHR1aV9l bmFibGVkKQorK0dEQl9QWV9ERUZJTkVfRVZFTlQoY29yZWZpbGVfY2hhbmdlZCkKK2RpZmYgLS1n aXQgYS9nZGIvcHl0aG9uL3B5LWNvcmVmaWxlLmMgYi9nZGIvcHl0aG9uL3B5LWNvcmVmaWxlLmMK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL3B5 LWNvcmVmaWxlLmMKK0BAIC0wLDAgKzEsNzIzIEBACisrLyogUHl0aG9uIGludGVyZmFjZSB0byBj b3JlIGZpbGVzLgorKworKyAgIENvcHlyaWdodCAoQykgMjAyNSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKwor KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlICJweXRob24t aW50ZXJuYWwuaCIKKysjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCisrI2luY2x1ZGUgIm9ic2VydmFi bGUuaCIKKysjaW5jbHVkZSAiaW5mZXJpb3IuaCIKKysjaW5jbHVkZSAiZ2RiY29yZS5oIgorKyNp bmNsdWRlICJnZGJzdXBwb3J0L3JzcC1sb3cuaCIKKysjaW5jbHVkZSAicHktZXZlbnQuaCIKKysK KysvKiBBIGdkYi5Db3JlZmlsZSBvYmplY3QuICAqLworKworK3N0cnVjdCBjb3JlZmlsZV9vYmpl Y3QKKyt7CisrICBQeU9iamVjdF9IRUFECisrCisrICAvKiBUaGUgaW5mZXJpb3IgdGhpcyBjb3Jl IGZpbGUgaXMgYXR0YWNoZWQgdG8uICBUaGlzIHdpbGwgYmUgc2V0IHRvIE5VTEwKKysgICAgIHdo ZW4gdGhlIGluZmVyaW9yIGlzIGRlbGV0ZWQsIG9yIGlmIGEgZGlmZmVyZW50IGNvcmUgZmlsZSBp cyBsb2FkZWQKKysgICAgIGZvciB0aGUgaW5mZXJpb3IuICBXaGVuIHRoaXMgaXMgTlVMTCB0aGUg Z2RiLkNvcmVmaWxlIG9iamVjdCBpcworKyAgICAgY29uc2lkZXJlZCBpbnZhbGlkLiovCisrICBz dHJ1Y3QgaW5mZXJpb3IgKmluZmVyaW9yOworKworKyAgLyogRGljdGlvbmFyeSBob2xkaW5nIHVz ZXItYWRkZWQgYXR0cmlidXRlcy4gIFRoaXMgaXMgdGhlIF9fZGljdF9fCisrICAgICBhdHRyaWJ1 dGUgb2YgdGhlIG9iamVjdC4gIFRoaXMgaXMgYW4gb3duaW5nIHJlZmVyZW5jZS4gICovCisrICBQ eU9iamVjdCAqZGljdDsKKysKKysgIC8qIEEgVHVwbGUgb2YgZ2RiLkNvcmVmaWxlTWFwcGVkRmls ZSBvYmplY3RzLiAgVGhpcyB0dXBsZSBpcyBvbmx5IGNyZWF0ZWQKKysgICAgIHRoZSBmaXJzdCB0 aW1lIHRoZSB1c2VyIGNhbGxzIGdkYi5Db3JlZmlsZS5tYXBwZWRfZmlsZXMoKSwgdGhlIHJlc3Vs dAorKyAgICAgaXMgY2FjaGVkIGhlcmUuICBJZiB0aGlzIHBvaW50ZXIgaXMgbm90IE5VTEwgdGhl biB0aGlzIGlzIGFuIG93bmluZworKyAgICAgcG9pbnRlciAoaS5lLiB0aGlzIG93bnMgYSByZWZl cmVuY2UgdG8gdGhlIFR1cGxlKS4gICovCisrICBQeU9iamVjdCAqbWFwcGVkX2ZpbGVzOworK307 CisrCisrZXh0ZXJuIFB5VHlwZU9iamVjdCBjb3JlZmlsZV9vYmplY3RfdHlwZQorKyAgICBDUFlD SEVDS0VSX1RZUEVfT0JKRUNUX0ZPUl9UWVBFREVGICgiY29yZWZpbGVfb2JqZWN0Iik7CisrCisr LyogQSBnZGIuQ29yZWZpbGVNYXBwZWQgb2JqZWN0LiAgKi8KKysKKytzdHJ1Y3QgY29yZWZpbGVf bWFwcGVkX2ZpbGVfb2JqZWN0CisreworKyAgUHlPYmplY3RfSEVBRAorKworKyAgLyogVGhlIG5h bWUgb2YgYSBmaWxlIHRoYXQgd2FzIG1hcHBlZCB3aGVuIHRoZSBjb3JlIGZpbGUgd2FzIGNyZWF0 ZWQuCisrICAgICBUaGlzIGlzIGEgJ3N0cicgb2JqZWN0LiAgKi8KKysgIFB5T2JqZWN0ICpmaWxl bmFtZTsKKysKKysgIC8qIFRoZSBidWlsZC1pZCBvZiBhIGZpbGUgdGhhdCB3YXMgbWFwcGVkIHdo ZW4gdGhlIGNvcmUgZmlsZSB3YXMKKysgICAgIGNyZWF0ZWQuICBUaGlzIGlzIGVpdGhlciBhICdz dHInIGlmIHRoZSBmaWxlIGhhZCBhIGJ1aWxkLWlkLCBvcgorKyAgICAgJ05vbmUnIGlmIHRoZXJl IHdhcyBubyBidWlsZC1pZCBmb3IgdGhpcyBmaWxlLiAgKi8KKysgIFB5T2JqZWN0ICpidWlsZF9p ZDsKKysKKysgIC8qIEEgTGlzdCBvZiBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uIG9iamVj dHMuICAqLworKyAgUHlPYmplY3QgKnJlZ2lvbnM7CisrCisrICAvKiBUcnVlIGlmIHRoaXMgcmVw cmVzZW50cyB0aGUgbWFpbiBleGVjdXRhYmxlIGZyb20gd2hpY2ggdGhlIGNvcmUgZmlsZQorKyAg ICAgd2FzIGNyZWF0ZWQuICAqLworKyAgYm9vbCBpc19tYWluX2V4ZWNfcDsKKyt9OworKworK2V4 dGVybiBQeVR5cGVPYmplY3QgY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0X3R5cGUKKysgICAg Q1BZQ0hFQ0tFUl9UWVBFX09CSkVDVF9GT1JfVFlQRURFRiAoImNvcmVmaWxlX21hcHBlZF9maWxl X29iamVjdCIpOworKworKy8qIEEgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbiBvYmplY3Qu ICAqLworKworK3N0cnVjdCBjb3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0Cisrewor KyAgUHlPYmplY3RfSEVBRAorKworKyAgLyogVGhlIHN0YXJ0IGFuZCBlbmQgYWRkcmVzc2VzIGZv ciB0aGlzIG1hcHBpbmcsIHRoZXNlIGFyZSBhZGRyZXNzZXMKKysgICAgIHdpdGhpbiB0aGUgaW5m ZXJpb3IncyBhZGRyZXNzIHNwYWNlLiAgKi8KKysgIENPUkVfQUREUiBzdGFydDsKKysgIENPUkVf QUREUiBlbmQ7CisrCisrICAvKiBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUgbWFwcGVkIGZpbGUgZm9y IHRoaXMgbWFwcGluZy4gICovCisrICBVTE9OR0VTVCBmaWxlX29mZnNldDsKKyt9OworKworK2V4 dGVybiBQeVR5cGVPYmplY3QgY29yZWZpbGVfbWFwcGVkX2ZpbGVfcmVnaW9uX29iamVjdF90eXBl CisrICAgIENQWUNIRUNLRVJfVFlQRV9PQkpFQ1RfRk9SX1RZUEVERUYgKCJjb3JlZmlsZV9tYXBw ZWRfZmlsZV9yZWdpb25fb2JqZWN0Iik7CisrCisrLyogQ2xlYXIgdGhlIGluZmVyaW9yIHBvaW50 ZXIgaW4gYSBDb3JlZmlsZSBvYmplY3QgT0JKIHdoZW4gYW4gaW5mZXJpb3IgaXMKKysgICBkZWxl dGVkLiAgKi8KKysKKytzdHJ1Y3QgaW5mZXJpb3JfY29yZWZpbGVfZGVsZXRlcgorK3sKKysgIHZv aWQgb3BlcmF0b3IoKSAoY29yZWZpbGVfb2JqZWN0ICpvYmopCisrICB7CisrICAgIGlmICghZ2Ri X3B5dGhvbl9pbml0aWFsaXplZCkKKysgICAgICByZXR1cm47CisrCisrICAgIGdkYnB5X2VudGVy IGVudGVyX3B5OworKworKyAgICAvKiBXaGVuIE9CSkVDVCBnb2VzIG91dCBvZiBzY29wZSB0aGlz IHdpbGwgUHlfREVDUkVGIG9uIE9CSi4gICovCisrICAgIGdkYnB5X3JlZjxjb3JlZmlsZV9vYmpl Y3Q+IG9iamVjdCAob2JqKTsKKysKKysgICAgLyogQ2xlYXJpbmcgdGhlIGluZmVyaW9yIHBvaW50 ZXIgbWFya3MgdGhlIGdkYi5Db3JlZmlsZSBhcyBpbnZhbGlkLiAgKi8KKysgICAgb2JqZWN0LT5p bmZlcmlvciA9IG51bGxwdHI7CisrICB9CisrfTsKKysKKysvKiBTdG9yZSBhIGdkYi5Db3JlZmls ZSBvYmplY3QgaW4gYW4gaW5mZXJpb3IncyByZWdpc3RyeS4gICovCisrCisrc3RhdGljIGNvbnN0 IHJlZ2lzdHJ5PGluZmVyaW9yPjo6a2V5PGNvcmVmaWxlX29iamVjdCwKKysJCQkJICAgICBpbmZl cmlvcl9jb3JlZmlsZV9kZWxldGVyPgorKyAgICAgY2ZweV9pbmZlcmlvcl9jb3JlZmlsZV9kYXRh X2tleTsKKysKKysvKiBTZWUgcHl0aG9uLWludGVybmFsLmguICAqLworKworK2dkYnB5X3JlZjw+ CisrZ2RicHlfY29yZV9maWxlX2Zyb21faW5mZXJpb3IgKGluZmVyaW9yICppbmYpCisreworKyAg Z2RiX2Fzc2VydCAoaW5mICE9IG51bGxwdHIpOworKyAgZ2RiX2Fzc2VydCAoaW5mLT5wc3BhY2Ug IT0gbnVsbHB0cik7CisrCisrICBwcm9ncmFtX3NwYWNlICpwc3BhY2UgPSBpbmYtPnBzcGFjZTsK KysKKysgIGlmIChwc3BhY2UtPmNvcmVfYmZkICgpID09IG51bGxwdHIpCisrICAgIHJldHVybiBn ZGJweV9yZWY8Pjo6bmV3X3JlZmVyZW5jZSAoUHlfTm9uZSk7CisrCisrICBQeU9iamVjdCAqcmVz dWx0ID0gKFB5T2JqZWN0ICopIGNmcHlfaW5mZXJpb3JfY29yZWZpbGVfZGF0YV9rZXkuZ2V0IChp bmYpOworKyAgaWYgKHJlc3VsdCA9PSBudWxscHRyKQorKyAgICB7CisrICAgICAgZ2RicHlfcmVm PGNvcmVmaWxlX29iamVjdD4gb2JqZWN0CisrCShQeU9iamVjdF9OZXcgKGNvcmVmaWxlX29iamVj dCwgJmNvcmVmaWxlX29iamVjdF90eXBlKSk7CisrICAgICAgaWYgKG9iamVjdCA9PSBudWxscHRy KQorKwlyZXR1cm4gbnVsbHB0cjsKKysKKysgICAgICAvKiBFbnN1cmUgdGhlICdpbmZlcmlvcicg ZmllbGQgaXMgc2V0IHRvIE5VTEwuICBJZiB0aGUgUHlEaWN0X05ldworKwkgY2FsbCBmYWlscyB0 aGVuIHRoZSBnZGIuQ29yZWZpbGUgd2lsbCBiZSBkaXNjYXJkZWQgYW5kCisrCSBjZnB5X2RlYWxs b2Mgd2lsbCBiZSBjYWxsZWQsIHdoaWNoIHJlcXVpcmVzIHRoYXQgdGhlICdpbmZlcmlvcicgYmUK KysJIHNldCB0byBOVUxMLiAgKi8KKysgICAgICBvYmplY3QtPmluZmVyaW9yID0gbnVsbHB0cjsK KysgICAgICBvYmplY3QtPm1hcHBlZF9maWxlcyA9IG51bGxwdHI7CisrICAgICAgb2JqZWN0LT5k aWN0ID0gUHlEaWN0X05ldyAoKTsKKysgICAgICBpZiAob2JqZWN0LT5kaWN0ID09IG51bGxwdHIp CisrCXJldHVybiBudWxscHRyOworKworKyAgICAgIC8qIE5vdyB0aGF0IHRoZSBnZGIuQ29yZWZp bGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpc2VkIGFuZCB3ZQorKwkga25vdyB0aGF0 IGl0IGlzIGdvaW5nIHRvIGJlIHBhc3NlZCBiYWNrIHRvIHRoZSB1c2VyLCBtb3ZlIGl0IG91dAor Kwkgb2YgdGhlIGludmFsaWQgc3RhdGUgYnkgc2V0dGluZyB0aGUgJ2luZmVyaW9yJyBmaWVsZCB0 byBhIG5vbiBOVUxMCisrCSB2YWx1ZS4gICovCisrICAgICAgb2JqZWN0LT5pbmZlcmlvciA9IGlu ZjsKKysgICAgICBjZnB5X2luZmVyaW9yX2NvcmVmaWxlX2RhdGFfa2V5LnNldCAoaW5mLCBvYmpl Y3QuZ2V0ICgpKTsKKysgICAgICByZXN1bHQgPSAoUHlPYmplY3QgKikgb2JqZWN0LnJlbGVhc2Ug KCk7CisrICAgIH0KKysKKysgIHJldHVybiBnZGJweV9yZWY8Pjo6bmV3X3JlZmVyZW5jZSAocmVz dWx0KTsKKyt9CisrCisrLyogUmV0dXJuIHRydWUgaWYgT0JKIGlzIHZhbGlkLiAgKi8KKysKKytz dGF0aWMgYm9vbAorK2NmcHlfY29yZWZpbGVfb2JqZWN0X2lzX3ZhbGlkIChjb25zdCBjb3JlZmls ZV9vYmplY3QgKm9iaikKKyt7CisrICBpZiAob2JqLT5pbmZlcmlvciA9PSBudWxscHRyKQorKyAg ICByZXR1cm4gZmFsc2U7CisrCisrICBnZGJfYXNzZXJ0IChvYmotPmluZmVyaW9yLT5wc3BhY2Ug IT0gbnVsbHB0cik7CisrCisrICByZXR1cm4gb2JqLT5pbmZlcmlvci0+cHNwYWNlLT5jb3JlX2Jm ZCAoKSAhPSBudWxscHRyOworK30KKysKKysvKiBSZXF1aXJlIHRoYXQgQ09SRUZJTEVfT0JKIGJl IGEgdmFsaWQgY29yZSBmaWxlLiAgQSB2YWxpZCBjb3JlIGZpbGUKKysgICBvYmplY3QgaGFzIGEg dmFsaWQgcHJvZ3JhbSBzcGFjZSwgYW5kIHRoZSBwcm9ncmFtIHNwYWNlIGhhcyBhIGNvcmUgZmls ZQorKyAgIGxvYWRlZCBpbnRvIGl0LiAgKi8KKysjZGVmaW5lIENGUFlfUkVRVUlSRV9WQUxJRChj b3JlZmlsZV9vYmopCQkJCVwKKysgIGRvIHsJCQkJCQkJCQlcCisrICAgIGlmICghY2ZweV9jb3Jl ZmlsZV9vYmplY3RfaXNfdmFsaWQgKGNvcmVmaWxlX29iaikpCQkJXAorKyAgICAgIHsJCQkJCQkJ CQlcCisrCVB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLAkJCQlcCisrCQkJIF8o IkNvcmVmaWxlIG5vIGxvbmdlciBleGlzdHMuIikpOwkJXAorKwlyZXR1cm4gbnVsbHB0cjsJCQkJ CQkJXAorKyAgICAgIH0JCQkJCQkJCQlcCisrICB9IHdoaWxlICgwKQorKworKy8qIFJlYWQgdGhl IGdkYi5Db3JlZmlsZS5maWxlbmFtZSBhdHRyaWJ1dGUuICAqLworKworK3N0YXRpYyBQeU9iamVj dCAqCisrY2ZweV9nZXRfZmlsZW5hbWUgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQor K3sKKysgIGNvcmVmaWxlX29iamVjdCAqb2JqID0gKGNvcmVmaWxlX29iamVjdCAqKSBzZWxmOwor KworKyAgQ0ZQWV9SRVFVSVJFX1ZBTElEIChvYmopOworKworKyAgLyogSWYgdGhlIHByb2dyYW0g c3BhY2UncyBjb3JlIGZpbGUgaGFkIGJlZW4gY2xlYXJlZCwgdGhlbiB0aGlzIENvcmVmaWxlCisr ICAgICBvYmplY3Qgd291bGQgaGF2ZSBiZWVuIGludmFsaWRhdGVkLiAgKi8KKysgIGJmZCAqYWJm ZCA9IG9iai0+aW5mZXJpb3ItPnBzcGFjZS0+Y29yZV9iZmQgKCk7CisrICBnZGJfYXNzZXJ0IChh YmZkICE9IG51bGxwdHIpOworKworKyAgcmV0dXJuIGhvc3Rfc3RyaW5nX3RvX3B5dGhvbl9zdHJp bmcgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKS5yZWxlYXNlICgpOworK30KKysKKysvKiBJbXBs ZW1lbnRhdGlvbiBvZiBnZGIuQ29yZWZpbGUuaXNfdmFsaWQgKHNlbGYpIC0+IEJvb2xlYW4uCisr ICAgUmV0dXJucyBUcnVlIGlmIHRoaXMgY29yZSBmaWxlIG9iamVjdCBpcyBhc3NvY2lhdGVkIHdp dGggYSBwcm9ncmFtIHNwYWNlCisrICAgdGhhdCBzdGlsbCBleGlzdHMsIGFuIHRoZSBwcm9ncmFt IHNwYWNlIHN0aWxsIGhhcyBhIGNvcmUgZmlsZSBsb2FkZWQuICAqLworKworK3N0YXRpYyBQeU9i amVjdCAqCisrY2ZweV9pc192YWxpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQor K3sKKysgIGNvcmVmaWxlX29iamVjdCAqb2JqID0gKGNvcmVmaWxlX29iamVjdCAqKSBzZWxmOwor KworKyAgaWYgKCFjZnB5X2NvcmVmaWxlX29iamVjdF9pc192YWxpZCAob2JqKSkKKysgICAgUHlf UkVUVVJOX0ZBTFNFOworKworKyAgUHlfUkVUVVJOX1RSVUU7CisrfQorKworKy8qIEltcGxlbWVu dCBnZGIuQ29yZWZpbGUubWFwcGVkX2ZpbGVzICgpLiAgUmV0dXJuIGEgTGlzdCBvZgorKyAgIGdk Yi5Db3JlZmlsZU1hcHBlZEZpbGUgb2JqZWN0cy4gIFRoZSBsaXN0IGlzIGNyZWF0ZWQgdGhlIGZp cnN0IHRpbWUKKysgICB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIGFuZCB0aGVuIGNhY2hlZCB3aXRo aW4gdGhlIGdkYi5Db3JlZmlsZSBvYmplY3QsCisrICAgZnV0dXJlIGNhbGxzIGp1c3QgcmV0dXJu IGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIGxpc3QuICAqLworKworK3N0YXRpYyBQeU9iamVjdCAq CisrY2ZweV9tYXBwZWRfZmlsZXMgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyt7 CisrICBjb3JlZmlsZV9vYmplY3QgKm9iaiA9IChjb3JlZmlsZV9vYmplY3QgKikgc2VsZjsKKysK KysgIENGUFlfUkVRVUlSRV9WQUxJRCAob2JqKTsKKysKKysgIC8qIElmIHdlIGhhdmUgYWxyZWFk eSBjcmVhdGVkIHRoZSBMaXN0IHRoZW4ganVzdCByZXR1cm4gYW5vdGhlciByZWZlcmVuY2UKKysg ICAgIHRvIHRoZSBleGlzdGluZyBsaXN0LiAgKi8KKysgIGlmIChvYmotPm1hcHBlZF9maWxlcyAh PSBudWxscHRyKQorKyAgICB7CisrICAgICAgUHlfSU5DUkVGIChvYmotPm1hcHBlZF9maWxlcyk7 CisrICAgICAgcmV0dXJuIG9iai0+bWFwcGVkX2ZpbGVzOworKyAgICB9CisrCisrICAvKiBHZXQg YWxsIHRoZSBtYXBwaW5nIGRhdGEgZnJvbSBHREIuICAqLworKyAgc3RkOjp2ZWN0b3I8Y29yZV9t YXBwZWRfZmlsZT4gbWFwcGVkX2ZpbGVzOworKyAgdHJ5CisrICAgIHsKKysgICAgICBtYXBwZWRf ZmlsZXMKKysJPSBnZGJfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgKG9iai0+aW5mZXJpb3ItPmFy Y2ggKCksCisrCQkJCSAgICAgICBjdXJyZW50X3Byb2dyYW1fc3BhY2UtPmNvcmVfYmZkICgpKTsK KysgICAgfQorKyAgY2F0Y2ggKGNvbnN0IGdkYl9leGNlcHRpb24gJmV4Y2VwdCkKKysgICAgewor KyAgICAgIHJldHVybiBnZGJweV9oYW5kbGVfZ2RiX2V4Y2VwdGlvbiAobnVsbHB0ciwgZXhjZXB0 KTsKKysgICAgfQorKworKyAgLyogQ3JlYXRlIGEgbmV3IGxpc3QgdG8gaG9sZCB0aGUgcmVzdWx0 cy4gICovCisrICBnZGJweV9yZWY8PiB0dXBsZSAoUHlUdXBsZV9OZXcgKG1hcHBlZF9maWxlcy5z aXplICgpKSk7CisrICBpZiAodHVwbGUgPT0gbnVsbHB0cikKKysgICAgcmV0dXJuIG51bGxwdHI7 CisrCisrICAvKiBDcmVhdGUgZWFjaCBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlIG9iamVjdC4gICov CisrICBQeV9zc2l6ZV90IHR1cGxlX2lkeCA9IDA7CisrICBmb3IgKGNvbnN0IGNvcmVfbWFwcGVk X2ZpbGUgJmZpbGUgOiBtYXBwZWRfZmlsZXMpCisrICAgIHsKKysgICAgICAvKiBUaGUgZmlsZW5h bWUgJ3N0cicgb2JqZWN0LiAgKi8KKysgICAgICBnZGJweV9yZWY8PiBmaWxlbmFtZQorKwk9IGhv c3Rfc3RyaW5nX3RvX3B5dGhvbl9zdHJpbmcgKGZpbGUuZmlsZW5hbWUuY19zdHIgKCkpOworKyAg ICAgIGlmIChmaWxlbmFtZSA9PSBudWxscHRyKQorKwlyZXR1cm4gbnVsbHB0cjsKKysKKysgICAg ICAvKiBUaGUgYnVpbGQtaWQgb2JqZWN0LiAgRWl0aGVyIGEgJ3N0cicgb3IgJ05vbmUnLiAgKi8K KysgICAgICBnZGJweV9yZWY8PiBidWlsZF9pZDsKKysgICAgICBpZiAoZmlsZS5idWlsZF9pZCAh PSBudWxscHRyKQorKwl7CisrCSAgc3RkOjpzdHJpbmcgaGV4X2Zvcm0gPSBiaW4yaGV4IChmaWxl LmJ1aWxkX2lkLT5kYXRhLAorKwkJCQkJICBmaWxlLmJ1aWxkX2lkLT5zaXplKTsKKysKKysJICBi dWlsZF9pZAorKwkgICAgPSBob3N0X3N0cmluZ190b19weXRob25fc3RyaW5nIChoZXhfZm9ybS5j X3N0ciAoKSk7CisrCSAgaWYgKGJ1aWxkX2lkID09IG51bGxwdHIpCisrCSAgICByZXR1cm4gbnVs bHB0cjsKKysJfQorKyAgICAgIGVsc2UKKysJYnVpbGRfaWQgPSBnZGJweV9yZWY8Pjo6bmV3X3Jl ZmVyZW5jZSAoUHlfTm9uZSk7CisrCisrICAgICAgLyogTGlzdCB0byBob2xkIGFsbCB0aGUgZ2Ri LkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbiBvYmplY3RzLiAgKi8KKysgICAgICBnZGJweV9yZWY8 PiByZWdpb25zIChQeVR1cGxlX05ldyAoZmlsZS5yZWdpb25zLnNpemUgKCkpKTsKKysgICAgICBp ZiAocmVnaW9ucyA9PSBudWxscHRyKQorKwlyZXR1cm4gbnVsbHB0cjsKKysKKysgICAgICAvKiBD cmVhdGUgYWxsIHRoZSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uIG9iamVjdHMuICAqLwor KyAgICAgIFB5X3NzaXplX3QgcmVnaW9uc19pZHggPSAwOworKyAgICAgIGZvciAoY29uc3QgY29y ZV9tYXBwZWRfZmlsZTo6cmVnaW9uICZyIDogZmlsZS5yZWdpb25zKQorKwl7CisrCSAgLyogQWN0 dWFsbHkgY3JlYXRlIHRoZSBvYmplY3QuICAqLworKwkgIGdkYnB5X3JlZjxjb3JlZmlsZV9tYXBw ZWRfZmlsZV9yZWdpb25fb2JqZWN0PiByZWdpb25fb2JqCisrCSAgICAoUHlPYmplY3RfTmV3IChj b3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0LAorKwkJCSAgICZjb3JlZmlsZV9tYXBw ZWRfZmlsZV9yZWdpb25fb2JqZWN0X3R5cGUpKTsKKysJICBpZiAocmVnaW9uX29iaiA9PSBudWxs cHRyKQorKwkgICAgcmV0dXJuIG51bGxwdHI7CisrCisrCSAgLyogSW5pdGlhbGlzZSB0aGUgb2Jq ZWN0LiAgKi8KKysJICByZWdpb25fb2JqLT5zdGFydCA9IHIuc3RhcnQ7CisrCSAgcmVnaW9uX29i ai0+ZW5kID0gci5lbmQ7CisrCSAgcmVnaW9uX29iai0+ZmlsZV9vZmZzZXQgPSByLmZpbGVfb2Zz OworKworKwkgIC8qIEFkZCB0byB0aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbiBsaXN0 LiAgKi8KKysJICBpZiAoUHlUdXBsZV9TZXRJdGVtIChyZWdpb25zLmdldCAoKSwgcmVnaW9uc19p ZHgrKywKKysJCQkgICAgICAgKFB5T2JqZWN0ICopIHJlZ2lvbl9vYmoucmVsZWFzZSAoKSkgPCAw KQorKwkgICAgcmV0dXJuIG51bGxwdHI7CisrCX0KKysKKysgICAgICAvKiBBY3R1YWxseSBjcmVh dGUgdGhlIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGUgb2JqZWN0LiAgKi8KKysgICAgICBnZGJweV9y ZWY8Y29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0PiBlbnRyeQorKwkoUHlPYmplY3RfTmV3IChj b3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3QsCisrCQkgICAgICAgJmNvcmVmaWxlX21hcHBlZF9m aWxlX29iamVjdF90eXBlKSk7CisrICAgICAgaWYgKGVudHJ5ID09IG51bGxwdHIpCisrCXJldHVy biBudWxscHRyOworKworKyAgICAgIC8qIEluaXRpYWxpc2UgdGhlIG9iamVjdC4gICovCisrICAg ICAgZW50cnktPmZpbGVuYW1lID0gZmlsZW5hbWUucmVsZWFzZSAoKTsKKysgICAgICBlbnRyeS0+ YnVpbGRfaWQgPSBidWlsZF9pZC5yZWxlYXNlICgpOworKyAgICAgIGVudHJ5LT5yZWdpb25zID0g cmVnaW9ucy5yZWxlYXNlICgpOworKyAgICAgIGVudHJ5LT5pc19tYWluX2V4ZWNfcCA9IGZpbGUu aXNfbWFpbl9leGVjOworKworKyAgICAgIC8qIEFkZCB0byB0aGUgZ2RiLkNvcmVmaWxlTWFwcGVk RmlsZSBsaXN0LiAgKi8KKysgICAgICBpZiAoUHlUdXBsZV9TZXRJdGVtICh0dXBsZS5nZXQgKCks IHR1cGxlX2lkeCsrLAorKwkJCSAgIChQeU9iamVjdCAqKSBlbnRyeS5yZWxlYXNlICgpKSA8IDAp CisrCXJldHVybiBudWxscHRyOworKyAgICB9CisrCisrICAvKiBObyBlcnJvcnMuICBNb3ZlIHRo ZSByZWZlcmVuY2UgY3VycmVudGx5IGluIExJU1QgaW50byB0aGUgQ29yZWZpbGUKKysgICAgIG9i amVjdCBpdHNlbGYuICBUaGVuIGNyZWF0ZSBhIG5ldyByZWZlcmVuY2UgYW5kIGhhbmQgdGhpcyBi YWNrIHRvIHRoZQorKyAgICAgdXNlci4gICovCisrICBvYmotPm1hcHBlZF9maWxlcyA9IHR1cGxl LnJlbGVhc2UgKCk7CisrICBQeV9JTkNSRUYgKG9iai0+bWFwcGVkX2ZpbGVzKTsKKysgIHJldHVy biBvYmotPm1hcHBlZF9maWxlczsKKyt9CisrCisrLyogRW1pdCBhIENvcmVmaWxlQ2hhbmdlZEV2 ZW50IGV2ZW50LCBJTkYgaXMgdGhlIGluZmVyaW9yIGluIHdoaWNoIHRoZSBjb3JlCisrICAgZmls ZSBjaGFuZ2VkLiAgUmV0dXJuIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSB2YWx1ZSBvbiBl cnJvci4gICovCisrCisrc3RhdGljIGludAorK2VtaXRfY29yZWZpbGVfY2hhbmdlZF9ldmVudCAo aW5mZXJpb3IgKmluZikKKyt7CisrICAvKiBJZiB0aGVyZSBhcmUgbm8gbGlzdGVuZXJzIHRoZW4g d2UgYXJlIGRvbmUuICAqLworKyAgaWYgKGV2cmVncHlfbm9fbGlzdGVuZXJzX3AgKGdkYl9weV9l dmVudHMuY29yZWZpbGVfY2hhbmdlZCkpCisrICAgIHJldHVybiAwOworKworKyAgZ2RicHlfcmVm PD4gZXZlbnRfb2JqCisrICAgID0gY3JlYXRlX2V2ZW50X29iamVjdCAoJmNvcmVmaWxlX2NoYW5n ZWRfZXZlbnRfb2JqZWN0X3R5cGUpOworKyAgaWYgKGV2ZW50X29iaiA9PSBudWxscHRyKQorKyAg ICByZXR1cm4gLTE7CisrCisrICBnZGJweV9yZWY8aW5mZXJpb3Jfb2JqZWN0PiBpbmZfb2JqID0g aW5mZXJpb3JfdG9faW5mZXJpb3Jfb2JqZWN0IChpbmYpOworKyAgaWYgKGluZl9vYmogPT0gbnVs bHB0cgorKyAgICAgIHx8IGV2cHlfYWRkX2F0dHJpYnV0ZSAoZXZlbnRfb2JqLmdldCAoKSwgImlu ZmVyaW9yIiwKKysJCQkgICAgIChQeU9iamVjdCAqKSBpbmZfb2JqLmdldCAoKSkgPCAwKQorKyAg ICByZXR1cm4gLTE7CisrCisrICByZXR1cm4gZXZweV9lbWl0X2V2ZW50IChldmVudF9vYmouZ2V0 ICgpLCBnZGJfcHlfZXZlbnRzLmNvcmVmaWxlX2NoYW5nZWQpOworK30KKysKKysvKiBDYWxsYmFj ayBmcm9tIGdkYjo6b2JzZXJ2ZXJzOjpjb3JlX2ZpbGVfY2hhbmdlZC4gIFRoZSBjb3JlIGZpbGUg Zm9yCisrICAgSU5GIGhhcyBiZWVuIGNoYW5nZWQuICAqLworKworK3N0YXRpYyB2b2lkCisrY2Zw eV9jb3JlZmlsZV9jaGFuZ2VkIChpbmZlcmlvciAqaW5mKQorK3sKKysgIC8qIEl0J3Mgc2FmZSB0 byBkbyB0aGlzIGV2ZW4gaWYgUHl0aG9uIGlzIG5vdCBpbml0aWFsaXplZCwgYnV0IHRoZXJlCisr ICAgICBzaG91bGQgYmUgbm90aGluZyB0byBjbGVhciBpbiB0aGF0IGNhc2UuICAqLworKyAgY2Zw eV9pbmZlcmlvcl9jb3JlZmlsZV9kYXRhX2tleS5jbGVhciAoaW5mKTsKKysKKysgIGlmICghZ2Ri X3B5dGhvbl9pbml0aWFsaXplZCkKKysgICAgcmV0dXJuOworKworKyAgZ2RicHlfZW50ZXIgZW50 ZXJfcHk7CisrCisrICBpZiAoZW1pdF9jb3JlZmlsZV9jaGFuZ2VkX2V2ZW50IChpbmYpIDwgMCkK KysgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisrfQorKworKy8qIENhbGxlZCB3aGVuIGEgZ2Ri LkNvcmVmaWxlIGlzIGRlc3Ryb3llZC4gICovCisrCisrc3RhdGljIHZvaWQKKytjZnB5X2RlYWxs b2MgKFB5T2JqZWN0ICpvYmopCisreworKyAgY29yZWZpbGVfb2JqZWN0ICpjb3JlZmlsZSA9IChj b3JlZmlsZV9vYmplY3QgKikgb2JqOworKworKyAgLyogRXZlcnkgZ2RiLkNvcmVmaWxlIGlzIGNh Y2hlZCBpbiBhbiBpbmZlcmlvcidzIHJlZ2lzdHJ5LiAgVGhlIG9ubHkgd2F5CisrICAgICBmb3Ig YSBnZGIuQ29yZWZpbGUgdG8gYmUgZGVhbGxvY2F0ZWQgaXMgdG8gcmVtb3ZlIHRoZSBvYmplY3Qg cmVmZXJlbmNlCisrICAgICBmcm9tIHRoZSByZWdpc3RyeSAoYW5kIGRlYyBpdHMgcmVmIGNvdW50 KSwgYnV0IGJlZm9yZSB3ZSBkbyB0aGF0LCB3ZQorKyAgICAgc2V0IHRoZSBvYmplY3QncyBpbmZl cmlvciBwb2ludGVyIHRvIE5VTEwuICAqLworKyAgZ2RiX2Fzc2VydCAoY29yZWZpbGUtPmluZmVy aW9yID09IG51bGxwdHIpOworKworKyAgUHlfWERFQ1JFRiAoY29yZWZpbGUtPmRpY3QpOworKyAg UHlfWERFQ1JFRiAoY29yZWZpbGUtPm1hcHBlZF9maWxlcyk7CisrCisrICBQeV9UWVBFIChvYmop LT50cF9mcmVlIChvYmopOworK30KKysKKysvKiBfX3JlcHJfXyBpbXBsZW1lbnRhdGlvbiBmb3Ig Z2RiLkNvcmVmaWxlLiAgKi8KKysKKytzdGF0aWMgUHlPYmplY3QgKgorK2NmcHlfcmVwciAoUHlP YmplY3QgKnNlbGYpCisreworKyAgY29yZWZpbGVfb2JqZWN0ICpvYmogPSAoY29yZWZpbGVfb2Jq ZWN0ICopIHNlbGY7CisrCisrICBpZiAoIWNmcHlfY29yZWZpbGVfb2JqZWN0X2lzX3ZhbGlkIChv YmopKQorKyAgICByZXR1cm4gZ2RiX3B5X2ludmFsaWRfb2JqZWN0X3JlcHIgKHNlbGYpOworKwor KyAgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlID0gb2JqLT5pbmZlcmlvci0+cHNwYWNlOworKyAgZ2Ri X2Fzc2VydCAocHNwYWNlICE9IG51bGxwdHIpOworKyAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9y bWF0ICgiPCVzIGluZmVyaW9yPSVkIGZpbGVuYW1lPSclcyc+IiwKKysJCQkgICAgICAgUHlfVFlQ RSAoc2VsZiktPnRwX25hbWUsCisrCQkJICAgICAgIG9iai0+aW5mZXJpb3ItPm51bSwKKysJCQkg ICAgICAgYmZkX2dldF9maWxlbmFtZSAocHNwYWNlLT5jb3JlX2JmZCAoKSkpOworK30KKysKKysM CisrCisrLyogQ2FsbGVkIHdoZW4gYSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlIGlzIGRlc3Ryb3ll ZC4gICovCisrCisrc3RhdGljIHZvaWQKKytjZm1mcHlfZGVhbGxvYyAoUHlPYmplY3QgKm9iaikK Kyt7CisrICBjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3QgKm1hcHBlZF9maWxlCisrICAgID0g KGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdCAqKSBvYmo7CisrCisrICBQeV9YREVDUkVGICht YXBwZWRfZmlsZS0+ZmlsZW5hbWUpOworKyAgUHlfWERFQ1JFRiAobWFwcGVkX2ZpbGUtPmJ1aWxk X2lkKTsKKysgIFB5X1hERUNSRUYgKG1hcHBlZF9maWxlLT5yZWdpb25zKTsKKysKKysgIFB5X1RZ UEUgKG9iaiktPnRwX2ZyZWUgKG9iaik7CisrfQorKworKy8qIFJlYWQgdGhlIGdkYi5Db3JlZmls ZU1hcHBlZEZpbGUuZmlsZW5hbWUgYXR0cmlidXRlLiAgKi8KKysKKytzdGF0aWMgUHlPYmplY3Qg KgorK2NmbWZweV9nZXRfZmlsZW5hbWUgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQor K3sKKysgIGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdCAqb2JqCisrICAgID0gKGNvcmVmaWxl X21hcHBlZF9maWxlX29iamVjdCAqKSBzZWxmOworKworKyAgZ2RiX2Fzc2VydCAob2JqLT5maWxl bmFtZSAhPSBudWxscHRyKTsKKysKKysgIFB5X0lOQ1JFRiAob2JqLT5maWxlbmFtZSk7CisrICBy ZXR1cm4gb2JqLT5maWxlbmFtZTsKKyt9CisrCisrLyogUmVhZCB0aGUgZ2RiLkNvcmVmaWxlTWFw cGVkRmlsZS5idWlsZF9pZCBhdHRyaWJ1dGUuICAqLworKworK3N0YXRpYyBQeU9iamVjdCAqCisr Y2ZtZnB5X2dldF9idWlsZF9pZCAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCisrewor KyAgY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICpvYmoKKysgICAgPSAoY29yZWZpbGVfbWFw cGVkX2ZpbGVfb2JqZWN0ICopIHNlbGY7CisrCisrICBnZGJfYXNzZXJ0IChvYmotPmJ1aWxkX2lk ICE9IG51bGxwdHIpOworKworKyAgUHlfSU5DUkVGIChvYmotPmJ1aWxkX2lkKTsKKysgIHJldHVy biBvYmotPmJ1aWxkX2lkOworK30KKysKKysvKiBSZWFkIHRoZSBnZGIuQ29yZWZpbGVNYXBwZWRG aWxlLnJlZ2lvbnMgYXR0cmlidXRlLiAgKi8KKysKKytzdGF0aWMgUHlPYmplY3QgKgorK2NmbWZw eV9nZXRfcmVnaW9ucyAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCisreworKyAgY29y ZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICpvYmoKKysgICAgPSAoY29yZWZpbGVfbWFwcGVkX2Zp bGVfb2JqZWN0ICopIHNlbGY7CisrCisrICBnZGJfYXNzZXJ0IChvYmotPnJlZ2lvbnMgIT0gbnVs bHB0cik7CisrCisrICBQeV9JTkNSRUYgKG9iai0+cmVnaW9ucyk7CisrICByZXR1cm4gb2JqLT5y ZWdpb25zOworK30KKysKKysvKiBSZWFkIHRoZSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlLmlzX21h aW5fZXhlY3V0YWJsZSBhdHRyaWJ1dGUuICAqLworKworK3N0YXRpYyBQeU9iamVjdCAqCisrY2Zt Zl9pc19tYWluX2V4ZWMgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQorK3sKKysgIGNv cmVmaWxlX21hcHBlZF9maWxlX29iamVjdCAqb2JqCisrICAgID0gKGNvcmVmaWxlX21hcHBlZF9m aWxlX29iamVjdCAqKSBzZWxmOworKworKyAgaWYgKG9iai0+aXNfbWFpbl9leGVjX3ApCisrICAg IFB5X1JFVFVSTl9UUlVFOworKyAgZWxzZQorKyAgICBQeV9SRVRVUk5fRkFMU0U7CisrfQorKwor KwwKKysKKysvKiBSZWFkIHRoZSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uLnN0YXJ0IGF0 dHJpYnV0ZS4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytjZm1mcnB5X2dldF9zdGFydCAo UHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCisreworKyAgY29yZWZpbGVfbWFwcGVkX2Zp bGVfcmVnaW9uX29iamVjdCAqb2JqCisrICAgID0gKGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lv bl9vYmplY3QgKikgc2VsZjsKKysKKysgIHJldHVybiBnZGJfcHlfb2JqZWN0X2Zyb21fdWxvbmdl c3QgKG9iai0+c3RhcnQpLnJlbGVhc2UgKCk7CisrfQorKworKy8qIFJlYWQgdGhlIGdkYi5Db3Jl ZmlsZU1hcHBlZEZpbGVSZWdpb24uZW5kIGF0dHJpYnV0ZS4gICovCisrCisrc3RhdGljIFB5T2Jq ZWN0ICoKKytjZm1mcnB5X2dldF9lbmQgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQor K3sKKysgIGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3QgKm9iagorKyAgICA9IChj b3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0ICopIHNlbGY7CisrCisrICByZXR1cm4g Z2RiX3B5X29iamVjdF9mcm9tX3Vsb25nZXN0IChvYmotPmVuZCkucmVsZWFzZSAoKTsKKyt9Cisr CisrLyogUmVhZCB0aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbi5maWxlX29mZnNldCBh dHRyaWJ1dGUuICAqLworKworK3N0YXRpYyBQeU9iamVjdCAqCisrY2ZtZnJweV9nZXRfZmlsZV9v ZmZzZXQgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQorK3sKKysgIGNvcmVmaWxlX21h cHBlZF9maWxlX3JlZ2lvbl9vYmplY3QgKm9iagorKyAgICA9IChjb3JlZmlsZV9tYXBwZWRfZmls ZV9yZWdpb25fb2JqZWN0ICopIHNlbGY7CisrCisrICByZXR1cm4gZ2RiX3B5X29iamVjdF9mcm9t X3Vsb25nZXN0IChvYmotPmZpbGVfb2Zmc2V0KS5yZWxlYXNlICgpOworK30KKysKKysMCisrCisr c3RhdGljIGludAorK2dkYnB5X2luaXRpYWxpemVfY29yZWZpbGUgKCkKKyt7CisrICBnZGI6Om9i c2VydmVyczo6Y29yZV9maWxlX2NoYW5nZWQuYXR0YWNoIChjZnB5X2NvcmVmaWxlX2NoYW5nZWQs CisrCQkJCQkgICAgInB5LWNvcmVmaWxlIik7CisrCisrICBpZiAoZ2RicHlfdHlwZV9yZWFkeSAo JmNvcmVmaWxlX29iamVjdF90eXBlKSA8IDApCisrICAgIHJldHVybiAtMTsKKysKKysgIGlmIChn ZGJweV90eXBlX3JlYWR5ICgmY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0X3R5cGUpIDwgMCkK KysgICAgcmV0dXJuIC0xOworKworKyAgaWYgKGdkYnB5X3R5cGVfcmVhZHkgKCZjb3JlZmlsZV9t YXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0X3R5cGUpIDwgMCkKKysgICAgcmV0dXJuIC0xOworKwor KyAgcmV0dXJuIDA7CisrfQorKworK0dEQlBZX0lOSVRJQUxJWkVfRklMRSAoZ2RicHlfaW5pdGlh bGl6ZV9jb3JlZmlsZSk7CisrCisrDAorKworK3N0YXRpYyBnZGJfUHlHZXRTZXREZWYgY29yZWZp bGVfZ2V0c2V0W10gPQorK3sKKysgIHsgIl9fZGljdF9fIiwgZ2RiX3B5X2dlbmVyaWNfZGljdCwg bnVsbHB0ciwKKysgICAgIlRoZSBfX2RpY3RfXyBmb3IgdGhlIGdkYi5Db3JlZmlsZS4iLCAmY29y ZWZpbGVfb2JqZWN0X3R5cGUgfSwKKysgIHsgImZpbGVuYW1lIiwgY2ZweV9nZXRfZmlsZW5hbWUs IG51bGxwdHIsCisrICAgICJUaGUgZmlsZW5hbWUgb2YgYSB2YWxpZCBDb3JlZmlsZSBvYmplY3Qu IiwgbnVsbHB0ciB9LAorKyAgeyBudWxscHRyIH0KKyt9OworKworK3N0YXRpYyBQeU1ldGhvZERl ZiBjb3JlZmlsZV9vYmplY3RfbWV0aG9kc1tdID0KKyt7CisrICB7ICJpc192YWxpZCIsIGNmcHlf aXNfdmFsaWQsIE1FVEhfTk9BUkdTLAorKyAgICAiaXNfdmFsaWQgKCkgLT4gQm9vbGVhbi5cblwK KytSZXR1cm4gdHJ1ZSBpZiB0aGlzIENvcmVmaWxlIGlzIHZhbGlkLCBmYWxzZSBpZiBub3QuIiB9 LAorKyAgeyAibWFwcGVkX2ZpbGVzIiwgY2ZweV9tYXBwZWRfZmlsZXMsIE1FVEhfTk9BUkdTLAor KyAgICAibWFwcGVkX2ZpbGVzICgpIC0+IExpc3Qgb2YgbWFwcGluZyB0dXBsZXMuXG5cCisrUmV0 dXJuIGEgbGlzdCBvZiB0dXBsZXMuICBFYWNoIHR1cGxlIHJlcHJlc2VudHMgYSBtYXBwaW5nIGZy b20gdGhlXAorK2NvcmUgZmlsZS4iIH0sCisrICB7IG51bGxwdHIgfQorK307CisrCisrUHlUeXBl T2JqZWN0IGNvcmVmaWxlX29iamVjdF90eXBlID0KKyt7CisrICBQeVZhck9iamVjdF9IRUFEX0lO SVQgKG51bGxwdHIsIDApCisrICAiZ2RiLkNvcmVmaWxlIiwJCSAgLyp0cF9uYW1lKi8KKysgIHNp emVvZiAoY29yZWZpbGVfb2JqZWN0KSwJICAvKnRwX2Jhc2ljc2l6ZSovCisrICAwLAkJCQkgIC8q dHBfaXRlbXNpemUqLworKyAgY2ZweV9kZWFsbG9jLAkJCSAgLyp0cF9kZWFsbG9jKi8KKysgIDAs CQkJCSAgLyp0cF9wcmludCovCisrICAwLAkJCQkgIC8qdHBfZ2V0YXR0ciovCisrICAwLAkJCQkg IC8qdHBfc2V0YXR0ciovCisrICAwLAkJCQkgIC8qdHBfY29tcGFyZSovCisrICBjZnB5X3JlcHIs CQkJICAvKnRwX3JlcHIqLworKyAgMCwJCQkJICAvKnRwX2FzX251bWJlciovCisrICAwLAkJCQkg IC8qdHBfYXNfc2VxdWVuY2UqLworKyAgMCwJCQkJICAvKnRwX2FzX21hcHBpbmcqLworKyAgMCwJ CQkJICAvKnRwX2hhc2ggKi8KKysgIDAsCQkJCSAgLyp0cF9jYWxsKi8KKysgIDAsCQkJCSAgLyp0 cF9zdHIqLworKyAgMCwJCQkJICAvKnRwX2dldGF0dHJvKi8KKysgIDAsCQkJCSAgLyp0cF9zZXRh dHRybyovCisrICAwLAkJCQkgIC8qdHBfYXNfYnVmZmVyKi8KKysgIFB5X1RQRkxBR1NfREVGQVVM VCwJCSAgLyp0cF9mbGFncyovCisrICAiR0RCIGNvcmVmaWxlIG9iamVjdCIsCSAgLyogdHBfZG9j ICovCisrICAwLAkJCQkgIC8qIHRwX3RyYXZlcnNlICovCisrICAwLAkJCQkgIC8qIHRwX2NsZWFy ICovCisrICAwLAkJCQkgIC8qIHRwX3JpY2hjb21wYXJlICovCisrICAwLAkJCQkgIC8qIHRwX3dl YWtsaXN0b2Zmc2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2l0ZXIgKi8KKysgIDAsCQkJCSAgLyog dHBfaXRlcm5leHQgKi8KKysgIGNvcmVmaWxlX29iamVjdF9tZXRob2RzLAkgIC8qIHRwX21ldGhv ZHMgKi8KKysgIDAsCQkJCSAgLyogdHBfbWVtYmVycyAqLworKyAgY29yZWZpbGVfZ2V0c2V0LAkJ ICAvKiB0cF9nZXRzZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfYmFzZSAqLworKyAgMCwJCQkJICAv KiB0cF9kaWN0ICovCisrICAwLAkJCQkgIC8qIHRwX2Rlc2NyX2dldCAqLworKyAgMCwJCQkJICAv KiB0cF9kZXNjcl9zZXQgKi8KKysgIG9mZnNldG9mIChjb3JlZmlsZV9vYmplY3QsIGRpY3QpLCAv KiB0cF9kaWN0b2Zmc2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2luaXQgKi8KKysgIDAsCQkJCSAg LyogdHBfYWxsb2MgKi8KKysgIDAsCQkJCSAgLyogdHBfbmV3ICovCisrfTsKKysKKytzdGF0aWMg Z2RiX1B5R2V0U2V0RGVmIGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdF9nZXRzZXRbXSA9Cisr eworKyAgeyAiZmlsZW5hbWUiLCBjZm1mcHlfZ2V0X2ZpbGVuYW1lLCBudWxscHRyLAorKyAgICAi VGhlIGZpbGVuYW1lIG9mIGEgQ29yZWZpbGVNYXBwZWRGaWxlIG9iamVjdC4iLCBudWxscHRyIH0s CisrICB7ICJidWlsZF9pZCIsIGNmbWZweV9nZXRfYnVpbGRfaWQsIG51bGxwdHIsCisrICAgICJU aGUgYnVpbGQtaWQgb2YgYSBDb3JlZmlsZU1hcHBlZEZpbGUgb2JqZWN0IG9yIE5vbmUuIiwgbnVs bHB0ciB9LAorKyAgeyAicmVnaW9ucyIsIGNmbWZweV9nZXRfcmVnaW9ucywgbnVsbHB0ciwKKysg ICAgIlRoZSBsaXN0IG9mIHJlZ2lvbnMgZnJvbSBhIENvcmVmaWxlTWFwcGVkRmlsZSBvYmplY3Qu IiwgbnVsbHB0ciB9LAorKyAgeyAiaXNfbWFpbl9leGVjdXRhYmxlIiwgY2ZtZl9pc19tYWluX2V4 ZWMsIG51bGxwdHIsCisrICAgICJUcnVlIGZvciB0aGUgbWFpbiBleGVjdXRhYmxlIG1hcHBpbmcs IG90aGVyd2lzZSBGYWxzZS4iLCBudWxscHRyIH0sCisrICB7IG51bGxwdHIgfQorK307CisrCisr UHlUeXBlT2JqZWN0IGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdF90eXBlID0KKyt7CisrICBQ eVZhck9iamVjdF9IRUFEX0lOSVQgKE5VTEwsIDApCisrICAiZ2RiLkNvcmVmaWxlTWFwcGVkRmls ZSIsCSAgLyp0cF9uYW1lKi8KKysgIHNpemVvZiAoY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0 KSwJLyp0cF9iYXNpY3NpemUqLworKyAgMCwJCQkJICAvKnRwX2l0ZW1zaXplKi8KKysgIGNmbWZw eV9kZWFsbG9jLAkJICAvKnRwX2RlYWxsb2MqLworKyAgMCwJCQkJICAvKnRwX3ByaW50Ki8KKysg IDAsCQkJCSAgLyp0cF9nZXRhdHRyKi8KKysgIDAsCQkJCSAgLyp0cF9zZXRhdHRyKi8KKysgIDAs CQkJCSAgLyp0cF9jb21wYXJlKi8KKysgIDAsCQkJCSAgLyp0cF9yZXByKi8KKysgIDAsCQkJCSAg Lyp0cF9hc19udW1iZXIqLworKyAgMCwJCQkJICAvKnRwX2FzX3NlcXVlbmNlKi8KKysgIDAsCQkJ CSAgLyp0cF9hc19tYXBwaW5nKi8KKysgIDAsCQkJCSAgLyp0cF9oYXNoICovCisrICAwLAkJCQkg IC8qdHBfY2FsbCovCisrICAwLAkJCQkgIC8qdHBfc3RyKi8KKysgIDAsCQkJCSAgLyp0cF9nZXRh dHRybyovCisrICAwLAkJCQkgIC8qdHBfc2V0YXR0cm8qLworKyAgMCwJCQkJICAvKnRwX2FzX2J1 ZmZlciovCisrICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkgIC8qdHBfZmxhZ3MqLworKyAgIkdEQiBj b3JlZmlsZSBtYXBwZWQgZmlsZSBvYmplY3QiLAkvKiB0cF9kb2MgKi8KKysgIDAsCQkJCSAgLyog dHBfdHJhdmVyc2UgKi8KKysgIDAsCQkJCSAgLyogdHBfY2xlYXIgKi8KKysgIDAsCQkJCSAgLyog dHBfcmljaGNvbXBhcmUgKi8KKysgIDAsCQkJCSAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKysg IDAsCQkJCSAgLyogdHBfaXRlciAqLworKyAgMCwJCQkJICAvKiB0cF9pdGVybmV4dCAqLworKyAg MCwJCQkJICAvKiB0cF9tZXRob2RzICovCisrICAwLAkJCQkgIC8qIHRwX21lbWJlcnMgKi8KKysg IGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdF9nZXRzZXQsCS8qIHRwX2dldHNldCAqLworKyAg MCwJCQkJICAvKiB0cF9iYXNlICovCisrICAwLAkJCQkgIC8qIHRwX2RpY3QgKi8KKysgIDAsCQkJ CSAgLyogdHBfZGVzY3JfZ2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2Rlc2NyX3NldCAqLworKyAg MCwJCQkJICAvKiB0cF9kaWN0b2Zmc2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2luaXQgKi8KKysg IDAsCQkJCSAgLyogdHBfYWxsb2MgKi8KKysgIDAsCQkJCSAgLyogdHBfbmV3ICovCisrfTsKKysK KytzdGF0aWMgZ2RiX1B5R2V0U2V0RGVmIGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmpl Y3RfZ2V0c2V0W10gPQorK3sKKysgIHsgInN0YXJ0IiwgY2ZtZnJweV9nZXRfc3RhcnQsIG51bGxw dHIsCisrICAgICJUaGUgc3RhcnQgYWRkcmVzcyBvZiBhIENvcmVmaWxlTWFwcGVkRmlsZVJlZ2lv biBvYmplY3QuIiwgbnVsbHB0ciB9LAorKyAgeyAiZW5kIiwgY2ZtZnJweV9nZXRfZW5kLCBudWxs cHRyLAorKyAgICAiVGhlIGVuZCBhZGRyZXNzIG9mIGEgQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9u IG9iamVjdC4iLCBudWxscHRyIH0sCisrICB7ICJmaWxlX29mZnNldCIsIGNmbWZycHlfZ2V0X2Zp bGVfb2Zmc2V0LCBudWxscHRyLAorKyAgICAiVGhlIGZpbGUgb2Zmc2V0IG9mIGEgQ29yZWZpbGVN YXBwZWRGaWxlUmVnaW9uIG9iamVjdC4iLCBudWxscHRyIH0sCisrICB7IG51bGxwdHIgfQorK307 CisrCisrUHlUeXBlT2JqZWN0IGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3RfdHlw ZSA9CisreworKyAgUHlWYXJPYmplY3RfSEVBRF9JTklUIChOVUxMLCAwKQorKyAgImdkYi5Db3Jl ZmlsZU1hcHBlZEZpbGVSZWdpb24iLCAgLyp0cF9uYW1lKi8KKysgIHNpemVvZiAoY29yZWZpbGVf bWFwcGVkX2ZpbGVfcmVnaW9uX29iamVjdCksCS8qdHBfYmFzaWNzaXplKi8KKysgIDAsCQkJCSAg Lyp0cF9pdGVtc2l6ZSovCisrICAwLAkJCQkgIC8qdHBfZGVhbGxvYyovCisrICAwLAkJCQkgIC8q dHBfcHJpbnQqLworKyAgMCwJCQkJICAvKnRwX2dldGF0dHIqLworKyAgMCwJCQkJICAvKnRwX3Nl dGF0dHIqLworKyAgMCwJCQkJICAvKnRwX2NvbXBhcmUqLworKyAgMCwJCQkJICAvKnRwX3JlcHIq LworKyAgMCwJCQkJICAvKnRwX2FzX251bWJlciovCisrICAwLAkJCQkgIC8qdHBfYXNfc2VxdWVu Y2UqLworKyAgMCwJCQkJICAvKnRwX2FzX21hcHBpbmcqLworKyAgMCwJCQkJICAvKnRwX2hhc2gg Ki8KKysgIDAsCQkJCSAgLyp0cF9jYWxsKi8KKysgIDAsCQkJCSAgLyp0cF9zdHIqLworKyAgMCwJ CQkJICAvKnRwX2dldGF0dHJvKi8KKysgIDAsCQkJCSAgLyp0cF9zZXRhdHRybyovCisrICAwLAkJ CQkgIC8qdHBfYXNfYnVmZmVyKi8KKysgIFB5X1RQRkxBR1NfREVGQVVMVCwJCSAgLyp0cF9mbGFn cyovCisrICAiR0RCIGNvcmVmaWxlIG1hcHBlZCBmaWxlIHJlZ2lvbiBvYmplY3QiLAkvKiB0cF9k b2MgKi8KKysgIDAsCQkJCSAgLyogdHBfdHJhdmVyc2UgKi8KKysgIDAsCQkJCSAgLyogdHBfY2xl YXIgKi8KKysgIDAsCQkJCSAgLyogdHBfcmljaGNvbXBhcmUgKi8KKysgIDAsCQkJCSAgLyogdHBf d2Vha2xpc3RvZmZzZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfaXRlciAqLworKyAgMCwJCQkJICAv KiB0cF9pdGVybmV4dCAqLworKyAgMCwJCQkJICAvKiB0cF9tZXRob2RzICovCisrICAwLAkJCQkg IC8qIHRwX21lbWJlcnMgKi8KKysgIGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3Rf Z2V0c2V0LAkvKiB0cF9nZXRzZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfYmFzZSAqLworKyAgMCwJ CQkJICAvKiB0cF9kaWN0ICovCisrICAwLAkJCQkgIC8qIHRwX2Rlc2NyX2dldCAqLworKyAgMCwJ CQkJICAvKiB0cF9kZXNjcl9zZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfZGljdG9mZnNldCAqLwor KyAgMCwJCQkJICAvKiB0cF9pbml0ICovCisrICAwLAkJCQkgIC8qIHRwX2FsbG9jICovCisrICAw LAkJCQkgIC8qIHRwX25ldyAqLworK307CitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1ldmVu dC10eXBlcy5kZWYgYi9nZGIvcHl0aG9uL3B5LWV2ZW50LXR5cGVzLmRlZgorLS0tIGEvZ2RiL3B5 dGhvbi9weS1ldmVudC10eXBlcy5kZWYKKysrKyBiL2dkYi9weXRob24vcHktZXZlbnQtdHlwZXMu ZGVmCitAQCAtMTQ1LDMgKzE0NSw4IEBAIEdEQl9QWV9ERUZJTkVfRVZFTlRfVFlQRSAodHVpX2Vu YWJsZWQsCisgCQkJICAiVHVpRW5hYmxlZEV2ZW50IiwKKyAJCQkgICJHREIgVFVJIGVuYWJsZWQg ZXZlbnQgb2JqZWN0IiwKKyAJCQkgIGV2ZW50X29iamVjdF90eXBlKTsKKysKKytHREJfUFlfREVG SU5FX0VWRU5UX1RZUEUgKGNvcmVmaWxlX2NoYW5nZWQsCisrCQkJICAiQ29yZWZpbGVDaGFuZ2Vk RXZlbnQiLAorKwkJCSAgIkdEQiBjb3JlZmlsZSBjaGFuZ2VkIGV2ZW50IiwKKysJCQkgIGV2ZW50 X29iamVjdF90eXBlKTsKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWluZmVyaW9yLmMgYi9n ZGIvcHl0aG9uL3B5LWluZmVyaW9yLmMKKy0tLSBhL2dkYi9weXRob24vcHktaW5mZXJpb3IuYwor KysrIGIvZ2RiL3B5dGhvbi9weS1pbmZlcmlvci5jCitAQCAtOTczLDYgKzk3MywyMiBAQCBpbmZw eV9nZXRfbWFpbl9uYW1lIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKKyAgIHJldHVy biBob3N0X3N0cmluZ190b19weXRob25fc3RyaW5nIChuYW1lKS5yZWxlYXNlICgpOworIH0KKyAK KysvKiBJbXBsZW1lbnQgdGhlIEluZmVyaW9yLmNvcmVmaWxlIGdldHRlci4gIFJldHVybnMgYSBn ZGIuQ29yZWZpbGUKKysgICBvYmplY3QsIG9yIE5vbmUuICAqLworKworK3N0YXRpYyBQeU9iamVj dCAqCisraW5mcHlfZ2V0X2NvcmVfZmlsZSAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUp CisreworKyAgaW5mZXJpb3Jfb2JqZWN0ICppbmYgPSAoaW5mZXJpb3Jfb2JqZWN0ICopIHNlbGY7 CisrCisrICBJTkZQWV9SRVFVSVJFX1ZBTElEIChpbmYpOworKworKyAgaW5mZXJpb3IgKmluZmVy aW9yID0gaW5mLT5pbmZlcmlvcjsKKysgIGdkYl9hc3NlcnQgKGluZmVyaW9yICE9IG51bGxwdHIp OworKworKyAgcmV0dXJuIGdkYnB5X2NvcmVfZmlsZV9mcm9tX2luZmVyaW9yIChpbmZlcmlvciku cmVsZWFzZSAoKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBpbmZweV9kZWFsbG9jIChQeU9iamVj dCAqb2JqKQorIHsKK0BAIC0xMDYyLDYgKzEwNzgsOCBAQCBzdGF0aWMgZ2RiX1B5R2V0U2V0RGVm IGluZmVyaW9yX29iamVjdF9nZXRzZXRbXSA9CisgICB7ICJwcm9nc3BhY2UiLCBpbmZweV9nZXRf cHJvZ3NwYWNlLCBOVUxMLCAiUHJvZ3JhbSBzcGFjZSBvZiB0aGlzIGluZmVyaW9yIiB9LAorICAg eyAibWFpbl9uYW1lIiwgaW5mcHlfZ2V0X21haW5fbmFtZSwgbnVsbHB0ciwKKyAgICAgIk5hbWUg b2YgJ21haW4nIGZ1bmN0aW9uLCBpZiBrbm93bi4iLCBudWxscHRyIH0sCisrICB7ICJjb3JlZmls ZSIsIGluZnB5X2dldF9jb3JlX2ZpbGUsIG51bGxwdHIsCisrICAgICJUaGUgY29yZWZpbGUgbG9h ZGVkIGluIHRvIHRoaXMgaW5mZXJpb3IsIG9yIE5vbmUuIiwgbnVsbHB0ciB9LAorICAgeyBOVUxM IH0KKyB9OworIAorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmggYi9n ZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi1pbnRl cm5hbC5oCisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCitAQCAtMTExMyw2ICsx MTEzLDE0IEBAIGV4dGVybiBzdGQ6Om9wdGlvbmFsPGludD4gZ2RicHlfcHJpbnRfaW5zbiAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgCQkJCQkgICAgQ09SRV9BRERSIGFkZHJlc3MsCisgCQkJ CQkgICAgZGlzYXNzZW1ibGVfaW5mbyAqaW5mbyk7CisgCisrLyogUmV0dXJuIHRoZSBnZGIuQ29y ZWZpbGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgY29yZSBmaWxlIGxvYWRlZCBpbnRvCisrICAg dGhlIHByb2dyYW0gc3BhY2Ugb2YgSU5GLCBvciBOb25lIGlmIHRoZXJlIGlzIG5vIGNvcmUgZmls ZSBsb2FkZWQuICBJTkYKKysgICBtdXN0IG5vdCBiZSBOVUxMLiAgSWYgYW4gZXJyb3Igb2NjdXJz IHRoZW4gTlVMTCBpcyByZXR1cm5lZCwgYW5kIGEKKysgICBzdWl0YWJsZSBQeXRob24gZXJyb3Ig d2lsbCBiZSBzZXQuICAqLworKworK2V4dGVybiBnZGJweV9yZWY8PiBnZGJweV9jb3JlX2ZpbGVf ZnJvbV9pbmZlcmlvciAoaW5mZXJpb3IgKmluZik7CisrCisrCisgLyogQSB3cmFwcGVyIGZvciBQ eVR5cGVfUmVhZHkgdGhhdCBhbHNvIGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXJzIHRoZQorICAgIHR5 cGUgaW4gdGhlIGFwcHJvcHJpYXRlIG1vZHVsZS4gIFJldHVybnMgMCBvbiBzdWNjZXNzLCAtMSBv biBlcnJvci4KKyAgICBJZiBNT0QgaXMgc3VwcGxpZWQsIHRoZW4gdGhlIHR5cGUgaXMgYWRkZWQg dG8gdGhhdCBtb2R1bGUuICBJZiBNT0QKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5k YXAvYXR0YWNoLWZhaWwuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGFwL2F0dGFjaC1mYWlsLmV4 cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmRhcC9hdHRhY2gtZmFpbC5leHAKK0BAIC0wLDAgKzEsMzIgQEAKKysjIENvcHlyaWdo dCAyMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKysKKysjIFRlc3QgImF0dGFjaCIgZmFpbHVyZSBpbiBEQVAuCisrCisr cmVxdWlyZSBjYW5fc3Bhd25fZm9yX2F0dGFjaCBhbGxvd19kYXBfdGVzdHMKKysKKytsb2FkX2xp YiBkYXAtc3VwcG9ydC5leHAKKysKKysjIFBhc3NpbmcgYW4gZW1wdHkgcmVtb3RlIG5hbWUgaGVy ZSB3aWxsIGd1YXJhbnRlZSBhIGZhaWx1cmUgd2l0aG91dAorKyMgdHJ5aW5nIHRvIGZpbmQgYSBy ZWFsIHJlbW90ZS4KKytzZXQgaWQgW2RhcF90YXJnZXRfcmVtb3RlIHsiIn1dCisrCisrZGFwX2No ZWNrX3JlcXVlc3RfYW5kX3Jlc3BvbnNlICJjb25maWd1cmF0aW9uRG9uZSIgY29uZmlndXJhdGlv bkRvbmUKKysKKytzZXQgcmVzcCBbbGluZGV4IFtkYXBfcmVhZF9yZXNwb25zZSBhdHRhY2ggJGlk XSAwXQorK2dkYl9hc3NlcnQge1tkaWN0IGdldCAkcmVzcCBzdWNjZXNzXSA9PSAiZmFsc2UifSBc CisrICAgICJhdHRhY2ggZmFpbGVkIgorKworK2RhcF9zaHV0ZG93bgorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmRhcC9jb3JlZmlsZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGFwL2Nv cmVmaWxlLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5kYXAvY29yZWZpbGUuYworQEAgLTAsMCArMSw0NSBAQAorKy8qIFRoaXMg dGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJp Z2h0IDIwMjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysK KytpbnQgZ2xvYmFsX3ZhciA9IDA7CisrCisrdm9pZAorK2JheiAodm9pZCkKKyt7CisrICBhYm9y dCAoKTsKKyt9CisrCisrdm9pZAorK2JhciAodm9pZCkKKyt7CisrICBiYXogKCk7CisrfQorKwor K3ZvaWQKKytmb28gKHZvaWQpCisreworKyAgYmFyICgpOworK30KKysKKytpbnQKKyttYWluICh2 b2lkKQorK3sKKysgIGZvbyAoKTsKKysgIHJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5kYXAvY29yZWZpbGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGFwL2Nv cmVmaWxlLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmRhcC9jb3JlZmlsZS5leHAKK0BAIC0wLDAgKzEsMTk2IEBACisrIyBD b3B5cmlnaHQgMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBUZXN0IHVzaW5nICJhdHRhY2giIGluIERBUCBm b3Igb3BlbmluZyBhIGNvcmUgZmlsZS4KKysKKytyZXF1aXJlIGFsbG93X2RhcF90ZXN0cworKwor K2xvYWRfbGliIGRhcC1zdXBwb3J0LmV4cAorKworK3N0YW5kYXJkX3Rlc3RmaWxlCisrCisraWYg e1tidWlsZF9leGVjdXRhYmxlICR7dGVzdGZpbGV9LmV4cCAkdGVzdGZpbGVdID09IC0xfSB7Cisr ICAgIHJldHVybgorK30KKysKKytzZXQgY29yZWZpbGUgW2NvcmVfZmluZCAkYmluZmlsZSB7fV0K KytpZiB7JGNvcmVmaWxlID09ICIifSB7CisrICAgIHVudGVzdGVkICJ1bmFibGUgdG8gY3JlYXRl IG9yIGZpbmQgY29yZWZpbGUiCisrICAgIHJldHVybgorK30KKysKKytzZXQgb3RoZXJfY29yZWZp bGUgW3N0YW5kYXJkX291dHB1dF9maWxlICIke3Rlc3RmaWxlfSB3aXRoIHNwYWNlcy5jb3JlIl0K KytyZW1vdGVfZXhlYyBidWlsZCAiY3AgXCIkY29yZWZpbGVcIiBcIiRvdGhlcl9jb3JlZmlsZVwi IgorKworKyMgVGVzdCB0aGF0IGF0dGFjaGluZyB0byBhIGNvcmUgZmlsZSB3b3JrcyBhdCBhbGwu Cisrc2V0IGF0dGFjaF9pZCBbZGFwX2NvcmVmaWxlICRjb3JlZmlsZSAkYmluZmlsZV0KKysKKytk YXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2UgImNvbmZpZ3VyYXRpb25Eb25lIiBjb25maWd1 cmF0aW9uRG9uZQorKworK2RhcF9jaGVja19yZXNwb25zZSAiYXR0YWNoIHJlc3BvbnNlIiBhdHRh Y2ggJGF0dGFjaF9pZAorKworK2RhcF93YWl0X2Zvcl9ldmVudF9hbmRfY2hlY2sgInN0b3BwZWQi IHN0b3BwZWQgXAorKyAgICAiYm9keSByZWFzb24iIGF0dGFjaAorKworKyMgVHJ5ICdjb250aW51 ZScsIHRoaXMgc2hvdWxkIGZhaWwuCisrc2V0IG9iaiBbZGFwX3JlcXVlc3RfYW5kX3Jlc3BvbnNl IGNvbnRpbnVlIFwKKysJICAgICB7byB0aHJlYWRJZCBbaSAxXX1dCisrc2V0IHJlc3BvbnNlIFts aW5kZXggJG9iaiAwXQorK2dkYl9hc3NlcnQgeyBbZGljdCBnZXQgJHJlc3BvbnNlIHN1Y2Nlc3Nd ID09ICJmYWxzZSIgfSBcCisrICAgICJjb250aW51ZSB3aXRoIGNvcmUgZmlsZSB0YXJnZXQiCisr CisrIyBHZXQgYSBiYWNrdHJhY2UgZnJvbSB0aGUgY29yZSBmaWxlLgorK3NldCBidCBbbGluZGV4 IFtkYXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2UgImJhY2t0cmFjZSIgc3RhY2tUcmFjZSBc CisrCQkgICAge28gdGhyZWFkSWQgW2kgMV19XSAwXQorK3NldCBmcmFtZV9pZCBbZGljdCBnZXQg W2xpbmRleCBbZGljdCBnZXQgJGJ0IGJvZHkgc3RhY2tGcmFtZXNdIDBdIGlkXQorKworKyMgR2V0 IGFsbCBzY29wZXMgZm9yIGZyYW1lIDAuICBTZWFyY2ggdGhyb3VnaCBzY29wZXMgdG8gZmluZCB0 aGUKKysjIHJlZ2lzdGVyIHNjb3BlLgorK3NldCBzY29wZXMgW2RhcF9jaGVja19yZXF1ZXN0X2Fu ZF9yZXNwb25zZSAiZ2V0IHNjb3BlcyIgc2NvcGVzIFwKKysJCVtmb3JtYXQge28gZnJhbWVJZCBb aSAlZF19ICRmcmFtZV9pZF1dCisrc2V0IHNjb3BlcyBbZGljdCBnZXQgW2xpbmRleCAkc2NvcGVz IDBdIGJvZHkgc2NvcGVzXQorK3NldCByZWdfc2NvcGUgIiIKKytmb3JlYWNoIHMgJHNjb3BlcyB7 CisrICAgIGlmIHtbZGljdCBnZXQgJHMgbmFtZV0gPT0gIlJlZ2lzdGVycyJ9IHsKKysJc2V0IHJl Z19zY29wZSAkcworKyAgICB9CisrfQorK2dkYl9hc3NlcnQgeyAkcmVnX3Njb3BlIG5lICIiIH0g ImZvdW5kIHJlZ2lzdGVyIHNjb3BlIgorKworKyMgUmVhZCBhbGwgdGhlIHJlZ2lzdGVycyBmcm9t IHRoZSByZWdpc3RlciBzY29wZS4KKytzZXQgbnVtIFtkaWN0IGdldCAkcmVnX3Njb3BlIHZhcmlh Ymxlc1JlZmVyZW5jZV0KKytzZXQgcmVwbHkgW2xpbmRleCBbZGFwX2NoZWNrX3JlcXVlc3RfYW5k X3Jlc3BvbnNlICJmZXRjaCBhbGwgcmVnaXN0ZXJzIiBcCisrCQkgICAgICAidmFyaWFibGVzIiBc CisrCQkgICAgICBbZm9ybWF0IHtvIHZhcmlhYmxlc1JlZmVyZW5jZSBbaSAlZF0gY291bnQgW2kg JWRdfSAkbnVtXAorKwkJCSAgIFtkaWN0IGdldCAkcmVnX3Njb3BlIG5hbWVkVmFyaWFibGVzXV1d IDBdCisrCisrIyBGaW5kIHRoZSBuYW1lIGFuZCB2YWx1ZSBvZiBhIHJlZ2lzdGVyLCB3ZSdsbCB1 c2UgdGhpcyB0byB0cnkgc2V0dGluZworKyMgYSByZWdpc3RlciBiZWxvdy4KKytzZXQgcmVncyBb ZGljdCBnZXQgJHJlcGx5IGJvZHkgdmFyaWFibGVzXQorK2dkYl9hc3NlcnQge1tsbGVuZ3RoICRy ZWdzXSA+IDB9ICJnb3QgYXQgbGVhc3Qgb25lIHJlZ2lzdGVyIgorK3NldCByZWdfbmFtZSBbZGlj dCBnZXQgW2xpbmRleCAkcmVncyAwXSBuYW1lXQorK3NldCByZWdfdmFsdWUgW2RpY3QgZ2V0IFts aW5kZXggJHJlZ3MgMF0gdmFsdWVdCisrCisrc2V0IG9iaiBbZGFwX3JlcXVlc3RfYW5kX3Jlc3Bv bnNlIHNldEV4cHJlc3Npb24gXAorKwkgICAgIHtvIGV4cHJlc3Npb24gW3MgZ2xvYmFsX3Zhcl0g dmFsdWUgW3MgMjNdfV0KKytzZXQgcmVzcG9uc2UgW2xpbmRleCAkb2JqIDBdCisrZ2RiX2Fzc2Vy dCB7IFtkaWN0IGdldCAkcmVzcG9uc2Ugc3VjY2Vzc10gPT0gImZhbHNlIiB9IFwKKysgICAgInNl dCBnbG9iYWwgdmFyaWFibGUgZmFpbHMiCisrc2V0IGV4cGVjdGVkX2V4Y2VwdGlvbl9jb3VudCAx CisrCisrIyBUcnkgc2V0dGluZyBhIHJlZ2lzdGVyLCB0aGlzIHNob3VsZCBmYWlsIGFzIHJlZ2lz dGVycyBhcmUgbm90CisrIyB3cml0YWJsZSBmb3IgYSBjb3JlIGZpbGUgdGFyZ2V0LiAgV2UgbmVl ZCB0byB3cml0ZSBiYWNrIGEgZGlmZmVyZW50CisrIyByZWdpc3RlciB2YWx1ZSwgc28gd2UgYWRk IG9uZSB0byB0aGUgY3VycmVudCB2YWx1ZS4gIFRoaXMgbWVhbnMgd2UKKysjIGNhbiBvbmx5IHJ1 biB0aGUgdGVzdCBpZiB0aGUgY3VycmVudCByZWdpc3RlciB2YWx1ZSBpcyBhbiBpbnRlZ2VyLgor K2lmIHtbc3RyaW5nIGlzIGludGVnZXIgLXN0cmljdCAkcmVnX3ZhbHVlXX0geworKyAgICBzZXQg bmV3X3ZhbHVlIFtleHByIHskcmVnX3ZhbHVlICsgMX1dCisrICAgIHNldCBvYmogW2RhcF9yZXF1 ZXN0X2FuZF9yZXNwb25zZSBzZXRFeHByZXNzaW9uIFwKKysJCSB7byBleHByZXNzaW9uIFtzIFwk JHJlZ19uYW1lXSB2YWx1ZSBbcyAkbmV3X3ZhbHVlXX1dCisrICAgIHNldCByZXNwb25zZSBbbGlu ZGV4ICRvYmogMF0KKysgICAgZ2RiX2Fzc2VydCB7IFtkaWN0IGdldCAkcmVzcG9uc2Ugc3VjY2Vz c10gPT0gImZhbHNlIiB9IFwKKysJInNldCByZWdpc3RlciBmYWlscyIKKysgICAgaW5jciBleHBl Y3RlZF9leGNlcHRpb25fY291bnQKKyt9CisrCisrZGFwX3NodXRkb3duIGZhbHNlICRleHBlY3Rl ZF9leGNlcHRpb25fY291bnQKKysKKysjIFJlY29ubmVjdCB0byB0aGUgY29yZSBmaWxlLiAgVGhp cyB0aW1lIHdoZW4gd2Ugc2h1dGRvd24gd2Ugd2lsbAorKyMgcmVxdWVzdCB0aGF0IHRoZSB0YXJn ZXQgYmUgdGVybWluYXRlZCwgR0RCIHNob3VsZCBzdGlsbCBqdXN0CisrIyBkaXNjb25uZWN0IHRo b3VnaCBhcyBjb3JlIGZpbGUgdGFyZ2V0cyBjYW5ub3QgYmUga2lsbGVkLgorK3dpdGhfdGVzdF9w cmVmaXggInJlYXR0YWNoIiB7CisrICAgIHNldCBhdHRhY2hfaWQgW2RhcF9jb3JlZmlsZSAkY29y ZWZpbGUgJGJpbmZpbGVdCisrCisrICAgIGRhcF9jaGVja19yZXF1ZXN0X2FuZF9yZXNwb25zZSAi Y29uZmlndXJhdGlvbkRvbmUiIGNvbmZpZ3VyYXRpb25Eb25lCisrCisrICAgIGRhcF9jaGVja19y ZXNwb25zZSAiYXR0YWNoIHJlc3BvbnNlIiBhdHRhY2ggJGF0dGFjaF9pZAorKworKyAgICBkYXBf d2FpdF9mb3JfZXZlbnRfYW5kX2NoZWNrICJzdG9wcGVkIiBzdG9wcGVkIFwKKysJImJvZHkgcmVh c29uIiBhdHRhY2gKKysKKysgICAgIyBSZXF1ZXN0IHRoZSB0YXJnZXQgYmUgdGVybWluYXRlZC4g IFRoaXMgZG9lc24ndCBtYWtlIHNlbnNlIGZvcgorKyAgICAjIGNvcmUgZmlsZSB0YXJnZXRzICh3 aGljaCBjYW5ub3QgYmUga2lsbGVkKSwgYnV0IEdEQiBzaG91bGQKKysgICAgIyBoYW5kbGUgdGhp cyBncmFjZWZ1bGx5IGFuZCBqdXN0IGRpc2Nvbm5lY3QuCisrICAgIGRhcF9zaHV0ZG93biB0cnVl CisrfQorKworKyMgVGVzdCBsb2FkaW5nIGEgY29yZSBmaWxlIHdpdGggc3BhY2VzIGluIGl0cyBu YW1lLgorK3dpdGhfdGVzdF9wcmVmaXggImNvcmUgZmlsZSB3aXRoIHNwYWNlcyIgeworKyAgICBn ZGJfZXhpdAorKworKyAgICAjIFRlc3QgdGhhdCBhdHRhY2hpbmcgdG8gYSBjb3JlIGZpbGUgd29y a3MgYXQgYWxsLgorKyAgICBzZXQgYXR0YWNoX2lkIFtkYXBfY29yZWZpbGUgJG90aGVyX2NvcmVm aWxlXQorKworKyAgICBkYXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2UgImNvbmZpZ3VyYXRp b25Eb25lIiBjb25maWd1cmF0aW9uRG9uZQorKworKyAgICBkYXBfY2hlY2tfcmVzcG9uc2UgImF0 dGFjaCByZXNwb25zZSIgYXR0YWNoICRhdHRhY2hfaWQKKysKKysgICAgZGFwX3dhaXRfZm9yX2V2 ZW50X2FuZF9jaGVjayAic3RvcHBlZCIgc3RvcHBlZCBcCisrCSJib2R5IHJlYXNvbiIgYXR0YWNo CisrCisrICAgICMgVXNlIHRoZSByZXBsIHRvIGlzc3VlIGFuICdpbmZvIGluZmVyaW9ycycgY29t bWFuZC4KKysgICAgc2V0IG9iaiBbZGFwX2NoZWNrX3JlcXVlc3RfYW5kX3Jlc3BvbnNlICJjb21t YW5kIHJlcGwiIFwKKysJCSBldmFsdWF0ZSB7byBleHByZXNzaW9uIFtzICJpbmZvIGluZmVyaW9y cyJdIGNvbnRleHQgW3MgcmVwbF19XQorKyAgICBzZXQgcmVzcG9uc2UgW2xpbmRleCAkb2JqIDBd CisrICAgIHNldCByZXN1bHQgW2RpY3QgZ2V0ICRyZXNwb25zZSBib2R5IHJlc3VsdF0KKysgICAg c2V0IHJlc3VsdCBbc3RyaW5nIG1hcCB7XFxuIFxuIFxcdCBcdH0gJHJlc3VsdF0KKysgICAgdmVy Ym9zZSAtbG9nICJJbmZvIEluZmVyaW9ycyBPdXRwdXQ6XG4kcmVzdWx0XG5cbiIKKysKKysgICAg IyBDaGVjayB0aGF0IHRoZSBvdXRwdXQgY29udGFpbnMgdGhlIGhlYWRlciBsaW5lLCB0aGUgZXhl Y3V0YWJsZQorKyAgICAjIG5hbWUsIGFuZCB0aGUgY29yZSBmaWxlIG5hbWUuICBXZSBkaWRuJ3Qg cGFzcyB0aGUgZXhlY3V0YWJsZQorKyAgICAjIG5hbWUgd2hlbiBsb2FkaW5nIHRoZSBjb3JlIGZp bGUsIGJ1dCBHREIgc2hvdWxkIGhhdmUgYmVlbiBhYmxlCisrICAgICMgdG8gZmluZCB0aGUgZXhl Y3V0YWJsZSBmcm9tIHRoZSBjb3JlIGZpbGUuCisrICAgIGdkYl9hc3NlcnQgeyBbcmVnZXhwICJO dW1cXHMrRGVzY3JpcHRpb25cXHMrQ29ubmVjdGlvblxccytFeGVjdXRhYmxlIiAkcmVzdWx0XSB9 IFwKKysJImluZm8gaW5mZXJpb3JzIGNvbHVtbiBoZWFkZXJzIGZvdW5kIgorKworKyAgICBnZGJf YXNzZXJ0IHsgW3JlZ2V4cCAiW3N0cmluZ190b19yZWdleHAgJGJpbmZpbGVdXFxzKlxuIiAkcmVz dWx0XSB9IFwKKysJImV4ZWN1dGFibGUgbmFtZSB3YXMgc2V0IGR1cmluZyBjb3JlIGZpbGUgbG9h ZCIKKysKKysgICAgZGFwX3NodXRkb3duCisrfQorKworKyMgVGVzdCBsb2FkaW5nIGEgY29yZSBm aWxlIHZpYSB0aGUgcmVwbC4KKyt3aXRoX3Rlc3RfcHJlZml4ICJsb2FkIGNvcmUgZmlsZSB2aWEg cmVwbCIgeworKyAgICBnZGJfZXhpdAorKworKyAgICBpZiB7W2RhcF9pbml0aWFsaXplXSA9PSAi In0geworKwlyZXR1cm4KKysgICAgfQorKworKyAgICAjIFVzZSB0aGUgcmVwbCB0byBpc3N1ZSBh ICdjb3JlLWZpbGUnIGNvbW1hbmQuCisrICAgIHNldCBvYmogW2RhcF9jaGVja19yZXF1ZXN0X2Fu ZF9yZXNwb25zZSAiY29tbWFuZCByZXBsIiBcCisrCQkgZXZhbHVhdGUgW2Zvcm1hdCB7byBleHBy ZXNzaW9uIFtzICJjb3JlLWZpbGUgJXMiXSBjb250ZXh0IFtzIHJlcGxdfSAkY29yZWZpbGVdXQor KyAgICBzZXQgcmVzcG9uc2UgW2xpbmRleCAkb2JqIDBdCisrICAgIHNldCByZXN1bHQgW2RpY3Qg Z2V0ICRyZXNwb25zZSBib2R5IHJlc3VsdF0KKysgICAgc2V0IHJlc3VsdCBbc3RyaW5nIG1hcCB7 XFxuIFxuIFxcdCBcdH0gJHJlc3VsdF0KKysgICAgdmVyYm9zZSAtbG9nICJDb3JlLUZpbGUgQ29t bWFuZCBPdXRwdXQ6XG4kcmVzdWx0XG5cbiIKKysKKysgICAgIyBCeSB0aGUgdGltZSB3ZSBnb3Qg dGhlIHJlc3BvbnNlIGZyb20gdGhlICdjb3JlLWZpbGUnIGNvbW1hbmQsCisrICAgICMgdGhlIHN0 b3BwZWQgZXZlbnQsIHNlbnQgd2hlbiB3ZSBhdHRhY2ggdG8gYSBjb3JlIGZpbGUsIHNob3VsZAor KyAgICAjIGFscmVhZHkgaGF2ZSBiZWVuIHNlZW4sIGNoZWNrIGZvciBpdCBub3cuCisrICAgIHNl dCBvayBmYWxzZQorKyAgICBmb3JlYWNoIGQgW2xpbmRleCAkb2JqIDFdIHsKKysJaWYge1tkaWN0 IGdldCAkZCB0eXBlXSAhPSAiZXZlbnQiCisrCSAgICB8fCBbZGljdCBnZXQgJGQgZXZlbnRdICE9 ICJzdG9wcGVkIn0geworKwkgICAgY29udGludWUKKysJfQorKwlpZiB7W2RpY3QgZ2V0ICRkIGJv ZHkgcmVhc29uXSA9PSAiYXR0YWNoIn0geworKwkgICAgc2V0IG9rIHRydWUKKysJICAgIGJyZWFr CisrCX0KKysgICAgfQorKyAgICBnZGJfYXNzZXJ0IHsgJG9rIH0gInNhdyBzdG9wcGVkIGV2ZW50 IgorKworKyAgICBkYXBfc2h1dGRvd24KKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LWNvcmVmaWxlLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktY29y ZWZpbGUuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jb3JlZmlsZS5jCitAQCAtMCwwICsxLDI1IEBACisrLyog Q29weXJpZ2h0IDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8c3RkbGliLmg+CisrCisraW50CisrbWFpbiAodm9p ZCkKKyt7CisrICAvKiBXaXRoIGNvcnJlY3QgdWxpbWl0LCBldGMuIHRoaXMgc2hvdWxkIGNhdXNl IGEgY29yZSBkdW1wLiAgKi8KKysgIGFib3J0ICgpOworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktY29yZWZpbGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LWNvcmVmaWxlLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jb3JlZmlsZS5leHAKK0BAIC0wLDAg KzEsMzY1IEBACisrIyBDb3B5cmlnaHQgKEMpIDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIEdEQiB0ZXN0c3VpdGUuICBJdCB0ZXN0cyB0aGUgY29yZSBmaWxlCisr IyBzdXBwb3J0IGluIFB5dGhvbi4KKysKKytyZXF1aXJlIGlzbmF0aXZlCisrcmVxdWlyZSB7IWlz X3JlbW90ZSBob3N0fQorKworK2xvYWRfbGliIGdkYi1weXRob24uZXhwCisrCisrcmVxdWlyZSBh bGxvd19weXRob25fdGVzdHMKKysKKytzdGFuZGFyZF90ZXN0ZmlsZQorKworK2lmIHtbYnVpbGRf ZXhlY3V0YWJsZSAiYnVpbGQgZXhlY3V0YWJsZSIgJHRlc3RmaWxlICRzcmNmaWxlXSA9PSAtMX0g eworKyAgICByZXR1cm4KKyt9CisrCisrc2V0IHJlbW90ZV9weXRob25fZmlsZSBcCisrICAgIFtn ZGJfcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5w eV0KKysKKytzZXQgY29yZWZpbGUgW2NvcmVfZmluZCAkYmluZmlsZV0KKytpZiB7JGNvcmVmaWxl ID09ICIifSB7CisrICAgIHVuc3VwcG9ydGVkICJjb3VsZG4ndCBjcmVhdGUgb3IgZmluZCBjb3Jl ZmlsZSIKKysgICAgcmV0dXJuCisrfQorKworKyMgSGVscGVyIHByb2MgdG8gcnVuIHRoZSAnY29y ZS1maWxlJyBjb21tYW5kLiAgVGFrZXMgb3B0aW9uYWwgYXJndW1lbnRzOgorKyMKKysjICAgLWNv cmVmaWxlIEZJTEVOQU1FIDogTG9hZCBGSUxFTkFNRSBhcyB0aGUgbmV3IGNvcmUgZmlsZS4gIElm IHRoaXMKKysjICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgaXMgbm90IGdpdmVuIHRo ZW4gdGhlIGN1cnJlbnQgY29yZQorKyMgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHdpbGwg YmUgdW5sb2FkZWQuCisrIworKyMgICAtaW5mZXJpb3IgTlVNIDogVGhlIGluZmVyaW9yIGluIHdo aWNoIHRoZSBjb3JlZmlsZSBpcyBiZWluZyBjaGFuZ2VkLgorKyMgICAgICAgICAgICAgICAgICAg VGhpcyBpcyB1c2VkIHRvIG1hdGNoIHRoZSBjb3JlZmlsZV9jaGFuZ2VkIGV2ZW50cworKyMgICAg ICAgICAgICAgICAgICAgdGhhdCB3aWxsIGJlIGVtaXR0ZWQuCisrIworKyMgICAtcHJlZml4IFNU UklORyA6IEEgdGVzdCBwcmVmaXgsIHRvIG1ha2UgdGVzdCBuYW1lcyB1bmlxdWUuCisrIworKyMg ICAtcmVwbGFjZW1lbnQgOiBUaGVyZSdzIGFscmVhZHkgYSBjb3JlIGZpbGUgbG9hZGVkIHdoZW4g dGhpcyBjb21tYW5kCisrIyAgICAgICAgICAgICAgICAgIGlzIGJlaW5nIHJ1bi4KKytwcm9jIGNv cmVfZmlsZV9jbWQgeyBhcmdzIH0geworKyAgICBwYXJzZV9zb21lX2FyZ3MgeworKwl7Y29yZWZp bGUgIiJ9CisrCXtpbmZlcmlvciAxfQorKwl7cHJlZml4ICIifQorKwl7cmVwbGFjZW1lbnR9Cisr ICAgIH0KKysKKysgICAgaWYgeyAkcHJlZml4IGVxICIiIH0geworKwlpZiB7ICRjb3JlZmlsZSBl cSAiIiB9IHsKKysJICAgIHNldCBwcmVmaXggInVubG9hZCBjb3JlZmlsZSIKKysJfSBlbHNlIHsK KysJICAgIHNldCBwcmVmaXggImxvYWQgY29yZWZpbGUiCisrCX0KKysgICAgfQorKworKyAgICB3 aXRoX3Rlc3RfcHJlZml4ICRwcmVmaXggeworKwlnZGJfdGVzdCAiZXZlbnRzIGNvcmVmaWxlX2No YW5nZWQgY2hlY2siIFwKKysJICAgICJeTm8gY29yZWZpbGVfY2hhbmdlZCBldmVudCBoYXMgYmVl biBzZWVuXFwuIiBcCisrCSAgICAibm8gY29yZWZpbGUgZXZlbnQgaGFzIGJlZW4gc2VlbiIKKysK KysJZ2RiX3Rlc3QgImV2ZW50cyBleGl0ZWQgY2hlY2siIFwKKysJICAgICJeTm8gZXhpdGVkIGV2 ZW50IGhhcyBiZWVuIHNlZW5cXC4iIFwKKysJICAgICJubyBleGl0ZWQgZXZlbnQgaGFzIGJlZW4g c2VlbiIKKysKKysJaWYgeyAkY29yZWZpbGUgZXEgIiIgfSB7CisrCSAgICBnZGJfdGVzdCAiY29y ZS1maWxlIiAiXk5vIGNvcmUgZmlsZSBub3dcXC4iICJ1bmxvYWQgY3VycmVudCBjb3JlIGZpbGUi CisrCisrCSAgICBnZGJfdGVzdCAiZXZlbnRzIGNvcmVmaWxlX2NoYW5nZWQgY2hlY2siIFwKKysJ CSJFdmVudCAxLzEsIEluZmVyaW9yICRpbmZlcmlvciwgQ29yZWZpbGUgTm9uZSIgXAorKwkJImV4 cGVjdGVkIGNvcmVmaWxlIGV2ZW50IGhhcyBiZWVuIHNlZW4iCisrCisrCSAgICBnZGJfdGVzdCAi ZXZlbnRzIGV4aXRlZCBjaGVjayIgXAorKwkJIkV2ZW50IDEvMSwgSW5mZXJpb3IgJGluZmVyaW9y LCBFeGl0IENvZGUgTm9uZSIgXAorKwkJImV4cGVjdGVkIGV4aXRlZCBldmVudCBoYXMgYmVlbiBz ZWVuIgorKwl9IGVsc2UgeworKwkgICAgZ2RiX3Rlc3QgImNvcmUtZmlsZSAkY29yZWZpbGUiICIu KiIgImxvYWQgY29yZSBmaWxlIgorKworKwkgICAgaWYgeyAkcmVwbGFjZW1lbnQgfSB7CisrCQln ZGJfdGVzdCAiZXZlbnRzIGNvcmVmaWxlX2NoYW5nZWQgY2hlY2siIFwKKysJCSAgICBbbXVsdGlf bGluZSBcCisrCQkJICJFdmVudCAxLzIsIEluZmVyaW9yICRpbmZlcmlvciwgQ29yZWZpbGUgTm9u ZSIgXAorKwkJCSAiRXZlbnQgMi8yLCBJbmZlcmlvciAkaW5mZXJpb3IsIENvcmVmaWxlIFtzdHJp bmdfdG9fcmVnZXhwICRjb3JlZmlsZV0iXSBcCisrCQkgICAgImV4cGVjdGVkIGNvcmVmaWxlIGV2 ZW50IGhhcyBiZWVuIHNlZW4iCisrCisrCQlnZGJfdGVzdCAiZXZlbnRzIGV4aXRlZCBjaGVjayIg XAorKwkJICAgICJFdmVudCAxLzEsIEluZmVyaW9yICRpbmZlcmlvciwgRXhpdCBDb2RlIE5vbmUi IFwKKysJCSAgICAiZXhwZWN0ZWQgZXhpdGVkIGV2ZW50IGhhcyBiZWVuIHNlZW4iCisrCSAgICB9 IGVsc2UgeworKwkJZ2RiX3Rlc3QgImV2ZW50cyBjb3JlZmlsZV9jaGFuZ2VkIGNoZWNrIiBcCisr CQkgICAgIkV2ZW50IDEvMSwgSW5mZXJpb3IgJGluZmVyaW9yLCBDb3JlZmlsZSBbc3RyaW5nX3Rv X3JlZ2V4cCAkY29yZWZpbGVdIiBcCisrCQkgICAgImV4cGVjdGVkIGNvcmVmaWxlIGV2ZW50IGhh cyBiZWVuIHNlZW4iCisrCisrCQlnZGJfdGVzdCAiZXZlbnRzIGV4aXRlZCBjaGVjayIgXAorKwkJ ICAgICJeTm8gZXhpdGVkIGV2ZW50IGhhcyBiZWVuIHNlZW5cXC4iIFwKKysJCSAgICAibm8gZXhp dGVkIGV2ZW50IHdhcyBlbWl0dGVkIgorKwkgICAgfQorKwl9CisrICAgIH0KKysKKysgICAgZ2Ri X3Rlc3Rfbm9fb3V0cHV0IC1ub3Bhc3MgImV2ZW50cyBjb3JlZmlsZV9jaGFuZ2VkIHJlc2V0Igor KyAgICBnZGJfdGVzdF9ub19vdXRwdXQgLW5vcGFzcyAiZXZlbnRzIGV4aXRlZCByZXNldCIKKyt9 CisrCisrIyBBIGhlbHBlciBwcm9jIHJ1bnMgY2xlYW5fcmVzdGFydCBwYXNzaW5nIHRocm91Z2gg QVJHUywgYW5kIHRoZW4gbG9hZHMgdGhlCisrIyB0ZXN0J3MgUHl0aG9uIHNjcmlwdC4KKytwcm9j IGNsZWFuX3Jlc3RhcnRfYW5kX2xvYWRfcHlfc2NyaXB0IHsgYXJncyB9IHsKKysgICAgY2xlYW5f cmVzdGFydCB7Kn0kYXJncworKworKyAgICAjIExvYWQgdGhlIFB5dGhvbiBzY3JpcHQgaW50byBH REIuCisrICAgIGdkYl90ZXN0ICJzb3VyY2UgJDo6cmVtb3RlX3B5dGhvbl9maWxlIiAiXlN1Y2Nl c3MiIFwKKysJInNvdXJjZSBweXRob24gc2NyaXB0IgorK30KKysKKysjIENyZWF0ZSBhIGNvcHkg b2YgdGhlIGNvcmVmaWxlLgorK3NldCBvdGhlcl9jb3JlZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2Zp bGUgJHt0ZXN0ZmlsZX0tb3RoZXIuY29yZV0KKytyZW1vdGVfZXhlYyBidWlsZCAiY3AgJGNvcmVm aWxlICRvdGhlcl9jb3JlZmlsZSIKKysKKytjbGVhbl9yZXN0YXJ0X2FuZF9sb2FkX3B5X3Njcmlw dAorKworK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGluZiA9IGdkYi5zZWxlY3RlZF9pbmZl cmlvcigpIiBcCisrICAgICJjYXB0dXJlIGN1cnJlbnQgaW5mZXJpb3IiCisrCisrZ2RiX3Rlc3Qg InB5dGhvbiBwcmludChpbmYuY29yZWZpbGUpIiAiXk5vbmUiIFwKKysgICAgIkluZmVyaW9yLmNv cmVmaWxlIGlzIE5vbmUgYmVmb3JlIGxvYWRpbmcgYSBjb3JlIGZpbGUiCisrCisrY29yZV9maWxl X2NtZCAtY29yZWZpbGUgJGNvcmVmaWxlCisrCisrc2V0IGZpbGVfcmUgW3N0cmluZ190b19yZWdl eHAgJGNvcmVmaWxlXQorK2dkYl90ZXN0ICJweXRob24gcHJpbnQoaW5mLmNvcmVmaWxlKSIgIl48 Z2RiXFwuQ29yZWZpbGUgaW5mZXJpb3I9MSBmaWxlbmFtZT0nJGZpbGVfcmUnPiIgXAorKyAgICAi SW5mZXJpb3IuY29yZWZpbGUgaXMgYSB2YWxpZCBvYmplY3QgYWZ0ZXIgbG9hZGluZyBhIGNvcmUg ZmlsZSIKKysKKytnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBjb3JlMT1pbmYuY29yZWZpbGUi ICJjYXB0dXJlIGdkYi5Db3JlZmlsZSBvYmplY3QiCisrCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dChjb3JlMS5fX2RpY3RfXykiICJeXFx7XFx9IiBcCisrICAgICJwcmludCBDb3JlZmlsZS5fX2Rp Y3RfXyB3aGVuIGVtcHR5IgorKworK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGNvcmUxLl9t eV9hdHRyaWJ1dGUgPSBcIkhlbGxvXCIiIFwKKysgICAgIndyaXRlIG5ldyBhdHRyaWJ1dGUgaW50 byBDb3JlZmlsZSBvYmplY3QiCisrCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMS5fbXlf YXR0cmlidXRlKSIgIl5IZWxsbyIgXAorKyAgICAiaW1tZWRpYXRlbHkgcmVhZCBuZXcgYXR0cmli dXRlIgorKworK2dkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTEuX19kaWN0X18pIiAiXlxceydf bXlfYXR0cmlidXRlJzogJ0hlbGxvJ1xcfSIgXAorKyAgICAicHJpbnQgQ29yZWZpbGUuX19kaWN0 X18gYWZ0ZXIgYWRkaW5nIGFuIGF0dHJpYnV0ZSIKKysKKytnZGJfdGVzdCAicHl0aG9uIHByaW50 KGNvcmUxLmZpbGVuYW1lKSIgIl4kZmlsZV9yZSIgXAorKyAgICAiQ29yZWZpbGUuZmlsZW5hbWUg YXR0cmlidXRlIHdvcmtzIGFzIGV4cGVjdGVkIgorKworK2dkYl90ZXN0ICJweXRob24gcHJpbnQo Y29yZTEuaXNfdmFsaWQoKSkiICJeVHJ1ZSIgXAorKyAgICAiQ29yZWZpbGUuaXNfdmFsaWQoKSBp cyBUcnVlIHdoaWxlIGNvcmVmaWxlIGlzIGxvYWRlZCIKKysKKytjb3JlX2ZpbGVfY21kCisrCisr Z2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMS5pc192YWxpZCgpKSIgIl5GYWxzZSIgXAorKyAg ICAiQ29yZWZpbGUuaXNfdmFsaWQoKSBpcyBGYWxzZSBhZnRlciBjb3JlZmlsZSBpcyB1bmxvYWRl ZCIKKysKKytnZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUxLl9fZGljdF9fKSIgIl5cXHsnX215 X2F0dHJpYnV0ZSc6ICdIZWxsbydcXH0iIFwKKysgICAgInByaW50IENvcmVmaWxlLl9fZGljdF9f IHdpdGggYXR0cmlidXRlIHdoZW4gaW52YWxpZCIKKysKKytnZGJfdGVzdCAicHl0aG9uIHByaW50 KGNvcmUxKSIgIl48Z2RiXFwuQ29yZWZpbGUgXFwoaW52YWxpZFxcKT4iIFwKKysgICAgInByaW50 IGFuIGludmFsaWQgZ2RiLkNvcmVmaWxlIG9iamVjdCIKKysKKytnZGJfdGVzdCAicHl0aG9uIHBy aW50KGNvcmUxLmZpbGVuYW1lKSIgXAorKyAgICBbbXVsdGlfbGluZSBcCisrCSAiUHl0aG9uIEV4 Y2VwdGlvbiA8Y2xhc3MgJ1J1bnRpbWVFcnJvcic+OiBDb3JlZmlsZSBubyBsb25nZXIgZXhpc3Rz XFwuIiBcCisrCSAiRXJyb3Igb2NjdXJyZWQgaW4gUHl0aG9uOiBDb3JlZmlsZSBubyBsb25nZXIg ZXhpc3RzXFwuIl0gXAorKyAgICAiZXJyb3Igd2hlbiByZWFkaW5nIGZpbGVuYW1lIGZyb20gaW52 YWxpZCBDb3JlZmlsZSIKKysKKytnZGJfdGVzdCAicHl0aG9uIHByaW50KGluZi5jb3JlZmlsZSki ICJeTm9uZSIgXAorKyAgICAiSW5mZXJpb3IuY29yZWZpbGUgaXMgTm9uZSBhZ2FpbiBhZnRlciBj b3JlZmlsZSB1bmxvYWQiCisrCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMS5fbXlfYXR0 cmlidXRlKSIgIl5IZWxsbyIgXAorKyAgICAicmVhZCBuZXcgYXR0cmlidXRlIGZyb20gaW52YWxp ZCBjb3JlIGZpbGUiCisrCisrIyBDcmVhdGUgYSBzZWNvbmQgaW5mZXJpb3IuCisrZ2RiX3Rlc3Qg ImFkZC1pbmZlcmlvciIKKytnZGJfdGVzdCAiaW5mZXJpb3IgMiIKKysKKyt3aXRoX3Rlc3RfcHJl Zml4ICJpbiBzZWNvbmQgaW5mZXJpb3IiIHsKKysgICAgY29yZV9maWxlX2NtZCAtY29yZWZpbGUg JGNvcmVmaWxlIC1pbmZlcmlvciAyCisrCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoaW5m LmNvcmVmaWxlKSIgIl5Ob25lIiBcCisrCSJmaXJzdCBpbmZlcmlvciBzdGlsbCBoYXMgbm8gY29y ZSBmaWxlIgorKworKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBjb3JlMj1nZGIuc2Vs ZWN0ZWRfaW5mZXJpb3IoKS5jb3JlZmlsZSIgXAorKwkiY2FwdHVyZSBnZGIuQ29yZWZpbGUgb2Jq ZWN0IgorKworKyAgICAjIFRoZSBfbXlfYXR0cmlidXRlIHdhcyBhZGRlZCB0byBDT1JFMSwgbm90 IENPUkUyLiAgQ2hlY2sgaXQKKysgICAgIyBkb2Vzbid0IHNvbWVob3cgYXBwZWFyIG9uIENPUkUy LgorKyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUyLl9teV9hdHRyaWJ1dGUpIiBcCisr CSJBdHRyaWJ1dGVFcnJvci4qOiAnZ2RiXFwuQ29yZWZpbGUnIG9iamVjdCBoYXMgbm8gYXR0cmli dXRlICdfbXlfYXR0cmlidXRlJyIgXAorKwkidHJ5IHRvIHJlYWQgYXR0cmlidXRlIHRoYXQgZG9l c24ndCBleGlzdCIKKysKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMi5maWxlbmFt ZSkiICJeJGZpbGVfcmUiIFwKKysJIkNvcmVmaWxlLmZpbGVuYW1lIGF0dHJpYnV0ZSB3b3JrcyBh cyBleHBlY3RlZCIKKysKKysgICAgZ2RiX3Rlc3QgImluZmVyaW9yIDEiCisrfQorKworKyMgUmVh ZCB0aGUgbmFtZSBvZiB0aGUgY29yZSBmaWxlIGZyb20gdGhlIHNlY29uZCBwcm9ncmFtIHNwYWNl IHdoaWxlCisrIyB0aGUgY3VycmVudCBwcm9ncmFtIHNwYWNlIGlzIHRoZSBmaXJzdCBvbmUuCisr Z2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMi5maWxlbmFtZSkiICJeJGZpbGVfcmUiIFwKKysg ICAgIkNvcmVmaWxlLmZpbGVuYW1lIGF0dHJpYnV0ZSB3b3JrcyBmcm9tIGRpZmZlcmVudCBwcm9n c3BhY2UiCisrCisrIyBMb2FkIHRoZSBvdGhlciBjb3JlZmlsZSBpbnRvIHRoZSBmaXJzdCBpbmZl cmlvci4KKytjb3JlX2ZpbGVfY21kIC1jb3JlZmlsZSAkb3RoZXJfY29yZWZpbGUgXAorKyAgICAt cHJlZml4ICJsb2FkIG90aGVyIGNvcmVmaWxlIGludG8gaW5mZXJpb3IgMSIKKysKKysjIERlbGV0 ZSB0aGUgc2Vjb25kIGluZmVyaW9yLiAgV2UgbmVlZCB0byBzd2l0Y2ggdG8gdGhlIHNlY29uZAor KyMgaW5mZXJpb3IgYW5kIHVubG9hZCBpdHMgY29yZWZpbGUgYmVmb3JlIHdlIGNhbiBkbyB0aGF0 LiAgVGhlbiwKKysjIHN3aXRjaCBiYWNrIHRvIHRoZSBmaXJzdCBpbmZlcmlvciwgZGVsZXRlIHRo ZSBzZWNvbmQsIGFuZCB0cnkgdG8KKysjIHJlYWQgdGhlIGZpbGVuYW1lIG9mIHRoZSBjb3JlIGZp bGUgZnJvbSB0aGUgKG5vdyBkZWxldGVkKSBzZWNvbmQKKysjIGluZmVyaW9yLiAgV2Ugc2hvdWxk IGdldCBhbiBlcnJvciBhYm91dCB0aGUgZ2RiLkNvcmVmaWxlIGJlaW5nCisrIyBpbnZhbGlkLgor K3dpdGhfdGVzdF9wcmVmaXggInJlbW92ZSBzZWNvbmQgaW5mZXJpb3IiIHsKKysgICAgZ2RiX3Rl c3QgImluZmVyaW9yIDIiCisrCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoaW5mLmNvcmVm aWxlLmZpbGVuYW1lKSIgXAorKwkiXltzdHJpbmdfdG9fcmVnZXhwICRvdGhlcl9jb3JlZmlsZV0i IFwKKysJInJlYWQgaW5mZXJpb3IgMSBjb3JlZmlsZSB3aGVuIGluIGluZmVyaW9yIDIiCisrCisr ICAgIGdkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGNvcmUxPWluZi5jb3JlZmlsZSIgXAorKwki Y2FwdHVyZSBpbmZlcmlvciAxIGdkYi5Db3JlZmlsZSB3aGlsZSBpbiBpbmZlcmlvciAyIgorKwor KyAgICAjIFRoaXMgaXMgYSBuZXcgQ09SRTEgb2JqZWN0LCBjaGVjayB0aGF0IF9teV9hdHRyaWJ1 dGUgaXMgZ29uZS4KKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMS5fbXlfYXR0cmli dXRlKSIgXAorKwkiQXR0cmlidXRlRXJyb3IuKjogJ2dkYlxcLkNvcmVmaWxlJyBvYmplY3QgaGFz IG5vIGF0dHJpYnV0ZSAnX215X2F0dHJpYnV0ZSciIFwKKysJInRyeSB0byByZWFkIGF0dHJpYnV0 ZSB0aGF0IGRvZXNuJ3QgZXhpc3QiCisrCisrICAgIGNvcmVfZmlsZV9jbWQgLWluZmVyaW9yIDIK KysKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMi5maWxlbmFtZSkiIFwKKysJW211 bHRpX2xpbmUgXAorKwkgICAgICJQeXRob24gRXhjZXB0aW9uIDxjbGFzcyAnUnVudGltZUVycm9y Jz46IENvcmVmaWxlIG5vIGxvbmdlciBleGlzdHNcXC4iIFwKKysJICAgICAiRXJyb3Igb2NjdXJy ZWQgaW4gUHl0aG9uOiBDb3JlZmlsZSBubyBsb25nZXIgZXhpc3RzXFwuIl0gXAorKwkiZXJyb3Ig d2hlbiByZWFkaW5nIGZpbGVuYW1lIGZyb20gaW52YWxpZCBDb3JlZmlsZSIKKysKKysgICAgZ2Ri X3Rlc3QgImluZmVyaW9yIDEiCisrCisrICAgIGdkYl90ZXN0ICJyZW1vdmUtaW5mZXJpb3JzIDIi CisrCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTIuaXNfdmFsaWQoKSkiICJeRmFs c2UiIFwKKysJIkNvcmVmaWxlLmlzX3ZhbGlkKCkgaXMgRmFsc2UgYWZ0ZXIgY29yZWZpbGUgaXMg dW5sb2FkZWQsIGFuZCBQcm9nc3BhY2UgaXMgZGVsZXRlZCIKKysKKysgICAgZ2RiX3Rlc3QgInB5 dGhvbiBwcmludChjb3JlMi5maWxlbmFtZSkiIFwKKysJW211bHRpX2xpbmUgXAorKwkgICAgICJQ eXRob24gRXhjZXB0aW9uIDxjbGFzcyAnUnVudGltZUVycm9yJz46IENvcmVmaWxlIG5vIGxvbmdl ciBleGlzdHNcXC4iIFwKKysJICAgICAiRXJyb3Igb2NjdXJyZWQgaW4gUHl0aG9uOiBDb3JlZmls ZSBubyBsb25nZXIgZXhpc3RzXFwuIl0gXAorKwkiZXJyb3Igd2hlbiByZWFkaW5nIGZpbGVuYW1l IG9mIGFuIGludmFsaWQgQ29yZWZpbGUsIGZyb20gZGVsZXRlZCBwcm9ncmFtIHNwYWNlIgorKwor KyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUxLmlzX3ZhbGlkKCkpIiAiXlRydWUiIFwK KysJImNoZWNrIGluZmVyaW9yIDEgY29yZSBmaWxlIGlzIHN0aWxsIHZhbGlkIgorK30KKysKKysj IFRlc3QgdGhlIENvcmVmaWxlLm1hcHBlZF9maWxlcygpIEFQSS4gIFRoZSBQeXRob24gc2NyaXB0 IHRoYXQgaXMKKysjIHNvdXJjZWQgaGVyZSBpbXBsZW1lbnRzICdpbmZvIHByb2MgbWFwcGluZ3Mn IGluIFB5dGhvbiB1c2luZyB0aGUKKysjIG1hcHBlZF9maWxlcyBBUEkuICBUaGUgb3V0cHV0IGZy b20gdGhlIGJ1aWx0LWluIGNvbW1hbmQsIGFuZCB0aGUKKysjIFB5dGhvbiBjb21tYW5kIHNob3Vs ZCBiZSBpZGVudGljYWwuCisrd2l0aF90ZXN0X3ByZWZpeCAidGVzdCBtYXBwZWQgZmlsZXMgZGF0 YSIgeworKyAgICBjbGVhbl9yZXN0YXJ0X2FuZF9sb2FkX3B5X3NjcmlwdAorKworKyAgICAjIExv YWQgdGhlIGNvcmUgZmlsZS4KKysgICAgY29yZV9maWxlX2NtZCAtY29yZWZpbGUgJGNvcmVmaWxl CisrCisrICAgICMgVHdvIGZpbGVzIHRvIHdyaXRlIHRoZSBvdXRwdXQgdG8uCisrICAgIHNldCBv dXRfMSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHtnZGJfdGVzdF9maWxlX25hbWV9LW91dC0xLnR4 dF0KKysgICAgc2V0IG91dF8yIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2dkYl90ZXN0X2ZpbGVf bmFtZX0tb3V0LTIudHh0XQorKworKyAgICAjIFJ1biB0aGUgYnVpbHQtaW4gY29tbWFuZCwgdGhl biB0aGUgbmV3IFB5dGhvbiBjb21tYW5kLCBjYXB0dXJlCisrICAgICMgdGhlIG91dHB1dC4KKysg ICAgZ2RiX3Rlc3QgInBpcGUgaW5mbyBwcm9jIG1hcHBpbmdzIHwgdGVlICRvdXRfMSIgIi4qIiBc CisrCSJjYXB0dXJlIGJ1aWx0LWluIG1hcHBpbmdzIG91dHB1dCIKKysgICAgZ2RiX3Rlc3QgInBp cGUgaW5mbyBwcm9jIHB5LW1hcHBpbmdzIHwgdGVlICRvdXRfMiIgIi4qIiBcCisrCSJjYXB0dXJl IFB5dGhvbiBiYXNlZCBtYXBwaW5ncyBkYXRhIgorKworKyAgICAjIENoZWNrIHRoZSBvdXRwdXQg aXMgaWRlbnRpY2FsLgorKyAgICBnZGJfdGVzdCAic2hlbGwgZGlmZiAtcyAkb3V0XzEgJG91dF8y IiBcCisrCSJGaWxlcyBcW15cclxuXF0rLW91dC0xLnR4dCBhbmQgXFteXHJcblxdKy1vdXQtMi50 eHQgYXJlIGlkZW50aWNhbCIgXAorKwkiZGlmZiBpbnB1dCBhbmQgb3V0cHV0IG9uZSIKKysKKysg ICAgIyBDaGVjayBidWlsZC1pZHMgd2l0aGluIHRoZSBjb3JlIGZpbGUgbWFwcGluZyBkYXRhLgor KyAgICBnZGJfdGVzdCAiY2hlY2stYnVpbGQtaWRzIiAiXlBBU1MiCisrCisrICAgICMgQ2hlY2sg dGhlIGlzX21haW5fZXhlY3V0YWJsZSBmbGFnIGluIHRoZSBtYXBwaW5nIGRhdGEuCisrICAgIGdk Yl90ZXN0ICJjaGVjay1tYWluLWV4ZWN1dGFibGUiICJeUEFTUyIKKysKKysgICAgIyBDaGVjayB0 aGF0IHRoZSBtYXBwZWQgZmlsZXMgImxpc3QiIGlzIGFjdHVhbGx5IGFuIGltbXV0YWJsZQorKyAg ICAjIHR1cGxlLgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBjb3JlID0gZ2RiLnNl bGVjdGVkX2luZmVyaW9yKCkuY29yZWZpbGUiCisrICAgIGdkYl90ZXN0X25vX291dHB1dCAicHl0 aG9uIG1hcHBlZF9maWxlcyA9IGNvcmUubWFwcGVkX2ZpbGVzKCkiCisrICAgIGdkYl90ZXN0ICJw eXRob24gcHJpbnQodHlwZShtYXBwZWRfZmlsZXMpKSIgXAorKwkiXjxjbGFzcyAndHVwbGUnPiIK KysgICAgZ2RiX3Rlc3QgInB5dGhvbiBtYXBwZWRfZmlsZXNcWzBcXSA9IE5vbmUiIFwKKysJIid0 dXBsZScgb2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgaXRlbSBhc3NpZ25tZW50IgorKyAgICBnZGJf dGVzdCAicHl0aG9uIHByaW50KG1hcHBlZF9maWxlc1xbMFxdIGlzIE5vbmUpIiAiXkZhbHNlIgor KworKyAgICAjIEFuZCBzYW1lIGZvciB0aGUgbGlzdCBvZiByZWdpb25zIGZvciBhIG1hcHBlZCBm aWxlLgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiByZWdpb25zID0gbWFwcGVkX2Zp bGVzXFswXF0ucmVnaW9ucyIKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCh0eXBlKHJlZ2lv bnMpKSIgXAorKwkiXjxjbGFzcyAndHVwbGUnPiIKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiByZWdp b25zXFswXF0gPSBOb25lIiBcCisrCSIndHVwbGUnIG9iamVjdCBkb2VzIG5vdCBzdXBwb3J0IGl0 ZW0gYXNzaWdubWVudCIKKyt9CisrCisrIyBMb2FkIGEgY29yZSBmaWxlLiAgR0RCIHNob3VsZCBm aWd1cmUgb3V0IHdoaWNoIGZpbGUgaXMgYmVpbmcgZGVidWdnZWQuCisrIyBUaGVuIHVzZSAnc3Rh cnQnIHRvIHJ1biB0aGlzIGV4ZWN1dGFibGUsIHRoaXMgd2lsbCByZXBsYWNlIHRoZSBjb3JlIGZp bGUKKysjIHRhcmdldC4gIEF0IGxlYXN0IG9uIExpbnV4LCB0aGlzIHJlcGxhY2VtZW50IGlzIGRv bmUgd2l0aG91dCBjYWxsaW5nCisrIyB0YXJnZXRfZGV0YWNoLiAgVGhpcyB0ZXN0IGNoZWNrcyB0 aGF0IHRoZSBleHBlY3RlZCBjb3JlIGZpbGUgY2hhbmdlZCBhbmQKKysjIGluZmVyaW9yIGV4aXRl ZCBldmVudHMgYXJlIHN0aWxsIHNlZW4uCisrd2l0aF90ZXN0X3ByZWZpeCAic3RhcnQgZnJvbSBj b3JlZmlsZSIgeworKyAgICBpZiB7IFtnZGJfcHJvdG9jb2xfaXNfbmF0aXZlXSB9IHsKKysJY2xl YW5fcmVzdGFydF9hbmRfbG9hZF9weV9zY3JpcHQKKysKKysJIyBMb2FkIHRoZSBjb3JlIGZpbGUu CisrCWNvcmVfZmlsZV9jbWQgLWNvcmVmaWxlICRjb3JlZmlsZQorKworKwkjIENoZWNrIEdEQiBm aWd1cmVkIG91dCB0aGUgZXhlY3V0YWJsZS4KKysJZ2RiX3Rlc3QgImluZm8gaW5mZXJpb3JzIDEi IFwKKysJICAgICJcW15cclxuXF0rW3N0cmluZ190b19yZWdleHAgJGJpbmZpbGVdXFxzKiIgXAor KwkgICAgImNoZWNrIGV4ZWN1dGFibGUgd2FzIGRldGVjdGVkIGNvcnJlY3RseSIKKysKKysJZ2Ri X3Rlc3QgInN0YXJ0IiBcCisrCSAgICAiVGVtcG9yYXJ5IGJyZWFrcG9pbnQgJDo6ZGVjaW1hbCwg bWFpbiBcXChcXCkuKiIgXAorKworKwlnZGJfdGVzdCAiZXZlbnRzIGNvcmVmaWxlX2NoYW5nZWQg Y2hlY2siIFwKKysJICAgICJFdmVudCAxLzEsIEluZmVyaW9yIDEsIENvcmVmaWxlIE5vbmUiIFwK KysJICAgICJleHBlY3RlZCBjb3JlZmlsZSBldmVudCBoYXMgYmVlbiBzZWVuIgorKworKwlnZGJf dGVzdCAiZXZlbnRzIGV4aXRlZCBjaGVjayIgXAorKwkgICAgIkV2ZW50IDEvMSwgSW5mZXJpb3Ig MSwgRXhpdCBDb2RlIE5vbmUiIFwKKysJICAgICJleHBlY3RlZCBleGl0ZWQgZXZlbnQgaGFzIGJl ZW4gc2VlbiIKKysKKysJZ2RiX3Rlc3Rfbm9fb3V0cHV0IC1ub3Bhc3MgImV2ZW50cyBjb3JlZmls ZV9jaGFuZ2VkIHJlc2V0IgorKwlnZGJfdGVzdF9ub19vdXRwdXQgLW5vcGFzcyAiZXZlbnRzIGV4 aXRlZCByZXNldCIKKysgICAgfQorK30KKysKKysjIExvYWQgYSBjb3JlIGZpbGUsIHRoZW4gbG9h ZCBhIGRpZmZlcmVudCBjb3JlIGZpbGUgdG8gcmVwbGFjZSBpdC4KKysjIENoZWNrIHRoYXQgdGhl IGV2ZW50cyB0aGF0IGFyZSBlbWl0dGVkIGFyZSBhcyBleHBlY3RlZC4KKyt3aXRoX3Rlc3RfcHJl Zml4ICJsb2FkIG9uZSBjb3JlIGZpbGUgb3ZlciBhbm90aGVyIiB7CisrICAgIGNsZWFuX3Jlc3Rh cnRfYW5kX2xvYWRfcHlfc2NyaXB0CisrCisrICAgICMgTG9hZCB0aGUgY29yZSBmaWxlLgorKyAg ICBjb3JlX2ZpbGVfY21kIC1jb3JlZmlsZSAkY29yZWZpbGUgXAorKwktcHJlZml4ICJsb2FkIGZp cnN0IGNvcmVmaWxlIgorKworKyAgICBjb3JlX2ZpbGVfY21kIC1jb3JlZmlsZSAkb3RoZXJfY29y ZWZpbGUgXAorKwktcHJlZml4ICJsb2FkIHNlY29uZCBjb3JlZmlsZSIgXAorKwktcmVwbGFjZW1l bnQKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvcmVmaWxl LnB5IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvcmVmaWxlLnB5CituZXcgZmlsZSBt b2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWNvcmVmaWxlLnB5CitAQCAtMCwwICsxLDI2MSBAQAorKyMgQ29weXJpZ2h0IChDKSAyMDI1 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysKKytpbXBvcnQgcGF0aGxpYgorKworKworK2NsYXNzIE1hcHBpbmc6CisrICAg IGRlZiBfX2luaXRfXyhzZWxmLCBtYXBwaW5nLCByZWdpb24pOgorKyAgICAgICAgc2VsZi5fbWFw cGluZyA9IG1hcHBpbmcKKysgICAgICAgIHNlbGYuX3JlZ2lvbiA9IHJlZ2lvbgorKworKyAgICBA cHJvcGVydHkKKysgICAgZGVmIHN0YXJ0KHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNlbGYuX3Jl Z2lvbi5zdGFydAorKworKyAgICBAcHJvcGVydHkKKysgICAgZGVmIGVuZChzZWxmKToKKysgICAg ICAgIHJldHVybiBzZWxmLl9yZWdpb24uZW5kCisrCisrICAgIEBwcm9wZXJ0eQorKyAgICBkZWYg b2Zmc2V0KHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlZ2lvbi5maWxlX29mZnNldAor KworKyAgICBAcHJvcGVydHkKKysgICAgZGVmIGZpbGVuYW1lKHNlbGYpOgorKyAgICAgICAgcmV0 dXJuIHNlbGYuX21hcHBpbmcuZmlsZW5hbWUKKysKKysKKytkZWYgaW5mb19wcm9jX21hcHBpbmdz KCk6CisrICAgIHByaW50KCJNYXBwZWQgYWRkcmVzcyBzcGFjZXM6IikKKysgICAgcHJpbnQoIiIp CisrICAgIGZvcm1hdF9zdHIgPSAiJS0xOHMgJS0xOHMgJS0xOHMgJS0xOHMgJXMgIgorKyAgICBw cmludChmb3JtYXRfc3RyICUgKCJTdGFydCBBZGRyIiwgIkVuZCBBZGRyIiwgIlNpemUiLCAiT2Zm c2V0IiwgIkZpbGUiKSkKKysKKysgICAgY29yZSA9IGdkYi5zZWxlY3RlZF9pbmZlcmlvcigpLmNv cmVmaWxlCisrICAgIG1hcHBpbmdzID0gY29yZS5tYXBwZWRfZmlsZXMoKQorKworKyAgICByZXN1 bHQgPSBbXQorKyAgICBmb3IgbSBpbiBtYXBwaW5nczoKKysgICAgICAgIGZvciByIGluIG0ucmVn aW9uczoKKysgICAgICAgICAgICByZXN1bHQuYXBwZW5kKE1hcHBpbmcobSwgcikpCisrCisrICAg IHJlc3VsdC5zb3J0KGtleT1sYW1iZGEgeDogeC5zdGFydCkKKysgICAgZm9yIHIgaW4gcmVzdWx0 OgorKyAgICAgICAgc3ogPSByLmVuZCAtIHIuc3RhcnQKKysgICAgICAgIHByaW50KAorKyAgICAg ICAgICAgIGZvcm1hdF9zdHIKKysgICAgICAgICAgICAlICgKKysgICAgICAgICAgICAgICAgIjB4 JTAxNngiICUgci5zdGFydCwKKysgICAgICAgICAgICAgICAgIjB4JTAxNngiICUgci5lbmQsCisr ICAgICAgICAgICAgICAgICIweCUtMTZ4IiAlIHN6LAorKyAgICAgICAgICAgICAgICAiMHglLTE2 eCIgJSByLm9mZnNldCwKKysgICAgICAgICAgICAgICAgIiVzIiAlIHIuZmlsZW5hbWUsCisrICAg ICAgICAgICAgKQorKyAgICAgICAgKQorKworKworK2NsYXNzIEluZm9Qcm9jUHlNYXBwaW5ncyhn ZGIuQ29tbWFuZCk6CisrICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKysgICAgICAgIGdkYi5Db21t YW5kLl9faW5pdF9fKHNlbGYsICJpbmZvIHByb2MgcHktbWFwcGluZ3MiLCBnZGIuQ09NTUFORF9E QVRBKQorKworKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ3MsIGZyb21fdHR5KToKKysgICAgICAg IGluZm9fcHJvY19tYXBwaW5ncygpCisrCisrCisrSW5mb1Byb2NQeU1hcHBpbmdzKCkKKysKKysK KytjbGFzcyBDaGVja0J1aWxkSWRzKGdkYi5Db21tYW5kKToKKysgICAgZGVmIF9faW5pdF9fKHNl bGYpOgorKyAgICAgICAgZ2RiLkNvbW1hbmQuX19pbml0X18oc2VsZiwgImNoZWNrLWJ1aWxkLWlk cyIsIGdkYi5DT01NQU5EX0RBVEEpCisrCisrICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJncywgZnJv bV90dHkpOgorKyAgICAgICAgaW5mID0gZ2RiLnNlbGVjdGVkX2luZmVyaW9yKCkKKysgICAgICAg IG9iamZpbGVzID0gaW5mLnByb2dzcGFjZS5vYmpmaWxlcygpCisrCisrICAgICAgICBwYXRoX3Rv X2J1aWxkX2lkID0ge30KKysKKysgICAgICAgIGZvciBvIGluIG9iamZpbGVzOgorKyAgICAgICAg ICAgIGlmIG5vdCBvLmlzX2ZpbGUgb3Igby5idWlsZF9pZCBpcyBOb25lOgorKyAgICAgICAgICAg ICAgICBjb250aW51ZQorKyAgICAgICAgICAgIHAgPSBwYXRobGliLlBhdGgoby5maWxlbmFtZSku cmVzb2x2ZSgpCisrICAgICAgICAgICAgYiA9IG8uYnVpbGRfaWQKKysgICAgICAgICAgICBwYXRo X3RvX2J1aWxkX2lkW3BdID0gYgorKworKyAgICAgICAgY291bnQgPSAwCisrICAgICAgICBjb3Jl X21hcHBlZF9maWxlcyA9IGluZi5jb3JlZmlsZS5tYXBwZWRfZmlsZXMoKQorKyAgICAgICAgZm9y IG0gaW4gY29yZV9tYXBwZWRfZmlsZXM6CisrICAgICAgICAgICAgcCA9IHBhdGhsaWIuUGF0aCht LmZpbGVuYW1lKS5yZXNvbHZlKCkKKysgICAgICAgICAgICBiID0gbS5idWlsZF9pZAorKworKyAg ICAgICAgICAgIGlmIHAgaW4gcGF0aF90b19idWlsZF9pZDoKKysgICAgICAgICAgICAgICAgY291 bnQgKz0gMQorKyAgICAgICAgICAgICAgICBhc3NlcnQgcGF0aF90b19idWlsZF9pZFtwXSA9PSBi LCAiYnVpbGQtaWQgbWlzbWF0Y2ggZm9yICVzIiAlIHAKKysKKysgICAgICAgIGFzc2VydCBjb3Vu dCA+IDAsICJubyBtYXBwZWQgZmlsZXMgY2hlY2tlZCIKKysKKysgICAgICAgIHByaW50KCJQQVNT IikKKysKKysKKytDaGVja0J1aWxkSWRzKCkKKysKKysKKytjbGFzcyBDaGVja01haW5FeGVjKGdk Yi5Db21tYW5kKToKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgZ2RiLkNvbW1h bmQuX19pbml0X18oc2VsZiwgImNoZWNrLW1haW4tZXhlY3V0YWJsZSIsIGdkYi5DT01NQU5EX0RB VEEpCisrCisrICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJncywgZnJvbV90dHkpOgorKyAgICAgICAg aW5mID0gZ2RiLnNlbGVjdGVkX2luZmVyaW9yKCkKKysgICAgICAgIHBzcGFjZSA9IGluZi5wcm9n c3BhY2UKKysgICAgICAgIGV4ZWNfZmlsZW5hbWUgPSBwYXRobGliLlBhdGgocHNwYWNlLmV4ZWN1 dGFibGVfZmlsZW5hbWUpLnJlc29sdmUoKQorKworKyAgICAgICAgY291bnQgPSAwCisrICAgICAg ICBjb3JlX21hcHBlZF9maWxlcyA9IGluZi5jb3JlZmlsZS5tYXBwZWRfZmlsZXMoKQorKyAgICAg ICAgZm9yIG0gaW4gY29yZV9tYXBwZWRfZmlsZXM6CisrICAgICAgICAgICAgaWYgbm90IG0uaXNf bWFpbl9leGVjdXRhYmxlOgorKyAgICAgICAgICAgICAgICBjb250aW51ZQorKworKyAgICAgICAg ICAgIHAgPSBwYXRobGliLlBhdGgobS5maWxlbmFtZSkucmVzb2x2ZSgpCisrCisrICAgICAgICAg ICAgY291bnQgKz0gMQorKyAgICAgICAgICAgIGFzc2VydCBleGVjX2ZpbGVuYW1lID09IHAsICJt YWluIGV4ZWMgZmlsZW5hbWUgbWlzbWF0Y2giCisrCisrICAgICAgICBhc3NlcnQgY291bnQgPT0g MSwgImludmFsaWQgbWFpbiBleGVjdXRhYmxlIGNvdW50IgorKworKyAgICAgICAgcHJpbnQoIlBB U1MiKQorKworKworK0NoZWNrTWFpbkV4ZWMoKQorKworKworKyMgQW4gJ2V2ZW50cycgcHJlZml4 IGNvbW1hbmQuCisrY2xhc3MgZXZlbnRzX2NtZChnZGIuQ29tbWFuZCk6CisrICAgICIiIkluZm9y bWF0aW9uIGFib3V0IHJlY2VudCBQeXRob24gZXZlbnRzLiIiIgorKworKyAgICBkZWYgX19pbml0 X18oc2VsZik6CisrICAgICAgICBnZGIuQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiZXZlbnRzIiwg Z2RiLkNPTU1BTkRfVVNFUiwgcHJlZml4PVRydWUpCisrCisrCisrIyBBbiAnZXZlbnRzIGNvcmVm aWxlX2NoYW5nZWQnIHN1Yi1jb21tYW5kLgorK2NsYXNzIGV2ZW50c19jb3JlZmlsZV9jaGFuZ2Vk X2NtZChnZGIuQ29tbWFuZCk6CisrICAgICIiIkNoZWNrIHJlY2VudCBjb3JlZmlsZV9jaGFuZ2Vk IGV2ZW50cy4KKysKKysgICAgUmVxdWlyZXMgYSBzaW5nbGUgYXJndW1lbnQgZWl0aGVyICdjaGVj aycgb3IgJ3Jlc2V0Jy4gIFdpdGgKKysgICAgJ2NoZWNrJywgcHJpbnQgZGV0YWlscyBvZiBldmVy eSByZWNlbnQgY29yZWZpbGVfY2hhbmdlZCBldmVudC4KKysgICAgV2l0aCAncmVzZXQnIGNsZWFy IHRoZSBsaXN0IG9mIHJlY2VudCBjb3JlZmlsZV9jaGFuZ2VkIGV2ZW50cy4iIiIKKysKKysgICAg ZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgZ2RiLkNvbW1hbmQuX19pbml0X18oc2VsZiwg ImV2ZW50cyBjb3JlZmlsZV9jaGFuZ2VkIiwgZ2RiLkNPTU1BTkRfVVNFUikKKysgICAgICAgIHNl bGYuX2V2ZW50cyA9IFtdCisrICAgICAgICBnZGIuZXZlbnRzLmNvcmVmaWxlX2NoYW5nZWQuY29u bmVjdChsYW1iZGEgZTogc2VsZi5fY29yZWZpbGVfY2hhbmdlZF9oYW5kbGVyKGUpKQorKworKyAg ICBkZWYgX2NvcmVmaWxlX2NoYW5nZWRfaGFuZGxlcihzZWxmLCBldmVudCk6CisrICAgICAgICBh c3NlcnQgaXNpbnN0YW5jZShldmVudCwgZ2RiLkNvcmVmaWxlQ2hhbmdlZEV2ZW50KQorKyAgICAg ICAgaW5mID0gZXZlbnQuaW5mZXJpb3IKKysgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGluZiwg Z2RiLkluZmVyaW9yKQorKworKyAgICAgICAgY29yZWZpbGUgPSBpbmYuY29yZWZpbGUKKysgICAg ICAgIGlmIGNvcmVmaWxlIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgIGFzc2VydCBjb3JlZmls ZS5pc192YWxpZCgpCisrICAgICAgICAgICAgY29yZWZpbGUgPSBjb3JlZmlsZS5maWxlbmFtZQor KworKyAgICAgICAgb2JqID0geyJpbmZlcmlvciI6IGluZi5udW0sICJjb3JlZmlsZSI6IGNvcmVm aWxlfQorKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChvYmopCisrCisrICAgIGRlZiBpbnZv a2Uoc2VsZiwgYXJncywgZnJvbV90dHkpOgorKyAgICAgICAgaWYgYXJncyA9PSAiY2hlY2siOgor KyAgICAgICAgICAgIGlmIGxlbihzZWxmLl9ldmVudHMpID09IDA6CisrICAgICAgICAgICAgICAg IHByaW50KCJObyBjb3JlZmlsZV9jaGFuZ2VkIGV2ZW50IGhhcyBiZWVuIHNlZW4uIikKKysgICAg ICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICB0b3RhbCA9IGxlbihzZWxmLl9ldmVudHMp CisrICAgICAgICAgICAgICAgIGZvciBpZHgsIG9iaiBpbiBlbnVtZXJhdGUoc2VsZi5fZXZlbnRz LCBzdGFydD0xKToKKysgICAgICAgICAgICAgICAgICAgIGluZl9udW0gPSBvYmpbImluZmVyaW9y Il0KKysgICAgICAgICAgICAgICAgICAgIGNvcmVmaWxlID0gb2JqWyJjb3JlZmlsZSJdCisrCisr ICAgICAgICAgICAgICAgICAgICBpZiBjb3JlZmlsZSBpcyBOb25lOgorKyAgICAgICAgICAgICAg ICAgICAgICAgIG1zZyA9ICJOb25lIgorKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKysgICAg ICAgICAgICAgICAgICAgICAgICBtc2cgPSBjb3JlZmlsZQorKworKyAgICAgICAgICAgICAgICAg ICAgcHJpbnQoCisrICAgICAgICAgICAgICAgICAgICAgICAgIkV2ZW50IHt9L3t9LCBJbmZlcmlv ciB7fSwgQ29yZWZpbGUge30iLmZvcm1hdCgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWR4LCB0b3RhbCwgaW5mX251bSwgbXNnCisrICAgICAgICAgICAgICAgICAgICAgICAgKQorKyAg ICAgICAgICAgICAgICAgICAgKQorKyAgICAgICAgZWxpZiBhcmdzID09ICJyZXNldCI6CisrICAg ICAgICAgICAgc2VsZi5fZXZlbnRzID0gW10KKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAg cmFpc2UgZ2RiLkdkYkVycm9yKCJVbmtub3duIGNvbW1hbmQgYXJnczoge30iLmZvcm1hdChhcmdz KSkKKysKKysKKysjIEFuICdldmVudHMgZXhpdGVkJyBzdWItY29tbWFuZC4KKytjbGFzcyBldmVu dHNfZXhpdGVkX2NtZChnZGIuQ29tbWFuZCk6CisrICAgICIiIkNoZWNrIHJlY2VudCBleGl0ZWQg ZXZlbnRzLgorKworKyAgICBSZXF1aXJlcyBhIHNpbmdsZSBhcmd1bWVudCBlaXRoZXIgJ2NoZWNr JyBvciAncmVzZXQnLiAgV2l0aAorKyAgICAnY2hlY2snLCBwcmludCBkZXRhaWxzIG9mIGV2ZXJ5 IHJlY2VudCBleGl0ZWQgZXZlbnQuICBXaXRoICdyZXNldCcKKysgICAgY2xlYXIgdGhlIGxpc3Qg b2YgcmVjZW50IGV4aXRlZCBldmVudHMuIiIiCisrCisrICAgIGRlZiBfX2luaXRfXyhzZWxmKToK KysgICAgICAgIGdkYi5Db21tYW5kLl9faW5pdF9fKHNlbGYsICJldmVudHMgZXhpdGVkIiwgZ2Ri LkNPTU1BTkRfVVNFUikKKysgICAgICAgIHNlbGYuX2V2ZW50cyA9IFtdCisrICAgICAgICBnZGIu ZXZlbnRzLmV4aXRlZC5jb25uZWN0KGxhbWJkYSBlOiBzZWxmLl9leGl0ZWRfaGFuZGxlcihlKSkK KysKKysgICAgZGVmIF9leGl0ZWRfaGFuZGxlcihzZWxmLCBldmVudCk6CisrICAgICAgICBhc3Nl cnQgaXNpbnN0YW5jZShldmVudCwgZ2RiLkV4aXRlZEV2ZW50KQorKyAgICAgICAgaW5mID0gZXZl bnQuaW5mZXJpb3IKKysgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGluZiwgZ2RiLkluZmVyaW9y KQorKworKyAgICAgICAgaWYgaGFzYXR0cihldmVudCwgImV4aXRfY29kZSIpOgorKyAgICAgICAg ICAgIGFzc2VydCBpc2luc3RhbmNlKGV2ZW50LmV4aXRfY29kZSwgaW50KQorKyAgICAgICAgICAg IGV4aXRfY29kZSA9IGV2ZW50LmV4aXRfY29kZQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAg ICBleGl0X2NvZGUgPSBOb25lCisrCisrICAgICAgICBvYmogPSB7ImluZmVyaW9yIjogaW5mLm51 bSwgImV4aXRfY29kZSI6IGV4aXRfY29kZX0KKysgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQo b2JqKQorKworKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ3MsIGZyb21fdHR5KToKKysgICAgICAg IGlmIGFyZ3MgPT0gImNoZWNrIjoKKysgICAgICAgICAgICBpZiBsZW4oc2VsZi5fZXZlbnRzKSA9 PSAwOgorKyAgICAgICAgICAgICAgICBwcmludCgiTm8gZXhpdGVkIGV2ZW50IGhhcyBiZWVuIHNl ZW4uIikKKysgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICB0b3RhbCA9IGxlbihz ZWxmLl9ldmVudHMpCisrICAgICAgICAgICAgICAgIGZvciBpZHgsIG9iaiBpbiBlbnVtZXJhdGUo c2VsZi5fZXZlbnRzLCBzdGFydD0xKToKKysgICAgICAgICAgICAgICAgICAgIGluZl9udW0gPSBv YmpbImluZmVyaW9yIl0KKysgICAgICAgICAgICAgICAgICAgIGV4aXRfY29kZSA9IG9ialsiZXhp dF9jb2RlIl0KKysKKysgICAgICAgICAgICAgICAgICAgIGlmIGV4aXRfY29kZSBpcyBOb25lOgor KyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJOb25lIgorKyAgICAgICAgICAgICAgICAg ICAgZWxzZToKKysgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBleGl0X2NvZGUKKysKKysg ICAgICAgICAgICAgICAgICAgIHByaW50KAorKyAgICAgICAgICAgICAgICAgICAgICAgICJFdmVu dCB7fS97fSwgSW5mZXJpb3Ige30sIEV4aXQgQ29kZSB7fSIuZm9ybWF0KAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZHgsIHRvdGFsLCBpbmZfbnVtLCBtc2cKKysgICAgICAgICAgICAg ICAgICAgICAgICApCisrICAgICAgICAgICAgICAgICAgICApCisrICAgICAgICBlbGlmIGFyZ3Mg PT0gInJlc2V0IjoKKysgICAgICAgICAgICBzZWxmLl9ldmVudHMgPSBbXQorKyAgICAgICAgZWxz ZToKKysgICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3IoIlVua25vd24gY29tbWFuZCBhcmdz OiB7fSIuZm9ybWF0KGFyZ3MpKQorKworKworK2V2ZW50c19jbWQoKQorK2V2ZW50c19jb3JlZmls ZV9jaGFuZ2VkX2NtZCgpCisrZXZlbnRzX2V4aXRlZF9jbWQoKQorKworK3ByaW50KCJTdWNjZXNz IikKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9kYXAtc3VwcG9ydC5leHAgYi9nZGIv dGVzdHN1aXRlL2xpYi9kYXAtc3VwcG9ydC5leHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2Rh cC1zdXBwb3J0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZGFwLXN1cHBvcnQuZXhwCitA QCAtMzYyLDYgKzM2MiwyMiBAQCBwcm9jIGRhcF9hdHRhY2gge3BpZCB7cHJvZyAiIn19IHsKKyAg ICAgcmV0dXJuIFtkYXBfc2VuZF9yZXF1ZXN0IGF0dGFjaCAkYXJnc10KKyB9CisgCisrIyBTdGFy dCBnZGIsIHNlbmQgYSBEQVAgaW5pdGlhbGl6ZSByZXF1ZXN0LCBhbmQgdGhlbiBhbiBhdHRhY2gg cmVxdWVzdAorKyMgc3BlY2lmeWluZyBDT1JFRklMRSBhcyB0aGUgY29yZSBmaWxlIHRvIGF0dGFj aCB0by4gIFJldHVybnMgdGhlCisrIyBlbXB0eSBzdHJpbmcgb24gZmFpbHVyZSwgb3IgdGhlIGF0 dGFjaCByZXF1ZXN0IHNlcXVlbmNlIElELgorK3Byb2MgZGFwX2NvcmVmaWxlIHtjb3JlZmlsZSB7 cHJvZyAiIn19IHsKKysgICAgaWYge1tkYXBfaW5pdGlhbGl6ZSAic3RhcnR1cCAtIGluaXRpYWxp emUiXSA9PSAiIn0geworKwlyZXR1cm4gIiIKKysgICAgfQorKworKyAgICBzZXQgYXJncyBbZm9y bWF0IHtvIGNvcmVGaWxlIFtzICIlcyJdfSAkY29yZWZpbGVdCisrICAgIGlmIHskcHJvZyAhPSAi In0geworKwlhcHBlbmQgYXJncyBbZm9ybWF0IHsgcHJvZ3JhbSBbcyAiJXMiXX0gJHByb2ddCisr ICAgIH0KKysKKysgICAgcmV0dXJuIFtkYXBfc2VuZF9yZXF1ZXN0IGF0dGFjaCAkYXJnc10KKyt9 CisrCisgIyBTdGFydCBnZGIsIHNlbmQgYSBEQVAgaW5pdGlhbGl6ZSByZXF1ZXN0LCBhbmQgdGhl biBhbiBhdHRhY2ggcmVxdWVzdAorICMgc3BlY2lmeWluZyBUQVJHRVQgYXMgdGhlIHJlbW90ZSB0 YXJnZXQuICBSZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcgb24KKyAjIGZhaWx1cmUsIG9yIHRoZSBh dHRhY2ggcmVxdWVzdCBzZXF1ZW5jZSBJRC4KK0BAIC0zNzIsMjYgKzM4OCwzMyBAQCBwcm9jIGRh cF90YXJnZXRfcmVtb3RlIHt0YXJnZXR9IHsKKyAgICAgcmV0dXJuIFtkYXBfc2VuZF9yZXF1ZXN0 IGF0dGFjaCBbZm9ybWF0IHtvIHRhcmdldCBbcyAlc119ICR0YXJnZXRdXQorIH0KKyAKKy0jIFJl YWQgdGhlIG1vc3QgcmVjZW50IERBUCBsb2cgZmlsZSBhbmQgY2hlY2sgaXQgZm9yIGV4Y2VwdGlv bnMuCistcHJvYyBkYXBfY2hlY2tfbG9nX2ZpbGUge30geworKyMgUmVhZCB0aGUgbW9zdCByZWNl bnQgREFQIGxvZyBmaWxlIGFuZCBjaGVjayBpdCBmb3IgZXhjZXB0aW9ucy4gIFdlCisrIyBleHBl Y3QgdG8gc2VlIGV4YWN0bHkgRVhQRUNURURfRVhDRVBUSU9OX0NPVU5UIGV4Y2VwdGlvbnMgaW4g dGhlIGxvZy4KKytwcm9jIGRhcF9jaGVja19sb2dfZmlsZSB7IHtleHBlY3RlZF9leGNlcHRpb25f Y291bnQgMH0gfSB7CisgICAgIHNldCBmZCBbb3BlbiBbY3VycmVudF9kYXBfbG9nX2ZpbGVdXQor ICAgICBzZXQgY29udGVudHMgW3JlYWQgJGZkXQorICAgICBjbG9zZSAkZmQKKyAKKy0gICAgc2V0 IG9rIDEKKysgICAgc2V0IGV4Y2VwdGlvbl9jb3VudCAwCisgICAgIGZvcmVhY2ggbGluZSBbc3Bs aXQgJGNvbnRlbnRzICJcbiJdIHsKKyAJaWYge1tyZWdleHAgIl5UcmFjZWJhY2siICRsaW5lXX0g eworLQkgICAgc2V0IG9rIDAKKy0JICAgIGJyZWFrCisrCSAgICBpbmNyIGV4Y2VwdGlvbl9jb3Vu dAorKwkgICAgaWYgeyAkZXhjZXB0aW9uX2NvdW50ID4gJGV4cGVjdGVkX2V4Y2VwdGlvbl9jb3Vu dH0geworKwkJYnJlYWsKKysJICAgIH0KKyAJfQorICAgICB9CisgCistICAgIGlmIHskb2t9IHsK KysgICAgaWYgeyRleGNlcHRpb25fY291bnQgPT0gJGV4cGVjdGVkX2V4Y2VwdGlvbl9jb3VudH0g eworIAlwYXNzICJleGNlcHRpb25zIGluIGxvZyBmaWxlIgorICAgICB9IGVsc2UgeworIAl2ZXJi b3NlIC1sb2cgLS0gICItLS0gREFQIExPRyBTVEFSVCAtLS0iCisgCXZlcmJvc2UgLWxvZyAtLSAk Y29udGVudHMKKyAJdmVyYm9zZSAtbG9nIC0tICAiLS0tIERBUCBMT0cgRU5EIC0tLSIKKysJaWYg eyAkZXhwZWN0ZWRfZXhjZXB0aW9uX2NvdW50ID4gMCB9IHsKKysJICAgIHZlcmJvc2UgLWxvZyAt LSBbam9pbiBbbGlzdCAiRXhwZWN0ZWQgJGV4cGVjdGVkX2V4Y2VwdGlvbl9jb3VudCIgXAorKwkJ CQkJImV4Y2VwdGlvbihzKSwgc2F3ICRleGNlcHRpb25fY291bnQiXV0KKysJfQorIAlmYWlsICJl eGNlcHRpb25zIGluIGxvZyBmaWxlIgorICAgICB9CisgfQorQEAgLTQwNyw4ICs0MzAsOSBAQCBw cm9jIGRhcF9jaGVja19sb2dfZmlsZV9yZSB7IHJlIH0geworIH0KKyAKKyAjIENsZWFubHkgc2h1 dCBkb3duIGdkYi4gIFRFUk1JTkFURSBpcyBwYXNzZWQgYXMgdGhlIHRlcm1pbmF0ZURlYnVnZ2Vl CistIyBwYXJhbWV0ZXIgdG8gdGhlIHJlcXVlc3QuCistcHJvYyBkYXBfc2h1dGRvd24ge3t0ZXJt aW5hdGUgZmFsc2V9fSB7CisrIyBwYXJhbWV0ZXIgdG8gdGhlIHJlcXVlc3QuICBUaGUgRVhQRUNU RURfRVhDRVBUSU9OX0NPVU5UIGlzIHRoZQorKyMgbnVtYmVyIG9mIGV4Y2VwdGlvbnMgdGhhdCB3 ZSBleHBlY3QgdG8gc2VlIGluIHRoZSBsYXRlc3QgREFQIGxvZy4KKytwcm9jIGRhcF9zaHV0ZG93 biB7e3Rlcm1pbmF0ZSBmYWxzZX0ge2V4cGVjdGVkX2V4Y2VwdGlvbl9jb3VudCAwfX0geworICAg ICBkYXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2UgInNodXRkb3duIiBkaXNjb25uZWN0IFwK KyAJW2Zvcm1hdCB7byB0ZXJtaW5hdGVEZWJ1Z2dlZSBbbCAlc119ICR0ZXJtaW5hdGVdCisgCitA QCAtNDIwLDcgKzQ0NCw3IEBAIHByb2MgZGFwX3NodXRkb3duIHt7dGVybWluYXRlIGZhbHNlfX0g eworIAorICAgICBjbGVhcl9nZGJfc3Bhd25faWQKKyAKKy0gICAgZGFwX2NoZWNrX2xvZ19maWxl CisrICAgIGRhcF9jaGVja19sb2dfZmlsZSAkZXhwZWN0ZWRfZXhjZXB0aW9uX2NvdW50CisgfQor IAorICMgU2VhcmNoIHRoZSBldmVudCBsaXN0IEVWRU5UUyBmb3IgYW4gb3V0cHV0IGV2ZW50IG1h dGNoaW5nIHRoZSByZWdleHAKCmRpZmYgLS1naXQgYS9nZGItaW5kZXgtZ2VuZXJhdGlvbi1maXhl cy5wYXRjaCBiL2dkYi1pbmRleC1nZW5lcmF0aW9uLWZpeGVzLnBhdGNoCmluZGV4IGFiNWJlZWMu LjRmN2MwNzQgMTAwNjQ0Ci0tLSBhL2dkYi1pbmRleC1nZW5lcmF0aW9uLWZpeGVzLnBhdGNoCisr KyBiL2dkYi1pbmRleC1nZW5lcmF0aW9uLWZpeGVzLnBhdGNoCkBAIC01OTcsNyArNTk3LDcgQEAg ZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC1nZGItaW5kZXguYyBiL2dkYi9kd2FyZjIvcmVh ZC1nZGItaW5kZXguYwogZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9zeW10YWIuYwog LS0tIGEvZ2RiL3N5bXRhYi5jCiArKysgYi9nZGIvc3ltdGFiLmMKLUBAIC00ODMwLDcgKzQ4MzAs NTAgQEAgc3ltYm9sX3NlYXJjaDo6Y29tcGFyZV9zZWFyY2hfc3ltcyAoY29uc3Qgc3ltYm9sX3Nl YXJjaCAmc3ltX2EsCitAQCAtNDg2OSw3ICs0ODY5LDUwIEBAIHN5bWJvbF9zZWFyY2g6OmNvbXBh cmVfc2VhcmNoX3N5bXMgKGNvbnN0IHN5bWJvbF9zZWFyY2ggJnN5bV9hLAogICAgaWYgKHN5bV9h LmJsb2NrICE9IHN5bV9iLmJsb2NrKQogICAgICByZXR1cm4gc3ltX2EuYmxvY2sgLSBzeW1fYi5i bG9jazsKICAKCmRpZmYgLS1naXQgYS9nZGItcmhiejI0MDM1ODAtbWlzcGxhY2VkLXN5bXRhYnMu cGF0Y2ggYi9nZGItcmhiejI0MDM1ODAtbWlzcGxhY2VkLXN5bXRhYnMucGF0Y2gKaW5kZXggNzk5 NmQ4Mi4uMzVmZGFhZCAxMDA2NDQKLS0tIGEvZ2RiLXJoYnoyNDAzNTgwLW1pc3BsYWNlZC1zeW10 YWJzLnBhdGNoCisrKyBiL2dkYi1yaGJ6MjQwMzU4MC1taXNwbGFjZWQtc3ltdGFicy5wYXRjaApA QCAtOTIsNyArOTIsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9saW5lLWhlYWRlci5oIGIv Z2RiL2R3YXJmMi9saW5lLWhlYWRlci5oCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9yZWFkLmMg Yi9nZGIvZHdhcmYyL3JlYWQuYwogLS0tIGEvZ2RiL2R3YXJmMi9yZWFkLmMKICsrKyBiL2dkYi9k d2FyZjIvcmVhZC5jCi1AQCAtNjIyMiw4ICs2MjIyLDggQEAgZHdhcmYyX2N1OjpzZXR1cF90eXBl X3VuaXRfZ3JvdXBzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSkKK0BAIC02MjI3LDggKzYyMjcsOCBA QCBkd2FyZjJfY3U6OnNldHVwX3R5cGVfdW5pdF9ncm91cHMgKHN0cnVjdCBkaWVfaW5mbyAqZGll KQogIAkgICAgICBzZi0+c3ltdGFiID0gYWxsb2NhdGVfc3ltdGFiIChjdXN0LCBuYW1lLCBuYW1l X2Zvcl9pZCk7CiAgCSAgICB9CiAgCkBAIC0xMDMsNyArMTAzLDcgQEAgZGlmZiAtLWdpdCBhL2dk Yi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKICAJfQogICAgICB9CiAgICBlbHNl Ci1AQCAtNjI0MSw3ICs2MjQxLDcgQEAgZHdhcmYyX2N1OjpzZXR1cF90eXBlX3VuaXRfZ3JvdXBz IChzdHJ1Y3QgZGllX2luZm8gKmRpZSkKK0BAIC02MjQ2LDcgKzYyNDYsNyBAQCBkd2FyZjJfY3U6 OnNldHVwX3R5cGVfdW5pdF9ncm91cHMgKHN0cnVjdCBkaWVfaW5mbyAqZGllKQogICAgICAgIGZv ciAoaSA9IDA7IGkgPCBmaWxlX25hbWVzLnNpemUgKCk7ICsraSkKICAJewogIAkgIGZpbGVfZW50 cnkgJmZlID0gZmlsZV9uYW1lc1tpXTsKQEAgLTExMiw3ICsxMTIsNyBAQCBkaWZmIC0tZ2l0IGEv Z2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQuYwogIAl9CiAgICAgIH0KICAKLUBA IC0xMTU4NCw3ICsxMTU4NCw3IEBAIHByb2Nlc3Nfc3RydWN0dXJlX3Njb3BlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMTE1ODksNyArMTE1ODksNyBA QCBwcm9jZXNzX3N0cnVjdHVyZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQogIAkgICAgewogIAkgICAgICAvKiBBbnkgcmVsYXRlZCBzeW10YWIgd2ls bCBkby4gICovCiAgCSAgICAgIHN5bXRhYgpAQCAtMTIxLDcgKzEyMSw3IEBAIGRpZmYgLS1naXQg YS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCiAgCSAgICB9CiAgCSAgZWxz ZQogIAkgICAgewotQEAgLTE2NTg3LDYgKzE2NTg3LDkgQEAgZHdhcmZfZGVjb2RlX2xpbmVzIChz dHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKK0BAIC0xNjU5Miw2 ICsxNjU5Miw5IEBAIGR3YXJmX2RlY29kZV9saW5lcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwg c3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgICBpZiAoZGVjb2RlX21hcHBpbmcpCiAgICAgIGR3YXJm X2RlY29kZV9saW5lc18xIChsaCwgY3UsIGxvd3BjKTsKICAKQEAgLTEzMSw3ICsxMzEsNyBAQCBk aWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQuYwogICAgLyog TWFrZSBzdXJlIGEgc3ltdGFiIGlzIGNyZWF0ZWQgZm9yIGV2ZXJ5IGZpbGUsIGV2ZW4gZmlsZXMK ICAgICAgIHdoaWNoIGNvbnRhaW4gb25seSB2YXJpYWJsZXMgKGkuZS4gbm8gY29kZSB3aXRoIGFz c29jaWF0ZWQKICAgICAgIGxpbmUgbnVtYmVycykuICAqLwotQEAgLTE2NjAyLDcgKzE2NjA1LDcg QEAgZHdhcmZfZGVjb2RlX2xpbmVzIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSwKK0BAIC0xNjYwNyw3ICsxNjYxMCw3IEBAIGR3YXJmX2RlY29kZV9saW5lcyAo c3RydWN0IGxpbmVfaGVhZGVyICpsaCwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgCXNmLT5zeW10 YWIgPSBhbGxvY2F0ZV9zeW10YWIgKGN1c3QsIHNmLT5uYW1lLmNfc3RyICgpLAogIAkJCQkgICAg ICBzZi0+bmFtZV9mb3JfaWQuY19zdHIgKCkpOwogIApAQCAtMTQwLDcgKzE0MCw3IEBAIGRpZmYg LS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCiAgICAgIH0KICB9 CiAgCi1AQCAtMTY4NzksNyArMTY4ODIsNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTE2ODg0 LDcgKzE2ODg3LDcgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKICAJICAgICAgaWYgKGZlID09IE5VTEwp CiAgCQljb21wbGFpbnQgKF8oImZpbGUgaW5kZXggb3V0IG9mIHJhbmdlIikpOwogIAkgICAgICBl bHNlCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyNDM1OTUwLXNraXAtcmV2ZXJ0LnBhdGNoIGIvZ2Ri LXJoYnoyNDM1OTUwLXNraXAtcmV2ZXJ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA5MzFkMDYzLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MjQzNTk1MC1za2lwLXJldmVydC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVT IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNz QHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDkgRmViIDIwMjYgMTY6MzE6MjMgKzAwMDAKLVN1Ympl Y3Q6IGdkYi1yaGJ6MjQzNTk1MC1za2lwLXJldmVydC5wYXRjaAotCi07OyBCYWNrcG9ydCBvZiB1 cHN0cmVhbSBjb21taXQgZjA4ZmZiYmYyNjkxYmFkMmQ1ZGY2NjBlZTY0NDY0NzY4Nzc3NWYwYwot OzsgQ2FuIGJlIGRyb3BwZWQgb24gYSByZWJhc2UgdG8gZ2RiIDE3LjIgb3IgMTguMQotCi1SZXZl cnQgInNraXAgLWdmaWxlOiBjYWxsIGZubWF0Y2ggd2l0aG91dCBGTk1fRklMRV9OQU1FIgotCi1U aGlzIHJldmVydHMgY29tbWl0IDAyNjQ2YTRjNTYxZWM4ODQ5MTExNGI4Nzk1MGNiYjgyN2M3ZDYx NGMuICBTZWU6Ci0KLSAgaHR0cHM6Ly9pbmJveC5zb3VyY2V3YXJlLm9yZy9nZGItcGF0Y2hlcy8y MDI2MDIwMzE4NTUyOC45NDY5MTgtMS1ndWluZXZlcmVAcmVkaGF0LmNvbQotCi1UaGlzIGNvbW1p dCBpbnRyb2R1Y2VkIGEgbm9uIGJhY2t3YXJkIGNvbXBhdGlibGUgY2hhbmdlIHRvIGhvdyBHREIK LWhhbmRsZWQgc2tpcCBmaWxlcy4gIFNvbWV0aGluZyBsaWtlOgotCi0gIHNraXAgLWdmaWxlIGRp ci8qLmMKLQotbm8gbG9uZ2VyIG1hdGNoZXMgZXZlcnkgZmlsZSB3aXRoaW4gJ2Rpci8nLCBidXQg bm93IG1hdGNoZXMgZXZlcnkgZmlsZQotaW4gJ2Rpci8nIGFuZCB3aXRoaW4gZXZlcnkgc3ViLWRp cmVjdG9yeSBvZiAnZGlyLycsIHdoaWNoIG1pZ2h0IG5vdCBiZQotd2hhdCB0aGUgdXNlciB3YW50 ZWQuCi0KLVRoZSBvcmlnaW5hbCBpbnRlbnRpb24gYmVoaW5kIHRoZSBjb21taXQgaXMgc29saWQs IHdlIGp1c3QgbmVlZCB0bwotZmluZCBhIGJldHRlciBpbXBsZW1lbnRhdGlvbi4KLQotQnVnOiBo dHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zMzg3MgotCi1k aWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLS0t LSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLUBAIC02 ODI1LDkgKzY4MjUsNyBAQCBGdW5jdGlvbnMgaW4gQHZhcntmaWxlfSB3aWxsIGJlIHNraXBwZWQg b3ZlciB3aGVuIHN0ZXBwaW5nLgotIEBpdGVteCAtZ2ZpIEB2YXJ7ZmlsZS1nbG9iLXBhdHRlcm59 Ci0gQGNpbmRleCBza2lwcGluZyBvdmVyIGZpbGVzIHZpYSBnbG9iLXN0eWxlIHBhdHRlcm5zCi0g RnVuY3Rpb25zIGluIGZpbGVzIG1hdGNoaW5nIEB2YXJ7ZmlsZS1nbG9iLXBhdHRlcm59IHdpbGwg YmUgc2tpcHBlZAotLW92ZXIgd2hlbiBzdGVwcGluZy4gIFRoZSBkaXJlY3Rvcnkgc2VwYXJhdG9y IGNoYXJhY3RlciBAZmlsZXsvfSBpcyB0cmVhdGVkIGFzIGEKLS1yZWd1bGFyIGNoYXJhY3Rlciwg c28gaXQgY2FuIGJlIG1hdGNoZWQgYnkgd2lsZGNhcmQgY2hhcmFjdGVycyBAZmlsZXsqfSBhbmQK LS1AZmlsZXs/fS4KLStvdmVyIHdoZW4gc3RlcHBpbmcuCi0gCi0gQHNtYWxsZXhhbXBsZQotIChA dmFsdWV7R0RCUH0pIHNraXAgLWdmaSB1dGlscy8qLmMKLWRpZmYgLS1naXQgYS9nZGIvc2tpcC5j IGIvZ2RiL3NraXAuYwotLS0tIGEvZ2RiL3NraXAuYwotKysrIGIvZ2RiL3NraXAuYwotQEAgLTUz MSw3ICs1MzEsNyBAQCBza2lwbGlzdF9lbnRyeTo6ZG9fc2tpcF9nZmlsZV9wIChjb25zdCBzeW10 YWJfYW5kX2xpbmUgJmZ1bmN0aW9uX3NhbCkgY29uc3QKLSAgIC8qIENoZWNrIGZpcnN0IHNvbGUg U1lNVEFCLT5GSUxFTkFNRS4gIEl0IG1heSBub3QgYmUgYSBzdWJzdHJpbmcgb2YKLSAgICAgIHN5 bXRhYl90b19mdWxsbmFtZSBhcyBpdCBtYXkgY29udGFpbiAiLi8iIGV0Yy4gICovCi0gICBpZiAo Z2RiX2ZpbGVuYW1lX2ZubWF0Y2ggKG1fZmlsZS5jX3N0ciAoKSwgZnVuY3Rpb25fc2FsLnN5bXRh Yi0+ZmlsZW5hbWUsCi0tCQkJICAgIEZOTV9OT0VTQ0FQRSkgPT0gMCkKLSsJCQkgICAgRk5NX0ZJ TEVfTkFNRSB8IEZOTV9OT0VTQ0FQRSkgPT0gMCkKLSAgICAgcmVzdWx0ID0gdHJ1ZTsKLSAKLSAg IC8qIEJlZm9yZSB3ZSBpbnZva2Ugc3ltdGFiX3RvX2Z1bGxuYW1lLCB3aGljaCBpcyBleHBlbnNp dmUsIGRvIGEgcXVpY2sKLUBAIC01NDIsMTQgKzU0MiwxNCBAQCBza2lwbGlzdF9lbnRyeTo6ZG9f c2tpcF9nZmlsZV9wIChjb25zdCBzeW10YWJfYW5kX2xpbmUgJmZ1bmN0aW9uX3NhbCkgY29uc3QK LSAgIGVsc2UgaWYgKCFiYXNlbmFtZXNfbWF5X2RpZmZlcgotICAgICAgICYmIGdkYl9maWxlbmFt ZV9mbm1hdGNoIChsYmFzZW5hbWUgKG1fZmlsZS5jX3N0ciAoKSksCi0gCQkJICAgICAgIGxiYXNl bmFtZSAoZnVuY3Rpb25fc2FsLnN5bXRhYi0+ZmlsZW5hbWUpLAotLQkJCSAgICAgICBGTk1fTk9F U0NBUEUpICE9IDApCi0rCQkJICAgICAgIEZOTV9GSUxFX05BTUUgfCBGTk1fTk9FU0NBUEUpICE9 IDApCi0gICAgIHJlc3VsdCA9IGZhbHNlOwotICAgZWxzZQotICAgICB7Ci0gICAgICAgLyogTm90 ZTogc3ltdGFiX3RvX2Z1bGxuYW1lIGNhY2hlcyBpdHMgcmVzdWx0LCB0aHVzIHdlIGRvbid0IGhh dmUgdG8uICAqLwotICAgICAgIGNvbnN0IGNoYXIgKmZ1bGxuYW1lID0gc3ltdGFiX3RvX2Z1bGxu YW1lIChmdW5jdGlvbl9zYWwuc3ltdGFiKTsKLSAKLS0gICAgICByZXN1bHQgPSBnZGJfZmlsZW5h bWVfZm5tYXRjaCAobV9maWxlLmNfc3RyICgpLCBmdWxsbmFtZSwgRk5NX05PRVNDQVBFKTsKLSsg ICAgICByZXN1bHQgPSBjb21wYXJlX2dsb2JfZmlsZW5hbWVzX2Zvcl9zZWFyY2ggKGZ1bGxuYW1l LCBtX2ZpbGUuY19zdHIgKCkpOwotICAgICB9Ci0gCi0gICBpZiAoZGVidWdfc2tpcCkKLWRpZmYg LS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLS0tLSBhL2dkYi9zeW10YWIuYwot KysrIGIvZ2RiL3N5bXRhYi5jCi1AQCAtNjk4LDYgKzY5OCw0MCBAQCBpdGVyYXRlX292ZXJfc29t ZV9zeW10YWJzIChjb25zdCBjaGFyICpuYW1lLAotICAgcmV0dXJuIGZhbHNlOwotIH0KLSAKLSsv KiBTYW1lIGFzIGNvbXBhcmVfZmlsZW5hbWVzX2Zvcl9zZWFyY2gsIGJ1dCBmb3IgZ2xvYi1zdHls ZSBwYXR0ZXJucy4KLSsgICBIZWFkcyB1cCBvbiB0aGUgb3JkZXIgb2YgdGhlIGFyZ3VtZW50cy4g IFRoZXkgbWF0Y2ggdGhlIG9yZGVyIG9mCi0rICAgY29tcGFyZV9maWxlbmFtZXNfZm9yX3NlYXJj aCwgYnV0IGl0J3MgdGhlIG9wcG9zaXRlIG9mIHRoZSBvcmRlciBvZgotKyAgIGFyZ3VtZW50cyB0 byBnZGJfZmlsZW5hbWVfZm5tYXRjaC4gICovCi0rCi0rYm9vbAotK2NvbXBhcmVfZ2xvYl9maWxl bmFtZXNfZm9yX3NlYXJjaCAoY29uc3QgY2hhciAqZmlsZW5hbWUsCi0rCQkJCSAgIGNvbnN0IGNo YXIgKnNlYXJjaF9uYW1lKQotK3sKLSsgIC8qIFdlIHJlbHkgb24gdGhlIHByb3BlcnR5IG9mIGds b2Itc3R5bGUgcGF0dGVybnMgd2l0aCBGTk1fRklMRV9OQU1FIHRoYXQKLSsgICAgIGFsbCAvcyBo YXZlIHRvIGJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkLiAgKi8KLSsgIGludCBmaWxlX3BhdGhfZWxl bWVudHMgPSBjb3VudF9wYXRoX2VsZW1lbnRzIChmaWxlbmFtZSk7Ci0rICBpbnQgc2VhcmNoX3Bh dGhfZWxlbWVudHMgPSBjb3VudF9wYXRoX2VsZW1lbnRzIChzZWFyY2hfbmFtZSk7Ci0rCi0rICBp ZiAoc2VhcmNoX3BhdGhfZWxlbWVudHMgPiBmaWxlX3BhdGhfZWxlbWVudHMpCi0rICAgIHJldHVy biBmYWxzZTsKLSsKLSsgIGlmIChJU19BQlNPTFVURV9QQVRIIChzZWFyY2hfbmFtZSkpCi0rICAg IHsKLSsgICAgICByZXR1cm4gKHNlYXJjaF9wYXRoX2VsZW1lbnRzID09IGZpbGVfcGF0aF9lbGVt ZW50cwotKwkgICAgICAmJiBnZGJfZmlsZW5hbWVfZm5tYXRjaCAoc2VhcmNoX25hbWUsIGZpbGVu YW1lLAotKwkJCQkgICAgICAgRk5NX0ZJTEVfTkFNRSB8IEZOTV9OT0VTQ0FQRSkgPT0gMCk7Ci0r ICAgIH0KLSsKLSsgIHsKLSsgICAgY29uc3QgY2hhciAqZmlsZV90b19jb21wYXJlCi0rICAgICAg PSBzdHJpcF9sZWFkaW5nX3BhdGhfZWxlbWVudHMgKGZpbGVuYW1lLAotKwkJCQkgICAgIGZpbGVf cGF0aF9lbGVtZW50cyAtIHNlYXJjaF9wYXRoX2VsZW1lbnRzKTsKLSsKLSsgICAgcmV0dXJuIGdk Yl9maWxlbmFtZV9mbm1hdGNoIChzZWFyY2hfbmFtZSwgZmlsZV90b19jb21wYXJlLAotKwkJCQkg Rk5NX0ZJTEVfTkFNRSB8IEZOTV9OT0VTQ0FQRSkgPT0gMDsKLSsgIH0KLSt9Ci0rCi0gLyogU2Vl IHN5bXRhYi5oLiAgKi8KLSAKLSB2b2lkCi1kaWZmIC0tZ2l0IGEvZ2RiL3V0aWxzLmMgYi9nZGIv dXRpbHMuYwotLS0tIGEvZ2RiL3V0aWxzLmMKLSsrKyBiL2dkYi91dGlscy5jCi1AQCAtMzQ2Niw4 ICszNDY2LDggQEAgd2FpdF90b19kaWVfd2l0aF90aW1lb3V0IChwaWRfdCBwaWQsIGludCAqc3Rh dHVzLCBpbnQgdGltZW91dCkKLSAKLSAjZW5kaWYgLyogSEFWRV9XQUlUUElEICovCi0gCi0tLyog UHJvdmlkZSBmbm1hdGNoIGNvbXBhdGlibGUgZnVuY3Rpb24gZm9yIG1hdGNoaW5nIG9mIGhvc3Qg ZmlsZXMuCi0tICAgRk5NX05PRVNDQVBFIG11c3QgYmUgc2V0IGluIEZMQUdTLgotKy8qIFByb3Zp ZGUgZm5tYXRjaCBjb21wYXRpYmxlIGZ1bmN0aW9uIGZvciBGTk1fRklMRV9OQU1FIG1hdGNoaW5n IG9mIGhvc3QgZmlsZXMuCi0rICAgQm90aCBGTk1fRklMRV9OQU1FIGFuZCBGTk1fTk9FU0NBUEUg bXVzdCBiZSBzZXQgaW4gRkxBR1MuCi0gCi0gICAgSXQgaGFuZGxlcyBjb3JyZWN0bHkgSEFWRV9E T1NfQkFTRURfRklMRV9TWVNURU0gYW5kCi0gICAgSEFWRV9DQVNFX0lOU0VOU0lUSVZFX0ZJTEVf U1lTVEVNLiAgKi8KLUBAIC0zNDc1LDYgKzM0NzUsOCBAQCB3YWl0X3RvX2RpZV93aXRoX3RpbWVv dXQgKHBpZF90IHBpZCwgaW50ICpzdGF0dXMsIGludCB0aW1lb3V0KQotIGludAotIGdkYl9maWxl bmFtZV9mbm1hdGNoIChjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25zdCBjaGFyICpzdHJpbmcsIGlu dCBmbGFncykKLSB7Ci0rICBnZGJfYXNzZXJ0ICgoZmxhZ3MgJiBGTk1fRklMRV9OQU1FKSAhPSAw KTsKLSsKLSAgIC8qIEl0IGlzIHVuY2xlYXIgaG93ICdcJyBlc2NhcGluZyB2cy4gZGlyZWN0b3J5 IHNlcGFyYXRvciBzaG91bGQgY29leGlzdC4gICovCi0gICBnZGJfYXNzZXJ0ICgoZmxhZ3MgJiBG Tk1fTk9FU0NBUEUpICE9IDApOwotIAoKZGlmZiAtLWdpdCBhL2dkYi1ycG0tc3VnZ2VzdGlvbi1z Y3JpcHQucGF0Y2ggYi9nZGItcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCmluZGV4IDA3YTY4 ZDUuLjI4ZGYxNGIgMTAwNjQ0Ci0tLSBhL2dkYi1ycG0tc3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2gK KysrIGIvZ2RiLXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaApAQCAtMzMsNyArMzMsNyBAQCBk aWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KICAq IE1hbiBQYWdlczo6ICAgICAgICAgICAgICAgICAgIE1hbnVhbCBwYWdlcwogICogQ29weWluZzo6 ICAgICAgICAgICAgICAgICAgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugc2F5cwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG93IHlvdSBjYW4gY29weSBhbmQgc2hhcmUg QHZhbHVle0dEQk59Ci1AQCAtNTA5ODgsNiArNTA5ODksMTExIEBAIFNob3cgdGhlIGN1cnJlbnQg dmVyYm9zaXR5IHNldHRpbmcuCitAQCAtNTA5ODYsNiArNTA5ODcsMTExIEBAIFNob3cgdGhlIGN1 cnJlbnQgdmVyYm9zaXR5IHNldHRpbmcuCiAgCiAgQGVuZCB0YWJsZQogIAoKZGlmZiAtLWdpdCBh L2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggNDVjNjcyNS4uZDViN2E3YiAxMDA2NDQKLS0tIGEv Z2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTQxLDExICs0MSwxMSBAQCBOYW1lOiAlez9zY2xf cHJlZml4fWdkYgogIyBTZWUgdGltZXN0YW1wIG9mIHNvdXJjZSBnbnVsaWIgaW5zdGFsbGVkIGlu dG8gZ251bGliLyAuCiAlZ2xvYmFsIHNuYXBnbnVsaWIgMjAyMjA1MDEKICVnbG9iYWwgdGFybmFt ZSBnZGItJXt2ZXJzaW9ufQotVmVyc2lvbjogMTcuMQorVmVyc2lvbjogMTcuMgogCiAjIFRoZSBy ZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBp dCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVs bHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6 IDEwJXs/ZGlzdH0KK1JlbGVhc2U6IDElez9kaXN0fQogCiBMaWNlbnNlOiBHUEwtMy4wLW9yLWxh dGVyIEFORCBCU0QtMy1DbGF1c2UgQU5EIEZTRkFQIEFORCBMR1BMLTIuMS1vci1sYXRlciBBTkQg R1BMLTIuMC1vci1sYXRlciBBTkQgTEdQTC0yLjAtb3ItbGF0ZXIgQU5EIExpY2Vuc2VSZWYtRmVk b3JhLVB1YmxpYy1Eb21haW4gQU5EIEdGREwtMS4zLW9yLWxhdGVyIEFORCBMR1BMLTIuMC1vci1s YXRlciBXSVRIIEdDQy1leGNlcHRpb24tMi4wIEFORCBHUEwtMy4wLW9yLWxhdGVyIFdJVEggR0ND LWV4Y2VwdGlvbi0zLjEgQU5EIEdQTC0yLjAtb3ItbGF0ZXIgV0lUSCBHTlUtY29tcGlsZXItZXhj ZXB0aW9uIEFORCBNSVQKICMgRG8gbm90IHByb3ZpZGUgVVJMIGZvciBzbmFwc2hvdHMgYXMgdGhl IGZpbGUgbGFzdHMgdGhlcmUgb25seSBmb3IgMiBkYXlzLgpAQCAtOTI0LDYgKzkyNCwxMyBAQCBm aQogIyBlbmRpZiBzY2wKIAogJWNoYW5nZWxvZworKiBUdWUgSnVuIDIzIDIwMjYgTWljaGFsIEtv bGFyIDxta29sYXJAcmVkaGF0LmNvbT4gLSAxNy4yLTEKKy0gUmViYXNlIHRvIEZTRiBHREIgMTcu Mi4KKyAgRGVsZXRlZDogZ2RiLXJoYnoyNDM1OTUwLXNraXAtcmV2ZXJ0LnBhdGNoCisgIEJhY2tw b3J0IGU0OTJmYjIyYjcwLCBnZGI6IGJhY2twb3J0IERBUCBjb3JlIGZpbGUgc3VwcG9ydAorICBS ZXBsYWNlIG1hbnVhbCwgbXVsdGktZmlsZSBwYXRjaCBpbmNsdXNpb24gd2l0aCBtb2Rlcm4gYXV0 b3NldHVwCisgIEFkZCBycG1pbnNwZWN0LnlhbWwgdG8gZGVmaW5lIHBhY2thZ2Utc3BlY2lmaWMg dGVzdGluZyBwb2xpY3kKKwogKiBUaHUgSnVuIDA0IDIwMjYgUHl0aG9uIE1haW50IDxweXRob24t bWFpbnRAcmVkaGF0LmNvbT4KIC0gUmVidWlsdCBmb3IgUHl0aG9uIDMuMTUKIAoKZGlmZiAtLWdp dCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGZkM2MyMDQuLmY3NmU3N2MgMTAwNjQ0Ci0tLSBh L3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSArMSBAQAotU0hBNTEyIChnZGItMTcuMS50YXIu eHopID0gZjFhNjc1MWU0MzlhMjEyOGZlY2YzZWFlOGI1N2MxNjA4YTBkYzdjZmU3OWI0MzU2YTkz Nzg3NGU1YTQyYmIyZGYwYWJhMzZlYjZhOTQ1MmM0MTk2NjkwOGI5YTU5MDc2YzdjYWQ5NzIwZjY4 NDY4OGFiOTU2YjY1MDgwZjFkN2MKK1NIQTUxMiAoZ2RiLTE3LjIudGFyLnh6KSA9IDc3OTRjNWEx ODViZTdlZDVlN2FkMTAwMGM0ZmY3ZDg0OTdjODA0MjVhMWJjMTA4YWFiOGZkM2RkOGVjZGRlMDM0 ZTI5NGRmZDY1YjI1YzZiMGRjZDhlZDJhMjQwY2FmMDcyOTNmM2U3Mzc5MWI2Y2ZjODkwZDU4MGQw YWY0NTgxCg==