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] fix-dup-patch: Rebase to FSF GDB 17.2. Date: Thu, 23 Jul 2026 18:36:33 GMT Message-ID: <178483179324.1.12479079846329396913.rpms-gdb-2ce014e86e7d@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 2ce014e86e7d598130265ed3521f10cfe8ab74e5 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogMmNlMDE0ZTg2ZTdkNTk4MTMwMjY1ZWQzNTIxZjEwY2ZlOGFiNzRlNQog ICAgICAgICAgICBBdXRob3IgOiBNaWNoYWwgS29sYXIgPG1rb2xhckByZWRoYXQuY29tPgogICAg ICAgICAgICBEYXRlICAgOiAyMDI2LTA2LTIzVDA5OjU4OjE2KzAwOjAwCiAgICAgICAgICAgIFN0 YXRzICA6ICsyOTg4Ly0xNjQgaW4gMTEgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRw czovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzJjZTAxNGU4NmU3ZDU5ODEzMDI2 NWVkMzUyMWYxMGNmZThhYjc0ZTU/YnJhbmNoPWZpeC1kdXAtcGF0Y2gKCiAgICAgICAgICAgIExv ZzoKICAgICAgICAgICAgUmViYXNlIHRvIEZTRiBHREIgMTcuMi4KCkRlbGV0ZWQ6IGdkYi1yaGJ6 MjQzNTk1MC1za2lwLXJldmVydC5wYXRjaAoKQmFja3BvcnQgZTQ5MmZiMjJiNzAsIGdkYjogYmFj a3BvcnQgREFQIGNvcmUgZmlsZSBzdXBwb3J0CgpSZXBsYWNlIG1hbnVhbCwgbXVsdGktZmlsZSBw YXRjaCBpbmNsdXNpb24gd2l0aCBtb2Rlcm4gYXV0b3NldHVwCgpBZGQgcnBtaW5zcGVjdC55YW1s IHRvIGRlZmluZSBwYWNrYWdlLXNwZWNpZmljIHRlc3RpbmcgcG9saWN5CgotLS0KZGlmZiAtLWdp dCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDVjMThiNjUuLmU2OWE1ZmIgMTAwNjQ0 Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMSw1ICsxLDQgQEAKIC9uZXct ZmVkb3JhLXJlbGVhc2UKIC9nZGItbGlic3RkYysrLXYzLXB5dGhvbi04LjEuMS0yMDE4MDYyNi50 YXIueHoKIC92Mi4wLjUudGFyLmd6Ci0vZ2RiLTE2LjMudGFyLnh6Ci0vZ2RiLTE3LjEudGFyLnh6 CisvZ2RiLTE3LjIudGFyLnh6CgpkaWZmIC0tZ2l0IGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUg Yi9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQppbmRleCAyZDRkYWIxLi5kOWY3ZTA5IDEwMDY0NAot LS0gYS9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQorKysgYi9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVk ZQpAQCAtNDQsMzYgKzQ0LDMyIEBAIFBhdGNoMDA3OiBnZGItcmhiejI0MDM1ODAtbWlzcGxhY2Vk LXN5bXRhYnMucGF0Y2gKICMgVGhlc2UgYmFja3BvcnRzIHdpbGwgYWxsIGRyb3Agb3V0IHdoZW4g cmViYXNpbmcgb250byBHREIgMTguCiBQYXRjaDAwODogZ2RiLWluZGV4LWdlbmVyYXRpb24tZml4 ZXMucGF0Y2gKIAotIyBCYWNrcG9ydCBvZiB1cHN0cmVhbSBjb21taXQgZjA4ZmZiYmYyNjkxYmFk MmQ1ZGY2NjBlZTY0NDY0NzY4Nzc3NWYwYwotIyBDYW4gYmUgZHJvcHBlZCBvbiBhIHJlYmFzZSB0 byBnZGIgMTcuMiBvciAxOC4xCi1QYXRjaDAwOTogZ2RiLXJoYnoyNDM1OTUwLXNraXAtcmV2ZXJ0 LnBhdGNoCi0KICMgQmFja3BvcnQgb2YgdXBzdHJlYW0gY29tbWl0IGMxZGEwMTM5MTVlIGZyb20g S2V2aW4gQnVldHRuZXIKICMgKFJIQlogMjQxMzQwNSkuCi1QYXRjaDAxMDogZ2RiLXJoYnoyNDEz NDA1LWdjb3JlLXVucmVhZGFibGUtcGFnZXMucGF0Y2gKK1BhdGNoMDA5OiBnZGItcmhiejI0MTM0 MDUtZ2NvcmUtdW5yZWFkYWJsZS1wYWdlcy5wYXRjaAogCiAjIEJhY2twb3J0IG9mIHVwc3RyZWFt IGNvbW1pdCBkMmNjMTZjZDdmYyBmcm9tIEphbiBWcmFueSBmaXhpbmcKICMgRkFJTHMgaW4gZ2Ri LmJhc2UvZmlsZWlvLmV4cCBjYXVzZWQgYnkgbWFjcm8gZXhwYW5zaW9uIG9mIHBhdGgKICMgY29t cG9uZW50cyAoZS5nLiAibGludXgiKSBpbiBPVVRESVIuCi1QYXRjaDAxMTogZ2RiLWZpbGVpby10 ZXN0LWZpeGVzLnBhdGNoCitQYXRjaDAxMDogZ2RiLWZpbGVpby10ZXN0LWZpeGVzLnBhdGNoCiAK ICMgRml4IHVzZSBvZiBkZXByZWNhdGVkIHRyYWNlIHZhcmlhYmxlIHN1YmNvbW1hbmQKICMgKFRv bSBkZSBWcmllcykKLVBhdGNoMDEyOiBnZGItZml4LXRlc3RzdWl0ZS1uZXdlci10Y2wucGF0Y2gK K1BhdGNoMDExOiBnZGItZml4LXRlc3RzdWl0ZS1uZXdlci10Y2wucGF0Y2gKIAogIyBCYWNrcG9y dCB1cHN0cmVhbSBjb21taXQgOGJkMDhlZTkyYzQgdG8gYWRkcmVzcyByaGJ6MjM2NjQ2MS4gIFRo aXMKICMgY29tbWl0IHdpbGwgZHJvcCBvdXQgd2l0aCBHREIgMTguCi1QYXRjaDAxMzogZ2RiLXJo YnoyMzY2NDYxLW1pc3NpbmctdGhyZWFkLnBhdGNoCitQYXRjaDAxMjogZ2RiLXJoYnoyMzY2NDYx LW1pc3NpbmctdGhyZWFkLnBhdGNoCiAKICMgQmFja3BvcnQgdXBzdHJlYW0gY29tbWl0IGNkMjg5 ZGYwNjhlIHRvIGFkZHJlc3MgcmhiejIzNjY0NjEuICBUaGlzCiAjIGNvbW1pdCB3aWxsIGRyb3Ag b3V0IHdpdGggR0RCIDE4LgotUGF0Y2gwMTQ6IGdkYi1yaGJ6MjM2NjQ2MS1iYWQtc29saWItZW50 cnktYWRkci5wYXRjaAorUGF0Y2gwMTM6IGdkYi1yaGJ6MjM2NjQ2MS1iYWQtc29saWItZW50cnkt YWRkci5wYXRjaAogCiAjIEJhY2twb3J0IHRoZSBmb2xsb3dpbmcgdXBzdHJlYW0gY29tbWl0cyBp biBvcmRlciB0byBhZGRyZXNzIFJIQloKICMgMjQ2NzI1MTogZDk4MDMxN2M3ZjEsIDk1OGQwNjI2 MmE3LCA3ZDFkNzM4NjU2MSwgODkxNWRlMDg4M2MsCiAjIDhmNjVhYjdiNzFmLiAgVGhlc2UgY29t bWl0cyB3aWxsIGFsbCBkcm9wIG91dCB3aGVuIHdlIHJlYmFzZSB0byBHREIKICMgMTguCi1QYXRj aDAxNTogZ2RiLXJoYnoyNDY3MjUxLWNvbXB1dGVkLWxvY2F0aW9uLXN5bnRoZXRpYy1wb2ludGVy cy5wYXRjaAorUGF0Y2gwMTQ6IGdkYi1yaGJ6MjQ2NzI1MS1jb21wdXRlZC1sb2NhdGlvbi1zeW50 aGV0aWMtcG9pbnRlcnMucGF0Y2gKIAogIyBGaXggRUlMU0VRIHByb2JsZW1zIGZvciBVVEY4IHJl bGF0ZWQgdGVzdHMgd2hlbiB1c2luZyBleHBlY3QKICMgZW5hYmxlZCB3aXRoIFRjbCA5IGFuZCBm dWxsIHNldCBvZiBUY2wgOSBjb21wYXRpYmlsaXR5IGZpeGVzCkBAIC04NCw1ICs4MCw5IEBAIFBh dGNoMDE1OiBnZGItcmhiejI0NjcyNTEtY29tcHV0ZWQtbG9jYXRpb24tc3ludGhldGljLXBvaW50 ZXJzLnBhdGNoCiAjIEZvciBpdHMgc3RhdHVzLCBzZWU6CiAjCiAjIGh0dHBzOi8vaW5ib3guc291 cmNld2FyZS5vcmcvZ2RiLXBhdGNoZXMvMjAyNjA1MjYxOTI3MDEuMzgzNTI2Mi0yLWtldmluYkBy ZWRoYXQuY29tL1QvI3UKLVBhdGNoMDE2OiBnZGItdGNsOS11dGY4LWVuY29kaW5nLWZpeC5wYXRj aAorUGF0Y2gwMTU6IGdkYi10Y2w5LXV0ZjgtZW5jb2RpbmctZml4LnBhdGNoCisKKyMgQmFja3Bv cnQgb2YgdXBzdHJlYW0gY29tbWl0IGU0OTJmYjIyYjcwCisjIGdkYjogYmFja3BvcnQgREFQIGNv cmUgZmlsZSBzdXBwb3J0CitQYXRjaDAxNjogZ2RiLWJhY2twb3J0LWRhcC1jb3JlLWZpbGUtc3Vw cG9ydC5wYXRjaAogCgpkaWZmIC0tZ2l0IGEvX2dpdF91cHN0cmVhbV9jb21taXQgYi9fZ2l0X3Vw c3RyZWFtX2NvbW1pdAppbmRleCA0NTJjYTUzLi5kYTRjOTJlIDEwMDY0NAotLS0gYS9fZ2l0X3Vw c3RyZWFtX2NvbW1pdAorKysgYi9fZ2l0X3Vwc3RyZWFtX2NvbW1pdApAQCAtMSArMSBAQAotNjMx YTQ5YzQ1MmE0YTQ1NmRkOTg4OWQxNzI1NDFlYTc4OWY4YmNhZQorN2FkZjlmYTZiMWNjYjNjNzBm ODZjYjYzMDM2OGI5ZDNkZmZjZjNhYQoKZGlmZiAtLWdpdCBhL19wYXRjaF9vcmRlciBiL19wYXRj aF9vcmRlcgppbmRleCA2NjEwOTk1Li5jNmRkNDg3IDEwMDY0NAotLS0gYS9fcGF0Y2hfb3JkZXIK KysrIGIvX3BhdGNoX29yZGVyCkBAIC02LDcgKzYsNiBAQCBnZGItcmhiejI0MjQzMjUtYzIzLW1v cmUtY29uc3QtZml4ZXMucGF0Y2gKIGdkYi1yaGJ6MjQyNDMyNS1jKysyMC1pbXBsaWNpdC1sYW1i ZGEtY2FwdHVyZS5wYXRjaAogZ2RiLXJoYnoyNDAzNTgwLW1pc3BsYWNlZC1zeW10YWJzLnBhdGNo CiBnZGItaW5kZXgtZ2VuZXJhdGlvbi1maXhlcy5wYXRjaAotZ2RiLXJoYnoyNDM1OTUwLXNraXAt cmV2ZXJ0LnBhdGNoCiBnZGItcmhiejI0MTM0MDUtZ2NvcmUtdW5yZWFkYWJsZS1wYWdlcy5wYXRj aAogZ2RiLWZpbGVpby10ZXN0LWZpeGVzLnBhdGNoCiBnZGItZml4LXRlc3RzdWl0ZS1uZXdlci10 Y2wucGF0Y2gKQEAgLTE0LDMgKzEzLDQgQEAgZ2RiLXJoYnoyMzY2NDYxLW1pc3NpbmctdGhyZWFk LnBhdGNoCiBnZGItcmhiejIzNjY0NjEtYmFkLXNvbGliLWVudHJ5LWFkZHIucGF0Y2gKIGdkYi1y aGJ6MjQ2NzI1MS1jb21wdXRlZC1sb2NhdGlvbi1zeW50aGV0aWMtcG9pbnRlcnMucGF0Y2gKIGdk Yi10Y2w5LXV0ZjgtZW5jb2RpbmctZml4LnBhdGNoCitnZGItYmFja3BvcnQtZGFwLWNvcmUtZmls ZS1zdXBwb3J0LnBhdGNoCgpkaWZmIC0tZ2l0IGEvZ2RiLWJhY2twb3J0LWRhcC1jb3JlLWZpbGUt c3VwcG9ydC5wYXRjaCBiL2dkYi1iYWNrcG9ydC1kYXAtY29yZS1maWxlLXN1cHBvcnQucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYzODAzMQotLS0gL2Rldi9udWxs CisrKyBiL2dkYi1iYWNrcG9ydC1kYXAtY29yZS1maWxlLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCAr MSwyOTU2IEBACitGcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogTWljaGFsIEtvbGFyIDxta29sYXJAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMjMgSnVu IDIwMjYgMDk6Mzc6NDUgKzAwMDAKK1N1YmplY3Q6IGdkYi1iYWNrcG9ydC1kYXAtY29yZS1maWxl LXN1cHBvcnQucGF0Y2gKKworOzsgQmFja3BvcnQgb2YgdXBzdHJlYW0gY29tbWl0IGU0OTJmYjIy YjcwCis7OyBnZGI6IGJhY2twb3J0IERBUCBjb3JlIGZpbGUgc3VwcG9ydAorCitCYWNrLXBvcnQg dGhlIGZvbGxvd2luZyB1cHN0cmVhbSBjb21taXRzIHRvIGVuYWJsZSBjb3JlIGZpbGUgc3VwcG9y dAord2l0aGluIEdEQidzIERBUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbjoKKworICAqIDBhNDgx YmI5YTZkIGdkYi9kYXA6IGFkZCBzdXBwb3J0IGZvciBvcGVuaW5nIGNvcmUgZmlsZXMKKyAgKiA0 ZWNhYWMzOWMyNiBnZGIvcHl0aG9uOiBuZXcgZXZlbnRzLmNvcmVmaWxlX2NoYW5nZWQgZXZlbnQK KyAgKiBlY2FjNDJhZjczNSBBbHdheXMgcHJvcGFnYXRlIGV4Y2VwdGlvbnMgaW4gREFQCisgICog ZmM4ZTVhNTY1YjMgZ2RiOiBtYWtlIHN0cnVjdHVyZWQgY29yZSBmaWxlIG1hcHBpbmdzIHByb2Nl c3NpbmcgZ2xvYmFsCisgICogZjY5YzFkMDNjNGQgZ2RiL3B5dGhvbjogYWRkIENvcmVmaWxlLm1h cHBlZF9maWxlcyBtZXRob2QKKyAgKiA3ODYyNTU0YmNmNCBnZGIvcHl0aG9uOiBpbnRyb2R1Y2Ug Z2RiLkNvcmVmaWxlIEFQSQorCitUaGUgY29tbWl0IG1lc3NhZ2VzIGZvciBlYWNoIGluZGl2aWR1 YWwgY29tbWl0IGZvbGxvdzoKKworLS0tIDBhNDgxYmI5YTZkOgorCitnZGIvZGFwOiBhZGQgc3Vw cG9ydCBmb3Igb3BlbmluZyBjb3JlIGZpbGVzCisKK1RoaXMgcGF0Y2ggYWRkcyBjb3JlIGZpbGUg c3VwcG9ydCB0byBHREIncyBEQVAgaW50ZXJmYWNlLgorCitDb3JlIGZpbGVzIGFyZSBzdXBwb3J0 ZWQgYXMgYSBHREIgc3BlY2lmaWMgYXJndW1lbnQgdG8gJ2F0dGFjaCcsIHRoZQorbmV3IGFyZ3Vt ZW50IGlzICdjb3JlRmlsZScsIHRoZSBuYW1lIG9mIHRoZSBjb3JlIGZpbGUgdG8gZGVidWcuCisK K0kgdGhpbmsgaGFuZGxpbmcgY29yZSBmaWxlcyB2aWEgYXR0YWNoIG1ha2VzIHRoZSBtb3N0IHNl bnNlOyBhdHRhY2ggaXMKK2ZvciBjb25uZWN0aW5nIHRvIGV4aXN0aW5nIHByb2Nlc3NlcywgYnV0 IHRoZXNlIHRhcmdldHMgYXJlICh1c3VhbGx5KQorc3RvcHBlZCBhcyBzb29uIGFzIEdEQiBhdHRh Y2hlcywgYW5kIHRoYXQncyB3aGF0IGEgY29yZSBmaWxlIGxvb2tzCitsaWtlLCBhIHRhcmdldCB0 aGF0IHdhcyBydW5uaW5nLCBidXQgaXMgbm93IHN0b3BwZWQuICBJdCBqdXN0IGhhcHBlbnMKK3Ro YXQgY29yZSBmaWxlIHRhcmdldHMgYXJlIHNwZWNpYWwgaW4gdGhhdCB0aGUgdGFyZ2V0IGNhbm5v dCBiZQorcmVzdW1lZCBhZ2Fpbiwgbm9yIGNhbiB0aGUgdXNlciBtb2RpZnkgdGhlIHByb2dyYW0g c3RhdGUgKGUuZy4gd3JpdGUKK3RvIG1lbW9yeSBvciByZWdpc3RlcnMpLgorCitQcmlvciB0byBz dGFydGluZyB0aGlzIHdvcmsgSSB0b29rIGEgbG9vayBhdCB3aGF0IGxsZGIgZG9lcy4gIFRoZQor ZG9jdW1lbnRhdGlvbiBpcyBub3Qgc3VwZXIgY2xlYXIsIGJ1dCB0aGlzIHBhZ2Ugc2VlbXMgdG8g aW5kaWNhdGUgdGhhdAorbGxkYiBtaWdodCBhbHNvIHVzZSB0aGUgJ2NvcmVGaWxlJyBhcmd1bWVu dCB0byAnYXR0YWNoJzoKKworICBodHRwczovL2xsZGIubGx2bS5vcmcvdXNlL2xsZGJkYXAuaHRt bCNjb25maWd1cmF0aW9uLXNldHRpbmdzLXJlZmVyZW5jZQorCitMaWtlIEkgc2FpZCwgaXQncyBu b3QgdmVyeSBjbGVhciwgYnV0IHNlYXJjaCBmb3IgImNvcmVGaWxlIiBhbmQgeW91J2xsCitzZWUg aXQgbWVudGlvbmVkLCBqdXN0IG9uY2UsIHVuZGVyIHRoZSAiYXR0YWNoIiBoZWFkZXIuICBJbiBv cmRlciB0bworYmUgY29tcGF0aWJsZSB3aXRoIGxsZGIgSSB1c2VkIHRoZSBzYW1lIGFyZ3VtZW50 IG5hbWUgd2l0aCB0aGUgc2FtZQorY2FwaXRhbGlzYXRpb24uCisKK1RoZSBuZXcgYXJndW1lbnQg aXMgYWRkZWQgdG8gdGhlIGRvY3VtZW50YXRpb24gYW5kIG1lbnRpb25lZCBpbiBORVdTLgorCitJ IGhhZCB0byBtYWtlIHNvbWUgY2hhbmdlcyB0byB0ZXN0c3VpdGUvbGliL2RhcC1zdXBwb3J0LmV4 cCB0byBzdXBwb3J0Cit0aGlzIG5ldyBmZWF0dXJlLiAgVGhlcmUncyBhIG5ldyBkYXBfY29yZWZp bGUgcHJvYyB0byBoYW5kbGUgc2V0dGluZwordXAgdGhlIGluaXRpYWwgY29ubmVjdGlvbi4gIFRo aXMgc2VlbWVkIGNsZWFuZXIgdGhhdCBvdmVybG9hZGluZworZGFwX2F0dGFjaCwgZXZlbiB0aG91 Z2ggdW5kZXIgdGhlIGhvb2QgaXQgaXMgc3RpbGwgYW4gJ2F0dGFjaCcgcmVxdWVzdAordGhhdCBn ZXRzIHNlbnQuCisKK1RoZSBuZXcgdGVzdCB0cmllcyB0byB3cml0ZSB0byBtZW1vcnkgYW5kIHJl Z2lzdGVycyB3aXRoIHRoZSBjb3JlIGZpbGUKK3RhcmdldCBpbiBwbGFjZSwgbmVpdGhlciBvZiB0 aGVzZSByZXF1ZXN0cyBzdWNjZWVkLCB3aGljaCBpcyB3aGF0IHdlCit3YW50LCBidXQgdGhlIGV4 Y2VwdGlvbnMgYXJlIGxvZ2dlZCBpbnRvIHRoZSBkYXAgbG9nIGZpbGUuICBUaGUKK2RhcF9zaHV0 ZG93biBwcm9jIGNhbGxzIGRhcF9jaGVja19sb2dfZmlsZSB0byBjaGVjayB0aGUgbG9nIGZvcgor ZXhjZXB0aW9ucywgYW5kIHRoZXNlIHR3byBleGNlcHRpb25zIGFyZSBzcG90dGVkIGFuZCB0cmln Z2VyIGEgRkFJTC4KK1RvIGF2b2lkIHRoaXMgSSd2ZSBhZGRlZCBhIG5ldyAiZXhwZWN0ZWRfZXhj ZXB0aW9uX2NvdW50IiBhcmd1bWVudAorZm9yIGRhcF9zaHV0ZG93bi4gIE5vdyB3ZSBjaGVjayB0 aGF0IHdlIHNlZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mCitleGNlcHRpb25zLiAgV2UgZG9uJ3Qg Y2hlY2sgZm9yIHRoZSBzcGVjaWZpYyBleGNlcHRpb24gdHlwZXMgcmlnaHQKK25vdywgYnV0IGFz IHRoZSB0ZXN0IGlzIGFscmVhZHkgY2hlY2tpbmcgdGhhdCB0aGUgZXhwZWN0ZWQgcmVxdWVzdHMK K2ZhaWwsIEkgdGhpbmsgd2UncmUgT0suCisKK0FwcHJvdmVkLUJ5OiBUb20gVHJvbWV5IDx0b21A dHJvbWV5LmNvbT4KKworLS0tICA0ZWNhYWMzOWMyNjoKKworZ2RiL3B5dGhvbjogbmV3IGV2ZW50 cy5jb3JlZmlsZV9jaGFuZ2VkIGV2ZW50CisKK0FkZCBhIG5ldyBQeXRob24gZXZlbnQgcmVnaXN0 cnksIGV2ZW50cy5jb3JlZmlsZV9jaGFuZ2VkLiAgVGhpcyBldmVudAoraXMgZW1pdHRlZCBlYWNo IHRpbWUgdGhlIGNvcmVmaWxlIHdpdGhpbiBhbiBpbmZlcmlvciBjaGFuZ2VzLgorCitUaGUgZXZl bnQgb2JqZWN0IGhhcyBhIHNpbmdsZSAnaW5mZXJpb3InIGF0dHJpYnV0ZSB3aGljaCBpcyB0aGUK K2dkYi5JbmZlcmlvciBvYmplY3QgZm9yIHdoaWNoIHRoZSBjb3JlIGZpbGUgY2hhbmdlZC4gIFRo ZSB1c2VyIGNhbgordGhlbiBpbnNwZWN0IEluZmVyaW9yLmNvcmVmaWxlIHRvIHNlZSBkZXRhaWxz IGFib3V0IHRoZSBuZXcgY29yZSBmaWxlLAorb3IgdGhpcyB3aWxsIGJlIE5vbmUgaWYgdGhlIGNv cmUgZmlsZSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBpbmZlcmlvci4KKworSSd2ZSB1cGRhdGVkIHRo ZSBleGlzdGluZyB0ZXN0IHRvIGNvdmVyIHRoaXMgbmV3IGV2ZW50LgorCitUaGUgbmV3IHRlc3Qg Y292ZXJzIGJvdGggdGhlIGNvcmVmaWxlX2NoYW5nZWQgZXZlbnQsIGJ1dCBhbHNvIG1vbml0b3Jz Cit0aGUgZXhpdGVkIGV2ZW50LiAgVGhpcyB0aWVzIGludG8gdGhlIHdvcmsgZG9uZSBpbiB0aGUg cHJldmlvdXMKK2NvbW1pdCB3aGVyZSB3ZSB1c2Ugd2hldGhlciB0aGUgaW5mZXJpb3IgaGFzIGV4 aXRlZCBvciBub3QgYXMgYSBndWFyZAorZm9yIHdoZXRoZXIgY29yZV90YXJnZXQ6OmV4aXRfY29y ZV9maWxlX2luZmVyaW9yIHNob3VsZCBiZSBjYWxsZWQuCitVbmxvYWRpbmcgYSBjb3JlIGZpbGUg c2hvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBjb3JlZmlsZV9jaGFuZ2VkIGV2ZW50CithbmQgYSBz aW5nbGUgZXhpdGVkIGV2ZW50LgorCitSZXZpZXdlZC1CeTogRWxpIFphcmV0c2tpaSA8ZWxpekBn bnUub3JnPgorCistLS0gZWNhYzQyYWY3MzU6CisKK0Fsd2F5cyBwcm9wYWdhdGUgZXhjZXB0aW9u cyBpbiBEQVAKKworVGhpcyBjaGFuZ2VzIHRoZSBEQVAgZXhlY19hbmRfbG9nIGZ1bmN0aW9uIHRv IGFsd2F5cyB0cmFuc2Zvcm0gYW4KK2V4Y2VwdGlvbiBpbnRvIGEgREFQRXhjZXB0aW9uIGFuZCBw cm9wYWdhdGUgaXQuCisKK0FzIHRoZSBidWcgcG9pbnRzIG91dCwgd2UgaGF2ZW4ndCBhbHdheXMg d3JhcHBlZCBjYWxscyB3aGVuCithcHByb3ByaWF0ZS4gIEkgdGhpbmsgaXQncyBiZXR0ZXIgdG8g Y2F1c2UgdGhlIHJlcXVlc3QgdG8gZmFpbCBieQorZGVmYXVsdDsgaWYgYW55IHNwb3QgdHJ1bHkg bmVlZHMgdG8gaWdub3JlIGVycm9ycywgdGhhdCBpcyByZWFkaWx5Citkb25lIGF0IHRoZSBwb2lu dCBvZiBjYWxsLgorCitCdWc6IGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19i dWcuY2dpP2lkPTMzMzQ2CisKKy0tLSBmYzhlNWE1NjViMzoKKworZ2RiOiBtYWtlIHN0cnVjdHVy ZWQgY29yZSBmaWxlIG1hcHBpbmdzIHByb2Nlc3NpbmcgZ2xvYmFsCisKK0luIGNvcmVsb3cuYywg d2l0aGluIGNvcmVfdGFyZ2V0OjpidWlsZF9maWxlX21hcHBpbmdzLCB3ZSBoYXZlIGNvZGUKK3Ro YXQgd3JhcHMgYXJvdW5kIGEgY2FsbCB0byBnZGJhcmNoX3JlYWRfY29yZV9maWxlX21hcHBpbmdz IGFuZAorcHJvdmlkZXMgbW9yZSBzdHJ1Y3R1cmUgdG8gdGhlIHJlc3VsdHMuCisKK1NwZWNpZmlj YWxseSwgZ2RiYXJjaF9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyBjYWxscyBhIGNhbGxiYWNrIG9u Y2UKK2ZvciBldmVyeSByZWdpb24gb2YgZXZlcnkgbWFwcGVkIGZpbGUuICBUaGUgd3JhcHBlciBj b2RlIGdyb3VwcyBhbGwgb2YKK3RoZSBtYXBwaW5ncyBmb3Igb25lIGZpbGUgaW50byBhbiBpbnN0 YW5jZSBvZiAnc3RydWN0IG1hcHBlZF9maWxlJywKK3RoaXMgYWxsb3dzIGFsbCBvZiB0aGUgbWFw cGVkIHJlZ2lvbnMgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZQorYnVpbGQtaWQgYW5kIGZpbGVu YW1lIG9mIGEgZmlsZS4KKworSW4gdGhlIG5leHQgY29tbWl0IEkgcGxhbiB0byBtYWtlIHRoaXMg aW5mb3JtYXRpb24gYXZhaWxhYmxlIHZpYSB0aGUKK1B5dGhvbiBBUEksIGFuZCBzbyBJIG5lZWQg dG8gYWxsb3cgYWNjZXNzIHRvIHRoaXMgc3RydWN0dXJlZCB3cmFwcGluZworb3V0c2lkZSBvZiBj b3JlbG93LmMuCisKK1RoaXMgY29tbWl0IHJlbmFtZXMgJ3N0cnVjdCBtYXBwZWRfZmlsZScgdG8g J3N0cnVjdCBjb3JlX21hcHBlZF9maWxlJworYW5kIG1vdmVzIHRoZSBzdHJ1Y3QgaW50byBnZGJj b3JlLmguICBUaGVuIGEgbmV3IGdsb2JhbCBmdW5jdGlvbgorZ2RiX3JlYWRfY29yZV9maWxlX21h cHBpbmdzIGlzIGNyZWF0ZWQgaW50byB3aGljaCBJIG1vdmUgdGhlIGNvZGUgdG8KK2J1aWxkIHRo ZSBzdHJ1Y3R1cmVkIGRhdGEuCisKK1RoZW4gY29yZWxvdy5jIGlzIHVwZGF0ZWQgdG8gY2FsbCBn ZGJfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MuCisKK1RoaXMgY29tbWl0IGRvZXMgbm90IGV4dGVu ZCB0aGUgUHl0aG9uIEFQSSwgdGhhdCBpcyBmb3IgdGhlIG5leHQKK2NvbW1pdC4KKworVGhlcmUg c2hvdWxkIGJlIG5vIHVzZXIgdmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29tbWl0LgorCitC dWc6IGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTMyODQ0 CisKK0FwcHJvdmVkLUJ5OiBUb20gVHJvbWV5IDx0b21AdHJvbWV5LmNvbT4KKworLS0tIGY2OWMx ZDAzYzRkOgorCitnZGIvcHl0aG9uOiBhZGQgQ29yZWZpbGUubWFwcGVkX2ZpbGVzIG1ldGhvZAor CitBZGQgYSBuZXcgQ29yZWZpbGUubWFwcGVkX2ZpbGVzIG1ldGhvZCB3aGljaCByZXR1cm5zIGEg bGlzdCBvZgorZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZSBvYmplY3RzLgorCitFYWNoIGdkYi5Db3Jl ZmlsZU1hcHBlZEZpbGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgd2FzIG1hcHBlZAor aW50byB0aGUgcHJvY2VzcyB3aGVuIHRoZSBjb3JlIGZpbGUgd2FzIGNyZWF0ZWQuCisKK0EgZ2Ri LkNvcmVmaWxlTWFwcGVkRmlsZSBoYXMgYXR0cmlidXRlczoKKworICArIGZpbGVuYW1lICAtLSBB IHN0cmluZywgdGhlIG5hbWUgb2YgdGhlIG1hcHBlZCBmaWxlLgorICArIGJ1aWxkX2lkIC0tIEEg c3RyaW5nIG9yIE5vbmUsIHRoZSBidWlsZC1pZCBvZiB0aGUgbWFwcGVkIGZpbGUgaWYKKyAgICAg ICAgICAgICAgICBHREIgY291bGQgZmluZCBpdCAoTm9uZSBpZiBub3QpLgorICArIGlzX21haW5f ZXhlY3V0YWJsZSAtLSBBIGJvb2xlYW4sIFRydWUgaWYgdGhpcyBtYXBwaW5nIGlzIHRoZSBtYWlu CisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUuCisgICsgcmVnaW9ucyAtLSBB IGxpc3QgY29udGFpbmluZyB0aGUgcmVnaW9ucyBvZiB0aGlzIGZpbGUgdGhhdCB3ZXJlCisgICAg ICAgICAgICAgICBtYXBwZWQgaW50byB0aGUgcHJvY2Vzcy4KKworVGhlICdyZWdpb25zJyBsaXN0 IGlzIGEgbGlzdCBvZiBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uIG9iamVjdHMsCitlYWNo IG9mIHRoZXNlIG9iamVjdHMgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworICArIHN0 YXJ0IC0tIHRoZSBzdGFydCBhZGRyZXNzIHdpdGhpbiB0aGUgaW5mZXJpb3IuCisgICsgZW5kIC0t IHRoZSBlbmQgYWRkcmVzcyB3aXRoaW4gdGhlIGluZmVyaW9yLgorICArIGZpbGVfb2Zmc2V0IC0t IHRoZSBvZmZzZXQgd2l0aGluIHRoZSBtYXBwZWQgZmlsZSBmb3IgdGhpcyBtYXBwaW5nLgorCitU aGVyZSBhcmUgZG9jcyBhbmQgdGVzdHMuCisKK0J1ZzogaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9i dWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MzI4NDQKKworQXBwcm92ZWQtQnk6IFRvbSBUcm9tZXkg PHRvbUB0cm9tZXkuY29tPgorCistLS0gNzg2MjU1NGJjZjQ6CisKK2dkYi9weXRob246IGludHJv ZHVjZSBnZGIuQ29yZWZpbGUgQVBJCisKK1RoaXMgY29tbWl0IHN0YXJ0cyBhZGRpbmcgc29tZSBj b3JlIGZpbGUgcmVsYXRlZCBmZWF0dXJlcyB0byB0aGUKK1B5dGhvbiBBUEkuCisKK0luIHRoaXMg aW5pdGlhbCBjb21taXQgSSd2ZSB0cmllZCB0byBrZWVwIHRoZSBjaGFuZ2VzIGFzIHNtYWxsIGFz Citwb3NzaWJsZSBmb3IgZWFzeSByZXZpZXcuCisKK1RoZXJlJ3MgYSBuZXcgUHl0aG9uIGNsYXNz IGdkYi5Db3JlZmlsZSwgd2hpY2ggcmVwcmVzZW50cyBhIGxvYWRlZAorY29yZSBmaWxlLiAgVGhp cyBBUEkgZG9lc24ndCBhbGxvdyB0aGUgdXNlciB0byBjcmVhdGUgdGhlaXIgb3duCitnZGIuQ29y ZWZpbGUgb2JqZWN0cywgYSBjb3JlIGZpbGUgbXVzdCBiZSBsb2FkZWQgdXNpbmcgdGhlICdjb3Jl LWZpbGUnCitjb21tYW5kLCB0aGVuIGEgZ2RiLkNvcmVmaWxlIG9iamVjdCBjYW4gYmUgb2J0YWlu ZWQgYnkgcXVlcnlpbmcgdGhlCitpbmZlcmlvciBpbiB3aGljaCB0aGUgY29yZSBmaWxlIHdhcyBs b2FkZWQuCisKK1RoZXJlJ3MgYSBuZXcgYXR0cmlidXRlIGdkYi5JbmZlcmlvci5jb3JlZmlsZSwg dGhpcyBpcyBOb25lIHdoZW4gbm8KK2NvcmUgZmlsZSBpcyBsb2FkZWQsIG9yIGNvbnRhaW5zIGEg Z2RiLkNvcmVmaWxlIG9iamVjdCBpZiBhIGNvcmUgZmlsZQoraGFzIGJlZW4gbG9hZGVkLgorCitD dXJyZW50bHksIHRoZSBnZGIuQ29yZWZpbGUgb2JqZWN0IGhhcyBvbmUgYXR0cmlidXRlLCBhbmQg b25lIG1ldGhvZCwKK3RoZXNlIGFyZToKKworICBnZGIuQ29yZWZpbGUuZmlsZW5hbWUgLS0gdGhl IGZpbGUgbmFtZSBvZiB0aGUgbG9hZGVkIGNvcmUgZmlsZS4KKworICBnZGIuQ29yZWZpbGUuaXNf dmFsaWQoKSAtLSBpbmRpY2F0ZXMgaWYgYSBnZGIuQ29yZWZpbGUgb2JqZWN0IGlzCisgIHZhbGlk IG9yIG5vdC4gIFNlZSBub3RlcyBiZWxvdy4KKworQSBnZGIuQ29yZWZpbGUgb2JqZWN0IGlzIG9u bHkgdmFsaWQgd2hpbGUgdGhlIGNvcnJlc3BvbmRpbmcgY29yZSBmaWxlCitpcyBsb2FkZWQgaW50 byBhbiBpbmZlcmlvci4gIFVubG9hZGluZyB0aGUgY29yZSBmaWxlLCBvciBsb2FkaW5nIGEKK2Rp ZmZlcmVudCBvbmUgd2lsbCBjYXVzZSBhIGdkYi5Db3JlZmlsZSBvYmplY3QgdG8gYmVjb21lIGlu dmFsaWQuICBGb3IKK2V4YW1wbGU6CisKKyAgKGdkYikgY29yZS1maWxlIC90bXAvY29yZS41NDMx MworICAuLi4gc25pcCAuLi4KKyAgKGdkYikgcHl0aG9uIGNvcmU9Z2RiLnNlbGVjdGVkX2luZmVy aW9yKCkuY29yZWZpbGUKKyAgKGdkYikgcHl0aG9uIHByaW50KGNvcmUpCisgIDxnZGIuQ29yZWZp bGUgaW5mZXJpb3I9MSBmaWxlbmFtZT0nL3RtcC9jb3JlLjU0MzEzJz4KKyAgKGdkYikgcHl0aG9u IHByaW50KGNvcmUuaXNfdmFsaWQoKSkKKyAgVHJ1ZQorICAoZ2RiKSBjb3JlLWZpbGUKKyAgTm8g Y29yZSBmaWxlIG5vdy4KKyAgKGdkYikgcHl0aG9uIHByaW50KGNvcmUpCisgIDxnZGIuQ29yZWZp bGUgKGludmFsaWQpPgorICAoZ2RiKSBweXRob24gcHJpbnQoY29yZS5pc192YWxpZCgpKQorICBG YWxzZQorICAoZ2RiKQorCitJbiBvcmRlciB0byB0cmFjayBjaGFuZ2VzIHRvIHRoZSBjb3JlIGZp bGUsIHRoZXJlIGlzIGEgbmV3IG9ic2VydmFibGUKKydjb3JlX2ZpbGVfY2hhbmdlZCcsIHdoaWNo IGFjY291bnRzIGZvciB0aGUgY2hhbmdlcyBpbiBjb3JlbG93LmMsCitvYnNlcnZhYmxlLGMsIGFu ZCBvYnNlcnZhYmxlLmguICBDdXJyZW50bHksIHRoaXMgb2JzZXJ2YWJsZSBpcyBub3QKK3Zpc2li bGUgYXMgYSBQeXRob24gZXZlbnQuCisKK0kgY2hvc2UgdG8gYWNjZXNzIHRoZSBjb3JlIGZpbGUg dmlhIHRoZSBpbmZlcmlvciBldmVuIHRob3VnaCB0aGUgY29yZQorZmlsZSBCRkQgb2JqZWN0IGlz IGFjdHVhbGx5IHN0b3JlZCB3aXRoaW4gdGhlIHByb2dyYW1fc3BhY2UuICBBcyBzdWNoLAoraXQg bWlnaHQgc2VlbSB0aGF0IHRoZSBuYXR1cmFsIGNob2ljZSB3b3VsZCBiZSB0byBhZGQgdGhlIGF0 dHJpYnV0ZSBhcworZ2RiLlByb2dzcGFjZS5jb3JlZmlsZS4KKworRm9yIGJhY2tncm91bmQgcmVh ZGluZyBvbiBteSBjaG9pY2UsIHBsZWFzZSBzZWU6CisKKyAgaHR0cHM6Ly9pbmJveC5zb3VyY2V3 YXJlLm9yZy9nZGItcGF0Y2hlcy81NzdmMmM0Nzc5M2FjYjUwMWMyNjExYzBlNmM3ZWEzNzlmNzc0 ODMwLjE2Njg3ODk2NTguZ2l0LmFidXJnZXNzQHJlZGhhdC5jb20KKworVGhpcyBwYXRjaCB3YXMg bmV2ZXIgbWVyZ2VkLCBpdCBpcyBzdGlsbCBvbiBteSBiYWNrbG9nLCBidXQgdGhlCitvYnNlcnZh dGlvbiBpbiB0aGF0IHdvcmsgaXMgdGhhdCBzb21lIHRhcmdldHMgYXJlIG5vdCByZWFsbHkKK3No YXJlYWJsZS4gIEZvciBleGFtcGxlLCB0aGUgY29yZV90YXJnZXQgKGNvcmVsb3cuYykgc3RvcmVz CitpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9hZGVkIGNvcmUgZmlsZSB3aXRoaW4gdGhlIHRhcmdl dCBpbnN0YW5jZS4gIEFzCitzdWNoLCBlYWNoIHRhcmdldCBpbnN0YW5jZSByZXByZXNlbnRzIGEg c2luZ2xlIGxvYWRlZCBjb3JlIGZpbGUuCisKK0V4Y2VwdCB0aGF0IHRoZSBCRkQgcGFydCBvZiB0 aGUgY29yZSBmaWxlIGlzIHN0b3JlZCBpbiB0aGUKK3Byb2dyYW1fc3BhY2UsIHdoaWNoIGlzIGEg bGl0dGxlIHdlaXJkLgorCitEdXJpbmcgcmV2aWV3LCBUb20gbWFkZSB0aGUgb2JzZXJ2YXRpb24s IHRoYXQgbWF5YmUgd2Ugc2hvdWxkCitpbnZlc3RpZ2F0ZSBtb3ZpbmcgdGhlIGNvcmUgZmlsZSBC RkQgaW50byB0aGUgY29yZV90YXJnZXQuICBJJ20KK2luY2xpbmVkIHRvIGFncmVlIHdpdGggdGhp cyBhcyBhIGRpcmVjdGlvbiBvZiB0cmF2ZWwuCisKK0FsbCB0aGlzIGxlYXZlcyB1cyB3aXRoIHR3 byBvYnNlcnZhdGlvbnM6CisKKyAgMS4gQ3VycmVudGx5LCBsb2FkaW5nIGEgY29yZSBmaWxlIGlu dG8gYW4gaW5mZXJpb3IsIHRoZW4gdXNpbmcKKyAgICAgJ2FkZC1pbmZlcmlvcicgd2lsbCB0cnkg dG8gc2hhcmUgdGhlIGNvcmVfdGFyZ2V0IGJldHdlZW4KKyAgICAgaW5mZXJpb3JzLiAgVGhpcyBp cyBicm9rZW4sIGFuZCBjYW4gdHJpZ2dlciBHREIgY3Jhc2hlcy4gIFRoZQorICAgICBvYnZpb3Vz IGZpeCwgd2l0aG91dCByZXdvcmtpbmcgY29yZV90YXJnZXQsIGlzIGp1c3QgdG8gcHJldmVudAor ICAgICB0aGlzIHNoYXJpbmcsIG1ha2luZyBjb3JlX3RhcmdldCBwZXItaW5mZXJpb3IuCisKKyAg Mi4gSGF2aW5nIHRoZSBjb3JlIGZpbGUgaW5mb3JtYXRpb24gc3BsaXQgYmV0d2VlbiB0aGUgY29y ZV90YXJnZXQKKyAgICAgaW5zdGFuY2UsIGFuZCB0aGUgQkZEIHN0b3JlZCBpbiB0aGUgcHJvZ3Jh bV9zcGFjZSBpcyBhIGxpdHRsZQorICAgICB3ZWlyZCwgYW5kIGlzIHJlYWxseSBqdXN0IGhpc3Rv cmljYWwuICBQbGFubmluZyBmb3IgYSBmdXR1cmUKKyAgICAgd2hlcmUgdGhlIEJGRCBpcyBhbHNv IHN0b3JlZCBpbiB0aGUgY29yZV90YXJnZXQgbWlnaHQgYmUgd2lzZS4KKworU28sIGlmIHdlIGlt YWdpbmUgdGhhdCB0aGUgQkZEIGlzIChvbmUgZGF5KSBtb3ZlZCBpbnRvIHRoZQorY29yZV90YXJn ZXQsIGFuZCB0aGF0IHRoZSBjb3JlX3RhcmdldCByZWFsbHkgYmVjb21lcyBub24tc2hhcmVhYmxl LAordGhlbiBpdCBpcywgSSB0aGluaywgY2xlYXJlciB0aGF0IHRoZSBjb3JlZmlsZSBhdHRyaWJ1 dGUgc2hvdWxkIGxpdmUKK29uIHRoZSBnZGIuSW5mZXJpb3Igb2JqZWN0LCBub3QgdGhlIGdkYi5Q cm9nc3BhY2Ugb2JqZWN0LgorCitUaGVyZSdzIHRlc3RpbmcgZm9yIGFsbCB0aGUgZnVuY3Rpb25h bGl0eSBhZGRlZCBpbiB0aGlzIGNvbW1pdC4KKworQnVnOiBodHRwczovL3NvdXJjZXdhcmUub3Jn L2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zMjg0NAorCitSZXZpZXdlZC1CeTogRWxpIFphcmV0 c2tpaSA8ZWxpekBnbnUub3JnPgorQXBwcm92ZWQtQnk6IFRvbSBUcm9tZXkgPHRvbUB0cm9tZXku Y29tPgorCitkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCist LS0gYS9nZGIvTWFrZWZpbGUuaW4KKysrKyBiL2dkYi9NYWtlZmlsZS5pbgorQEAgLTM5OSw2ICsz OTksNyBAQCBTVUJESVJfUFlUSE9OX1NSQ1MgPSBcCisgCXB5dGhvbi9weS1jb2xvci5jIFwKKyAJ cHl0aG9uL3B5LWNvbm5lY3Rpb24uYyBcCisgCXB5dGhvbi9weS1jb250aW51ZWV2ZW50LmMgXAor KwlweXRob24vcHktY29yZWZpbGUuYyBcCisgCXB5dGhvbi9weS1kYXAuYyBcCisgCXB5dGhvbi9w eS1kaXNhc20uYyBcCisgCXB5dGhvbi9weS1ldmVudC5jIFwKK2RpZmYgLS1naXQgYS9nZGIvTkVX UyBiL2dkYi9ORVdTCistLS0gYS9nZGIvTkVXUworKysrIGIvZ2RiL05FV1MKK0BAIC0xMyw2ICsx Myw4IEBACisgCisgICAqKiBHREIgbm93IHN1cHBvcnRzIHRoZSAiY29tcGxldGlvbnMiIHJlcXVl c3QuCisgCisrICAqKiBUaGUgYXR0YWNoIHJlcXVlc3Qgbm93IGFjY2VwdHMgdGhlIGNvcmVGaWxl IHBhcmFtZXRlci4KKysKKyAqICJzZXQgc3R5bGUiIGNvbW1hbmRzIG5vdyBzdXBwb3J0cyBudW1l cmljIGZvcm1hdCBmb3IgYmFzaWMgY29sb3JzCisgICBmcm9tIDAgdG8gMjU1IGFuZCAjUlJHR0JC IGZvcm1hdCBmb3IgVHJ1ZUNvbG9yLgorIAorQEAgLTE4MSw2ICsxODMsMzIgQEAgaW5mbyB0aHJl YWRzIFstZ2lkXSBbLXN0b3BwZWRdIFstcnVubmluZ10gW0lEXS4uLgorICAgICAgdW5hdmFpbGFi aWxpdHkgbGlrZSBnZGIuVmFsdWUuaXNfb3B0aW1pemVkX291dCBjaGVja3MgZm9yCisgICAgICBv cHRpbWl6ZWQgb3V0IHZhbHVlcy4KKyAKKysgICoqIE5ldyBnZGIuQ29yZWZpbGUgY2xhc3Mgd2hp Y2ggcmVwcmVzZW50cyBhIGxvYWRlZCBjb3JlIGZpbGUuICBUaGlzCisrICAgICBoYXMgYW4gYXR0 cmlidXRlIENvcmVmaWxlLmZpbGVuYW1lLCB0aGUgZmlsZSBuYW1lIG9mIHRoZSBsb2FkZWQKKysg ICAgIGNvcmUgZmlsZSwgYW5kIGEgbWV0aG9kIENvcmVmaWxlLmlzX3ZhbGlkKCksIHdoaWNoIHJl dHVybnMgRmFsc2UKKysgICAgIHdoZW4gYSBDb3JlZmlsZSBvYmplY3QgYmVjb21lcyBpbnZhbGlk IChlLmcuIHdoZW4gdGhlIGNvcmUgZmlsZQorKyAgICAgaXMgdW5sb2FkZWQpLiAgVGhlcmUgaXMg YWxzbyBDb3JlZmlsZS5tYXBwZWRfZmlsZXMoKSB3aGljaAorKyAgICAgcmV0dXJucyBhIGxpc3Qg b2YgQ29yZWZpbGVNYXBwZWRGaWxlIG9iamVjdHMsIHJlcHJlc2VudGluZyBmaWxlcworKyAgICAg dGhhdCB3ZXJlIG1hcHBlZCBpbnRvIHRoZSBjb3JlIGZpbGUgd2hlbiBpdCB3YXMgY3JlYXRlZC4K KysKKysgICoqIE5ldyBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlIHR5cGUgcmVwcmVzZW50aW5nIGEg ZmlsZSB0aGF0IHdhcworKyAgICAgbWFwcGVkIHdoZW4gdGhlIGNvcmUgZmlsZSB3YXMgY3JlYXRl ZC4gIEhhcyByZWFkLW9ubHkgYXR0cmlidXRlcworKyAgICAgZmlsZW5hbWUgKHN0cmluZyksIGJ1 aWxkX2lkIChzdHJpbmcpLCBpc19tYWluX2V4ZWN1dGFibGUKKysgICAgIChib29sZWFuKSwgYW5k IHJlZ2lvbnMgKGxpc3Qgb2YgQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uIG9iamVjdHMpLgorKwor KyAgKiogTmV3IGdkYi5Db3JlZmlsZU1hcHBlZEZpbGVSZWdpb24gdHlwZSwgd2hpY2ggcmVwcmVz ZW50cyBhIG1hcHBlZAorKyAgICAgcmVnaW9uIG9mIGEgZmlsZSAoc2VlIGdkYi5Db3JlZmlsZU1h cHBlZEZpbGUgYWJvdmUpLiAgSGFzCisrICAgICByZWFkLW9ubHkgYXR0cmlidXRlcyBzdGFydCwg ZW5kLCBhbmQgZmlsZV9vZmZzZXQuCisrCisrICAqKiBOZXcgSW5mZXJpb3IuY29yZWZpbGUgYXR0 cmlidXRlLiAgVGhpcyByZWFkIG9ubHkgYXR0cmlidXRlCisrICAgICBjb250YWlucyB0aGUgZ2Ri LkNvcmVmaWxlIG9iamVjdCBpZiBhIGNvcmUgZmlsZSBpcyBsb2FkZWQgaW50bworKyAgICAgdGhl IGluZmVyaW9yLCBvdGhlcndpc2UsIHRoaXMgY29udGFpbnMgTm9uZS4KKysKKysgICoqIE5ldyBl dmVudCByZWdpc3RyeSBnZGIuZXZlbnRzLmNvcmVmaWxlX2NoYW5nZWQsIHdoaWNoIGVtaXRzIGEK KysgICAgIENvcmVmaWxlQ2hhbmdlZEV2ZW50IHdoZW5ldmVyIHRoZSBjb3JlIGZpbGUgYXNzb2Np YXRlZCB3aXRoIGFuCisrICAgICBpbmZlcmlvciBjaGFuZ2VzLiAgVGhlIGV2ZW50IGhhcyBhbiAn aW5mZXJpb3InIGF0dHJpYnV0ZSB3aGljaCBpcworKyAgICAgdGhlIGdkYi5JbmZlcmlvciBpbiB3 aGljaCB0aGUgY29yZSBmaWxlIGhhcyBjaGFuZ2VkLgorKworICogR3VpbGUgQVBJCisgCisgICAq KiBOZXcgdHlwZSA8Z2RiOmNvbG9yPiBmb3IgZGVhbGluZyB3aXRoIGNvbG9ycy4KK2RpZmYgLS1n aXQgYS9nZGIvY29yZWxvdy5jIGIvZ2RiL2NvcmVsb3cuYworLS0tIGEvZ2RiL2NvcmVsb3cuYwor KysrIGIvZ2RiL2NvcmVsb3cuYworQEAgLTUzLDYgKzUzLDcgQEAKKyAjaW5jbHVkZSAieG1sLXRk ZXNjLmgiCisgI2luY2x1ZGUgIm1lbXRhZy5oIgorICNpbmNsdWRlICJjbGkvY2xpLXN0eWxlLmgi CisrI2luY2x1ZGUgIm9ic2VydmFibGUuaCIKKyAKKyAjaWZuZGVmIE9fTEFSR0VGSUxFCisgI2Rl ZmluZSBPX0xBUkdFRklMRSAwCitAQCAtMzY1LDEwOCArMzY2LDI3IEBAIGNvcmVfdGFyZ2V0Ojpj b3JlX3RhcmdldCAoKQorIHZvaWQKKyBjb3JlX3RhcmdldDo6YnVpbGRfZmlsZV9tYXBwaW5ncyAo KQorIHsKKy0gIC8qIFR5cGUgaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBmaWxl IG1hcHBlZCBpbnRvIHRoZSBpbmZlcmlvcgorLSAgICAgYXQgdGhlIHBvaW50IHdoZW4gdGhlIGNv cmUgZmlsZSB3YXMgY3JlYXRlZC4gIEFzc29jaWF0ZXMgYSBidWlsZC1pZAorLSAgICAgd2l0aCB0 aGUgbGlzdCBvZiByZWdpb25zIHRoZSBmaWxlIGlzIG1hcHBlZCBpbnRvLiAgKi8KKy0gIHN0cnVj dCBtYXBwZWRfZmlsZQorLSAgeworLSAgICAvKiBUeXBlIGZvciBhIHJlZ2lvbiBvZiBhIGZpbGUg dGhhdCB3YXMgbWFwcGVkIGludG8gdGhlIGluZmVyaW9yIHdoZW4KKy0gICAgICAgdGhlIGNvcmUg ZmlsZSB3YXMgZ2VuZXJhdGVkLiAgKi8KKy0gICAgc3RydWN0IHJlZ2lvbgorLSAgICB7CistICAg ICAgLyogQ29uc3RydWN0b3IuICAgU2VlIG1lbWJlciB2YXJpYWJsZXMgZm9yIGFyZ3VtZW50IGRl c2NyaXB0aW9ucy4gICovCistICAgICAgcmVnaW9uIChDT1JFX0FERFIgc3RhcnRfLCBDT1JFX0FE RFIgZW5kXywgQ09SRV9BRERSIGZpbGVfb2ZzXykKKy0JOiBzdGFydCAoc3RhcnRfKSwKKy0JICBl bmQgKGVuZF8pLAorLQkgIGZpbGVfb2ZzIChmaWxlX29mc18pCistICAgICAgeyAvKiBOb3RoaW5n LiAgKi8gfQorLQorLSAgICAgIC8qIFRoZSBpbmZlcmlvciBhZGRyZXNzIGZvciB0aGUgc3RhcnQg b2YgdGhlIG1hcHBlZCByZWdpb24uICAqLworLSAgICAgIENPUkVfQUREUiBzdGFydDsKKy0KKy0g ICAgICAvKiBUaGUgaW5mZXJpb3IgYWRkcmVzcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgbWFwcGVk IHJlZ2lvbi4gICovCistICAgICAgQ09SRV9BRERSIGVuZDsKKy0KKy0gICAgICAvKiBUaGUgb2Zm c2V0IHdpdGhpbiB0aGUgbWFwcGVkIGZpbGUgZm9yIHRoaXMgY29udGVudC4gICovCistICAgICAg Q09SRV9BRERSIGZpbGVfb2ZzOworLSAgICB9OworLQorLSAgICAvKiBJZiBub3QgbnVsbHB0ciwg dGhlbiB0aGlzIGlzIHRoZSBidWlsZC1pZCBhc3NvY2lhdGVkIHdpdGggdGhpcworLSAgICAgICBm aWxlLiAgKi8KKy0gICAgY29uc3QgYmZkX2J1aWxkX2lkICpidWlsZF9pZCA9IG51bGxwdHI7Cist CistICAgIC8qIElmIHRydWUgdGhlbiB3ZSBoYXZlIHNlZW4gbXVsdGlwbGUgZGlmZmVyZW50IGJ1 aWxkLWlkcyBhc3NvY2lhdGVkCistICAgICAgIHdpdGggdGhlIHNhbWUgZmlsZW5hbWUuICBUaGUg YnVpbGRfaWQgZmllbGQgd2lsbCBoYXZlIGJlZW4gc2V0IGJhY2sKKy0gICAgICAgdG8gbnVsbHB0 ciwgYW5kIHdlIHNob3VsZCBub3Qgc2V0IGJ1aWxkX2lkIGluIGZ1dHVyZS4gICovCistICAgIGJv b2wgaWdub3JlX2J1aWxkX2lkX3AgPSBmYWxzZTsKKy0KKy0gICAgLyogQWxsIHRoZSBtYXBwZWQg cmVnaW9ucyBvZiB0aGlzIGZpbGUuICAqLworLSAgICBzdGQ6OnZlY3RvcjxyZWdpb24+IHJlZ2lv bnM7CistICB9OworLQorICAgZ2RiOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdHJ1Y3Qg YmZkICo+IGJmZF9tYXA7CisgICBnZGI6OnVub3JkZXJlZF9zZXQ8c3RkOjpzdHJpbmc+IHVuYXZh aWxhYmxlX3BhdGhzOworIAorICAgLyogQWxsIGZpbGVzIG1hcHBlZCBpbnRvIHRoZSBjb3JlIGZp bGUuICBUaGUga2V5IGlzIHRoZSBmaWxlbmFtZS4gICovCistICBnZGI6OnVub3JkZXJlZF9tYXA8 c3RkOjpzdHJpbmcsIG1hcHBlZF9maWxlPiBtYXBwZWRfZmlsZXM7CistCistICAvKiBTZWUgbGlu dXhfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MoKSBpbiBsaW51eC10ZGVwLmMgZm9yIGFuIGV4YW1w bGUKKy0gICAgIHJlYWRfY29yZV9maWxlX21hcHBpbmdzIG1ldGhvZC4gICovCistICBnZGJhcmNo X3JlYWRfY29yZV9maWxlX21hcHBpbmdzIChtX2NvcmVfZ2RiYXJjaCwKKy0JCQkJICAgY3VycmVu dF9wcm9ncmFtX3NwYWNlLT5jb3JlX2JmZCAoKSwKKy0KKy0gICAgLyogQWZ0ZXIgZGV0ZXJtaW5p bmcgdGhlIG51bWJlciBvZiBtYXBwaW5ncywgcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MKKy0gICAg ICAgd2lsbCBpbnZva2UgdGhpcyBsYW1iZGEuICAqLworLSAgICBbJl0gKFVMT05HRVNUKQorLSAg ICAgIHsKKy0gICAgICB9LAorLQorLSAgICAvKiByZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyB3aWxs IGludm9rZSB0aGlzIGxhbWJkYSBmb3IgZWFjaCBtYXBwaW5nCistICAgICAgIHRoYXQgaXQgZmlu ZHMuICAqLworLSAgICBbJl0gKGludCBudW0sIFVMT05HRVNUIHN0YXJ0LCBVTE9OR0VTVCBlbmQs IFVMT05HRVNUIGZpbGVfb2ZzLAorLQkgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGJmZF9i dWlsZF9pZCAqYnVpbGRfaWQpCistICAgICAgeworLQkvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMg cmVhZF9jb3JlX21hcHBpbmcgbWV0aG9kcyBhcmUgZXhwZWN0ZWQgdG8KKy0JICAgd2VlZCBvdXQg bm9uLWZpbGUtYmFja2VkIG1hcHBpbmdzLiAgKi8KKy0JZ2RiX2Fzc2VydCAoZmlsZW5hbWUgIT0g bnVsbHB0cik7CisrICBzdGQ6OnZlY3Rvcjxjb3JlX21hcHBlZF9maWxlPiBtYXBwZWRfZmlsZXMK KysgICAgPSBnZGJfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgKG1fY29yZV9nZGJhcmNoLAorKwkJ CQkgICBjdXJyZW50X3Byb2dyYW1fc3BhY2UtPmNvcmVfYmZkICgpKTsKKyAKKy0JLyogQWRkIHRo aXMgbWFwcGVkIHJlZ2lvbiB0byB0aGUgZGF0YSBmb3IgRklMRU5BTUUuICAqLworLQltYXBwZWRf ZmlsZSAmZmlsZV9kYXRhID0gbWFwcGVkX2ZpbGVzW2ZpbGVuYW1lXTsKKy0JZmlsZV9kYXRhLnJl Z2lvbnMuZW1wbGFjZV9iYWNrIChzdGFydCwgZW5kLCBmaWxlX29mcyk7CistCWlmIChidWlsZF9p ZCAhPSBudWxscHRyICYmICFmaWxlX2RhdGEuaWdub3JlX2J1aWxkX2lkX3ApCistCSAgeworLQkg ICAgaWYgKGZpbGVfZGF0YS5idWlsZF9pZCA9PSBudWxscHRyKQorLQkgICAgICBmaWxlX2RhdGEu YnVpbGRfaWQgPSBidWlsZF9pZDsKKy0JICAgIGVsc2UgaWYgKCFidWlsZF9pZF9lcXVhbCAoYnVp bGRfaWQsIGZpbGVfZGF0YS5idWlsZF9pZCkpCistCSAgICAgIHsKKy0JCXdhcm5pbmcgKF8oIk11 bHRpcGxlIGJ1aWxkLWlkcyBmb3VuZCBmb3IgJXBzIiksCistCQkJIHN0eWxlZF9zdHJpbmcgKGZp bGVfbmFtZV9zdHlsZS5zdHlsZSAoKSwgZmlsZW5hbWUpKTsKKy0JCWZpbGVfZGF0YS5idWlsZF9p ZCA9IG51bGxwdHI7CistCQlmaWxlX2RhdGEuaWdub3JlX2J1aWxkX2lkX3AgPSB0cnVlOworLQkg ICAgICB9CistCSAgfQorLSAgICAgIH0pOworLQorLSAgLyogR2V0IHRoZSBidWlsZC1pZCBvZiB0 aGUgY29yZSBmaWxlLiAgKi8KKy0gIGNvbnN0IGJmZF9idWlsZF9pZCAqY29yZV9idWlsZF9pZAor LSAgICA9IGJ1aWxkX2lkX2JmZF9nZXQgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZS0+Y29yZV9iZmQg KCkpOworLQorLSAgZm9yIChjb25zdCBhdXRvICZbZmlsZW5hbWUsIGZpbGVfZGF0YV0gOiBtYXBw ZWRfZmlsZXMpCisrICBmb3IgKGNvbnN0IGNvcmVfbWFwcGVkX2ZpbGUgJmZpbGVfZGF0YSA6IG1h cHBlZF9maWxlcykKKyAgICAgeworLSAgICAgIC8qIElmIHRoaXMgbWFwcGVkIGZpbGUgaGFzIHRo ZSBzYW1lIGJ1aWxkLWlkIGFzIHdhcyBkaXNjb3ZlcmVkIGZvcgorLQkgdGhlIGNvcmUtZmlsZSBp dHNlbGYsIHRoZW4gd2UgYXNzdW1lIHRoaXMgaXMgdGhlIG1haW4KKy0JIGV4ZWN1dGFibGUuICBS ZWNvcmQgdGhlIGZpbGVuYW1lIGFzIHdlIGNhbiB1c2UgdGhpcyBsYXRlci4gICovCistICAgICAg aWYgKGZpbGVfZGF0YS5idWlsZF9pZCAhPSBudWxscHRyCistCSAgJiYgbV9leHBlY3RlZF9leGVj X2ZpbGVuYW1lLmVtcHR5ICgpCistCSAgJiYgYnVpbGRfaWRfZXF1YWwgKGZpbGVfZGF0YS5idWls ZF9pZCwgY29yZV9idWlsZF9pZCkpCistCW1fZXhwZWN0ZWRfZXhlY19maWxlbmFtZSA9IGZpbGVu YW1lOworKyAgICAgIC8qIElmIHRoaXMgbWFwcGVkIGZpbGUgaXMgbWFya2VkIGFzIHRoZSBtYWlu IGV4ZWN1dGFibGUgdGhlbiByZWNvcmQKKysJIHRoZSBmaWxlbmFtZSBhcyB3ZSBjYW4gdXNlIHRo aXMgbGF0ZXIuICAqLworKyAgICAgIGlmIChmaWxlX2RhdGEuaXNfbWFpbl9leGVjICYmIG1fZXhw ZWN0ZWRfZXhlY19maWxlbmFtZS5lbXB0eSAoKSkKKysJbV9leHBlY3RlZF9leGVjX2ZpbGVuYW1l ID0gZmlsZV9kYXRhLmZpbGVuYW1lOworIAorICAgICAgIC8qIFVzZSBleGVjX2ZpbGVfZmluZCgp IHRvIGRvIHN5c3Jvb3QgZXhwYW5zaW9uLiAgSXQnbGwKKyAJIGFsc28gc3RyaXAgdGhlIHBvdGVu dGlhbCBzeXNyb290ICJ0YXJnZXQ6IiBwcmVmaXguICBJZgorIAkgdGhlcmUgaXMgbm8gc3lzcm9v dCwgYW4gZXF1aXZhbGVudCAocG9zc2libHkgbW9yZQorIAkgY2Fub25pY2FsKSBwYXRobmFtZSB3 aWxsIGJlIHByb3ZpZGVkLiAgKi8KKyAgICAgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFy PiBleHBhbmRlZF9mbmFtZQorLQk9IGV4ZWNfZmlsZV9maW5kIChmaWxlbmFtZS5jX3N0ciAoKSwg bnVsbHB0cik7CisrCT0gZXhlY19maWxlX2ZpbmQgKGZpbGVfZGF0YS5maWxlbmFtZS5jX3N0ciAo KSwgbnVsbHB0cik7CisgCisgICAgICAgYm9vbCBidWlsZF9pZF9taXNtYXRjaCA9IGZhbHNlOwor ICAgICAgIGlmIChleHBhbmRlZF9mbmFtZSAhPSBudWxscHRyICYmIGZpbGVfZGF0YS5idWlsZF9p ZCAhPSBudWxscHRyKQorQEAgLTUwOCw3ICs0MjgsNyBAQCBjb3JlX3RhcmdldDo6YnVpbGRfZmls ZV9tYXBwaW5ncyAoKQorIAl7CisgCSAgYWJmZCA9IGZpbmRfb2JqZmlsZV9ieV9idWlsZF9pZCAo Y3VycmVudF9wcm9ncmFtX3NwYWNlLAorIAkJCQkJICAgZmlsZV9kYXRhLmJ1aWxkX2lkLAorLQkJ CQkJICAgZmlsZW5hbWUuY19zdHIgKCkpOworKwkJCQkJICAgZmlsZV9kYXRhLmZpbGVuYW1lLmNf c3RyICgpKTsKKyAKKyAJICBpZiAoYWJmZCAhPSBudWxscHRyKQorIAkgICAgeworQEAgLTUyNiw3 ICs0NDYsNyBAQCBjb3JlX3RhcmdldDo6YnVpbGRfZmlsZV9tYXBwaW5ncyAoKQorIAl9CisgCisg ICAgICAgc3RkOjp2ZWN0b3I8bWVtX3JhbmdlPiByYW5nZXM7CistICAgICAgZm9yIChjb25zdCBt YXBwZWRfZmlsZTo6cmVnaW9uICZyZWdpb24gOiBmaWxlX2RhdGEucmVnaW9ucykKKysgICAgICBm b3IgKGNvbnN0IGNvcmVfbWFwcGVkX2ZpbGU6OnJlZ2lvbiAmcmVnaW9uIDogZmlsZV9kYXRhLnJl Z2lvbnMpCisgCXJhbmdlcy5lbXBsYWNlX2JhY2sgKHJlZ2lvbi5zdGFydCwgcmVnaW9uLmVuZCAt IHJlZ2lvbi5zdGFydCk7CisgCisgICAgICAgaWYgKGV4cGFuZGVkX2ZuYW1lID09IG51bGxwdHIK K0BAIC01NDQsNyArNDY0LDcgQEAgY29yZV90YXJnZXQ6OmJ1aWxkX2ZpbGVfbWFwcGluZ3MgKCkK KyAJICBib29sIGNvbnRlbnRfaXNfaW5fY29yZV9maWxlX3AgPSB0cnVlOworIAorIAkgIC8qIFJl Y29yZCBhbGwgcmVnaW9ucyBmb3IgdGhpcyBmaWxlIGFzIHVuYXZhaWxhYmxlLiAgKi8KKy0JICBm b3IgKGNvbnN0IG1hcHBlZF9maWxlOjpyZWdpb24gJnJlZ2lvbiA6IGZpbGVfZGF0YS5yZWdpb25z KQorKwkgIGZvciAoY29uc3QgY29yZV9tYXBwZWRfZmlsZTo6cmVnaW9uICZyZWdpb24gOiBmaWxl X2RhdGEucmVnaW9ucykKKyAJICAgIHsKKyAJICAgICAgLyogQ2hlY2sgdG8gc2VlIGlmIHRoZSBy ZWdpb24gaXMgYXZhaWxhYmxlIHdpdGhpbiB0aGUgY29yZQorIAkJIGZpbGUuICAqLworQEAgLTU3 NiwzMyArNDk2LDMzIEBAIGNvcmVfdGFyZ2V0OjpidWlsZF9maWxlX21hcHBpbmdzICgpCisgCSAg aWYgKGJ1aWxkX2lkX21pc21hdGNoKQorIAkgICAgeworIAkgICAgICBpZiAoZXhwYW5kZWRfZm5h bWUgPT0gbnVsbHB0cgorLQkJICB8fCBmaWxlbmFtZSA9PSBleHBhbmRlZF9mbmFtZS5nZXQgKCkp CisrCQkgIHx8IGZpbGVfZGF0YS5maWxlbmFtZSA9PSBleHBhbmRlZF9mbmFtZS5nZXQgKCkpCisg CQl3YXJuaW5nIChfKCJGaWxlICVwcyBkb2Vzbid0IG1hdGNoIGJ1aWxkLWlkIGZyb20gY29yZS1m aWxlICIKKyAJCQkgICAiZHVyaW5nIGZpbGUtYmFja2VkIG1hcHBpbmcgcHJvY2Vzc2luZyIpLAor IAkJCSBzdHlsZWRfc3RyaW5nIChmaWxlX25hbWVfc3R5bGUuc3R5bGUgKCksCistCQkJCQlmaWxl bmFtZS5jX3N0ciAoKSkpOworKwkJCQkJZmlsZV9kYXRhLmZpbGVuYW1lLmNfc3RyICgpKSk7Cisg CSAgICAgIGVsc2UKKyAJCXdhcm5pbmcgKF8oIkZpbGUgJXBzIHdoaWNoIHdhcyBleHBhbmRlZCB0 byAlcHMsIGRvZXNuJ3QgbWF0Y2ggIgorIAkJCSAgICJidWlsZC1pZCBmcm9tIGNvcmUtZmlsZSBk dXJpbmcgZmlsZS1iYWNrZWQgIgorIAkJCSAgICJtYXBwaW5nIHByb2Nlc3NpbmciKSwKKyAJCQkg c3R5bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpLAorLQkJCQkJZmlsZW5hbWUu Y19zdHIgKCkpLAorKwkJCQkJZmlsZV9kYXRhLmZpbGVuYW1lLmNfc3RyICgpKSwKKyAJCQkgc3R5 bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpLAorIAkJCQkJZXhwYW5kZWRfZm5h bWUuZ2V0ICgpKSk7CisgCSAgICB9CisgCSAgZWxzZSBpZiAoIWNvbnRlbnRfaXNfaW5fY29yZV9m aWxlX3ApCisgCSAgICB7CisgCSAgICAgIGlmIChleHBhbmRlZF9mbmFtZSA9PSBudWxscHRyCist CQkgIHx8IGZpbGVuYW1lID09IGV4cGFuZGVkX2ZuYW1lLmdldCAoKSkKKysJCSAgfHwgZmlsZV9k YXRhLmZpbGVuYW1lID09IGV4cGFuZGVkX2ZuYW1lLmdldCAoKSkKKyAJCXdhcm5pbmcgKF8oIkNh bid0IG9wZW4gZmlsZSAlcHMgZHVyaW5nIGZpbGUtYmFja2VkIG1hcHBpbmcgIgorIAkJCSAgICJu b3RlIHByb2Nlc3NpbmciKSwKKyAJCQkgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0eWxlLnN0 eWxlICgpLAorLQkJCQkJZmlsZW5hbWUuY19zdHIgKCkpKTsKKysJCQkJCWZpbGVfZGF0YS5maWxl bmFtZS5jX3N0ciAoKSkpOworIAkgICAgICBlbHNlCisgCQl3YXJuaW5nIChfKCJDYW4ndCBvcGVu IGZpbGUgJXBzIHdoaWNoIHdhcyBleHBhbmRlZCB0byAlcHMgIgorIAkJCSAgICJkdXJpbmcgZmls ZS1iYWNrZWQgbWFwcGluZyBub3RlIHByb2Nlc3NpbmciKSwKKyAJCQkgc3R5bGVkX3N0cmluZyAo ZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpLAorLQkJCQkJZmlsZW5hbWUuY19zdHIgKCkpLAorKwkJ CQkJZmlsZV9kYXRhLmZpbGVuYW1lLmNfc3RyICgpKSwKKyAJCQkgc3R5bGVkX3N0cmluZyAoZmls ZV9uYW1lX3N0eWxlLnN0eWxlICgpLAorIAkJCQkJZXhwYW5kZWRfZm5hbWUuZ2V0ICgpKSk7Cisg CSAgICB9CitAQCAtNjE2LDcgKzUzNiw3IEBAIGNvcmVfdGFyZ2V0OjpidWlsZF9maWxlX21hcHBp bmdzICgpCisgCQkJCSAgICBhYmZkLmdldCAoKSk7CisgCisgCSAgLyogQ3JlYXRlIHNlY3Rpb25z IGZvciBlYWNoIG1hcHBlZCByZWdpb24uICAqLworLQkgIGZvciAoY29uc3QgbWFwcGVkX2ZpbGU6 OnJlZ2lvbiAmcmVnaW9uIDogZmlsZV9kYXRhLnJlZ2lvbnMpCisrCSAgZm9yIChjb25zdCBjb3Jl X21hcHBlZF9maWxlOjpyZWdpb24gJnJlZ2lvbiA6IGZpbGVfZGF0YS5yZWdpb25zKQorIAkgICAg eworIAkgICAgICAvKiBNYWtlIG5ldyBCRkQgc2VjdGlvbi4gIEFsbCBzZWN0aW9ucyBoYXZlIHRo ZSBzYW1lIG5hbWUsCisgCQkgd2hpY2ggaXMgcGVybWl0dGVkIGJ5IGJmZF9tYWtlX3NlY3Rpb25f YW55d2F5KCkuICAqLworQEAgLTY1Miw3ICs1NzIsNyBAQCBjb3JlX3RhcmdldDo6YnVpbGRfZmls ZV9tYXBwaW5ncyAoKQorIAkgICAgICBzb25hbWUgPSBnZGJfYmZkX3JlYWRfZWxmX3NvbmFtZSAo YWN0dWFsX2ZpbGVuYW1lKTsKKyAJICAgIH0KKyAKKy0JICBtX21hcHBlZF9maWxlX2luZm8uYWRk IChzb25hbWUuZ2V0ICgpLCBmaWxlbmFtZS5jX3N0ciAoKSwKKysJICBtX21hcHBlZF9maWxlX2lu Zm8uYWRkIChzb25hbWUuZ2V0ICgpLCBmaWxlX2RhdGEuZmlsZW5hbWUuY19zdHIgKCksCisgCQkJ CSAgYWN0dWFsX2ZpbGVuYW1lLCBzdGQ6Om1vdmUgKHJhbmdlcyksCisgCQkJCSAgZmlsZV9kYXRh LmJ1aWxkX2lkKTsKKyAJfQorQEAgLTY3OCw2ICs1OTgsOSBAQCBjb3JlX3RhcmdldDo6Y2xlYXJf Y29yZSAoKQorICAgICAgIGNsZWFyX3NvbGliIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworIAor ICAgICAgIGN1cnJlbnRfcHJvZ3JhbV9zcGFjZS0+Y2JmZC5yZXNldCAobnVsbHB0cik7CisrCisr ICAgICAgLyogTm90aWZ5IHRoYXQgdGhlIGNvcmUgZmlsZSBoYXMgY2hhbmdlZC4gICovCisrICAg ICAgZ2RiOjpvYnNlcnZlcnM6OmNvcmVfZmlsZV9jaGFuZ2VkLm5vdGlmeSAoY3VycmVudF9pbmZl cmlvciAoKSk7CisgICAgIH0KKyB9CisgCitAQCAtMTI3OCw2ICsxMjAxLDkgQEAgY29yZV90YXJn ZXRfb3BlbiAoY29uc3QgY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCisgCSAgZXhjZXB0aW9uX3By aW50IChnZGJfc3RkZXJyLCBleGNlcHQpOworIAl9CisgICAgIH0KKysKKysgIC8qIE5vdGlmeSB0 aGF0IHRoZSBjb3JlIGZpbGUgaGFzIGNoYW5nZWQuICAqLworKyAgZ2RiOjpvYnNlcnZlcnM6OmNv cmVfZmlsZV9jaGFuZ2VkLm5vdGlmeSAoY3VycmVudF9pbmZlcmlvciAoKSk7CisgfQorIAorIHZv aWQKK0BAIC0yMTU2LDYgKzIwODIsMTAzIEBAIG1hcHBlZF9maWxlX2luZm86Omxvb2t1cCAoY29u c3QgY2hhciAqZmlsZW5hbWUsCisgCisgLyogU2VlIGdkYmNvcmUuaC4gICovCisgCisrc3RkOjp2 ZWN0b3I8Y29yZV9tYXBwZWRfZmlsZT4KKytnZGJfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgYmZkICpjYmZkKQorK3sKKysgIHN0ZDo6dmVj dG9yPGNvcmVfbWFwcGVkX2ZpbGU+IHJlc3VsdHM7CisrCisrICAvKiBBIG1hcCBlbnRyeSB1c2Vk IHdoaWxlIGJ1aWxkaW5nIFJFU1VMVFMuICAqLworKyAgc3RydWN0IG1hcF9lbnRyeQorKyAgewor KyAgICBleHBsaWNpdCBtYXBfZW50cnkgKGNvcmVfbWFwcGVkX2ZpbGUgKnB0cikKKysgICAgICA6 IGZpbGVfZGF0YSAocHRyKQorKyAgICB7IC8qIE5vdGhpbmcuICAqLyB9CisrCisrICAgIC8qIFBv aW50cyB0byBhbiBlbnRyeSBpbiBSRVNVTFRTLCB0aGlzIGFsbG93cyBlbnRyaWVzIHRvIGJlIHF1 aWNrbHkKKysgICAgICAgbG9va2VkIHVwIGFuZCB1cGRhdGVkIGFzIG5ldyBtYXBwaW5ncyBhcmUg cmVhZC4gICovCisrICAgIGNvcmVfbWFwcGVkX2ZpbGUgKmZpbGVfZGF0YSA9IG51bGxwdHI7Cisr CisrICAgIC8qIElmIHRydWUgdGhlbiB3ZSBoYXZlIHNlZW4gbXVsdGlwbGUgZGlmZmVyZW50IGJ1 aWxkLWlkcyBhc3NvY2lhdGVkCisrICAgICAgIHdpdGggdGhlIGZpbGVuYW1lIG9mIEZJTEVfREFU QS4gIFRoZSBGSUxFX0RBVEEtPmJ1aWxkX2lkIGZpZWxkIHdpbGwKKysgICAgICAgaGF2ZSBiZWVu IHNldCB0byBudWxscHRyLCBhbmQgd2Ugc2hvdWxkIG5vdCBzZXQgRklMRV9EQVRBLT5idWlsZF9p ZAorKyAgICAgICBpbiBmdXR1cmUuICAqLworKyAgICBib29sIGlnbm9yZV9idWlsZF9pZF9wID0g ZmFsc2U7CisrICB9OworKworKyAgLyogQWxsIGZpbGVzIG1hcHBlZCBpbnRvIHRoZSBjb3JlIGZp bGUuICBUaGUga2V5IGlzIHRoZSBmaWxlbmFtZS4gICovCisrICBnZGI6OnVub3JkZXJlZF9tYXA8 c3RkOjpzdHJpbmcsIG1hcF9lbnRyeT4gbWFwcGVkX2ZpbGVzOworKworKyAgLyogR2V0IHRoZSBi dWlsZC1pZCBvZiB0aGUgY29yZSBmaWxlLiAgQXQgbGVhc3Qgb24gTGludXgsIHRoaXMgd2lsbCBi ZQorKyAgICAgdGhlIGJ1aWxkLWlkIGZvciB0aGUgbWFpbiBleGVjdXRhYmxlLiAgSWYgb3RoZXIg dGFyZ2V0cyBhZGQgdGhlCisrICAgICBnZGJhcmNoX3JlYWRfY29yZV9maWxlX21hcHBpbmdzIG1l dGhvZCwgdGhlbiBpdCBtaWdodCB0dXJuIG91dCB0aGF0CisrICAgICB0aGlzIGxvZ2ljIGlzIG5v IGxvbmdlciB0cnVlLCBpbiB3aGljaCBjYXNlIHRoaXMgbWlnaHQgbmVlZCB0byBtb3ZlCisrICAg ICBpbnRvIHRoZSBnZGJhcmNoX3JlYWRfY29yZV9maWxlX21hcHBpbmdzIG1ldGhvZC4gICovCisr ICBjb25zdCBiZmRfYnVpbGRfaWQgKmNvcmVfYnVpbGRfaWQgPSBidWlsZF9pZF9iZmRfZ2V0IChj YmZkKTsKKysKKysgIC8qIFNlZSBsaW51eF9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncygpIGluIGxp bnV4LXRkZXAuYyBmb3IgYW4gZXhhbXBsZQorKyAgICAgcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3Mg bWV0aG9kLiAgKi8KKysgIGdkYmFyY2hfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgKGdkYmFyY2gs IGNiZmQsCisrICAgIC8qIEFmdGVyIGRldGVybWluaW5nIHRoZSBudW1iZXIgb2YgbWFwcGluZ3Ms IHJlYWRfY29yZV9maWxlX21hcHBpbmdzCisrICAgICAgIHdpbGwgaW52b2tlIHRoaXMgbGFtYmRh LiAgKi8KKysgICAgWyZdIChVTE9OR0VTVCkKKysgICAgICB7CisrICAgICAgfSwKKysKKysgICAg LyogcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3Mgd2lsbCBpbnZva2UgdGhpcyBsYW1iZGEgZm9yIGVh Y2ggbWFwcGluZworKyAgICAgICB0aGF0IGl0IGZpbmRzLiAgKi8KKysgICAgWyZdIChpbnQgbnVt LCBVTE9OR0VTVCBzdGFydCwgVUxPTkdFU1QgZW5kLCBVTE9OR0VTVCBmaWxlX29mcywKKysJIGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBiZmRfYnVpbGRfaWQgKmJ1aWxkX2lkKQorKyAgICAg IHsKKysJLyogQXJjaGl0ZWN0dXJlLXNwZWNpZmljIHJlYWRfY29yZV9tYXBwaW5nIG1ldGhvZHMg YXJlIGV4cGVjdGVkIHRvCisrCSAgIHdlZWQgb3V0IG5vbi1maWxlLWJhY2tlZCBtYXBwaW5ncy4g ICovCisrCWdkYl9hc3NlcnQgKGZpbGVuYW1lICE9IG51bGxwdHIpOworKworKwkvKiBBZGQgdGhp cyBtYXBwZWQgcmVnaW9uIHRvIHRoZSBkYXRhIGZvciBGSUxFTkFNRS4gICovCisrCWF1dG8gaXRl ciA9IG1hcHBlZF9maWxlcy5maW5kIChmaWxlbmFtZSk7CisrCWlmIChpdGVyID09IG1hcHBlZF9m aWxlcy5lbmQgKCkpCisrCSAgeworKwkgICAgLyogQ3JlYXRlIGVudHJ5IGluIHJlc3VsdHMgbGlz dC4gICovCisrCSAgICByZXN1bHRzLmVtcGxhY2VfYmFjayAoKTsKKysKKysJICAgIC8qIFRoZSBl bnRyeSB0byBiZSBhZGRlZCB0byB0aGUgbG9va3VwIG1hcC4gICovCisrCSAgICBtYXBfZW50cnkg ZW50cnkgKCZyZXN1bHRzLmJhY2sgKCkpOworKwkgICAgZW50cnkuZmlsZV9kYXRhLT5maWxlbmFt ZSA9IGZpbGVuYW1lOworKworKwkgICAgLyogQWRkIGVudHJ5IHRvIHRoZSBxdWljayBsb29rdXAg bWFwIGFuZCB1cGRhdGUgSVRFUi4gICovCisrCSAgICBhdXRvIGluc2VydGVkX3Jlc3VsdAorKwkg ICAgICA9IG1hcHBlZF9maWxlcy5pbnNlcnQgKHtmaWxlbmFtZSwgc3RkOjptb3ZlIChlbnRyeSl9 KTsKKysJICAgIGdkYl9hc3NlcnQgKGluc2VydGVkX3Jlc3VsdC5zZWNvbmQpOworKwkgICAgaXRl ciA9IGluc2VydGVkX3Jlc3VsdC5maXJzdDsKKysJICB9CisrCisrCWNvcmVfbWFwcGVkX2ZpbGUg JmZpbGVfZGF0YSA9ICppdGVyLT5zZWNvbmQuZmlsZV9kYXRhOworKwlib29sICZpZ25vcmVfYnVp bGRfaWRfcCA9IGl0ZXItPnNlY29uZC5pZ25vcmVfYnVpbGRfaWRfcDsKKysKKysJZmlsZV9kYXRh LnJlZ2lvbnMuZW1wbGFjZV9iYWNrIChzdGFydCwgZW5kLCBmaWxlX29mcyk7CisrCWlmIChidWls ZF9pZCAhPSBudWxscHRyICYmICFpZ25vcmVfYnVpbGRfaWRfcCkKKysJICB7CisrCSAgICBpZiAo ZmlsZV9kYXRhLmJ1aWxkX2lkID09IG51bGxwdHIpCisrCSAgICAgIGZpbGVfZGF0YS5idWlsZF9p ZCA9IGJ1aWxkX2lkOworKwkgICAgZWxzZSBpZiAoIWJ1aWxkX2lkX2VxdWFsIChidWlsZF9pZCwg ZmlsZV9kYXRhLmJ1aWxkX2lkKSkKKysJICAgICAgeworKwkJd2FybmluZyAoXygiTXVsdGlwbGUg YnVpbGQtaWRzIGZvdW5kIGZvciAlcHMiKSwKKysJCQkgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1l X3N0eWxlLnN0eWxlICgpLCBmaWxlbmFtZSkpOworKwkJZmlsZV9kYXRhLmJ1aWxkX2lkID0gbnVs bHB0cjsKKysJCWlnbm9yZV9idWlsZF9pZF9wID0gdHJ1ZTsKKysJICAgICAgfQorKwkgIH0KKysK KysJaWYgKGJ1aWxkX2lkICE9IG51bGxwdHIKKysJICAgICYmIGNvcmVfYnVpbGRfaWQgIT0gbnVs bHB0cgorKwkgICAgJiYgYnVpbGRfaWRfZXF1YWwgKGJ1aWxkX2lkLCBjb3JlX2J1aWxkX2lkKSkK KysJICBmaWxlX2RhdGEuaXNfbWFpbl9leGVjID0gdHJ1ZTsKKysgICAgICB9KTsKKysKKysgIHJl dHVybiByZXN1bHRzOworK30KKysKKysvKiBTZWUgZ2RiY29yZS5oLiAgKi8KKysKKyBzdGQ6Om9w dGlvbmFsIDxjb3JlX3RhcmdldF9tYXBwZWRfZmlsZV9pbmZvPgorIGNvcmVfdGFyZ2V0X2ZpbmRf bWFwcGVkX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorIAkJCSAgICAgIHN0ZDo6b3B0aW9u YWw8Q09SRV9BRERSPiBhZGRyKQorZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9n ZGIvZG9jL2dkYi50ZXhpbmZvCistLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCisrKysgYi9nZGIv ZG9jL2dkYi50ZXhpbmZvCitAQCAtNDAwMjksMTAgKzQwMDI5LDEwIEBAIHdpbGwgc2V0IGEgdGVt cG9yYXJ5IGJyZWFrcG9pbnQgYXQgdGhlIHByb2dyYW0ncyBmaXJzdCBpbnN0cnVjdGlvbiwgdXNp bmcKKyB0aGUgc2FtZSBhcHByb2FjaCBhcyB0aGUgQGNvZGV7c3RhcnRpfSBjb21tYW5kLiAgQHhy ZWZ7U3RhcnRpbmd9LgorIEBlbmQgdGFibGUKKyAKKy1AdmFsdWV7R0RCTn0gZGVmaW5lcyBzb21l IHBhcmFtZXRlcnMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZQorLUBjb2Rle2F0dGFjaH0gcmVx dWVzdC4gIEVpdGhlciBAY29kZXtwaWR9IG9yIEBjb2Rle3RhcmdldH0gbXVzdCBiZQorLXNwZWNp ZmllZCwgYnV0IGlmIGJvdGggYXJlIHNwZWNpZmllZCB0aGVuIEBjb2Rle3RhcmdldH0gd2lsbCBi ZQorLWlnbm9yZWQuCisrQHZhbHVle0dEQk59IGRlZmluZXMgc29tZSBhZGRpdGlvbmFsIHBhcmFt ZXRlcnMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvCisrdGhlIEBjb2Rle2F0dGFjaH0gcmVxdWVzdC4g IE9uZSBvZiBAY29kZXtwaWR9LCBAY29kZXt0YXJnZXR9LCBvcgorK0Bjb2Rle2NvcmVGaWxlfSBt dXN0IGJlIHNwZWNpZmllZC4gIElmIG11bHRpcGxlIGFyZSBzcGVjaWZpZWQsIHRoZXkKKythcmUg Y2hlY2tlZCBmb3IgaW4gdGhhdCBvcmRlciwgYW5kIHRoZSBmaXJzdCBvbmUgZm91bmQgaXMgdXNl ZC4KKyAKKyBAdGFibGUgQGNvZGUKKyBAaXRlbSBwaWQKK0BAIC00MDA0OCw2ICs0MDA0OCwxMCBA QCBzaG91bGQgYmUgc3VwcGxpZWQuCisgQGl0ZW0gdGFyZ2V0CisgVGhlIHRhcmdldCB0byB3aGlj aCBAdmFsdWV7R0RCTn0gc2hvdWxkIGNvbm5lY3QuICBUaGlzIGlzIGEgc3RyaW5nIGFuZAorIGlz IHBhc3NlZCB0byB0aGUgQGNvZGV7dGFyZ2V0IHJlbW90ZX0gY29tbWFuZC4gIEB4cmVme0Nvbm5l Y3Rpbmd9LgorKworK0BpdGVtIGNvcmVGaWxlCisrQSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgYSBj b3JlIGZpbGUgdG8gdXNlLiAgVGhpcyBjb3JyZXNwb25kcyB0byB0aGUKKytAa2Jke2NvcmUtZmls ZX0gY29tbWFuZC4gIEB4cmVme2NvcmUtZmlsZSBjb21tYW5kfS4KKyBAZW5kIHRhYmxlCisgCisg SW4gcmVzcG9uc2UgdG8gdGhlIEBjb2Rle2Rpc2Fzc2VtYmxlfSByZXF1ZXN0LCBEQVAgYWxsb3dz IHRoZSBjbGllbnQKK2RpZmYgLS1naXQgYS9nZGIvZG9jL3B5dGhvbi50ZXhpIGIvZ2RiL2RvYy9w eXRob24udGV4aQorLS0tIGEvZ2RiL2RvYy9weXRob24udGV4aQorKysrIGIvZ2RiL2RvYy9weXRo b24udGV4aQorQEAgLTIzMyw2ICsyMzMsNyBAQCBvcHRpb25hbCBhcmd1bWVudHMgd2hpbGUgc2tp cHBpbmcgb3RoZXJzLiAgRXhhbXBsZToKKyAqIERpc2Fzc2VtYmx5IEluIFB5dGhvbjo6ICAgICAg IEluc3RydWN0aW9uIERpc2Fzc2VtYmx5IEluIFB5dGhvbgorICogTWlzc2luZyBEZWJ1ZyBJbmZv IEluIFB5dGhvbjo6IEhhbmRsZSBtaXNzaW5nIGRlYnVnIGluZm8gZnJvbSBQeXRob24uCisgKiBN aXNzaW5nIE9iamZpbGVzIEluIFB5dGhvbjo6ICBIYW5kbGUgb2JqZmlsZXMgZnJvbSBQeXRob24u CisrKiBDb3JlIEZpbGVzIEluIFB5dGhvbjo6ICAgICAgICBQeXRob24gcmVwcmVzZW50YXRpb24g b2YgY29yZSBmaWxlcy4KKyBAZW5kIG1lbnUKKyAKKyBAbm9kZSBCYXNpYyBQeXRob24KK0BAIC0z NjI2LDYgKzM2MjcsMTUgQEAgbmVjZXNzYXJ5IHF1b3RpbmcgZm9yIHRoZSBzaGVsbDsgd2hlbiBh IHNlcXVlbmNlIGlzIGFzc2lnbmVkLCB0aGUKKyBxdW90aW5nIGlzIGFwcGxpZWQgYnkgQHZhbHVl e0dEQk59LgorIEBlbmQgZGVmdmFyCisgCisrQGRlZnZhciBJbmZlcmlvci5jb3JlZmlsZQorK0lm IGEgY29yZSBmaWxlIGhhcyBiZWVuIGxvYWRlZCBpbnRvIHRoaXMgaW5mZXJpb3IgKEBweHJlZntj b3JlLWZpbGUKKytjb21tYW5kfSksIHRoZW4gdGhpcyBjb250YWlucyBhIEBjb2Rle2dkYi5Db3Jl ZmlsZX0gb2JqZWN0IHRoYXQKKytyZXByZXNlbnRzIHRoZSBsb2FkZWQgY29yZSBmaWxlIChAcHhy ZWZ7Q29yZSBGaWxlcyBJbiBQeXRob259KS4KKysKKytJZiBubyBjb3JlIGZpbGUgaGFzIGJlZW4g bG9hZGVkIGludG8gdGhpcyBpbmZlcmlvciwgdGhlbiB0aGlzCisrYXR0cmlidXRlIGNvbnRhaW5z IEBjb2Rle05vbmV9LgorK0BlbmQgZGVmdmFyCisrCisgQSBAY29kZXtnZGIuSW5mZXJpb3J9IG9i amVjdCBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorIAorIEBkZWZ1biBJbmZlcmlvci5pc192 YWxpZCAoKQorQEAgLTQwOTQsNiArNDEwNCwxNyBAQCBmaWxlIGlzIHVwZGF0ZWQgZmlyc3QsIHNv IHdoZW4gdGhpcyBldmVudCBpcyBlbWl0dGVkLCB0aGUgZXhlY3V0YWJsZQorIGZpbGVuYW1lIHdp bGwgaGF2ZSBjaGFuZ2VkLCBidXQgdGhlIHN5bWJvbCBmaWxlbmFtZSBtaWdodCBzdGlsbCBob2xk CisgaXRzIHByZXZpb3VzIHZhbHVlLgorIAorK0BpdGVtIGV2ZW50cy5jb3JlZmlsZV9jaGFuZ2Vk CisrRW1pdHMgQGNvZGV7Z2RiLkNvcmVmaWxlQ2hhbmdlZEV2ZW50fSB3aGljaCBpbmRpY2F0ZXMg dGhhdCB0aGUgY29yZQorK2ZpbGUgYXNzb2NpYXRlZCB3aXRoIGEgQGNvZGV7Z2RiLkluZmVyaW9y fSBoYXMgY2hhbmdlZCwgZWl0aGVyIGEgbmV3CisrY29yZSBmaWxlIGhhcyBiZWVuIGxvYWRlZCwg b3IgdGhlIGV4aXN0aW5nIGNvcmUgZmlsZSBoYXMgYmVlbgorK3VubG9hZGVkIChAcHhyZWZ7Q29y ZSBGaWxlcyBJbiBQeXRob259KS4KKysKKytAZGVmdmFyIENvcmVmaWxlQ2hhbmdlZEV2ZW50Lmlu ZmVyaW9yCisrVGhlIEBjb2Rle2dkYi5JbmZlcmlvcn0gaW4gd2hpY2ggdGhlIGNvcmUgZmlsZSBo YXMgY2hhbmdlZAorKyhAcHhyZWZ7SW5mZXJpb3JzIEluIFB5dGhvbn0pLgorK0BlbmQgZGVmdmFy CisrCisgQGl0ZW0gZXZlbnRzLm5ld19wcm9nc3BhY2UKKyBUaGlzIGlzIGVtaXR0ZWQgd2hlbiBA dmFsdWV7R0RCTn0gYWRkcyBhIG5ldyBwcm9ncmFtIHNwYWNlCisgKEBweHJlZntQcm9nc3BhY2Vz IEluIFB5dGhvbiwsUHJvZ3JhbSBTcGFjZXMgSW4gUHl0aG9ufSkuICBUaGUgZXZlbnQKK0BAIC04 NjI0LDYgKzg2NDUsMTA2IEBAIGhhbmRsZXJzLCBhbGwgb2YgdGhlIG1hdGNoaW5nIGhhbmRsZXJz IGFyZSBlbmFibGVkLiAgVGhlCisgQGNvZGV7ZW5hYmxlZH0gZmllbGQgb2YgZWFjaCBtYXRjaGlu ZyBoYW5kbGVyIGlzIHNldCB0byBAY29kZXtUcnVlfS4KKyBAZW5kIHRhYmxlCisgCisrQG5vZGUg Q29yZSBGaWxlcyBJbiBQeXRob24KKytAc3Vic3Vic2VjdGlvbiBDb3JlIEZpbGVzIEluIFB5dGhv bgorK0BjaW5kZXggcHl0aG9uLCBjb3JlIGZpbGVzCisrCisrV2hlbiBhIGNvcmUgZmlsZSBpcyBs b2FkZWQgaW50byBhbiBpbmZlcmlvciAoQHB4cmVme0luZmVyaW9ycyBJbgorK1B5dGhvbn0pIGZv ciBleGFtaW5hdGlvbiAoQHB4cmVme2NvcmUtZmlsZSBjb21tYW5kfSksIGluZm9ybWF0aW9uCisr YWJvdXQgdGhlIGNvcmUgZmlsZSBpcyBjb250YWluZWQgaW4gYSBAY29kZXtnZGIuQ29yZWZpbGV9 IG9iamVjdC4KKysKKytUaGUgQGNvZGV7Z2RiLkNvcmVmaWxlfSBmb3IgYW4gaW5mZXJpb3IgY2Fu IGJlIGFjY2Vzc2VkIHVzaW5nIHRoZQorK0Bjb2Rle0luZmVyaW9yLmNvcmVmaWxlfSBhdHRyaWJ1 dGUuICBUaGlzIHdpbGwgYmUgQGNvZGV7Tm9uZX0gaWYKKytubyBjb3JlIGZpbGUgaXMgbG9hZGVk LgorKworK0EgQGNvZGV7Z2RiLkNvcmVmaWxlfSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgYXR0 cmlidXRlczoKKysKKytAZGVmdmFyIENvcmVmaWxlLmZpbGVuYW1lCisrVGhpcyByZWFkIG9ubHkg YXR0cmlidXRlIGNvbnRhaW5zIGEgbm9uLWVtcHR5IHN0cmluZywgdGhlIGZpbGUgbmFtZSBvZgor K3RoZSBjb3JlIGZpbGUuICBBdHRlbXB0aW5nIHRvIGFjY2VzcyB0aGlzIGF0dHJpYnV0ZSBvbiBh biBpbnZhbGlkCisrQGNvZGV7Z2RiLkNvcmVmaWxlfSBvYmplY3Qgd2lsbCByYWlzZSBhIEBjb2Rl e1J1bnRpbWVFcnJvcn0gZXhjZXB0aW9uLgorK0BlbmQgZGVmdmFyCisrCisrQSBAY29kZXtnZGIu Q29yZWZpbGV9IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorKworK0BkZWZ1biBD b3JlZmlsZS5pc192YWxpZCAoKQorK1JldHVybnMgQGNvZGV7VHJ1ZX0gaWYgdGhlIEBjb2Rle2dk Yi5Db3JlZmlsZX0gb2JqZWN0IGlzIHZhbGlkLAorK0Bjb2Rle0ZhbHNlfSBpZiBub3QuICBBIEBj b2Rle2dkYi5Db3JlZmlsZX0gb2JqZWN0IHdpbGwgYmVjb21lIGludmFsaWQKKyt3aGVuIHRoZSBj b3JlIGZpbGUgaXMgdW5sb2FkZWQgZnJvbSB0aGUgaW5mZXJpb3IgdXNpbmcgdGhlCisrQGtiZHtj b3JlLWZpbGV9IGNvbW1hbmQgKEBweHJlZntjb3JlLWZpbGUgY29tbWFuZH0pLCBvciBpZiB0aGUK KytpbmZlcmlvciBpbiB3aGljaCB0aGUgY29yZSBmaWxlIGlzIGxvYWRlZCBpcyBkZWxldGVkLiAg QWxsIG90aGVyCisrQGNvZGV7Z2RiLkNvcmVmaWxlfSBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzIHdp bGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmCisraXQgaXMgaW52YWxpZCBhdCB0aGUgdGltZSB0aGUg bWV0aG9kIGlzIGNhbGxlZCwgb3IgdGhlIGF0dHJpYnV0ZQorK2FjY2Vzc2VkLgorK0BlbmQgZGVm dW4KKysKKytAZGVmdW4gQ29yZWZpbGUubWFwcGVkX2ZpbGVzICgpCisrUmV0dXJuIGEgbGlzdCBv ZiBAY29kZXtnZGIuQ29yZWZpbGVNYXBwZWRGaWxlfSAoc2VlIGJlbG93KSBvYmplY3RzCisrcmVw cmVzZW50aW5nIGZpbGVzIHRoYXQgd2VyZSBtYXBwZWQgaW50byB0aGUgcHJvY2VzcyB3aGVuIHRo ZSBjb3JlCisrZmlsZSB3YXMgY3JlYXRlZC4gIFRoaXMgaW5mb3JtYXRpb24gaXMgcmVhZCBmcm9t IHRoZSBAc2FtcHtOVF9GSUxFfQorK2NvcmUgZmlsZSBub3RlIG9uIExpbnV4LiAgTm90IGV2ZXJ5 IHRhcmdldCBzdXBwb3J0cyBhY2Nlc3NpbmcgdGhpcworK2luZm9ybWF0aW9uLCBmb3IgdGFyZ2V0 cyB3aXRob3V0IHN1cHBvcnQsIGFuIGVtcHR5IGxpc3Qgd2lsbCBiZQorK3JldHVybmVkLgorK0Bl bmQgZGVmdW4KKysKKytPbmUgbWF5IGFkZCBhcmJpdHJhcnkgYXR0cmlidXRlcyB0byBAY29kZXtn ZGIuQ29yZWZpbGV9IG9iamVjdHMgaW4gdGhlCisrdXN1YWwgUHl0aG9uIHdheS4gIFRoaXMgaXMg dXNlZnVsIGlmLCBmb3IgZXhhbXBsZSwgb25lIG5lZWRzIHRvIGRvCisrc29tZSBleHRyYSByZWNv cmQga2VlcGluZyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcmVmaWxlLgorK0B4cmVme2Nob29zaW5n IGF0dHJpYnV0ZSBuYW1lc30sIGZvciBndWlkYW5jZSBvbiBzZWxlY3RpbmcgYSBzdWl0YWJsZQor K25hbWUgZm9yIG5ldyBhdHRyaWJ1dGVzLgorKworK1RoZSBAY29kZXtDb3JlZmlsZS5tYXBwZWRf ZmlsZXMgKCl9IG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZgorK0Bjb2Rle2dkYi5Db3JlZmlsZU1h cHBlZEZpbGV9IG9iamVjdHMuICBFYWNoIG9mIHRoZXNlIG9iamVjdHMKKytyZXByZXNlbnRzIGEg ZmlsZSB0aGF0IHdhcyBmdWxseSwgb3IgcGFydGlhbGx5LCBtYXBwZWQgaW50byB0aGUKKytwcm9j ZXNzZXMgYWRkcmVzcyBzcGFjZSB3aGVuIHRoZSBjb3JlIGZpbGUgd2FzIGNyZWF0ZWQuCisrCisr QSBAY29kZXtnZGIuQ29yZWZpbGVNYXBwZWRGaWxlfSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcg YXR0cmlidXRlczoKKysKKytAZGVmdmFyIENvcmVmaWxlTWFwcGVkRmlsZS5maWxlbmFtZQorK1Ro aXMgcmVhZCBvbmx5IGF0dHJpYnV0ZSBjb250YWlucyBhIG5vbi1lbXB0eSBzdHJpbmcsIHRoZSBm aWxlIG5hbWUgb2YKKyt0aGUgbWFwcGVkIGZpbGUuCisrQGVuZCBkZWZ2YXIKKysKKytAZGVmdmFy IENvcmVmaWxlTWFwcGVkRmlsZS5idWlsZF9pZAorK1RoaXMgcmVhZCBvbmx5IGF0dHJpYnV0ZSBj b250YWlucyBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgQGNvZGV7Tm9uZX0uCisrVGhpcyBpcyB0aGUg YnVpbGQtaWQgb2YgdGhlIG1hcHBlZCBmaWxlIGV4dHJhY3RlZCBmcm9tIHRoZSBjb3JlIGZpbGUs Cisrb3IgQGNvZGV7Tm9uZX0gaWYgdGhlcmUgd2FzIG5vIGJ1aWxkLWlkLCBvciBAdmFsdWV7R0RC Tn0gd2FzIHVuYWJsZSB0bworK2V4dHJhY3QgdGhlIGJ1aWxkLWlkLgorK0BlbmQgZGVmdmFyCisr CisrQGRlZnZhciBDb3JlZmlsZU1hcHBlZEZpbGUuaXNfbWFpbl9leGVjdXRhYmxlCisrVGhpcyBy ZWFkIG9ubHkgYXR0cmlidXRlIGlzIEBjb2Rle1RydWV9IGlmIEB2YWx1ZXtHREJOfSBiZWxpZXZl cyB0aGlzCisrbWFwcGluZyByZXByZXNlbnRzIHRoZSBtYWluIGV4ZWN1dGFibGUgZm9yIHdoaWNo IHRoaXMgY29yZSBmaWxlIHdhcworK2NyZWF0ZWQuICBUaGlzIHdpbGwgYmUgQGNvZGV7RmFsc2V9 IGZvciBhbGwgb3RoZXIgbWFwcGluZ3MuCisrQGVuZCBkZWZ2YXIKKysKKytAZGVmdmFyIENvcmVm aWxlTWFwcGVkRmlsZS5yZWdpb25zCisrVGhpcyByZWFkIG9ubHkgYXR0cmlidXRlIGNvbnRhaW5z IGEgbGlzdCBvZgorK0Bjb2Rle2dkYi5Db3JlZmlsZU1hcHBlZEZpbGVSZWdpb259IG9iamVjdHMu ICBFYWNoIG9mIHRoZXNlIG9iamVjdHMKKytkZXNjcmliZXMgYSByZWdpb24gb2YgdGhlIGZpbGUg dGhhdCB3YXMgbWFwcGVkIGludG8gdGhlIHByb2Nlc3Mgd2hlbgorK3RoZSBjb3JlIGZpbGUgd2Fz IGNyZWF0ZWQsIGZ1cnRoZXIgZGV0YWlscyBhcmUgZ2l2ZW4gYmVsb3cuCisrQGVuZCBkZWZ2YXIK KysKKytUaGUgQGNvZGV7Z2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbn0gb2JqZWN0IGRlc2Ny aWJlcyB3aGljaCBwYXJ0IG9mCisrYSBmaWxlIHRoYXQgd2FzIG1hcHBlZCBpbnRvIGEgcHJvY2Vz cyB3aGVuIHRoZSBjb3JlIGZpbGUgd2FzIGNyZWF0ZWQuCisrCisrQSBAY29kZXtnZGIuQ29yZWZp bGVNYXBwZWRGaWxlfSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKysKKytA ZGVmdmFyIENvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbi5zdGFydAorK1RoaXMgcmVhZCBvbmx5IGF0 dHJpYnV0ZSBjb250YWlucyB0aGUgc3RhcnQgYWRkcmVzcyBvZiB0aGlzIG1hcHBpbmcKKyt3aXRo aW4gdGhlIGluZmVyaW9yLgorK0BlbmQgZGVmdmFyCisrCisrQGRlZnZhciBDb3JlZmlsZU1hcHBl ZEZpbGVSZWdpb24uZW5kCisrVGhpcyByZWFkIG9ubHkgYXR0cmlidXRlIGNvbnRhaW5zIGVuZCBh ZGRyZXNzIG9mIHRoaXMgbWFwcGluZyB3aXRoaW4KKyt0aGUgaW5mZXJpb3IuCisrQGVuZCBkZWZ2 YXIKKysKKytAZGVmdmFyIENvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbi5maWxlX29mZnNldAorK1Ro aXMgcmVhZCBvbmx5IGF0dHJpYnV0ZSBjb250YWlucyB0aGUgb2Zmc2V0IHdpdGhpbiB0aGUgbWFw cGVkIGZpbGUKKytmb3IgdGhpcyBtYXBwaW5nLgorK0BlbmQgZGVmdmFyCisrCisgQG5vZGUgUHl0 aG9uIEF1dG8tbG9hZGluZworIEBzdWJzZWN0aW9uIFB5dGhvbiBBdXRvLWxvYWRpbmcKKyBAY2lu ZGV4IFB5dGhvbiBhdXRvLWxvYWRpbmcKK2RpZmYgLS1naXQgYS9nZGIvZ2RiY29yZS5oIGIvZ2Ri L2dkYmNvcmUuaAorLS0tIGEvZ2RiL2dkYmNvcmUuaAorKysrIGIvZ2RiL2dkYmNvcmUuaAorQEAg LTI1OCw0ICsyNTgsNDcgQEAgc3RkOjpvcHRpb25hbDxjb3JlX3RhcmdldF9tYXBwZWRfZmlsZV9p bmZvPgorIGNvcmVfdGFyZ2V0X2ZpbmRfbWFwcGVkX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1l LAorIAkJCSAgICAgIHN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPiBhZGRyKTsKKyAKKysvKiBUeXBl IGhvbGRpbmcgaW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgZmlsZSBtYXBwZWQgaW50byB0aGUg aW5mZXJpb3IKKysgICBhdCB0aGUgcG9pbnQgd2hlbiB0aGUgY29yZSBmaWxlIHdhcyBjcmVhdGVk LiAgQXNzb2NpYXRlcyBhIGJ1aWxkLWlkCisrICAgd2l0aCB0aGUgbGlzdCBvZiByZWdpb25zIHRo ZSBmaWxlIGlzIG1hcHBlZCBpbnRvLiAgKi8KKytzdHJ1Y3QgY29yZV9tYXBwZWRfZmlsZQorK3sK KysgIC8qIFR5cGUgZm9yIGEgcmVnaW9uIG9mIGEgZmlsZSB0aGF0IHdhcyBtYXBwZWQgaW50byB0 aGUgaW5mZXJpb3Igd2hlbgorKyAgICAgdGhlIGNvcmUgZmlsZSB3YXMgZ2VuZXJhdGVkLiAgKi8K KysgIHN0cnVjdCByZWdpb24KKysgIHsKKysgICAgLyogQ29uc3RydWN0b3IuICAgU2VlIG1lbWJl ciB2YXJpYWJsZXMgZm9yIGFyZ3VtZW50IGRlc2NyaXB0aW9ucy4gICovCisrICAgIHJlZ2lvbiAo Q09SRV9BRERSIHN0YXJ0XywgQ09SRV9BRERSIGVuZF8sIENPUkVfQUREUiBmaWxlX29mc18pCisr ICAgICAgOiBzdGFydCAoc3RhcnRfKSwKKysJZW5kIChlbmRfKSwKKysJZmlsZV9vZnMgKGZpbGVf b2ZzXykKKysgICAgeyAvKiBOb3RoaW5nLiAgKi8gfQorKworKyAgICAvKiBUaGUgaW5mZXJpb3Ig YWRkcmVzcyBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBtYXBwZWQgcmVnaW9uLiAgKi8KKysgICAgQ09S RV9BRERSIHN0YXJ0OworKworKyAgICAvKiBUaGUgaW5mZXJpb3IgYWRkcmVzcyBpbW1lZGlhdGVs eSBhZnRlciB0aGUgbWFwcGVkIHJlZ2lvbi4gICovCisrICAgIENPUkVfQUREUiBlbmQ7CisrCisr ICAgIC8qIFRoZSBvZmZzZXQgd2l0aGluIHRoZSBtYXBwZWQgZmlsZSBmb3IgdGhpcyBjb250ZW50 LiAgKi8KKysgICAgQ09SRV9BRERSIGZpbGVfb2ZzOworKyAgfTsKKysKKysgIC8qIFRoZSBmaWxl bmFtZSBhcyByZWNvcmRlZCBpbiB0aGUgY29yZSBmaWxlLiAgKi8KKysgIHN0ZDo6c3RyaW5nIGZp bGVuYW1lOworKworKyAgLyogSWYgbm90IG51bGxwdHIsIHRoZW4gdGhpcyBpcyB0aGUgYnVpbGQt aWQgYXNzb2NpYXRlZCB3aXRoIHRoaXMKKysgICAgIGZpbGUuICAqLworKyAgY29uc3QgYmZkX2J1 aWxkX2lkICpidWlsZF9pZCA9IG51bGxwdHI7CisrCisrICAvKiBBbGwgdGhlIG1hcHBlZCByZWdp b25zIG9mIHRoaXMgZmlsZS4gICovCisrICBzdGQ6OnZlY3RvcjxyZWdpb24+IHJlZ2lvbnM7Cisr CisrICAvKiBUcnVlIGlmIHRoaXMgaXMgdGhlIG1haW4gZXhlY3V0YWJsZS4gICovCisrICBib29s IGlzX21haW5fZXhlYyA9IGZhbHNlOworK307CisrCisrZXh0ZXJuIHN0ZDo6dmVjdG9yPGNvcmVf bWFwcGVkX2ZpbGU+IGdkYl9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncworKyAgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBzdHJ1Y3QgYmZkICpjYmZkKTsKKysKKyAjZW5kaWYgLyogR0RCX0dEQkNP UkVfSCAqLworZGlmZiAtLWdpdCBhL2dkYi9vYnNlcnZhYmxlLmMgYi9nZGIvb2JzZXJ2YWJsZS5j CistLS0gYS9nZGIvb2JzZXJ2YWJsZS5jCisrKysgYi9nZGIvb2JzZXJ2YWJsZS5jCitAQCAtNzYs NiArNzYsNyBAQCBERUZJTkVfT0JTRVJWQUJMRSAodGFyZ2V0X3Bvc3Rfd2FpdCk7CisgREVGSU5F X09CU0VSVkFCTEUgKG5ld19wcm9ncmFtX3NwYWNlKTsKKyBERUZJTkVfT0JTRVJWQUJMRSAoZnJl ZV9wcm9ncmFtX3NwYWNlKTsKKyBERUZJTkVfT0JTRVJWQUJMRSAodHVpX2VuYWJsZWQpOworK0RF RklORV9PQlNFUlZBQkxFIChjb3JlX2ZpbGVfY2hhbmdlZCk7CisgCisgfSAvKiBuYW1lc3BhY2Ug b2JzZXJ2ZXJzICovCisgfSAvKiBuYW1lc3BhY2UgZ2RiICovCitkaWZmIC0tZ2l0IGEvZ2RiL29i c2VydmFibGUuaCBiL2dkYi9vYnNlcnZhYmxlLmgKKy0tLSBhL2dkYi9vYnNlcnZhYmxlLmgKKysr KyBiL2dkYi9vYnNlcnZhYmxlLmgKK0BAIC0yNjAsNiArMjYwLDEyIEBAIGV4dGVybiBvYnNlcnZh YmxlIDxwcm9ncmFtX3NwYWNlICovKiBwc3BhY2UgKi8+IGZyZWVfcHJvZ3JhbV9zcGFjZTsKKyAK KyBleHRlcm4gb2JzZXJ2YWJsZTxib29sIC8qIGVuYWJsZWQgKi8+IHR1aV9lbmFibGVkOworIAor Ky8qIFRoZSBjb3JlIGZpbGUgbG9hZGVkIGludG8gdGhlIHByb2dyYW0gc3BhY2UgaW5mZXJpb3Ig SU5GIGhhcyBjaGFuZ2VkLgorKyAgIFRoZSBwcm9jZXNzIG9mIGNoYW5naW5nIGhhcyBjb21wbGV0 ZWQsIGkuZS4gd2hlbiB1bmxvYWRpbmcsIHRoZSB1bmxvYWQKKysgICBpcyBub3cgY29tcGxldGUu ICBXaGVuIGxvYWRpbmcgYSBuZXcgY29yZSBmaWxlLCB0aGUgbG9hZCBpcyBjb21wbGV0ZSwKKysg ICBzaGFyZWQgbGlicmFyaWVzIGhhdmUgYmVlbiBsb2FkZWQsIHJlZ2lzdGVycyBhbmQgdGhyZWFk cyByZWFkIGluLCBldGMuICAqLworK2V4dGVybiBvYnNlcnZhYmxlPGluZmVyaW9yICovKiBpbmYg Ki8+IGNvcmVfZmlsZV9jaGFuZ2VkOworKworIH0gLyogbmFtZXNwYWNlIG9ic2VydmVycyAqLwor IAorIH0gLyogbmFtZXNwYWNlIGdkYiAqLworZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dk Yi9kYXAvZXZlbnRzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9ldmVudHMucHkKKy0tLSBh L2dkYi9weXRob24vbGliL2dkYi9kYXAvZXZlbnRzLnB5CisrKysgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvZGFwL2V2ZW50cy5weQorQEAgLTE2MSw3ICsxNjEsNyBAQCBfZXhwZWN0ZWRfcGF1c2UgPSBG YWxzZQorIAorIAorIEBpbl9nZGJfdGhyZWFkCistZGVmIGV4ZWNfYW5kX2V4cGVjdF9zdG9wKGNt ZCwgZXhwZWN0ZWRfcGF1c2U9RmFsc2UsIHByb3BhZ2F0ZV9leGNlcHRpb249RmFsc2UpOgorK2Rl ZiBleGVjX2FuZF9leHBlY3Rfc3RvcChjbWQsIGV4cGVjdGVkX3BhdXNlPUZhbHNlKToKKyAgICAg IiIiQSB3cmFwcGVyIGZvciBleGVjX2FuZF9sb2cgdGhhdCBzZXRzIHRoZSBjb250aW51ZS1zdXBw cmVzc2lvbiBmbGFnLgorIAorICAgICBXaGVuIEVYUEVDVEVEX1BBVVNFIGlzIFRydWUsIGEgc3Rv cCB0aGF0IGxvb2tzIGxpa2UgYSBwYXVzZSAoZS5nLiwKK0BAIC0xNzQsNyArMTc0LDcgQEAgZGVm IGV4ZWNfYW5kX2V4cGVjdF9zdG9wKGNtZCwgZXhwZWN0ZWRfcGF1c2U9RmFsc2UsIHByb3BhZ2F0 ZV9leGNlcHRpb249RmFsc2UpOgorICAgICAjIGNvbnRpbnVpbmcuCisgICAgIF9zdXBwcmVzc19j b250ID0gbm90IGV4cGVjdGVkX3BhdXNlCisgICAgICMgRklYTUUgaWYgdGhlIGNhbGwgZmFpbHMg c2hvdWxkIHdlIGNsZWFyIF9zdXBwcmVzc19jb250PworLSAgICBleGVjX2FuZF9sb2coY21kLCBw cm9wYWdhdGVfZXhjZXB0aW9uKQorKyAgICBleGVjX2FuZF9sb2coY21kKQorIAorIAorICMgTWFw IGZyb20gZ2RiIHN0b3AgcmVhc29ucyB0byBEQVAgc3RvcCByZWFzb25zLiAgU29tZSBvZiB0aGVz ZSBjYW4ndAorQEAgLTI3Niw2ICsyNzYsMzEgQEAgZGVmIF9vbl9pbmZlcmlvcl9jYWxsKGV2ZW50 KToKKyAgICAgICAgICAgICBzZW5kX2V2ZW50KCJzdG9wcGVkIiwgb2JqKQorIAorIAorK0Bpbl9n ZGJfdGhyZWFkCisrZGVmIF9vbl9jb3JlZmlsZV9jaGFuZ2VkKGV2ZW50KToKKysgICAgIyBJZ25v cmUgZXZlbnRzIHJlbGF0aW5nIHRvIGNvcmVmaWxlIGJlaW5nIHVubG9hZGVkLgorKyAgICBpZiBl dmVudC5pbmZlcmlvci5jb3JlZmlsZSBpcyBOb25lOgorKyAgICAgICAgcmV0dXJuCisrCisrICAg ICMgQ29yZWZpbGVzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHZpYSB0aGUgJ2F0dGFjaCcgcmVxdWVz dCwgd2hpY2gKKysgICAgIyBzZXRzIHRoZSBnbG9iYWwgX2V4cGVjdGVkX3N0b3BfcmVhc29uIHRv ICdhdHRhY2gnLiAgSXQgaXMKKysgICAgIyBiZWNhdXNlIG9mIHRoaXMgdGhhdCBpdCBpcyBzYWZl IHRvIGZvcndhcmQgdG8gX29uX3N0b3AsIGFzIHdoZW4KKysgICAgIyBfZXhwZWN0ZWRfc3RvcF9y ZWFzb24gaXMgc2V0IF9vbl9zdG9wIGRvZXNuJ3QgcmVhZCB0aGUKKysgICAgIyBldmVudC5kZXRh aWxzLCB3aGljaCBFVkVOVCBkb2Vzbid0IGhhdmUuCisrICAgICMKKysgICAgIyBIb3dldmVyLCBp ZiB0aGUgdXNlciBsb2FkcyBhIGNvcmUgZmlsZSB2aWEgc29tZSBtZWNoYW5pc20gb3RoZXIKKysg ICAgIyB0aGFuIHRoZSAnYXR0YWNoJyByZXF1ZXN0LCBlLmcuIHRoZXkgdXNlIHRoZSByZXBsIHRv IGlzc3VlIGEgR0RCCisrICAgICMgJ2NvcmUtZmlsZScgY29tbWFuZCwgdGhlbiB3aGVuIHdlIGdl dCBoZXJlIF9leHBlY3RlZF9zdG9wX3JlYXNvbgorKyAgICAjIHdpbGwgbm90IGJlIHNldC4KKysg ICAgIworKyAgICAjIFNvLCBpbiBlaXRoZXIgY2FzZSwgc2V0IF9leHBlY3RlZF9zdG9wX3JlYXNv biBub3cuCisrICAgIGdsb2JhbCBfZXhwZWN0ZWRfc3RvcF9yZWFzb24KKysgICAgX2V4cGVjdGVk X3N0b3BfcmVhc29uID0gImF0dGFjaCIKKysKKysgICAgIyBBIGNvcmVmaWxlIHdhcyBsb2FkZWQs IGFubm91bmNlIHRoYXQgdGhlIGluZmVyaW9yIGhhcyBzdG9wcGVkLgorKyAgICBfb25fc3RvcChl dmVudCkKKysKKysKKyBnZGIuZXZlbnRzLnN0b3AuY29ubmVjdChfb25fc3RvcCkKKyBnZGIuZXZl bnRzLmV4aXRlZC5jb25uZWN0KF9vbl9leGl0KQorIGdkYi5ldmVudHMubmV3X3RocmVhZC5jb25u ZWN0KF9uZXdfdGhyZWFkKQorQEAgLTI4NCwzICszMDksNCBAQCBnZGIuZXZlbnRzLmNvbnQuY29u bmVjdChfY29udCkKKyBnZGIuZXZlbnRzLm5ld19vYmpmaWxlLmNvbm5lY3QoX25ld19vYmpmaWxl KQorIGdkYi5ldmVudHMuZnJlZV9vYmpmaWxlLmNvbm5lY3QoX29iamZpbGVfcmVtb3ZlZCkKKyBn ZGIuZXZlbnRzLmluZmVyaW9yX2NhbGwuY29ubmVjdChfb25faW5mZXJpb3JfY2FsbCkKKytnZGIu ZXZlbnRzLmNvcmVmaWxlX2NoYW5nZWQuY29ubmVjdChfb25fY29yZWZpbGVfY2hhbmdlZCkKK2Rp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL2xhdW5jaC5weSBiL2dkYi9weXRob24v bGliL2dkYi9kYXAvbGF1bmNoLnB5CistLS0gYS9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL2xhdW5j aC5weQorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9sYXVuY2gucHkKK0BAIC01OSwxMiAr NTksMTYgQEAgY2xhc3MgX0xhdW5jaE9yQXR0YWNoRGVmZXJyZWRSZXF1ZXN0KERlZmVycmVkUmVx dWVzdCk6CisgICAgICAgICBzdXBlcigpLnJlc2NoZWR1bGUoKQorIAorIAorKyMgSGFuZGxlIHdo aXRlc3BhY2UsIHF1b3RlcywgYW5kIGJhY2tzbGFzaGVzIGhlcmUuICBFeGFjdGx5IHdoYXQKKysj IHRvIHF1b3RlIGRlcGVuZHMgb24gbGliaWJlcnR5J3MgYnVpbGRhcmd2IGFuZCBzYWZlLWN0eXBl LgorK2RlZiBlc2NhcGVfZmlsZW5hbWUoZmlsZW5hbWUpOgorKyAgICByZXR1cm4gcmUuc3ViKCJb IFx0XG5cclxmXHZcXFxcJ1wiXSIsICJcXFxcXFxnPDA+IiwgZmlsZW5hbWUpCisrCisrCisgIyBB IHdyYXBwZXIgZm9yIHRoZSAnZmlsZScgY29tbWFuZCB0aGF0IGNvcnJlY3RseSBxdW90ZXMgaXRz IGFyZ3VtZW50LgorIEBpbl9nZGJfdGhyZWFkCisgZGVmIGZpbGVfY29tbWFuZChwcm9ncmFtKToK Ky0gICAgIyBIYW5kbGUgd2hpdGVzcGFjZSwgcXVvdGVzLCBhbmQgYmFja3NsYXNoZXMgaGVyZS4g IEV4YWN0bHkgd2hhdAorLSAgICAjIHRvIHF1b3RlIGRlcGVuZHMgb24gbGliaWJlcnR5J3MgYnVp bGRhcmd2IGFuZCBzYWZlLWN0eXBlLgorLSAgICBwcm9ncmFtID0gcmUuc3ViKCJbIFx0XG5cclxm XHZcXFxcJ1wiXSIsICJcXFxcXFxnPDA+IiwgcHJvZ3JhbSkKKysgICAgcHJvZ3JhbSA9IGVzY2Fw ZV9maWxlbmFtZShwcm9ncmFtKQorICAgICBleGVjX2FuZF9sb2coImZpbGUgIiArIHByb2dyYW0p CisgCisgCitAQCAtMTMyLDYgKzEzNiw3IEBAIGRlZiBhdHRhY2goCisgICAgIHByb2dyYW06IE9w dGlvbmFsW3N0cl0gPSBOb25lLAorICAgICBwaWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAg ICB0YXJnZXQ6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorKyAgICBjb3JlRmlsZTogT3B0aW9uYWxb c3RyXSA9IE5vbmUsCisgICAgICoqYXJncywKKyApOgorICAgICAjIFRoZSBhY3R1YWwgYXR0YWNo IGlzIGhhbmRsZWQgYnkgdGhpcyBmdW5jdGlvbi4KK0BAIC0xNDMsMTEgKzE0OCwxNCBAQCBkZWYg YXR0YWNoKAorICAgICAgICAgICAgIGNtZCA9ICJhdHRhY2ggIiArIHN0cihwaWQpCisgICAgICAg ICBlbGlmIHRhcmdldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICBjbWQgPSAidGFyZ2V0IHJl bW90ZSAiICsgdGFyZ2V0CisrICAgICAgICBlbGlmIGNvcmVGaWxlIGlzIG5vdCBOb25lOgorKyAg ICAgICAgICAgIGNtZCA9ICJjb3JlLWZpbGUgIiArIGVzY2FwZV9maWxlbmFtZShjb3JlRmlsZSkK KyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgcmFpc2UgREFQRXhjZXB0aW9uKCJhdHRhY2gg cmVxdWlyZXMgZWl0aGVyICdwaWQnIG9yICd0YXJnZXQnIikKKysgICAgICAgICAgICByYWlzZSBE QVBFeGNlcHRpb24oImF0dGFjaCByZXF1aXJlcyBlaXRoZXIgJ3BpZCcsICd0YXJnZXQnLCBvciAn Y29yZUZpbGUnIikKKyAgICAgICAgIGV4cGVjdF9wcm9jZXNzKCJhdHRhY2giKQorICAgICAgICAg ZXhwZWN0X3N0b3AoImF0dGFjaCIpCisgICAgICAgICBleGVjX2FuZF9sb2coY21kKQorKworICAg ICAgICAgIyBBdHRhY2ggcmVzcG9uc2UgZG9lcyBub3QgaGF2ZSBhIGJvZHkuCisgICAgICAgICBy ZXR1cm4gTm9uZQorIAorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9kYXAvbmV4dC5w eSBiL2dkYi9weXRob24vbGliL2dkYi9kYXAvbmV4dC5weQorLS0tIGEvZ2RiL3B5dGhvbi9saWIv Z2RiL2RhcC9uZXh0LnB5CisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL25leHQucHkKK0BA IC03Niw3ICs3Niw3IEBAIGRlZiBzdGVwX2luKAorIEByZXF1ZXN0KCJzdGVwT3V0IikKKyBkZWYg c3RlcF9vdXQoKiwgdGhyZWFkSWQ6IGludCwgc2luZ2xlVGhyZWFkOiBib29sID0gRmFsc2UsICoq YXJncyk6CisgICAgIF9oYW5kbGVfdGhyZWFkX3N0ZXAodGhyZWFkSWQsIHNpbmdsZVRocmVhZCwg VHJ1ZSkKKy0gICAgZXhlY19hbmRfZXhwZWN0X3N0b3AoImZpbmlzaCAmIiwgcHJvcGFnYXRlX2V4 Y2VwdGlvbj1UcnVlKQorKyAgICBleGVjX2FuZF9leHBlY3Rfc3RvcCgiZmluaXNoICYiKQorIAor IAorIEByZXF1ZXN0KCJjb250aW51ZSIpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2Ri L2RhcC9zZXJ2ZXIucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL3NlcnZlci5weQorLS0tIGEv Z2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9zZXJ2ZXIucHkKKysrKyBiL2dkYi9weXRob24vbGliL2dk Yi9kYXAvc2VydmVyLnB5CitAQCAtMTksNiArMTksNyBAQCBpbXBvcnQgaW5zcGVjdAorIGltcG9y dCBqc29uCisgaW1wb3J0IHRocmVhZGluZworIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4 dG1hbmFnZXIKKytmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKyAKKyBpbXBvcnQgZ2RiCisg CitAQCAtNjEwLDExICs2MTEsMjkgQEAgZGVmIHRlcm1pbmF0ZSgqKmFyZ3MpOgorICAgICBleGVj X2FuZF9sb2coImtpbGwiKQorIAorIAorK0Bpbl9nZGJfdGhyZWFkCisrZGVmIF9kaXNjb25uZWN0 X29yX2tpbGwodGVybWluYXRlOiBPcHRpb25hbFtib29sXSk6CisrICAgIGluZiA9IGdkYi5zZWxl Y3RlZF9pbmZlcmlvcigpCisrICAgIGlmIGluZi5jb25uZWN0aW9uIGlzIE5vbmU6CisrICAgICAg ICAjIE5vdGhpbmcgdG8gZG8gaGVyZS4KKysgICAgICAgIHJldHVybgorKyAgICBpZiB0ZXJtaW5h dGUgaXMgTm9uZToKKysgICAgICAgICMgVGhlIGRlZmF1bHQgZGVwZW5kcyBvbiB3aGV0aGVyIHRo ZSBpbmZlcmlvciB3YXMgYXR0YWNoZWQgb3IKKysgICAgICAgICMgbGF1bmNoZWQuCisrICAgICAg ICB0ZXJtaW5hdGUgPSBub3QgaW5mLndhc19hdHRhY2hlZAorKworKyAgICBpZiBpbmYuY29yZWZp bGUgaXMgbm90IE5vbmU6CisrICAgICAgICBleGVjX2FuZF9sb2coImNvcmUtZmlsZSIpCisrICAg IGVsaWYgdGVybWluYXRlOgorKyAgICAgICAgZXhlY19hbmRfbG9nKCJraWxsIikKKysgICAgZWxp ZiBpbmYud2FzX2F0dGFjaGVkOgorKyAgICAgICAgZXhlY19hbmRfbG9nKCJkZXRhY2giKQorKwor KworIEByZXF1ZXN0KCJkaXNjb25uZWN0Iiwgb25fZGFwX3RocmVhZD1UcnVlLCBleHBlY3Rfc3Rv cHBlZD1GYWxzZSkKKyBAY2FwYWJpbGl0eSgic3VwcG9ydFRlcm1pbmF0ZURlYnVnZ2VlIikKKy1k ZWYgZGlzY29ubmVjdCgqLCB0ZXJtaW5hdGVEZWJ1Z2dlZTogYm9vbCA9IEZhbHNlLCAqKmFyZ3Mp OgorLSAgICBpZiB0ZXJtaW5hdGVEZWJ1Z2dlZToKKy0gICAgICAgIHNlbmRfZ2RiX3dpdGhfcmVz cG9uc2UoImtpbGwiKQorK2RlZiBkaXNjb25uZWN0KCosIHRlcm1pbmF0ZURlYnVnZ2VlOiBPcHRp b25hbFtib29sXSA9IE5vbmUsICoqYXJncyk6CisrICAgIHNlbmRfZ2RiX3dpdGhfcmVzcG9uc2Uo bGFtYmRhOiBfZGlzY29ubmVjdF9vcl9raWxsKHRlcm1pbmF0ZURlYnVnZ2VlKSkKKyAgICAgX3Nl cnZlci5zaHV0ZG93bigpCisgCisgCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Rh cC9zdGFydHVwLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9zdGFydHVwLnB5CistLS0gYS9n ZGIvcHl0aG9uL2xpYi9nZGIvZGFwL3N0YXJ0dXAucHkKKysrKyBiL2dkYi9weXRob24vbGliL2dk Yi9kYXAvc3RhcnR1cC5weQorQEAgLTIwNCw3ICsyMDQsNyBAQCBkZWYgbG9nX3N0YWNrKGxldmVs PUxvZ0xldmVsLkRFRkFVTFQpOgorIAorIAorIEBpbl9nZGJfdGhyZWFkCistZGVmIGV4ZWNfYW5k X2xvZyhjbWQsIHByb3BhZ2F0ZV9leGNlcHRpb249RmFsc2UpOgorK2RlZiBleGVjX2FuZF9sb2co Y21kKToKKyAgICAgIiIiRXhlY3V0ZSB0aGUgZ2RiIGNvbW1hbmQgQ01ELgorICAgICBJZiBsb2dn aW5nIGlzIGVuYWJsZWQsIGxvZyB0aGUgY29tbWFuZCBhbmQgaXRzIG91dHB1dC4iIiIKKyAgICAg bG9nKCIrKysgIiArIGNtZCkKK0BAIC0yMTMsMTAgKzIxMywxMCBAQCBkZWYgZXhlY19hbmRfbG9n KGNtZCwgcHJvcGFnYXRlX2V4Y2VwdGlvbj1GYWxzZSk6CisgICAgICAgICBpZiBvdXRwdXQgIT0g IiI6CisgICAgICAgICAgICAgbG9nKCI+Pj4gIiArIG91dHB1dCkKKyAgICAgZXhjZXB0IGdkYi5l cnJvciBhcyBlOgorLSAgICAgICAgaWYgcHJvcGFnYXRlX2V4Y2VwdGlvbjoKKy0gICAgICAgICAg ICByYWlzZSBEQVBFeGNlcHRpb24oc3RyKGUpKSBmcm9tIGUKKy0gICAgICAgIGVsc2U6CistICAg ICAgICAgICAgbG9nX3N0YWNrKCkKKysgICAgICAgICMgRG9uJ3Qgbm9ybWFsbHkgd2FudCB0byBz ZWUgdGhpcywgYXMgaXQgaW50ZXJmZXJlcyB3aXRoIHRoZQorKyAgICAgICAgIyB0ZXN0IHN1aXRl LgorKyAgICAgICAgbG9nX3N0YWNrKExvZ0xldmVsLkZVTEwpCisrICAgICAgICByYWlzZSBEQVBF eGNlcHRpb24oc3RyKGUpKSBmcm9tIGUKKyAKKyAKKyBAaW5fZ2RiX3RocmVhZAorZGlmZiAtLWdp dCBhL2dkYi9weXRob24vcHktYWxsLWV2ZW50cy5kZWYgYi9nZGIvcHl0aG9uL3B5LWFsbC1ldmVu dHMuZGVmCistLS0gYS9nZGIvcHl0aG9uL3B5LWFsbC1ldmVudHMuZGVmCisrKysgYi9nZGIvcHl0 aG9uL3B5LWFsbC1ldmVudHMuZGVmCitAQCAtNDYsMyArNDYsNCBAQCBHREJfUFlfREVGSU5FX0VW RU5UKGV4ZWN1dGFibGVfY2hhbmdlZCkKKyBHREJfUFlfREVGSU5FX0VWRU5UKG5ld19wcm9nc3Bh Y2UpCisgR0RCX1BZX0RFRklORV9FVkVOVChmcmVlX3Byb2dzcGFjZSkKKyBHREJfUFlfREVGSU5F X0VWRU5UKHR1aV9lbmFibGVkKQorK0dEQl9QWV9ERUZJTkVfRVZFTlQoY29yZWZpbGVfY2hhbmdl ZCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWNvcmVmaWxlLmMgYi9nZGIvcHl0aG9uL3B5 LWNvcmVmaWxlLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvcHl0aG9uL3B5LWNvcmVmaWxlLmMKK0BAIC0wLDAgKzEsNzIzIEBACisrLyogUHl0aG9uIGlu dGVyZmFjZSB0byBjb3JlIGZpbGVzLgorKworKyAgIENvcHlyaWdodCAoQykgMjAyNSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIu CisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNs dWRlICJweXRob24taW50ZXJuYWwuaCIKKysjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCisrI2luY2x1 ZGUgIm9ic2VydmFibGUuaCIKKysjaW5jbHVkZSAiaW5mZXJpb3IuaCIKKysjaW5jbHVkZSAiZ2Ri Y29yZS5oIgorKyNpbmNsdWRlICJnZGJzdXBwb3J0L3JzcC1sb3cuaCIKKysjaW5jbHVkZSAicHkt ZXZlbnQuaCIKKysKKysvKiBBIGdkYi5Db3JlZmlsZSBvYmplY3QuICAqLworKworK3N0cnVjdCBj b3JlZmlsZV9vYmplY3QKKyt7CisrICBQeU9iamVjdF9IRUFECisrCisrICAvKiBUaGUgaW5mZXJp b3IgdGhpcyBjb3JlIGZpbGUgaXMgYXR0YWNoZWQgdG8uICBUaGlzIHdpbGwgYmUgc2V0IHRvIE5V TEwKKysgICAgIHdoZW4gdGhlIGluZmVyaW9yIGlzIGRlbGV0ZWQsIG9yIGlmIGEgZGlmZmVyZW50 IGNvcmUgZmlsZSBpcyBsb2FkZWQKKysgICAgIGZvciB0aGUgaW5mZXJpb3IuICBXaGVuIHRoaXMg aXMgTlVMTCB0aGUgZ2RiLkNvcmVmaWxlIG9iamVjdCBpcworKyAgICAgY29uc2lkZXJlZCBpbnZh bGlkLiovCisrICBzdHJ1Y3QgaW5mZXJpb3IgKmluZmVyaW9yOworKworKyAgLyogRGljdGlvbmFy eSBob2xkaW5nIHVzZXItYWRkZWQgYXR0cmlidXRlcy4gIFRoaXMgaXMgdGhlIF9fZGljdF9fCisr ICAgICBhdHRyaWJ1dGUgb2YgdGhlIG9iamVjdC4gIFRoaXMgaXMgYW4gb3duaW5nIHJlZmVyZW5j ZS4gICovCisrICBQeU9iamVjdCAqZGljdDsKKysKKysgIC8qIEEgVHVwbGUgb2YgZ2RiLkNvcmVm aWxlTWFwcGVkRmlsZSBvYmplY3RzLiAgVGhpcyB0dXBsZSBpcyBvbmx5IGNyZWF0ZWQKKysgICAg IHRoZSBmaXJzdCB0aW1lIHRoZSB1c2VyIGNhbGxzIGdkYi5Db3JlZmlsZS5tYXBwZWRfZmlsZXMo KSwgdGhlIHJlc3VsdAorKyAgICAgaXMgY2FjaGVkIGhlcmUuICBJZiB0aGlzIHBvaW50ZXIgaXMg bm90IE5VTEwgdGhlbiB0aGlzIGlzIGFuIG93bmluZworKyAgICAgcG9pbnRlciAoaS5lLiB0aGlz IG93bnMgYSByZWZlcmVuY2UgdG8gdGhlIFR1cGxlKS4gICovCisrICBQeU9iamVjdCAqbWFwcGVk X2ZpbGVzOworK307CisrCisrZXh0ZXJuIFB5VHlwZU9iamVjdCBjb3JlZmlsZV9vYmplY3RfdHlw ZQorKyAgICBDUFlDSEVDS0VSX1RZUEVfT0JKRUNUX0ZPUl9UWVBFREVGICgiY29yZWZpbGVfb2Jq ZWN0Iik7CisrCisrLyogQSBnZGIuQ29yZWZpbGVNYXBwZWQgb2JqZWN0LiAgKi8KKysKKytzdHJ1 Y3QgY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0CisreworKyAgUHlPYmplY3RfSEVBRAorKwor KyAgLyogVGhlIG5hbWUgb2YgYSBmaWxlIHRoYXQgd2FzIG1hcHBlZCB3aGVuIHRoZSBjb3JlIGZp bGUgd2FzIGNyZWF0ZWQuCisrICAgICBUaGlzIGlzIGEgJ3N0cicgb2JqZWN0LiAgKi8KKysgIFB5 T2JqZWN0ICpmaWxlbmFtZTsKKysKKysgIC8qIFRoZSBidWlsZC1pZCBvZiBhIGZpbGUgdGhhdCB3 YXMgbWFwcGVkIHdoZW4gdGhlIGNvcmUgZmlsZSB3YXMKKysgICAgIGNyZWF0ZWQuICBUaGlzIGlz IGVpdGhlciBhICdzdHInIGlmIHRoZSBmaWxlIGhhZCBhIGJ1aWxkLWlkLCBvcgorKyAgICAgJ05v bmUnIGlmIHRoZXJlIHdhcyBubyBidWlsZC1pZCBmb3IgdGhpcyBmaWxlLiAgKi8KKysgIFB5T2Jq ZWN0ICpidWlsZF9pZDsKKysKKysgIC8qIEEgTGlzdCBvZiBnZGIuQ29yZWZpbGVNYXBwZWRGaWxl UmVnaW9uIG9iamVjdHMuICAqLworKyAgUHlPYmplY3QgKnJlZ2lvbnM7CisrCisrICAvKiBUcnVl IGlmIHRoaXMgcmVwcmVzZW50cyB0aGUgbWFpbiBleGVjdXRhYmxlIGZyb20gd2hpY2ggdGhlIGNv cmUgZmlsZQorKyAgICAgd2FzIGNyZWF0ZWQuICAqLworKyAgYm9vbCBpc19tYWluX2V4ZWNfcDsK Kyt9OworKworK2V4dGVybiBQeVR5cGVPYmplY3QgY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0 X3R5cGUKKysgICAgQ1BZQ0hFQ0tFUl9UWVBFX09CSkVDVF9GT1JfVFlQRURFRiAoImNvcmVmaWxl X21hcHBlZF9maWxlX29iamVjdCIpOworKworKy8qIEEgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJl Z2lvbiBvYmplY3QuICAqLworKworK3N0cnVjdCBjb3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25f b2JqZWN0CisreworKyAgUHlPYmplY3RfSEVBRAorKworKyAgLyogVGhlIHN0YXJ0IGFuZCBlbmQg YWRkcmVzc2VzIGZvciB0aGlzIG1hcHBpbmcsIHRoZXNlIGFyZSBhZGRyZXNzZXMKKysgICAgIHdp dGhpbiB0aGUgaW5mZXJpb3IncyBhZGRyZXNzIHNwYWNlLiAgKi8KKysgIENPUkVfQUREUiBzdGFy dDsKKysgIENPUkVfQUREUiBlbmQ7CisrCisrICAvKiBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUgbWFw cGVkIGZpbGUgZm9yIHRoaXMgbWFwcGluZy4gICovCisrICBVTE9OR0VTVCBmaWxlX29mZnNldDsK Kyt9OworKworK2V4dGVybiBQeVR5cGVPYmplY3QgY29yZWZpbGVfbWFwcGVkX2ZpbGVfcmVnaW9u X29iamVjdF90eXBlCisrICAgIENQWUNIRUNLRVJfVFlQRV9PQkpFQ1RfRk9SX1RZUEVERUYgKCJj b3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0Iik7CisrCisrLyogQ2xlYXIgdGhlIGlu ZmVyaW9yIHBvaW50ZXIgaW4gYSBDb3JlZmlsZSBvYmplY3QgT0JKIHdoZW4gYW4gaW5mZXJpb3Ig aXMKKysgICBkZWxldGVkLiAgKi8KKysKKytzdHJ1Y3QgaW5mZXJpb3JfY29yZWZpbGVfZGVsZXRl cgorK3sKKysgIHZvaWQgb3BlcmF0b3IoKSAoY29yZWZpbGVfb2JqZWN0ICpvYmopCisrICB7Cisr ICAgIGlmICghZ2RiX3B5dGhvbl9pbml0aWFsaXplZCkKKysgICAgICByZXR1cm47CisrCisrICAg IGdkYnB5X2VudGVyIGVudGVyX3B5OworKworKyAgICAvKiBXaGVuIE9CSkVDVCBnb2VzIG91dCBv ZiBzY29wZSB0aGlzIHdpbGwgUHlfREVDUkVGIG9uIE9CSi4gICovCisrICAgIGdkYnB5X3JlZjxj b3JlZmlsZV9vYmplY3Q+IG9iamVjdCAob2JqKTsKKysKKysgICAgLyogQ2xlYXJpbmcgdGhlIGlu ZmVyaW9yIHBvaW50ZXIgbWFya3MgdGhlIGdkYi5Db3JlZmlsZSBhcyBpbnZhbGlkLiAgKi8KKysg ICAgb2JqZWN0LT5pbmZlcmlvciA9IG51bGxwdHI7CisrICB9CisrfTsKKysKKysvKiBTdG9yZSBh IGdkYi5Db3JlZmlsZSBvYmplY3QgaW4gYW4gaW5mZXJpb3IncyByZWdpc3RyeS4gICovCisrCisr c3RhdGljIGNvbnN0IHJlZ2lzdHJ5PGluZmVyaW9yPjo6a2V5PGNvcmVmaWxlX29iamVjdCwKKysJ CQkJICAgICBpbmZlcmlvcl9jb3JlZmlsZV9kZWxldGVyPgorKyAgICAgY2ZweV9pbmZlcmlvcl9j b3JlZmlsZV9kYXRhX2tleTsKKysKKysvKiBTZWUgcHl0aG9uLWludGVybmFsLmguICAqLworKwor K2dkYnB5X3JlZjw+CisrZ2RicHlfY29yZV9maWxlX2Zyb21faW5mZXJpb3IgKGluZmVyaW9yICpp bmYpCisreworKyAgZ2RiX2Fzc2VydCAoaW5mICE9IG51bGxwdHIpOworKyAgZ2RiX2Fzc2VydCAo aW5mLT5wc3BhY2UgIT0gbnVsbHB0cik7CisrCisrICBwcm9ncmFtX3NwYWNlICpwc3BhY2UgPSBp bmYtPnBzcGFjZTsKKysKKysgIGlmIChwc3BhY2UtPmNvcmVfYmZkICgpID09IG51bGxwdHIpCisr ICAgIHJldHVybiBnZGJweV9yZWY8Pjo6bmV3X3JlZmVyZW5jZSAoUHlfTm9uZSk7CisrCisrICBQ eU9iamVjdCAqcmVzdWx0ID0gKFB5T2JqZWN0ICopIGNmcHlfaW5mZXJpb3JfY29yZWZpbGVfZGF0 YV9rZXkuZ2V0IChpbmYpOworKyAgaWYgKHJlc3VsdCA9PSBudWxscHRyKQorKyAgICB7CisrICAg ICAgZ2RicHlfcmVmPGNvcmVmaWxlX29iamVjdD4gb2JqZWN0CisrCShQeU9iamVjdF9OZXcgKGNv cmVmaWxlX29iamVjdCwgJmNvcmVmaWxlX29iamVjdF90eXBlKSk7CisrICAgICAgaWYgKG9iamVj dCA9PSBudWxscHRyKQorKwlyZXR1cm4gbnVsbHB0cjsKKysKKysgICAgICAvKiBFbnN1cmUgdGhl ICdpbmZlcmlvcicgZmllbGQgaXMgc2V0IHRvIE5VTEwuICBJZiB0aGUgUHlEaWN0X05ldworKwkg Y2FsbCBmYWlscyB0aGVuIHRoZSBnZGIuQ29yZWZpbGUgd2lsbCBiZSBkaXNjYXJkZWQgYW5kCisr CSBjZnB5X2RlYWxsb2Mgd2lsbCBiZSBjYWxsZWQsIHdoaWNoIHJlcXVpcmVzIHRoYXQgdGhlICdp bmZlcmlvcicgYmUKKysJIHNldCB0byBOVUxMLiAgKi8KKysgICAgICBvYmplY3QtPmluZmVyaW9y ID0gbnVsbHB0cjsKKysgICAgICBvYmplY3QtPm1hcHBlZF9maWxlcyA9IG51bGxwdHI7CisrICAg ICAgb2JqZWN0LT5kaWN0ID0gUHlEaWN0X05ldyAoKTsKKysgICAgICBpZiAob2JqZWN0LT5kaWN0 ID09IG51bGxwdHIpCisrCXJldHVybiBudWxscHRyOworKworKyAgICAgIC8qIE5vdyB0aGF0IHRo ZSBnZGIuQ29yZWZpbGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpc2VkIGFuZCB3ZQor Kwkga25vdyB0aGF0IGl0IGlzIGdvaW5nIHRvIGJlIHBhc3NlZCBiYWNrIHRvIHRoZSB1c2VyLCBt b3ZlIGl0IG91dAorKwkgb2YgdGhlIGludmFsaWQgc3RhdGUgYnkgc2V0dGluZyB0aGUgJ2luZmVy aW9yJyBmaWVsZCB0byBhIG5vbiBOVUxMCisrCSB2YWx1ZS4gICovCisrICAgICAgb2JqZWN0LT5p bmZlcmlvciA9IGluZjsKKysgICAgICBjZnB5X2luZmVyaW9yX2NvcmVmaWxlX2RhdGFfa2V5LnNl dCAoaW5mLCBvYmplY3QuZ2V0ICgpKTsKKysgICAgICByZXN1bHQgPSAoUHlPYmplY3QgKikgb2Jq ZWN0LnJlbGVhc2UgKCk7CisrICAgIH0KKysKKysgIHJldHVybiBnZGJweV9yZWY8Pjo6bmV3X3Jl ZmVyZW5jZSAocmVzdWx0KTsKKyt9CisrCisrLyogUmV0dXJuIHRydWUgaWYgT0JKIGlzIHZhbGlk LiAgKi8KKysKKytzdGF0aWMgYm9vbAorK2NmcHlfY29yZWZpbGVfb2JqZWN0X2lzX3ZhbGlkIChj b25zdCBjb3JlZmlsZV9vYmplY3QgKm9iaikKKyt7CisrICBpZiAob2JqLT5pbmZlcmlvciA9PSBu dWxscHRyKQorKyAgICByZXR1cm4gZmFsc2U7CisrCisrICBnZGJfYXNzZXJ0IChvYmotPmluZmVy aW9yLT5wc3BhY2UgIT0gbnVsbHB0cik7CisrCisrICByZXR1cm4gb2JqLT5pbmZlcmlvci0+cHNw YWNlLT5jb3JlX2JmZCAoKSAhPSBudWxscHRyOworK30KKysKKysvKiBSZXF1aXJlIHRoYXQgQ09S RUZJTEVfT0JKIGJlIGEgdmFsaWQgY29yZSBmaWxlLiAgQSB2YWxpZCBjb3JlIGZpbGUKKysgICBv YmplY3QgaGFzIGEgdmFsaWQgcHJvZ3JhbSBzcGFjZSwgYW5kIHRoZSBwcm9ncmFtIHNwYWNlIGhh cyBhIGNvcmUgZmlsZQorKyAgIGxvYWRlZCBpbnRvIGl0LiAgKi8KKysjZGVmaW5lIENGUFlfUkVR VUlSRV9WQUxJRChjb3JlZmlsZV9vYmopCQkJCVwKKysgIGRvIHsJCQkJCQkJCQlcCisrICAgIGlm ICghY2ZweV9jb3JlZmlsZV9vYmplY3RfaXNfdmFsaWQgKGNvcmVmaWxlX29iaikpCQkJXAorKyAg ICAgIHsJCQkJCQkJCQlcCisrCVB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLAkJ CQlcCisrCQkJIF8oIkNvcmVmaWxlIG5vIGxvbmdlciBleGlzdHMuIikpOwkJXAorKwlyZXR1cm4g bnVsbHB0cjsJCQkJCQkJXAorKyAgICAgIH0JCQkJCQkJCQlcCisrICB9IHdoaWxlICgwKQorKwor Ky8qIFJlYWQgdGhlIGdkYi5Db3JlZmlsZS5maWxlbmFtZSBhdHRyaWJ1dGUuICAqLworKworK3N0 YXRpYyBQeU9iamVjdCAqCisrY2ZweV9nZXRfZmlsZW5hbWUgKFB5T2JqZWN0ICpzZWxmLCB2b2lk ICpjbG9zdXJlKQorK3sKKysgIGNvcmVmaWxlX29iamVjdCAqb2JqID0gKGNvcmVmaWxlX29iamVj dCAqKSBzZWxmOworKworKyAgQ0ZQWV9SRVFVSVJFX1ZBTElEIChvYmopOworKworKyAgLyogSWYg dGhlIHByb2dyYW0gc3BhY2UncyBjb3JlIGZpbGUgaGFkIGJlZW4gY2xlYXJlZCwgdGhlbiB0aGlz IENvcmVmaWxlCisrICAgICBvYmplY3Qgd291bGQgaGF2ZSBiZWVuIGludmFsaWRhdGVkLiAgKi8K KysgIGJmZCAqYWJmZCA9IG9iai0+aW5mZXJpb3ItPnBzcGFjZS0+Y29yZV9iZmQgKCk7CisrICBn ZGJfYXNzZXJ0IChhYmZkICE9IG51bGxwdHIpOworKworKyAgcmV0dXJuIGhvc3Rfc3RyaW5nX3Rv X3B5dGhvbl9zdHJpbmcgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKS5yZWxlYXNlICgpOworK30K KysKKysvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIuQ29yZWZpbGUuaXNfdmFsaWQgKHNlbGYpIC0+ IEJvb2xlYW4uCisrICAgUmV0dXJucyBUcnVlIGlmIHRoaXMgY29yZSBmaWxlIG9iamVjdCBpcyBh c3NvY2lhdGVkIHdpdGggYSBwcm9ncmFtIHNwYWNlCisrICAgdGhhdCBzdGlsbCBleGlzdHMsIGFu IHRoZSBwcm9ncmFtIHNwYWNlIHN0aWxsIGhhcyBhIGNvcmUgZmlsZSBsb2FkZWQuICAqLworKwor K3N0YXRpYyBQeU9iamVjdCAqCisrY2ZweV9pc192YWxpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2Jq ZWN0ICphcmdzKQorK3sKKysgIGNvcmVmaWxlX29iamVjdCAqb2JqID0gKGNvcmVmaWxlX29iamVj dCAqKSBzZWxmOworKworKyAgaWYgKCFjZnB5X2NvcmVmaWxlX29iamVjdF9pc192YWxpZCAob2Jq KSkKKysgICAgUHlfUkVUVVJOX0ZBTFNFOworKworKyAgUHlfUkVUVVJOX1RSVUU7CisrfQorKwor Ky8qIEltcGxlbWVudCBnZGIuQ29yZWZpbGUubWFwcGVkX2ZpbGVzICgpLiAgUmV0dXJuIGEgTGlz dCBvZgorKyAgIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGUgb2JqZWN0cy4gIFRoZSBsaXN0IGlzIGNy ZWF0ZWQgdGhlIGZpcnN0IHRpbWUKKysgICB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIGFuZCB0aGVu IGNhY2hlZCB3aXRoaW4gdGhlIGdkYi5Db3JlZmlsZSBvYmplY3QsCisrICAgZnV0dXJlIGNhbGxz IGp1c3QgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIGxpc3QuICAqLworKworK3N0YXRp YyBQeU9iamVjdCAqCisrY2ZweV9tYXBwZWRfZmlsZXMgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqYXJncykKKyt7CisrICBjb3JlZmlsZV9vYmplY3QgKm9iaiA9IChjb3JlZmlsZV9vYmplY3Qg Kikgc2VsZjsKKysKKysgIENGUFlfUkVRVUlSRV9WQUxJRCAob2JqKTsKKysKKysgIC8qIElmIHdl IGhhdmUgYWxyZWFkeSBjcmVhdGVkIHRoZSBMaXN0IHRoZW4ganVzdCByZXR1cm4gYW5vdGhlciBy ZWZlcmVuY2UKKysgICAgIHRvIHRoZSBleGlzdGluZyBsaXN0LiAgKi8KKysgIGlmIChvYmotPm1h cHBlZF9maWxlcyAhPSBudWxscHRyKQorKyAgICB7CisrICAgICAgUHlfSU5DUkVGIChvYmotPm1h cHBlZF9maWxlcyk7CisrICAgICAgcmV0dXJuIG9iai0+bWFwcGVkX2ZpbGVzOworKyAgICB9Cisr CisrICAvKiBHZXQgYWxsIHRoZSBtYXBwaW5nIGRhdGEgZnJvbSBHREIuICAqLworKyAgc3RkOjp2 ZWN0b3I8Y29yZV9tYXBwZWRfZmlsZT4gbWFwcGVkX2ZpbGVzOworKyAgdHJ5CisrICAgIHsKKysg ICAgICBtYXBwZWRfZmlsZXMKKysJPSBnZGJfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgKG9iai0+ aW5mZXJpb3ItPmFyY2ggKCksCisrCQkJCSAgICAgICBjdXJyZW50X3Byb2dyYW1fc3BhY2UtPmNv cmVfYmZkICgpKTsKKysgICAgfQorKyAgY2F0Y2ggKGNvbnN0IGdkYl9leGNlcHRpb24gJmV4Y2Vw dCkKKysgICAgeworKyAgICAgIHJldHVybiBnZGJweV9oYW5kbGVfZ2RiX2V4Y2VwdGlvbiAobnVs bHB0ciwgZXhjZXB0KTsKKysgICAgfQorKworKyAgLyogQ3JlYXRlIGEgbmV3IGxpc3QgdG8gaG9s ZCB0aGUgcmVzdWx0cy4gICovCisrICBnZGJweV9yZWY8PiB0dXBsZSAoUHlUdXBsZV9OZXcgKG1h cHBlZF9maWxlcy5zaXplICgpKSk7CisrICBpZiAodHVwbGUgPT0gbnVsbHB0cikKKysgICAgcmV0 dXJuIG51bGxwdHI7CisrCisrICAvKiBDcmVhdGUgZWFjaCBnZGIuQ29yZWZpbGVNYXBwZWRGaWxl IG9iamVjdC4gICovCisrICBQeV9zc2l6ZV90IHR1cGxlX2lkeCA9IDA7CisrICBmb3IgKGNvbnN0 IGNvcmVfbWFwcGVkX2ZpbGUgJmZpbGUgOiBtYXBwZWRfZmlsZXMpCisrICAgIHsKKysgICAgICAv KiBUaGUgZmlsZW5hbWUgJ3N0cicgb2JqZWN0LiAgKi8KKysgICAgICBnZGJweV9yZWY8PiBmaWxl bmFtZQorKwk9IGhvc3Rfc3RyaW5nX3RvX3B5dGhvbl9zdHJpbmcgKGZpbGUuZmlsZW5hbWUuY19z dHIgKCkpOworKyAgICAgIGlmIChmaWxlbmFtZSA9PSBudWxscHRyKQorKwlyZXR1cm4gbnVsbHB0 cjsKKysKKysgICAgICAvKiBUaGUgYnVpbGQtaWQgb2JqZWN0LiAgRWl0aGVyIGEgJ3N0cicgb3Ig J05vbmUnLiAgKi8KKysgICAgICBnZGJweV9yZWY8PiBidWlsZF9pZDsKKysgICAgICBpZiAoZmls ZS5idWlsZF9pZCAhPSBudWxscHRyKQorKwl7CisrCSAgc3RkOjpzdHJpbmcgaGV4X2Zvcm0gPSBi aW4yaGV4IChmaWxlLmJ1aWxkX2lkLT5kYXRhLAorKwkJCQkJICBmaWxlLmJ1aWxkX2lkLT5zaXpl KTsKKysKKysJICBidWlsZF9pZAorKwkgICAgPSBob3N0X3N0cmluZ190b19weXRob25fc3RyaW5n IChoZXhfZm9ybS5jX3N0ciAoKSk7CisrCSAgaWYgKGJ1aWxkX2lkID09IG51bGxwdHIpCisrCSAg ICByZXR1cm4gbnVsbHB0cjsKKysJfQorKyAgICAgIGVsc2UKKysJYnVpbGRfaWQgPSBnZGJweV9y ZWY8Pjo6bmV3X3JlZmVyZW5jZSAoUHlfTm9uZSk7CisrCisrICAgICAgLyogTGlzdCB0byBob2xk IGFsbCB0aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbiBvYmplY3RzLiAgKi8KKysgICAg ICBnZGJweV9yZWY8PiByZWdpb25zIChQeVR1cGxlX05ldyAoZmlsZS5yZWdpb25zLnNpemUgKCkp KTsKKysgICAgICBpZiAocmVnaW9ucyA9PSBudWxscHRyKQorKwlyZXR1cm4gbnVsbHB0cjsKKysK KysgICAgICAvKiBDcmVhdGUgYWxsIHRoZSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uIG9i amVjdHMuICAqLworKyAgICAgIFB5X3NzaXplX3QgcmVnaW9uc19pZHggPSAwOworKyAgICAgIGZv ciAoY29uc3QgY29yZV9tYXBwZWRfZmlsZTo6cmVnaW9uICZyIDogZmlsZS5yZWdpb25zKQorKwl7 CisrCSAgLyogQWN0dWFsbHkgY3JlYXRlIHRoZSBvYmplY3QuICAqLworKwkgIGdkYnB5X3JlZjxj b3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0PiByZWdpb25fb2JqCisrCSAgICAoUHlP YmplY3RfTmV3IChjb3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0LAorKwkJCSAgICZj b3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0X3R5cGUpKTsKKysJICBpZiAocmVnaW9u X29iaiA9PSBudWxscHRyKQorKwkgICAgcmV0dXJuIG51bGxwdHI7CisrCisrCSAgLyogSW5pdGlh bGlzZSB0aGUgb2JqZWN0LiAgKi8KKysJICByZWdpb25fb2JqLT5zdGFydCA9IHIuc3RhcnQ7Cisr CSAgcmVnaW9uX29iai0+ZW5kID0gci5lbmQ7CisrCSAgcmVnaW9uX29iai0+ZmlsZV9vZmZzZXQg PSByLmZpbGVfb2ZzOworKworKwkgIC8qIEFkZCB0byB0aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmls ZVJlZ2lvbiBsaXN0LiAgKi8KKysJICBpZiAoUHlUdXBsZV9TZXRJdGVtIChyZWdpb25zLmdldCAo KSwgcmVnaW9uc19pZHgrKywKKysJCQkgICAgICAgKFB5T2JqZWN0ICopIHJlZ2lvbl9vYmoucmVs ZWFzZSAoKSkgPCAwKQorKwkgICAgcmV0dXJuIG51bGxwdHI7CisrCX0KKysKKysgICAgICAvKiBB Y3R1YWxseSBjcmVhdGUgdGhlIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGUgb2JqZWN0LiAgKi8KKysg ICAgICBnZGJweV9yZWY8Y29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0PiBlbnRyeQorKwkoUHlP YmplY3RfTmV3IChjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3QsCisrCQkgICAgICAgJmNvcmVm aWxlX21hcHBlZF9maWxlX29iamVjdF90eXBlKSk7CisrICAgICAgaWYgKGVudHJ5ID09IG51bGxw dHIpCisrCXJldHVybiBudWxscHRyOworKworKyAgICAgIC8qIEluaXRpYWxpc2UgdGhlIG9iamVj dC4gICovCisrICAgICAgZW50cnktPmZpbGVuYW1lID0gZmlsZW5hbWUucmVsZWFzZSAoKTsKKysg ICAgICBlbnRyeS0+YnVpbGRfaWQgPSBidWlsZF9pZC5yZWxlYXNlICgpOworKyAgICAgIGVudHJ5 LT5yZWdpb25zID0gcmVnaW9ucy5yZWxlYXNlICgpOworKyAgICAgIGVudHJ5LT5pc19tYWluX2V4 ZWNfcCA9IGZpbGUuaXNfbWFpbl9leGVjOworKworKyAgICAgIC8qIEFkZCB0byB0aGUgZ2RiLkNv cmVmaWxlTWFwcGVkRmlsZSBsaXN0LiAgKi8KKysgICAgICBpZiAoUHlUdXBsZV9TZXRJdGVtICh0 dXBsZS5nZXQgKCksIHR1cGxlX2lkeCsrLAorKwkJCSAgIChQeU9iamVjdCAqKSBlbnRyeS5yZWxl YXNlICgpKSA8IDApCisrCXJldHVybiBudWxscHRyOworKyAgICB9CisrCisrICAvKiBObyBlcnJv cnMuICBNb3ZlIHRoZSByZWZlcmVuY2UgY3VycmVudGx5IGluIExJU1QgaW50byB0aGUgQ29yZWZp bGUKKysgICAgIG9iamVjdCBpdHNlbGYuICBUaGVuIGNyZWF0ZSBhIG5ldyByZWZlcmVuY2UgYW5k IGhhbmQgdGhpcyBiYWNrIHRvIHRoZQorKyAgICAgdXNlci4gICovCisrICBvYmotPm1hcHBlZF9m aWxlcyA9IHR1cGxlLnJlbGVhc2UgKCk7CisrICBQeV9JTkNSRUYgKG9iai0+bWFwcGVkX2ZpbGVz KTsKKysgIHJldHVybiBvYmotPm1hcHBlZF9maWxlczsKKyt9CisrCisrLyogRW1pdCBhIENvcmVm aWxlQ2hhbmdlZEV2ZW50IGV2ZW50LCBJTkYgaXMgdGhlIGluZmVyaW9yIGluIHdoaWNoIHRoZSBj b3JlCisrICAgZmlsZSBjaGFuZ2VkLiAgUmV0dXJuIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2 ZSB2YWx1ZSBvbiBlcnJvci4gICovCisrCisrc3RhdGljIGludAorK2VtaXRfY29yZWZpbGVfY2hh bmdlZF9ldmVudCAoaW5mZXJpb3IgKmluZikKKyt7CisrICAvKiBJZiB0aGVyZSBhcmUgbm8gbGlz dGVuZXJzIHRoZW4gd2UgYXJlIGRvbmUuICAqLworKyAgaWYgKGV2cmVncHlfbm9fbGlzdGVuZXJz X3AgKGdkYl9weV9ldmVudHMuY29yZWZpbGVfY2hhbmdlZCkpCisrICAgIHJldHVybiAwOworKwor KyAgZ2RicHlfcmVmPD4gZXZlbnRfb2JqCisrICAgID0gY3JlYXRlX2V2ZW50X29iamVjdCAoJmNv cmVmaWxlX2NoYW5nZWRfZXZlbnRfb2JqZWN0X3R5cGUpOworKyAgaWYgKGV2ZW50X29iaiA9PSBu dWxscHRyKQorKyAgICByZXR1cm4gLTE7CisrCisrICBnZGJweV9yZWY8aW5mZXJpb3Jfb2JqZWN0 PiBpbmZfb2JqID0gaW5mZXJpb3JfdG9faW5mZXJpb3Jfb2JqZWN0IChpbmYpOworKyAgaWYgKGlu Zl9vYmogPT0gbnVsbHB0cgorKyAgICAgIHx8IGV2cHlfYWRkX2F0dHJpYnV0ZSAoZXZlbnRfb2Jq LmdldCAoKSwgImluZmVyaW9yIiwKKysJCQkgICAgIChQeU9iamVjdCAqKSBpbmZfb2JqLmdldCAo KSkgPCAwKQorKyAgICByZXR1cm4gLTE7CisrCisrICByZXR1cm4gZXZweV9lbWl0X2V2ZW50IChl dmVudF9vYmouZ2V0ICgpLCBnZGJfcHlfZXZlbnRzLmNvcmVmaWxlX2NoYW5nZWQpOworK30KKysK KysvKiBDYWxsYmFjayBmcm9tIGdkYjo6b2JzZXJ2ZXJzOjpjb3JlX2ZpbGVfY2hhbmdlZC4gIFRo ZSBjb3JlIGZpbGUgZm9yCisrICAgSU5GIGhhcyBiZWVuIGNoYW5nZWQuICAqLworKworK3N0YXRp YyB2b2lkCisrY2ZweV9jb3JlZmlsZV9jaGFuZ2VkIChpbmZlcmlvciAqaW5mKQorK3sKKysgIC8q IEl0J3Mgc2FmZSB0byBkbyB0aGlzIGV2ZW4gaWYgUHl0aG9uIGlzIG5vdCBpbml0aWFsaXplZCwg YnV0IHRoZXJlCisrICAgICBzaG91bGQgYmUgbm90aGluZyB0byBjbGVhciBpbiB0aGF0IGNhc2Uu ICAqLworKyAgY2ZweV9pbmZlcmlvcl9jb3JlZmlsZV9kYXRhX2tleS5jbGVhciAoaW5mKTsKKysK KysgIGlmICghZ2RiX3B5dGhvbl9pbml0aWFsaXplZCkKKysgICAgcmV0dXJuOworKworKyAgZ2Ri cHlfZW50ZXIgZW50ZXJfcHk7CisrCisrICBpZiAoZW1pdF9jb3JlZmlsZV9jaGFuZ2VkX2V2ZW50 IChpbmYpIDwgMCkKKysgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisrfQorKworKy8qIENhbGxl ZCB3aGVuIGEgZ2RiLkNvcmVmaWxlIGlzIGRlc3Ryb3llZC4gICovCisrCisrc3RhdGljIHZvaWQK KytjZnB5X2RlYWxsb2MgKFB5T2JqZWN0ICpvYmopCisreworKyAgY29yZWZpbGVfb2JqZWN0ICpj b3JlZmlsZSA9IChjb3JlZmlsZV9vYmplY3QgKikgb2JqOworKworKyAgLyogRXZlcnkgZ2RiLkNv cmVmaWxlIGlzIGNhY2hlZCBpbiBhbiBpbmZlcmlvcidzIHJlZ2lzdHJ5LiAgVGhlIG9ubHkgd2F5 CisrICAgICBmb3IgYSBnZGIuQ29yZWZpbGUgdG8gYmUgZGVhbGxvY2F0ZWQgaXMgdG8gcmVtb3Zl IHRoZSBvYmplY3QgcmVmZXJlbmNlCisrICAgICBmcm9tIHRoZSByZWdpc3RyeSAoYW5kIGRlYyBp dHMgcmVmIGNvdW50KSwgYnV0IGJlZm9yZSB3ZSBkbyB0aGF0LCB3ZQorKyAgICAgc2V0IHRoZSBv YmplY3QncyBpbmZlcmlvciBwb2ludGVyIHRvIE5VTEwuICAqLworKyAgZ2RiX2Fzc2VydCAoY29y ZWZpbGUtPmluZmVyaW9yID09IG51bGxwdHIpOworKworKyAgUHlfWERFQ1JFRiAoY29yZWZpbGUt PmRpY3QpOworKyAgUHlfWERFQ1JFRiAoY29yZWZpbGUtPm1hcHBlZF9maWxlcyk7CisrCisrICBQ eV9UWVBFIChvYmopLT50cF9mcmVlIChvYmopOworK30KKysKKysvKiBfX3JlcHJfXyBpbXBsZW1l bnRhdGlvbiBmb3IgZ2RiLkNvcmVmaWxlLiAgKi8KKysKKytzdGF0aWMgUHlPYmplY3QgKgorK2Nm cHlfcmVwciAoUHlPYmplY3QgKnNlbGYpCisreworKyAgY29yZWZpbGVfb2JqZWN0ICpvYmogPSAo Y29yZWZpbGVfb2JqZWN0ICopIHNlbGY7CisrCisrICBpZiAoIWNmcHlfY29yZWZpbGVfb2JqZWN0 X2lzX3ZhbGlkIChvYmopKQorKyAgICByZXR1cm4gZ2RiX3B5X2ludmFsaWRfb2JqZWN0X3JlcHIg KHNlbGYpOworKworKyAgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlID0gb2JqLT5pbmZlcmlvci0+cHNw YWNlOworKyAgZ2RiX2Fzc2VydCAocHNwYWNlICE9IG51bGxwdHIpOworKyAgcmV0dXJuIFB5VW5p Y29kZV9Gcm9tRm9ybWF0ICgiPCVzIGluZmVyaW9yPSVkIGZpbGVuYW1lPSclcyc+IiwKKysJCQkg ICAgICAgUHlfVFlQRSAoc2VsZiktPnRwX25hbWUsCisrCQkJICAgICAgIG9iai0+aW5mZXJpb3It Pm51bSwKKysJCQkgICAgICAgYmZkX2dldF9maWxlbmFtZSAocHNwYWNlLT5jb3JlX2JmZCAoKSkp OworK30KKysKKysMCisrCisrLyogQ2FsbGVkIHdoZW4gYSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxl IGlzIGRlc3Ryb3llZC4gICovCisrCisrc3RhdGljIHZvaWQKKytjZm1mcHlfZGVhbGxvYyAoUHlP YmplY3QgKm9iaikKKyt7CisrICBjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3QgKm1hcHBlZF9m aWxlCisrICAgID0gKGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdCAqKSBvYmo7CisrCisrICBQ eV9YREVDUkVGIChtYXBwZWRfZmlsZS0+ZmlsZW5hbWUpOworKyAgUHlfWERFQ1JFRiAobWFwcGVk X2ZpbGUtPmJ1aWxkX2lkKTsKKysgIFB5X1hERUNSRUYgKG1hcHBlZF9maWxlLT5yZWdpb25zKTsK KysKKysgIFB5X1RZUEUgKG9iaiktPnRwX2ZyZWUgKG9iaik7CisrfQorKworKy8qIFJlYWQgdGhl IGdkYi5Db3JlZmlsZU1hcHBlZEZpbGUuZmlsZW5hbWUgYXR0cmlidXRlLiAgKi8KKysKKytzdGF0 aWMgUHlPYmplY3QgKgorK2NmbWZweV9nZXRfZmlsZW5hbWUgKFB5T2JqZWN0ICpzZWxmLCB2b2lk ICpjbG9zdXJlKQorK3sKKysgIGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdCAqb2JqCisrICAg ID0gKGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdCAqKSBzZWxmOworKworKyAgZ2RiX2Fzc2Vy dCAob2JqLT5maWxlbmFtZSAhPSBudWxscHRyKTsKKysKKysgIFB5X0lOQ1JFRiAob2JqLT5maWxl bmFtZSk7CisrICByZXR1cm4gb2JqLT5maWxlbmFtZTsKKyt9CisrCisrLyogUmVhZCB0aGUgZ2Ri LkNvcmVmaWxlTWFwcGVkRmlsZS5idWlsZF9pZCBhdHRyaWJ1dGUuICAqLworKworK3N0YXRpYyBQ eU9iamVjdCAqCisrY2ZtZnB5X2dldF9idWlsZF9pZCAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNs b3N1cmUpCisreworKyAgY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICpvYmoKKysgICAgPSAo Y29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICopIHNlbGY7CisrCisrICBnZGJfYXNzZXJ0IChv YmotPmJ1aWxkX2lkICE9IG51bGxwdHIpOworKworKyAgUHlfSU5DUkVGIChvYmotPmJ1aWxkX2lk KTsKKysgIHJldHVybiBvYmotPmJ1aWxkX2lkOworK30KKysKKysvKiBSZWFkIHRoZSBnZGIuQ29y ZWZpbGVNYXBwZWRGaWxlLnJlZ2lvbnMgYXR0cmlidXRlLiAgKi8KKysKKytzdGF0aWMgUHlPYmpl Y3QgKgorK2NmbWZweV9nZXRfcmVnaW9ucyAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUp CisreworKyAgY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICpvYmoKKysgICAgPSAoY29yZWZp bGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICopIHNlbGY7CisrCisrICBnZGJfYXNzZXJ0IChvYmotPnJl Z2lvbnMgIT0gbnVsbHB0cik7CisrCisrICBQeV9JTkNSRUYgKG9iai0+cmVnaW9ucyk7CisrICBy ZXR1cm4gb2JqLT5yZWdpb25zOworK30KKysKKysvKiBSZWFkIHRoZSBnZGIuQ29yZWZpbGVNYXBw ZWRGaWxlLmlzX21haW5fZXhlY3V0YWJsZSBhdHRyaWJ1dGUuICAqLworKworK3N0YXRpYyBQeU9i amVjdCAqCisrY2ZtZl9pc19tYWluX2V4ZWMgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJl KQorK3sKKysgIGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdCAqb2JqCisrICAgID0gKGNvcmVm aWxlX21hcHBlZF9maWxlX29iamVjdCAqKSBzZWxmOworKworKyAgaWYgKG9iai0+aXNfbWFpbl9l eGVjX3ApCisrICAgIFB5X1JFVFVSTl9UUlVFOworKyAgZWxzZQorKyAgICBQeV9SRVRVUk5fRkFM U0U7CisrfQorKworKwwKKysKKysvKiBSZWFkIHRoZSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlUmVn aW9uLnN0YXJ0IGF0dHJpYnV0ZS4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytjZm1mcnB5 X2dldF9zdGFydCAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCisreworKyAgY29yZWZp bGVfbWFwcGVkX2ZpbGVfcmVnaW9uX29iamVjdCAqb2JqCisrICAgID0gKGNvcmVmaWxlX21hcHBl ZF9maWxlX3JlZ2lvbl9vYmplY3QgKikgc2VsZjsKKysKKysgIHJldHVybiBnZGJfcHlfb2JqZWN0 X2Zyb21fdWxvbmdlc3QgKG9iai0+c3RhcnQpLnJlbGVhc2UgKCk7CisrfQorKworKy8qIFJlYWQg dGhlIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGVSZWdpb24uZW5kIGF0dHJpYnV0ZS4gICovCisrCisr c3RhdGljIFB5T2JqZWN0ICoKKytjZm1mcnB5X2dldF9lbmQgKFB5T2JqZWN0ICpzZWxmLCB2b2lk ICpjbG9zdXJlKQorK3sKKysgIGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3QgKm9i agorKyAgICA9IChjb3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0ICopIHNlbGY7Cisr CisrICByZXR1cm4gZ2RiX3B5X29iamVjdF9mcm9tX3Vsb25nZXN0IChvYmotPmVuZCkucmVsZWFz ZSAoKTsKKyt9CisrCisrLyogUmVhZCB0aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbi5m aWxlX29mZnNldCBhdHRyaWJ1dGUuICAqLworKworK3N0YXRpYyBQeU9iamVjdCAqCisrY2ZtZnJw eV9nZXRfZmlsZV9vZmZzZXQgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQorK3sKKysg IGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3QgKm9iagorKyAgICA9IChjb3JlZmls ZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0ICopIHNlbGY7CisrCisrICByZXR1cm4gZ2RiX3B5 X29iamVjdF9mcm9tX3Vsb25nZXN0IChvYmotPmZpbGVfb2Zmc2V0KS5yZWxlYXNlICgpOworK30K KysKKysMCisrCisrc3RhdGljIGludAorK2dkYnB5X2luaXRpYWxpemVfY29yZWZpbGUgKCkKKyt7 CisrICBnZGI6Om9ic2VydmVyczo6Y29yZV9maWxlX2NoYW5nZWQuYXR0YWNoIChjZnB5X2NvcmVm aWxlX2NoYW5nZWQsCisrCQkJCQkgICAgInB5LWNvcmVmaWxlIik7CisrCisrICBpZiAoZ2RicHlf dHlwZV9yZWFkeSAoJmNvcmVmaWxlX29iamVjdF90eXBlKSA8IDApCisrICAgIHJldHVybiAtMTsK KysKKysgIGlmIChnZGJweV90eXBlX3JlYWR5ICgmY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0 X3R5cGUpIDwgMCkKKysgICAgcmV0dXJuIC0xOworKworKyAgaWYgKGdkYnB5X3R5cGVfcmVhZHkg KCZjb3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0X3R5cGUpIDwgMCkKKysgICAgcmV0 dXJuIC0xOworKworKyAgcmV0dXJuIDA7CisrfQorKworK0dEQlBZX0lOSVRJQUxJWkVfRklMRSAo Z2RicHlfaW5pdGlhbGl6ZV9jb3JlZmlsZSk7CisrCisrDAorKworK3N0YXRpYyBnZGJfUHlHZXRT ZXREZWYgY29yZWZpbGVfZ2V0c2V0W10gPQorK3sKKysgIHsgIl9fZGljdF9fIiwgZ2RiX3B5X2dl bmVyaWNfZGljdCwgbnVsbHB0ciwKKysgICAgIlRoZSBfX2RpY3RfXyBmb3IgdGhlIGdkYi5Db3Jl ZmlsZS4iLCAmY29yZWZpbGVfb2JqZWN0X3R5cGUgfSwKKysgIHsgImZpbGVuYW1lIiwgY2ZweV9n ZXRfZmlsZW5hbWUsIG51bGxwdHIsCisrICAgICJUaGUgZmlsZW5hbWUgb2YgYSB2YWxpZCBDb3Jl ZmlsZSBvYmplY3QuIiwgbnVsbHB0ciB9LAorKyAgeyBudWxscHRyIH0KKyt9OworKworK3N0YXRp YyBQeU1ldGhvZERlZiBjb3JlZmlsZV9vYmplY3RfbWV0aG9kc1tdID0KKyt7CisrICB7ICJpc192 YWxpZCIsIGNmcHlfaXNfdmFsaWQsIE1FVEhfTk9BUkdTLAorKyAgICAiaXNfdmFsaWQgKCkgLT4g Qm9vbGVhbi5cblwKKytSZXR1cm4gdHJ1ZSBpZiB0aGlzIENvcmVmaWxlIGlzIHZhbGlkLCBmYWxz ZSBpZiBub3QuIiB9LAorKyAgeyAibWFwcGVkX2ZpbGVzIiwgY2ZweV9tYXBwZWRfZmlsZXMsIE1F VEhfTk9BUkdTLAorKyAgICAibWFwcGVkX2ZpbGVzICgpIC0+IExpc3Qgb2YgbWFwcGluZyB0dXBs ZXMuXG5cCisrUmV0dXJuIGEgbGlzdCBvZiB0dXBsZXMuICBFYWNoIHR1cGxlIHJlcHJlc2VudHMg YSBtYXBwaW5nIGZyb20gdGhlXAorK2NvcmUgZmlsZS4iIH0sCisrICB7IG51bGxwdHIgfQorK307 CisrCisrUHlUeXBlT2JqZWN0IGNvcmVmaWxlX29iamVjdF90eXBlID0KKyt7CisrICBQeVZhck9i amVjdF9IRUFEX0lOSVQgKG51bGxwdHIsIDApCisrICAiZ2RiLkNvcmVmaWxlIiwJCSAgLyp0cF9u YW1lKi8KKysgIHNpemVvZiAoY29yZWZpbGVfb2JqZWN0KSwJICAvKnRwX2Jhc2ljc2l6ZSovCisr ICAwLAkJCQkgIC8qdHBfaXRlbXNpemUqLworKyAgY2ZweV9kZWFsbG9jLAkJCSAgLyp0cF9kZWFs bG9jKi8KKysgIDAsCQkJCSAgLyp0cF9wcmludCovCisrICAwLAkJCQkgIC8qdHBfZ2V0YXR0ciov CisrICAwLAkJCQkgIC8qdHBfc2V0YXR0ciovCisrICAwLAkJCQkgIC8qdHBfY29tcGFyZSovCisr ICBjZnB5X3JlcHIsCQkJICAvKnRwX3JlcHIqLworKyAgMCwJCQkJICAvKnRwX2FzX251bWJlciov CisrICAwLAkJCQkgIC8qdHBfYXNfc2VxdWVuY2UqLworKyAgMCwJCQkJICAvKnRwX2FzX21hcHBp bmcqLworKyAgMCwJCQkJICAvKnRwX2hhc2ggKi8KKysgIDAsCQkJCSAgLyp0cF9jYWxsKi8KKysg IDAsCQkJCSAgLyp0cF9zdHIqLworKyAgMCwJCQkJICAvKnRwX2dldGF0dHJvKi8KKysgIDAsCQkJ CSAgLyp0cF9zZXRhdHRybyovCisrICAwLAkJCQkgIC8qdHBfYXNfYnVmZmVyKi8KKysgIFB5X1RQ RkxBR1NfREVGQVVMVCwJCSAgLyp0cF9mbGFncyovCisrICAiR0RCIGNvcmVmaWxlIG9iamVjdCIs CSAgLyogdHBfZG9jICovCisrICAwLAkJCQkgIC8qIHRwX3RyYXZlcnNlICovCisrICAwLAkJCQkg IC8qIHRwX2NsZWFyICovCisrICAwLAkJCQkgIC8qIHRwX3JpY2hjb21wYXJlICovCisrICAwLAkJ CQkgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2l0ZXIgKi8KKysg IDAsCQkJCSAgLyogdHBfaXRlcm5leHQgKi8KKysgIGNvcmVmaWxlX29iamVjdF9tZXRob2RzLAkg IC8qIHRwX21ldGhvZHMgKi8KKysgIDAsCQkJCSAgLyogdHBfbWVtYmVycyAqLworKyAgY29yZWZp bGVfZ2V0c2V0LAkJICAvKiB0cF9nZXRzZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfYmFzZSAqLwor KyAgMCwJCQkJICAvKiB0cF9kaWN0ICovCisrICAwLAkJCQkgIC8qIHRwX2Rlc2NyX2dldCAqLwor KyAgMCwJCQkJICAvKiB0cF9kZXNjcl9zZXQgKi8KKysgIG9mZnNldG9mIChjb3JlZmlsZV9vYmpl Y3QsIGRpY3QpLCAvKiB0cF9kaWN0b2Zmc2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2luaXQgKi8K KysgIDAsCQkJCSAgLyogdHBfYWxsb2MgKi8KKysgIDAsCQkJCSAgLyogdHBfbmV3ICovCisrfTsK KysKKytzdGF0aWMgZ2RiX1B5R2V0U2V0RGVmIGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdF9n ZXRzZXRbXSA9CisreworKyAgeyAiZmlsZW5hbWUiLCBjZm1mcHlfZ2V0X2ZpbGVuYW1lLCBudWxs cHRyLAorKyAgICAiVGhlIGZpbGVuYW1lIG9mIGEgQ29yZWZpbGVNYXBwZWRGaWxlIG9iamVjdC4i LCBudWxscHRyIH0sCisrICB7ICJidWlsZF9pZCIsIGNmbWZweV9nZXRfYnVpbGRfaWQsIG51bGxw dHIsCisrICAgICJUaGUgYnVpbGQtaWQgb2YgYSBDb3JlZmlsZU1hcHBlZEZpbGUgb2JqZWN0IG9y IE5vbmUuIiwgbnVsbHB0ciB9LAorKyAgeyAicmVnaW9ucyIsIGNmbWZweV9nZXRfcmVnaW9ucywg bnVsbHB0ciwKKysgICAgIlRoZSBsaXN0IG9mIHJlZ2lvbnMgZnJvbSBhIENvcmVmaWxlTWFwcGVk RmlsZSBvYmplY3QuIiwgbnVsbHB0ciB9LAorKyAgeyAiaXNfbWFpbl9leGVjdXRhYmxlIiwgY2Zt Zl9pc19tYWluX2V4ZWMsIG51bGxwdHIsCisrICAgICJUcnVlIGZvciB0aGUgbWFpbiBleGVjdXRh YmxlIG1hcHBpbmcsIG90aGVyd2lzZSBGYWxzZS4iLCBudWxscHRyIH0sCisrICB7IG51bGxwdHIg fQorK307CisrCisrUHlUeXBlT2JqZWN0IGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdF90eXBl ID0KKyt7CisrICBQeVZhck9iamVjdF9IRUFEX0lOSVQgKE5VTEwsIDApCisrICAiZ2RiLkNvcmVm aWxlTWFwcGVkRmlsZSIsCSAgLyp0cF9uYW1lKi8KKysgIHNpemVvZiAoY29yZWZpbGVfbWFwcGVk X2ZpbGVfb2JqZWN0KSwJLyp0cF9iYXNpY3NpemUqLworKyAgMCwJCQkJICAvKnRwX2l0ZW1zaXpl Ki8KKysgIGNmbWZweV9kZWFsbG9jLAkJICAvKnRwX2RlYWxsb2MqLworKyAgMCwJCQkJICAvKnRw X3ByaW50Ki8KKysgIDAsCQkJCSAgLyp0cF9nZXRhdHRyKi8KKysgIDAsCQkJCSAgLyp0cF9zZXRh dHRyKi8KKysgIDAsCQkJCSAgLyp0cF9jb21wYXJlKi8KKysgIDAsCQkJCSAgLyp0cF9yZXByKi8K KysgIDAsCQkJCSAgLyp0cF9hc19udW1iZXIqLworKyAgMCwJCQkJICAvKnRwX2FzX3NlcXVlbmNl Ki8KKysgIDAsCQkJCSAgLyp0cF9hc19tYXBwaW5nKi8KKysgIDAsCQkJCSAgLyp0cF9oYXNoICov CisrICAwLAkJCQkgIC8qdHBfY2FsbCovCisrICAwLAkJCQkgIC8qdHBfc3RyKi8KKysgIDAsCQkJ CSAgLyp0cF9nZXRhdHRybyovCisrICAwLAkJCQkgIC8qdHBfc2V0YXR0cm8qLworKyAgMCwJCQkJ ICAvKnRwX2FzX2J1ZmZlciovCisrICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkgIC8qdHBfZmxhZ3Mq LworKyAgIkdEQiBjb3JlZmlsZSBtYXBwZWQgZmlsZSBvYmplY3QiLAkvKiB0cF9kb2MgKi8KKysg IDAsCQkJCSAgLyogdHBfdHJhdmVyc2UgKi8KKysgIDAsCQkJCSAgLyogdHBfY2xlYXIgKi8KKysg IDAsCQkJCSAgLyogdHBfcmljaGNvbXBhcmUgKi8KKysgIDAsCQkJCSAgLyogdHBfd2Vha2xpc3Rv ZmZzZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfaXRlciAqLworKyAgMCwJCQkJICAvKiB0cF9pdGVy bmV4dCAqLworKyAgMCwJCQkJICAvKiB0cF9tZXRob2RzICovCisrICAwLAkJCQkgIC8qIHRwX21l bWJlcnMgKi8KKysgIGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdF9nZXRzZXQsCS8qIHRwX2dl dHNldCAqLworKyAgMCwJCQkJICAvKiB0cF9iYXNlICovCisrICAwLAkJCQkgIC8qIHRwX2RpY3Qg Ki8KKysgIDAsCQkJCSAgLyogdHBfZGVzY3JfZ2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2Rlc2Ny X3NldCAqLworKyAgMCwJCQkJICAvKiB0cF9kaWN0b2Zmc2V0ICovCisrICAwLAkJCQkgIC8qIHRw X2luaXQgKi8KKysgIDAsCQkJCSAgLyogdHBfYWxsb2MgKi8KKysgIDAsCQkJCSAgLyogdHBfbmV3 ICovCisrfTsKKysKKytzdGF0aWMgZ2RiX1B5R2V0U2V0RGVmIGNvcmVmaWxlX21hcHBlZF9maWxl X3JlZ2lvbl9vYmplY3RfZ2V0c2V0W10gPQorK3sKKysgIHsgInN0YXJ0IiwgY2ZtZnJweV9nZXRf c3RhcnQsIG51bGxwdHIsCisrICAgICJUaGUgc3RhcnQgYWRkcmVzcyBvZiBhIENvcmVmaWxlTWFw cGVkRmlsZVJlZ2lvbiBvYmplY3QuIiwgbnVsbHB0ciB9LAorKyAgeyAiZW5kIiwgY2ZtZnJweV9n ZXRfZW5kLCBudWxscHRyLAorKyAgICAiVGhlIGVuZCBhZGRyZXNzIG9mIGEgQ29yZWZpbGVNYXBw ZWRGaWxlUmVnaW9uIG9iamVjdC4iLCBudWxscHRyIH0sCisrICB7ICJmaWxlX29mZnNldCIsIGNm bWZycHlfZ2V0X2ZpbGVfb2Zmc2V0LCBudWxscHRyLAorKyAgICAiVGhlIGZpbGUgb2Zmc2V0IG9m IGEgQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uIG9iamVjdC4iLCBudWxscHRyIH0sCisrICB7IG51 bGxwdHIgfQorK307CisrCisrUHlUeXBlT2JqZWN0IGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lv bl9vYmplY3RfdHlwZSA9CisreworKyAgUHlWYXJPYmplY3RfSEVBRF9JTklUIChOVUxMLCAwKQor KyAgImdkYi5Db3JlZmlsZU1hcHBlZEZpbGVSZWdpb24iLCAgLyp0cF9uYW1lKi8KKysgIHNpemVv ZiAoY29yZWZpbGVfbWFwcGVkX2ZpbGVfcmVnaW9uX29iamVjdCksCS8qdHBfYmFzaWNzaXplKi8K KysgIDAsCQkJCSAgLyp0cF9pdGVtc2l6ZSovCisrICAwLAkJCQkgIC8qdHBfZGVhbGxvYyovCisr ICAwLAkJCQkgIC8qdHBfcHJpbnQqLworKyAgMCwJCQkJICAvKnRwX2dldGF0dHIqLworKyAgMCwJ CQkJICAvKnRwX3NldGF0dHIqLworKyAgMCwJCQkJICAvKnRwX2NvbXBhcmUqLworKyAgMCwJCQkJ ICAvKnRwX3JlcHIqLworKyAgMCwJCQkJICAvKnRwX2FzX251bWJlciovCisrICAwLAkJCQkgIC8q dHBfYXNfc2VxdWVuY2UqLworKyAgMCwJCQkJICAvKnRwX2FzX21hcHBpbmcqLworKyAgMCwJCQkJ ICAvKnRwX2hhc2ggKi8KKysgIDAsCQkJCSAgLyp0cF9jYWxsKi8KKysgIDAsCQkJCSAgLyp0cF9z dHIqLworKyAgMCwJCQkJICAvKnRwX2dldGF0dHJvKi8KKysgIDAsCQkJCSAgLyp0cF9zZXRhdHRy byovCisrICAwLAkJCQkgIC8qdHBfYXNfYnVmZmVyKi8KKysgIFB5X1RQRkxBR1NfREVGQVVMVCwJ CSAgLyp0cF9mbGFncyovCisrICAiR0RCIGNvcmVmaWxlIG1hcHBlZCBmaWxlIHJlZ2lvbiBvYmpl Y3QiLAkvKiB0cF9kb2MgKi8KKysgIDAsCQkJCSAgLyogdHBfdHJhdmVyc2UgKi8KKysgIDAsCQkJ CSAgLyogdHBfY2xlYXIgKi8KKysgIDAsCQkJCSAgLyogdHBfcmljaGNvbXBhcmUgKi8KKysgIDAs CQkJCSAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfaXRlciAqLwor KyAgMCwJCQkJICAvKiB0cF9pdGVybmV4dCAqLworKyAgMCwJCQkJICAvKiB0cF9tZXRob2RzICov CisrICAwLAkJCQkgIC8qIHRwX21lbWJlcnMgKi8KKysgIGNvcmVmaWxlX21hcHBlZF9maWxlX3Jl Z2lvbl9vYmplY3RfZ2V0c2V0LAkvKiB0cF9nZXRzZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfYmFz ZSAqLworKyAgMCwJCQkJICAvKiB0cF9kaWN0ICovCisrICAwLAkJCQkgIC8qIHRwX2Rlc2NyX2dl dCAqLworKyAgMCwJCQkJICAvKiB0cF9kZXNjcl9zZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfZGlj dG9mZnNldCAqLworKyAgMCwJCQkJICAvKiB0cF9pbml0ICovCisrICAwLAkJCQkgIC8qIHRwX2Fs bG9jICovCisrICAwLAkJCQkgIC8qIHRwX25ldyAqLworK307CitkaWZmIC0tZ2l0IGEvZ2RiL3B5 dGhvbi9weS1ldmVudC10eXBlcy5kZWYgYi9nZGIvcHl0aG9uL3B5LWV2ZW50LXR5cGVzLmRlZgor LS0tIGEvZ2RiL3B5dGhvbi9weS1ldmVudC10eXBlcy5kZWYKKysrKyBiL2dkYi9weXRob24vcHkt ZXZlbnQtdHlwZXMuZGVmCitAQCAtMTQ1LDMgKzE0NSw4IEBAIEdEQl9QWV9ERUZJTkVfRVZFTlRf VFlQRSAodHVpX2VuYWJsZWQsCisgCQkJICAiVHVpRW5hYmxlZEV2ZW50IiwKKyAJCQkgICJHREIg VFVJIGVuYWJsZWQgZXZlbnQgb2JqZWN0IiwKKyAJCQkgIGV2ZW50X29iamVjdF90eXBlKTsKKysK KytHREJfUFlfREVGSU5FX0VWRU5UX1RZUEUgKGNvcmVmaWxlX2NoYW5nZWQsCisrCQkJICAiQ29y ZWZpbGVDaGFuZ2VkRXZlbnQiLAorKwkJCSAgIkdEQiBjb3JlZmlsZSBjaGFuZ2VkIGV2ZW50IiwK KysJCQkgIGV2ZW50X29iamVjdF90eXBlKTsKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWlu ZmVyaW9yLmMgYi9nZGIvcHl0aG9uL3B5LWluZmVyaW9yLmMKKy0tLSBhL2dkYi9weXRob24vcHkt aW5mZXJpb3IuYworKysrIGIvZ2RiL3B5dGhvbi9weS1pbmZlcmlvci5jCitAQCAtOTczLDYgKzk3 MywyMiBAQCBpbmZweV9nZXRfbWFpbl9uYW1lIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3Vy ZSkKKyAgIHJldHVybiBob3N0X3N0cmluZ190b19weXRob25fc3RyaW5nIChuYW1lKS5yZWxlYXNl ICgpOworIH0KKyAKKysvKiBJbXBsZW1lbnQgdGhlIEluZmVyaW9yLmNvcmVmaWxlIGdldHRlci4g IFJldHVybnMgYSBnZGIuQ29yZWZpbGUKKysgICBvYmplY3QsIG9yIE5vbmUuICAqLworKworK3N0 YXRpYyBQeU9iamVjdCAqCisraW5mcHlfZ2V0X2NvcmVfZmlsZSAoUHlPYmplY3QgKnNlbGYsIHZv aWQgKmNsb3N1cmUpCisreworKyAgaW5mZXJpb3Jfb2JqZWN0ICppbmYgPSAoaW5mZXJpb3Jfb2Jq ZWN0ICopIHNlbGY7CisrCisrICBJTkZQWV9SRVFVSVJFX1ZBTElEIChpbmYpOworKworKyAgaW5m ZXJpb3IgKmluZmVyaW9yID0gaW5mLT5pbmZlcmlvcjsKKysgIGdkYl9hc3NlcnQgKGluZmVyaW9y ICE9IG51bGxwdHIpOworKworKyAgcmV0dXJuIGdkYnB5X2NvcmVfZmlsZV9mcm9tX2luZmVyaW9y IChpbmZlcmlvcikucmVsZWFzZSAoKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBpbmZweV9kZWFs bG9jIChQeU9iamVjdCAqb2JqKQorIHsKK0BAIC0xMDYyLDYgKzEwNzgsOCBAQCBzdGF0aWMgZ2Ri X1B5R2V0U2V0RGVmIGluZmVyaW9yX29iamVjdF9nZXRzZXRbXSA9CisgICB7ICJwcm9nc3BhY2Ui LCBpbmZweV9nZXRfcHJvZ3NwYWNlLCBOVUxMLCAiUHJvZ3JhbSBzcGFjZSBvZiB0aGlzIGluZmVy aW9yIiB9LAorICAgeyAibWFpbl9uYW1lIiwgaW5mcHlfZ2V0X21haW5fbmFtZSwgbnVsbHB0ciwK KyAgICAgIk5hbWUgb2YgJ21haW4nIGZ1bmN0aW9uLCBpZiBrbm93bi4iLCBudWxscHRyIH0sCisr ICB7ICJjb3JlZmlsZSIsIGluZnB5X2dldF9jb3JlX2ZpbGUsIG51bGxwdHIsCisrICAgICJUaGUg Y29yZWZpbGUgbG9hZGVkIGluIHRvIHRoaXMgaW5mZXJpb3IsIG9yIE5vbmUuIiwgbnVsbHB0ciB9 LAorICAgeyBOVUxMIH0KKyB9OworIAorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLWlu dGVybmFsLmggYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCistLS0gYS9nZGIvcHl0aG9u L3B5dGhvbi1pbnRlcm5hbC5oCisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCitA QCAtMTExMyw2ICsxMTEzLDE0IEBAIGV4dGVybiBzdGQ6Om9wdGlvbmFsPGludD4gZ2RicHlfcHJp bnRfaW5zbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgCQkJCQkgICAgQ09SRV9BRERSIGFk ZHJlc3MsCisgCQkJCQkgICAgZGlzYXNzZW1ibGVfaW5mbyAqaW5mbyk7CisgCisrLyogUmV0dXJu IHRoZSBnZGIuQ29yZWZpbGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgY29yZSBmaWxlIGxvYWRl ZCBpbnRvCisrICAgdGhlIHByb2dyYW0gc3BhY2Ugb2YgSU5GLCBvciBOb25lIGlmIHRoZXJlIGlz IG5vIGNvcmUgZmlsZSBsb2FkZWQuICBJTkYKKysgICBtdXN0IG5vdCBiZSBOVUxMLiAgSWYgYW4g ZXJyb3Igb2NjdXJzIHRoZW4gTlVMTCBpcyByZXR1cm5lZCwgYW5kIGEKKysgICBzdWl0YWJsZSBQ eXRob24gZXJyb3Igd2lsbCBiZSBzZXQuICAqLworKworK2V4dGVybiBnZGJweV9yZWY8PiBnZGJw eV9jb3JlX2ZpbGVfZnJvbV9pbmZlcmlvciAoaW5mZXJpb3IgKmluZik7CisrCisrCisgLyogQSB3 cmFwcGVyIGZvciBQeVR5cGVfUmVhZHkgdGhhdCBhbHNvIGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXJz IHRoZQorICAgIHR5cGUgaW4gdGhlIGFwcHJvcHJpYXRlIG1vZHVsZS4gIFJldHVybnMgMCBvbiBz dWNjZXNzLCAtMSBvbiBlcnJvci4KKyAgICBJZiBNT0QgaXMgc3VwcGxpZWQsIHRoZW4gdGhlIHR5 cGUgaXMgYWRkZWQgdG8gdGhhdCBtb2R1bGUuICBJZiBNT0QKK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5kYXAvYXR0YWNoLWZhaWwuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGFwL2F0 dGFjaC1mYWlsLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmRhcC9hdHRhY2gtZmFpbC5leHAKK0BAIC0wLDAgKzEsMzIgQEAK KysjIENvcHlyaWdodCAyMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFRlc3QgImF0dGFjaCIgZmFpbHVyZSBp biBEQVAuCisrCisrcmVxdWlyZSBjYW5fc3Bhd25fZm9yX2F0dGFjaCBhbGxvd19kYXBfdGVzdHMK KysKKytsb2FkX2xpYiBkYXAtc3VwcG9ydC5leHAKKysKKysjIFBhc3NpbmcgYW4gZW1wdHkgcmVt b3RlIG5hbWUgaGVyZSB3aWxsIGd1YXJhbnRlZSBhIGZhaWx1cmUgd2l0aG91dAorKyMgdHJ5aW5n IHRvIGZpbmQgYSByZWFsIHJlbW90ZS4KKytzZXQgaWQgW2RhcF90YXJnZXRfcmVtb3RlIHsiIn1d CisrCisrZGFwX2NoZWNrX3JlcXVlc3RfYW5kX3Jlc3BvbnNlICJjb25maWd1cmF0aW9uRG9uZSIg Y29uZmlndXJhdGlvbkRvbmUKKysKKytzZXQgcmVzcCBbbGluZGV4IFtkYXBfcmVhZF9yZXNwb25z ZSBhdHRhY2ggJGlkXSAwXQorK2dkYl9hc3NlcnQge1tkaWN0IGdldCAkcmVzcCBzdWNjZXNzXSA9 PSAiZmFsc2UifSBcCisrICAgICJhdHRhY2ggZmFpbGVkIgorKworK2RhcF9zaHV0ZG93bgorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmRhcC9jb3JlZmlsZS5jIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZGFwL2NvcmVmaWxlLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kYXAvY29yZWZpbGUuYworQEAgLTAsMCArMSw0NSBA QAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisr CisrICAgQ29weXJpZ2h0IDIwMjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisr ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor KyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxz dGRsaWIuaD4KKysKKytpbnQgZ2xvYmFsX3ZhciA9IDA7CisrCisrdm9pZAorK2JheiAodm9pZCkK Kyt7CisrICBhYm9ydCAoKTsKKyt9CisrCisrdm9pZAorK2JhciAodm9pZCkKKyt7CisrICBiYXog KCk7CisrfQorKworK3ZvaWQKKytmb28gKHZvaWQpCisreworKyAgYmFyICgpOworK30KKysKKytp bnQKKyttYWluICh2b2lkKQorK3sKKysgIGZvbyAoKTsKKysgIHJldHVybiAwOworK30KK2RpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kYXAvY29yZWZpbGUuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZGFwL2NvcmVmaWxlLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251 bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmRhcC9jb3JlZmlsZS5leHAKK0BAIC0wLDAgKzEs MTk2IEBACisrIyBDb3B5cmlnaHQgMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBUZXN0IHVzaW5nICJhdHRh Y2giIGluIERBUCBmb3Igb3BlbmluZyBhIGNvcmUgZmlsZS4KKysKKytyZXF1aXJlIGFsbG93X2Rh cF90ZXN0cworKworK2xvYWRfbGliIGRhcC1zdXBwb3J0LmV4cAorKworK3N0YW5kYXJkX3Rlc3Rm aWxlCisrCisraWYge1tidWlsZF9leGVjdXRhYmxlICR7dGVzdGZpbGV9LmV4cCAkdGVzdGZpbGVd ID09IC0xfSB7CisrICAgIHJldHVybgorK30KKysKKytzZXQgY29yZWZpbGUgW2NvcmVfZmluZCAk YmluZmlsZSB7fV0KKytpZiB7JGNvcmVmaWxlID09ICIifSB7CisrICAgIHVudGVzdGVkICJ1bmFi bGUgdG8gY3JlYXRlIG9yIGZpbmQgY29yZWZpbGUiCisrICAgIHJldHVybgorK30KKysKKytzZXQg b3RoZXJfY29yZWZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICIke3Rlc3RmaWxlfSB3aXRoIHNw YWNlcy5jb3JlIl0KKytyZW1vdGVfZXhlYyBidWlsZCAiY3AgXCIkY29yZWZpbGVcIiBcIiRvdGhl cl9jb3JlZmlsZVwiIgorKworKyMgVGVzdCB0aGF0IGF0dGFjaGluZyB0byBhIGNvcmUgZmlsZSB3 b3JrcyBhdCBhbGwuCisrc2V0IGF0dGFjaF9pZCBbZGFwX2NvcmVmaWxlICRjb3JlZmlsZSAkYmlu ZmlsZV0KKysKKytkYXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2UgImNvbmZpZ3VyYXRpb25E b25lIiBjb25maWd1cmF0aW9uRG9uZQorKworK2RhcF9jaGVja19yZXNwb25zZSAiYXR0YWNoIHJl c3BvbnNlIiBhdHRhY2ggJGF0dGFjaF9pZAorKworK2RhcF93YWl0X2Zvcl9ldmVudF9hbmRfY2hl Y2sgInN0b3BwZWQiIHN0b3BwZWQgXAorKyAgICAiYm9keSByZWFzb24iIGF0dGFjaAorKworKyMg VHJ5ICdjb250aW51ZScsIHRoaXMgc2hvdWxkIGZhaWwuCisrc2V0IG9iaiBbZGFwX3JlcXVlc3Rf YW5kX3Jlc3BvbnNlIGNvbnRpbnVlIFwKKysJICAgICB7byB0aHJlYWRJZCBbaSAxXX1dCisrc2V0 IHJlc3BvbnNlIFtsaW5kZXggJG9iaiAwXQorK2dkYl9hc3NlcnQgeyBbZGljdCBnZXQgJHJlc3Bv bnNlIHN1Y2Nlc3NdID09ICJmYWxzZSIgfSBcCisrICAgICJjb250aW51ZSB3aXRoIGNvcmUgZmls ZSB0YXJnZXQiCisrCisrIyBHZXQgYSBiYWNrdHJhY2UgZnJvbSB0aGUgY29yZSBmaWxlLgorK3Nl dCBidCBbbGluZGV4IFtkYXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2UgImJhY2t0cmFjZSIg c3RhY2tUcmFjZSBcCisrCQkgICAge28gdGhyZWFkSWQgW2kgMV19XSAwXQorK3NldCBmcmFtZV9p ZCBbZGljdCBnZXQgW2xpbmRleCBbZGljdCBnZXQgJGJ0IGJvZHkgc3RhY2tGcmFtZXNdIDBdIGlk XQorKworKyMgR2V0IGFsbCBzY29wZXMgZm9yIGZyYW1lIDAuICBTZWFyY2ggdGhyb3VnaCBzY29w ZXMgdG8gZmluZCB0aGUKKysjIHJlZ2lzdGVyIHNjb3BlLgorK3NldCBzY29wZXMgW2RhcF9jaGVj a19yZXF1ZXN0X2FuZF9yZXNwb25zZSAiZ2V0IHNjb3BlcyIgc2NvcGVzIFwKKysJCVtmb3JtYXQg e28gZnJhbWVJZCBbaSAlZF19ICRmcmFtZV9pZF1dCisrc2V0IHNjb3BlcyBbZGljdCBnZXQgW2xp bmRleCAkc2NvcGVzIDBdIGJvZHkgc2NvcGVzXQorK3NldCByZWdfc2NvcGUgIiIKKytmb3JlYWNo IHMgJHNjb3BlcyB7CisrICAgIGlmIHtbZGljdCBnZXQgJHMgbmFtZV0gPT0gIlJlZ2lzdGVycyJ9 IHsKKysJc2V0IHJlZ19zY29wZSAkcworKyAgICB9CisrfQorK2dkYl9hc3NlcnQgeyAkcmVnX3Nj b3BlIG5lICIiIH0gImZvdW5kIHJlZ2lzdGVyIHNjb3BlIgorKworKyMgUmVhZCBhbGwgdGhlIHJl Z2lzdGVycyBmcm9tIHRoZSByZWdpc3RlciBzY29wZS4KKytzZXQgbnVtIFtkaWN0IGdldCAkcmVn X3Njb3BlIHZhcmlhYmxlc1JlZmVyZW5jZV0KKytzZXQgcmVwbHkgW2xpbmRleCBbZGFwX2NoZWNr X3JlcXVlc3RfYW5kX3Jlc3BvbnNlICJmZXRjaCBhbGwgcmVnaXN0ZXJzIiBcCisrCQkgICAgICAi dmFyaWFibGVzIiBcCisrCQkgICAgICBbZm9ybWF0IHtvIHZhcmlhYmxlc1JlZmVyZW5jZSBbaSAl ZF0gY291bnQgW2kgJWRdfSAkbnVtXAorKwkJCSAgIFtkaWN0IGdldCAkcmVnX3Njb3BlIG5hbWVk VmFyaWFibGVzXV1dIDBdCisrCisrIyBGaW5kIHRoZSBuYW1lIGFuZCB2YWx1ZSBvZiBhIHJlZ2lz dGVyLCB3ZSdsbCB1c2UgdGhpcyB0byB0cnkgc2V0dGluZworKyMgYSByZWdpc3RlciBiZWxvdy4K KytzZXQgcmVncyBbZGljdCBnZXQgJHJlcGx5IGJvZHkgdmFyaWFibGVzXQorK2dkYl9hc3NlcnQg e1tsbGVuZ3RoICRyZWdzXSA+IDB9ICJnb3QgYXQgbGVhc3Qgb25lIHJlZ2lzdGVyIgorK3NldCBy ZWdfbmFtZSBbZGljdCBnZXQgW2xpbmRleCAkcmVncyAwXSBuYW1lXQorK3NldCByZWdfdmFsdWUg W2RpY3QgZ2V0IFtsaW5kZXggJHJlZ3MgMF0gdmFsdWVdCisrCisrc2V0IG9iaiBbZGFwX3JlcXVl c3RfYW5kX3Jlc3BvbnNlIHNldEV4cHJlc3Npb24gXAorKwkgICAgIHtvIGV4cHJlc3Npb24gW3Mg Z2xvYmFsX3Zhcl0gdmFsdWUgW3MgMjNdfV0KKytzZXQgcmVzcG9uc2UgW2xpbmRleCAkb2JqIDBd CisrZ2RiX2Fzc2VydCB7IFtkaWN0IGdldCAkcmVzcG9uc2Ugc3VjY2Vzc10gPT0gImZhbHNlIiB9 IFwKKysgICAgInNldCBnbG9iYWwgdmFyaWFibGUgZmFpbHMiCisrc2V0IGV4cGVjdGVkX2V4Y2Vw dGlvbl9jb3VudCAxCisrCisrIyBUcnkgc2V0dGluZyBhIHJlZ2lzdGVyLCB0aGlzIHNob3VsZCBm YWlsIGFzIHJlZ2lzdGVycyBhcmUgbm90CisrIyB3cml0YWJsZSBmb3IgYSBjb3JlIGZpbGUgdGFy Z2V0LiAgV2UgbmVlZCB0byB3cml0ZSBiYWNrIGEgZGlmZmVyZW50CisrIyByZWdpc3RlciB2YWx1 ZSwgc28gd2UgYWRkIG9uZSB0byB0aGUgY3VycmVudCB2YWx1ZS4gIFRoaXMgbWVhbnMgd2UKKysj IGNhbiBvbmx5IHJ1biB0aGUgdGVzdCBpZiB0aGUgY3VycmVudCByZWdpc3RlciB2YWx1ZSBpcyBh biBpbnRlZ2VyLgorK2lmIHtbc3RyaW5nIGlzIGludGVnZXIgLXN0cmljdCAkcmVnX3ZhbHVlXX0g eworKyAgICBzZXQgbmV3X3ZhbHVlIFtleHByIHskcmVnX3ZhbHVlICsgMX1dCisrICAgIHNldCBv YmogW2RhcF9yZXF1ZXN0X2FuZF9yZXNwb25zZSBzZXRFeHByZXNzaW9uIFwKKysJCSB7byBleHBy ZXNzaW9uIFtzIFwkJHJlZ19uYW1lXSB2YWx1ZSBbcyAkbmV3X3ZhbHVlXX1dCisrICAgIHNldCBy ZXNwb25zZSBbbGluZGV4ICRvYmogMF0KKysgICAgZ2RiX2Fzc2VydCB7IFtkaWN0IGdldCAkcmVz cG9uc2Ugc3VjY2Vzc10gPT0gImZhbHNlIiB9IFwKKysJInNldCByZWdpc3RlciBmYWlscyIKKysg ICAgaW5jciBleHBlY3RlZF9leGNlcHRpb25fY291bnQKKyt9CisrCisrZGFwX3NodXRkb3duIGZh bHNlICRleHBlY3RlZF9leGNlcHRpb25fY291bnQKKysKKysjIFJlY29ubmVjdCB0byB0aGUgY29y ZSBmaWxlLiAgVGhpcyB0aW1lIHdoZW4gd2Ugc2h1dGRvd24gd2Ugd2lsbAorKyMgcmVxdWVzdCB0 aGF0IHRoZSB0YXJnZXQgYmUgdGVybWluYXRlZCwgR0RCIHNob3VsZCBzdGlsbCBqdXN0CisrIyBk aXNjb25uZWN0IHRob3VnaCBhcyBjb3JlIGZpbGUgdGFyZ2V0cyBjYW5ub3QgYmUga2lsbGVkLgor K3dpdGhfdGVzdF9wcmVmaXggInJlYXR0YWNoIiB7CisrICAgIHNldCBhdHRhY2hfaWQgW2RhcF9j b3JlZmlsZSAkY29yZWZpbGUgJGJpbmZpbGVdCisrCisrICAgIGRhcF9jaGVja19yZXF1ZXN0X2Fu ZF9yZXNwb25zZSAiY29uZmlndXJhdGlvbkRvbmUiIGNvbmZpZ3VyYXRpb25Eb25lCisrCisrICAg IGRhcF9jaGVja19yZXNwb25zZSAiYXR0YWNoIHJlc3BvbnNlIiBhdHRhY2ggJGF0dGFjaF9pZAor KworKyAgICBkYXBfd2FpdF9mb3JfZXZlbnRfYW5kX2NoZWNrICJzdG9wcGVkIiBzdG9wcGVkIFwK KysJImJvZHkgcmVhc29uIiBhdHRhY2gKKysKKysgICAgIyBSZXF1ZXN0IHRoZSB0YXJnZXQgYmUg dGVybWluYXRlZC4gIFRoaXMgZG9lc24ndCBtYWtlIHNlbnNlIGZvcgorKyAgICAjIGNvcmUgZmls ZSB0YXJnZXRzICh3aGljaCBjYW5ub3QgYmUga2lsbGVkKSwgYnV0IEdEQiBzaG91bGQKKysgICAg IyBoYW5kbGUgdGhpcyBncmFjZWZ1bGx5IGFuZCBqdXN0IGRpc2Nvbm5lY3QuCisrICAgIGRhcF9z aHV0ZG93biB0cnVlCisrfQorKworKyMgVGVzdCBsb2FkaW5nIGEgY29yZSBmaWxlIHdpdGggc3Bh Y2VzIGluIGl0cyBuYW1lLgorK3dpdGhfdGVzdF9wcmVmaXggImNvcmUgZmlsZSB3aXRoIHNwYWNl cyIgeworKyAgICBnZGJfZXhpdAorKworKyAgICAjIFRlc3QgdGhhdCBhdHRhY2hpbmcgdG8gYSBj b3JlIGZpbGUgd29ya3MgYXQgYWxsLgorKyAgICBzZXQgYXR0YWNoX2lkIFtkYXBfY29yZWZpbGUg JG90aGVyX2NvcmVmaWxlXQorKworKyAgICBkYXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2Ug ImNvbmZpZ3VyYXRpb25Eb25lIiBjb25maWd1cmF0aW9uRG9uZQorKworKyAgICBkYXBfY2hlY2tf cmVzcG9uc2UgImF0dGFjaCByZXNwb25zZSIgYXR0YWNoICRhdHRhY2hfaWQKKysKKysgICAgZGFw X3dhaXRfZm9yX2V2ZW50X2FuZF9jaGVjayAic3RvcHBlZCIgc3RvcHBlZCBcCisrCSJib2R5IHJl YXNvbiIgYXR0YWNoCisrCisrICAgICMgVXNlIHRoZSByZXBsIHRvIGlzc3VlIGFuICdpbmZvIGlu ZmVyaW9ycycgY29tbWFuZC4KKysgICAgc2V0IG9iaiBbZGFwX2NoZWNrX3JlcXVlc3RfYW5kX3Jl c3BvbnNlICJjb21tYW5kIHJlcGwiIFwKKysJCSBldmFsdWF0ZSB7byBleHByZXNzaW9uIFtzICJp bmZvIGluZmVyaW9ycyJdIGNvbnRleHQgW3MgcmVwbF19XQorKyAgICBzZXQgcmVzcG9uc2UgW2xp bmRleCAkb2JqIDBdCisrICAgIHNldCByZXN1bHQgW2RpY3QgZ2V0ICRyZXNwb25zZSBib2R5IHJl c3VsdF0KKysgICAgc2V0IHJlc3VsdCBbc3RyaW5nIG1hcCB7XFxuIFxuIFxcdCBcdH0gJHJlc3Vs dF0KKysgICAgdmVyYm9zZSAtbG9nICJJbmZvIEluZmVyaW9ycyBPdXRwdXQ6XG4kcmVzdWx0XG5c biIKKysKKysgICAgIyBDaGVjayB0aGF0IHRoZSBvdXRwdXQgY29udGFpbnMgdGhlIGhlYWRlciBs aW5lLCB0aGUgZXhlY3V0YWJsZQorKyAgICAjIG5hbWUsIGFuZCB0aGUgY29yZSBmaWxlIG5hbWUu ICBXZSBkaWRuJ3QgcGFzcyB0aGUgZXhlY3V0YWJsZQorKyAgICAjIG5hbWUgd2hlbiBsb2FkaW5n IHRoZSBjb3JlIGZpbGUsIGJ1dCBHREIgc2hvdWxkIGhhdmUgYmVlbiBhYmxlCisrICAgICMgdG8g ZmluZCB0aGUgZXhlY3V0YWJsZSBmcm9tIHRoZSBjb3JlIGZpbGUuCisrICAgIGdkYl9hc3NlcnQg eyBbcmVnZXhwICJOdW1cXHMrRGVzY3JpcHRpb25cXHMrQ29ubmVjdGlvblxccytFeGVjdXRhYmxl IiAkcmVzdWx0XSB9IFwKKysJImluZm8gaW5mZXJpb3JzIGNvbHVtbiBoZWFkZXJzIGZvdW5kIgor KworKyAgICBnZGJfYXNzZXJ0IHsgW3JlZ2V4cCAiW3N0cmluZ190b19yZWdleHAgJGJpbmZpbGVd XFxzKlxuIiAkcmVzdWx0XSB9IFwKKysJImV4ZWN1dGFibGUgbmFtZSB3YXMgc2V0IGR1cmluZyBj b3JlIGZpbGUgbG9hZCIKKysKKysgICAgZGFwX3NodXRkb3duCisrfQorKworKyMgVGVzdCBsb2Fk aW5nIGEgY29yZSBmaWxlIHZpYSB0aGUgcmVwbC4KKyt3aXRoX3Rlc3RfcHJlZml4ICJsb2FkIGNv cmUgZmlsZSB2aWEgcmVwbCIgeworKyAgICBnZGJfZXhpdAorKworKyAgICBpZiB7W2RhcF9pbml0 aWFsaXplXSA9PSAiIn0geworKwlyZXR1cm4KKysgICAgfQorKworKyAgICAjIFVzZSB0aGUgcmVw bCB0byBpc3N1ZSBhICdjb3JlLWZpbGUnIGNvbW1hbmQuCisrICAgIHNldCBvYmogW2RhcF9jaGVj a19yZXF1ZXN0X2FuZF9yZXNwb25zZSAiY29tbWFuZCByZXBsIiBcCisrCQkgZXZhbHVhdGUgW2Zv cm1hdCB7byBleHByZXNzaW9uIFtzICJjb3JlLWZpbGUgJXMiXSBjb250ZXh0IFtzIHJlcGxdfSAk Y29yZWZpbGVdXQorKyAgICBzZXQgcmVzcG9uc2UgW2xpbmRleCAkb2JqIDBdCisrICAgIHNldCBy ZXN1bHQgW2RpY3QgZ2V0ICRyZXNwb25zZSBib2R5IHJlc3VsdF0KKysgICAgc2V0IHJlc3VsdCBb c3RyaW5nIG1hcCB7XFxuIFxuIFxcdCBcdH0gJHJlc3VsdF0KKysgICAgdmVyYm9zZSAtbG9nICJD b3JlLUZpbGUgQ29tbWFuZCBPdXRwdXQ6XG4kcmVzdWx0XG5cbiIKKysKKysgICAgIyBCeSB0aGUg dGltZSB3ZSBnb3QgdGhlIHJlc3BvbnNlIGZyb20gdGhlICdjb3JlLWZpbGUnIGNvbW1hbmQsCisr ICAgICMgdGhlIHN0b3BwZWQgZXZlbnQsIHNlbnQgd2hlbiB3ZSBhdHRhY2ggdG8gYSBjb3JlIGZp bGUsIHNob3VsZAorKyAgICAjIGFscmVhZHkgaGF2ZSBiZWVuIHNlZW4sIGNoZWNrIGZvciBpdCBu b3cuCisrICAgIHNldCBvayBmYWxzZQorKyAgICBmb3JlYWNoIGQgW2xpbmRleCAkb2JqIDFdIHsK KysJaWYge1tkaWN0IGdldCAkZCB0eXBlXSAhPSAiZXZlbnQiCisrCSAgICB8fCBbZGljdCBnZXQg JGQgZXZlbnRdICE9ICJzdG9wcGVkIn0geworKwkgICAgY29udGludWUKKysJfQorKwlpZiB7W2Rp Y3QgZ2V0ICRkIGJvZHkgcmVhc29uXSA9PSAiYXR0YWNoIn0geworKwkgICAgc2V0IG9rIHRydWUK KysJICAgIGJyZWFrCisrCX0KKysgICAgfQorKyAgICBnZGJfYXNzZXJ0IHsgJG9rIH0gInNhdyBz dG9wcGVkIGV2ZW50IgorKworKyAgICBkYXBfc2h1dGRvd24KKyt9CitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvcmVmaWxlLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktY29yZWZpbGUuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jb3JlZmlsZS5jCitAQCAtMCwwICsx LDI1IEBACisrLyogQ29weXJpZ2h0IDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8c3RkbGliLmg+CisrCisraW50 CisrbWFpbiAodm9pZCkKKyt7CisrICAvKiBXaXRoIGNvcnJlY3QgdWxpbWl0LCBldGMuIHRoaXMg c2hvdWxkIGNhdXNlIGEgY29yZSBkdW1wLiAgKi8KKysgIGFib3J0ICgpOworK30KK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktY29yZWZpbGUuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LWNvcmVmaWxlLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0t LSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jb3JlZmlsZS5l eHAKK0BAIC0wLDAgKzEsMzY1IEBACisrIyBDb3B5cmlnaHQgKEMpIDIwMjUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKwor KyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdEQiB0ZXN0c3VpdGUuICBJdCB0ZXN0cyB0aGUg Y29yZSBmaWxlCisrIyBzdXBwb3J0IGluIFB5dGhvbi4KKysKKytyZXF1aXJlIGlzbmF0aXZlCisr cmVxdWlyZSB7IWlzX3JlbW90ZSBob3N0fQorKworK2xvYWRfbGliIGdkYi1weXRob24uZXhwCisr CisrcmVxdWlyZSBhbGxvd19weXRob25fdGVzdHMKKysKKytzdGFuZGFyZF90ZXN0ZmlsZQorKwor K2lmIHtbYnVpbGRfZXhlY3V0YWJsZSAiYnVpbGQgZXhlY3V0YWJsZSIgJHRlc3RmaWxlICRzcmNm aWxlXSA9PSAtMX0geworKyAgICByZXR1cm4KKyt9CisrCisrc2V0IHJlbW90ZV9weXRob25fZmls ZSBcCisrICAgIFtnZGJfcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3Rlc3RmaWxlfS5weV0KKysKKytzZXQgY29yZWZpbGUgW2NvcmVfZmluZCAkYmluZmlsZV0KKytp ZiB7JGNvcmVmaWxlID09ICIifSB7CisrICAgIHVuc3VwcG9ydGVkICJjb3VsZG4ndCBjcmVhdGUg b3IgZmluZCBjb3JlZmlsZSIKKysgICAgcmV0dXJuCisrfQorKworKyMgSGVscGVyIHByb2MgdG8g cnVuIHRoZSAnY29yZS1maWxlJyBjb21tYW5kLiAgVGFrZXMgb3B0aW9uYWwgYXJndW1lbnRzOgor KyMKKysjICAgLWNvcmVmaWxlIEZJTEVOQU1FIDogTG9hZCBGSUxFTkFNRSBhcyB0aGUgbmV3IGNv cmUgZmlsZS4gIElmIHRoaXMKKysjICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgaXMg bm90IGdpdmVuIHRoZW4gdGhlIGN1cnJlbnQgY29yZQorKyMgICAgICAgICAgICAgICAgICAgICAg ICBmaWxlIHdpbGwgYmUgdW5sb2FkZWQuCisrIworKyMgICAtaW5mZXJpb3IgTlVNIDogVGhlIGlu ZmVyaW9yIGluIHdoaWNoIHRoZSBjb3JlZmlsZSBpcyBiZWluZyBjaGFuZ2VkLgorKyMgICAgICAg ICAgICAgICAgICAgVGhpcyBpcyB1c2VkIHRvIG1hdGNoIHRoZSBjb3JlZmlsZV9jaGFuZ2VkIGV2 ZW50cworKyMgICAgICAgICAgICAgICAgICAgdGhhdCB3aWxsIGJlIGVtaXR0ZWQuCisrIworKyMg ICAtcHJlZml4IFNUUklORyA6IEEgdGVzdCBwcmVmaXgsIHRvIG1ha2UgdGVzdCBuYW1lcyB1bmlx dWUuCisrIworKyMgICAtcmVwbGFjZW1lbnQgOiBUaGVyZSdzIGFscmVhZHkgYSBjb3JlIGZpbGUg bG9hZGVkIHdoZW4gdGhpcyBjb21tYW5kCisrIyAgICAgICAgICAgICAgICAgIGlzIGJlaW5nIHJ1 bi4KKytwcm9jIGNvcmVfZmlsZV9jbWQgeyBhcmdzIH0geworKyAgICBwYXJzZV9zb21lX2FyZ3Mg eworKwl7Y29yZWZpbGUgIiJ9CisrCXtpbmZlcmlvciAxfQorKwl7cHJlZml4ICIifQorKwl7cmVw bGFjZW1lbnR9CisrICAgIH0KKysKKysgICAgaWYgeyAkcHJlZml4IGVxICIiIH0geworKwlpZiB7 ICRjb3JlZmlsZSBlcSAiIiB9IHsKKysJICAgIHNldCBwcmVmaXggInVubG9hZCBjb3JlZmlsZSIK KysJfSBlbHNlIHsKKysJICAgIHNldCBwcmVmaXggImxvYWQgY29yZWZpbGUiCisrCX0KKysgICAg fQorKworKyAgICB3aXRoX3Rlc3RfcHJlZml4ICRwcmVmaXggeworKwlnZGJfdGVzdCAiZXZlbnRz IGNvcmVmaWxlX2NoYW5nZWQgY2hlY2siIFwKKysJICAgICJeTm8gY29yZWZpbGVfY2hhbmdlZCBl dmVudCBoYXMgYmVlbiBzZWVuXFwuIiBcCisrCSAgICAibm8gY29yZWZpbGUgZXZlbnQgaGFzIGJl ZW4gc2VlbiIKKysKKysJZ2RiX3Rlc3QgImV2ZW50cyBleGl0ZWQgY2hlY2siIFwKKysJICAgICJe Tm8gZXhpdGVkIGV2ZW50IGhhcyBiZWVuIHNlZW5cXC4iIFwKKysJICAgICJubyBleGl0ZWQgZXZl bnQgaGFzIGJlZW4gc2VlbiIKKysKKysJaWYgeyAkY29yZWZpbGUgZXEgIiIgfSB7CisrCSAgICBn ZGJfdGVzdCAiY29yZS1maWxlIiAiXk5vIGNvcmUgZmlsZSBub3dcXC4iICJ1bmxvYWQgY3VycmVu dCBjb3JlIGZpbGUiCisrCisrCSAgICBnZGJfdGVzdCAiZXZlbnRzIGNvcmVmaWxlX2NoYW5nZWQg Y2hlY2siIFwKKysJCSJFdmVudCAxLzEsIEluZmVyaW9yICRpbmZlcmlvciwgQ29yZWZpbGUgTm9u ZSIgXAorKwkJImV4cGVjdGVkIGNvcmVmaWxlIGV2ZW50IGhhcyBiZWVuIHNlZW4iCisrCisrCSAg ICBnZGJfdGVzdCAiZXZlbnRzIGV4aXRlZCBjaGVjayIgXAorKwkJIkV2ZW50IDEvMSwgSW5mZXJp b3IgJGluZmVyaW9yLCBFeGl0IENvZGUgTm9uZSIgXAorKwkJImV4cGVjdGVkIGV4aXRlZCBldmVu dCBoYXMgYmVlbiBzZWVuIgorKwl9IGVsc2UgeworKwkgICAgZ2RiX3Rlc3QgImNvcmUtZmlsZSAk Y29yZWZpbGUiICIuKiIgImxvYWQgY29yZSBmaWxlIgorKworKwkgICAgaWYgeyAkcmVwbGFjZW1l bnQgfSB7CisrCQlnZGJfdGVzdCAiZXZlbnRzIGNvcmVmaWxlX2NoYW5nZWQgY2hlY2siIFwKKysJ CSAgICBbbXVsdGlfbGluZSBcCisrCQkJICJFdmVudCAxLzIsIEluZmVyaW9yICRpbmZlcmlvciwg Q29yZWZpbGUgTm9uZSIgXAorKwkJCSAiRXZlbnQgMi8yLCBJbmZlcmlvciAkaW5mZXJpb3IsIENv cmVmaWxlIFtzdHJpbmdfdG9fcmVnZXhwICRjb3JlZmlsZV0iXSBcCisrCQkgICAgImV4cGVjdGVk IGNvcmVmaWxlIGV2ZW50IGhhcyBiZWVuIHNlZW4iCisrCisrCQlnZGJfdGVzdCAiZXZlbnRzIGV4 aXRlZCBjaGVjayIgXAorKwkJICAgICJFdmVudCAxLzEsIEluZmVyaW9yICRpbmZlcmlvciwgRXhp dCBDb2RlIE5vbmUiIFwKKysJCSAgICAiZXhwZWN0ZWQgZXhpdGVkIGV2ZW50IGhhcyBiZWVuIHNl ZW4iCisrCSAgICB9IGVsc2UgeworKwkJZ2RiX3Rlc3QgImV2ZW50cyBjb3JlZmlsZV9jaGFuZ2Vk IGNoZWNrIiBcCisrCQkgICAgIkV2ZW50IDEvMSwgSW5mZXJpb3IgJGluZmVyaW9yLCBDb3JlZmls ZSBbc3RyaW5nX3RvX3JlZ2V4cCAkY29yZWZpbGVdIiBcCisrCQkgICAgImV4cGVjdGVkIGNvcmVm aWxlIGV2ZW50IGhhcyBiZWVuIHNlZW4iCisrCisrCQlnZGJfdGVzdCAiZXZlbnRzIGV4aXRlZCBj aGVjayIgXAorKwkJICAgICJeTm8gZXhpdGVkIGV2ZW50IGhhcyBiZWVuIHNlZW5cXC4iIFwKKysJ CSAgICAibm8gZXhpdGVkIGV2ZW50IHdhcyBlbWl0dGVkIgorKwkgICAgfQorKwl9CisrICAgIH0K KysKKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0IC1ub3Bhc3MgImV2ZW50cyBjb3JlZmlsZV9jaGFu Z2VkIHJlc2V0IgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgLW5vcGFzcyAiZXZlbnRzIGV4aXRl ZCByZXNldCIKKyt9CisrCisrIyBBIGhlbHBlciBwcm9jIHJ1bnMgY2xlYW5fcmVzdGFydCBwYXNz aW5nIHRocm91Z2ggQVJHUywgYW5kIHRoZW4gbG9hZHMgdGhlCisrIyB0ZXN0J3MgUHl0aG9uIHNj cmlwdC4KKytwcm9jIGNsZWFuX3Jlc3RhcnRfYW5kX2xvYWRfcHlfc2NyaXB0IHsgYXJncyB9IHsK KysgICAgY2xlYW5fcmVzdGFydCB7Kn0kYXJncworKworKyAgICAjIExvYWQgdGhlIFB5dGhvbiBz Y3JpcHQgaW50byBHREIuCisrICAgIGdkYl90ZXN0ICJzb3VyY2UgJDo6cmVtb3RlX3B5dGhvbl9m aWxlIiAiXlN1Y2Nlc3MiIFwKKysJInNvdXJjZSBweXRob24gc2NyaXB0IgorK30KKysKKysjIENy ZWF0ZSBhIGNvcHkgb2YgdGhlIGNvcmVmaWxlLgorK3NldCBvdGhlcl9jb3JlZmlsZSBbc3RhbmRh cmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX0tb3RoZXIuY29yZV0KKytyZW1vdGVfZXhlYyBidWls ZCAiY3AgJGNvcmVmaWxlICRvdGhlcl9jb3JlZmlsZSIKKysKKytjbGVhbl9yZXN0YXJ0X2FuZF9s b2FkX3B5X3NjcmlwdAorKworK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGluZiA9IGdkYi5z ZWxlY3RlZF9pbmZlcmlvcigpIiBcCisrICAgICJjYXB0dXJlIGN1cnJlbnQgaW5mZXJpb3IiCisr CisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChpbmYuY29yZWZpbGUpIiAiXk5vbmUiIFwKKysgICAg IkluZmVyaW9yLmNvcmVmaWxlIGlzIE5vbmUgYmVmb3JlIGxvYWRpbmcgYSBjb3JlIGZpbGUiCisr CisrY29yZV9maWxlX2NtZCAtY29yZWZpbGUgJGNvcmVmaWxlCisrCisrc2V0IGZpbGVfcmUgW3N0 cmluZ190b19yZWdleHAgJGNvcmVmaWxlXQorK2dkYl90ZXN0ICJweXRob24gcHJpbnQoaW5mLmNv cmVmaWxlKSIgIl48Z2RiXFwuQ29yZWZpbGUgaW5mZXJpb3I9MSBmaWxlbmFtZT0nJGZpbGVfcmUn PiIgXAorKyAgICAiSW5mZXJpb3IuY29yZWZpbGUgaXMgYSB2YWxpZCBvYmplY3QgYWZ0ZXIgbG9h ZGluZyBhIGNvcmUgZmlsZSIKKysKKytnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBjb3JlMT1p bmYuY29yZWZpbGUiICJjYXB0dXJlIGdkYi5Db3JlZmlsZSBvYmplY3QiCisrCisrZ2RiX3Rlc3Qg InB5dGhvbiBwcmludChjb3JlMS5fX2RpY3RfXykiICJeXFx7XFx9IiBcCisrICAgICJwcmludCBD b3JlZmlsZS5fX2RpY3RfXyB3aGVuIGVtcHR5IgorKworK2dkYl90ZXN0X25vX291dHB1dCAicHl0 aG9uIGNvcmUxLl9teV9hdHRyaWJ1dGUgPSBcIkhlbGxvXCIiIFwKKysgICAgIndyaXRlIG5ldyBh dHRyaWJ1dGUgaW50byBDb3JlZmlsZSBvYmplY3QiCisrCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dChjb3JlMS5fbXlfYXR0cmlidXRlKSIgIl5IZWxsbyIgXAorKyAgICAiaW1tZWRpYXRlbHkgcmVh ZCBuZXcgYXR0cmlidXRlIgorKworK2dkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTEuX19kaWN0 X18pIiAiXlxceydfbXlfYXR0cmlidXRlJzogJ0hlbGxvJ1xcfSIgXAorKyAgICAicHJpbnQgQ29y ZWZpbGUuX19kaWN0X18gYWZ0ZXIgYWRkaW5nIGFuIGF0dHJpYnV0ZSIKKysKKytnZGJfdGVzdCAi cHl0aG9uIHByaW50KGNvcmUxLmZpbGVuYW1lKSIgIl4kZmlsZV9yZSIgXAorKyAgICAiQ29yZWZp bGUuZmlsZW5hbWUgYXR0cmlidXRlIHdvcmtzIGFzIGV4cGVjdGVkIgorKworK2dkYl90ZXN0ICJw eXRob24gcHJpbnQoY29yZTEuaXNfdmFsaWQoKSkiICJeVHJ1ZSIgXAorKyAgICAiQ29yZWZpbGUu aXNfdmFsaWQoKSBpcyBUcnVlIHdoaWxlIGNvcmVmaWxlIGlzIGxvYWRlZCIKKysKKytjb3JlX2Zp bGVfY21kCisrCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMS5pc192YWxpZCgpKSIgIl5G YWxzZSIgXAorKyAgICAiQ29yZWZpbGUuaXNfdmFsaWQoKSBpcyBGYWxzZSBhZnRlciBjb3JlZmls ZSBpcyB1bmxvYWRlZCIKKysKKytnZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUxLl9fZGljdF9f KSIgIl5cXHsnX215X2F0dHJpYnV0ZSc6ICdIZWxsbydcXH0iIFwKKysgICAgInByaW50IENvcmVm aWxlLl9fZGljdF9fIHdpdGggYXR0cmlidXRlIHdoZW4gaW52YWxpZCIKKysKKytnZGJfdGVzdCAi cHl0aG9uIHByaW50KGNvcmUxKSIgIl48Z2RiXFwuQ29yZWZpbGUgXFwoaW52YWxpZFxcKT4iIFwK KysgICAgInByaW50IGFuIGludmFsaWQgZ2RiLkNvcmVmaWxlIG9iamVjdCIKKysKKytnZGJfdGVz dCAicHl0aG9uIHByaW50KGNvcmUxLmZpbGVuYW1lKSIgXAorKyAgICBbbXVsdGlfbGluZSBcCisr CSAiUHl0aG9uIEV4Y2VwdGlvbiA8Y2xhc3MgJ1J1bnRpbWVFcnJvcic+OiBDb3JlZmlsZSBubyBs b25nZXIgZXhpc3RzXFwuIiBcCisrCSAiRXJyb3Igb2NjdXJyZWQgaW4gUHl0aG9uOiBDb3JlZmls ZSBubyBsb25nZXIgZXhpc3RzXFwuIl0gXAorKyAgICAiZXJyb3Igd2hlbiByZWFkaW5nIGZpbGVu YW1lIGZyb20gaW52YWxpZCBDb3JlZmlsZSIKKysKKytnZGJfdGVzdCAicHl0aG9uIHByaW50KGlu Zi5jb3JlZmlsZSkiICJeTm9uZSIgXAorKyAgICAiSW5mZXJpb3IuY29yZWZpbGUgaXMgTm9uZSBh Z2FpbiBhZnRlciBjb3JlZmlsZSB1bmxvYWQiCisrCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChj b3JlMS5fbXlfYXR0cmlidXRlKSIgIl5IZWxsbyIgXAorKyAgICAicmVhZCBuZXcgYXR0cmlidXRl IGZyb20gaW52YWxpZCBjb3JlIGZpbGUiCisrCisrIyBDcmVhdGUgYSBzZWNvbmQgaW5mZXJpb3Iu CisrZ2RiX3Rlc3QgImFkZC1pbmZlcmlvciIKKytnZGJfdGVzdCAiaW5mZXJpb3IgMiIKKysKKyt3 aXRoX3Rlc3RfcHJlZml4ICJpbiBzZWNvbmQgaW5mZXJpb3IiIHsKKysgICAgY29yZV9maWxlX2Nt ZCAtY29yZWZpbGUgJGNvcmVmaWxlIC1pbmZlcmlvciAyCisrCisrICAgIGdkYl90ZXN0ICJweXRo b24gcHJpbnQoaW5mLmNvcmVmaWxlKSIgIl5Ob25lIiBcCisrCSJmaXJzdCBpbmZlcmlvciBzdGls bCBoYXMgbm8gY29yZSBmaWxlIgorKworKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBj b3JlMj1nZGIuc2VsZWN0ZWRfaW5mZXJpb3IoKS5jb3JlZmlsZSIgXAorKwkiY2FwdHVyZSBnZGIu Q29yZWZpbGUgb2JqZWN0IgorKworKyAgICAjIFRoZSBfbXlfYXR0cmlidXRlIHdhcyBhZGRlZCB0 byBDT1JFMSwgbm90IENPUkUyLiAgQ2hlY2sgaXQKKysgICAgIyBkb2Vzbid0IHNvbWVob3cgYXBw ZWFyIG9uIENPUkUyLgorKyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUyLl9teV9hdHRy aWJ1dGUpIiBcCisrCSJBdHRyaWJ1dGVFcnJvci4qOiAnZ2RiXFwuQ29yZWZpbGUnIG9iamVjdCBo YXMgbm8gYXR0cmlidXRlICdfbXlfYXR0cmlidXRlJyIgXAorKwkidHJ5IHRvIHJlYWQgYXR0cmli dXRlIHRoYXQgZG9lc24ndCBleGlzdCIKKysKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludChj b3JlMi5maWxlbmFtZSkiICJeJGZpbGVfcmUiIFwKKysJIkNvcmVmaWxlLmZpbGVuYW1lIGF0dHJp YnV0ZSB3b3JrcyBhcyBleHBlY3RlZCIKKysKKysgICAgZ2RiX3Rlc3QgImluZmVyaW9yIDEiCisr fQorKworKyMgUmVhZCB0aGUgbmFtZSBvZiB0aGUgY29yZSBmaWxlIGZyb20gdGhlIHNlY29uZCBw cm9ncmFtIHNwYWNlIHdoaWxlCisrIyB0aGUgY3VycmVudCBwcm9ncmFtIHNwYWNlIGlzIHRoZSBm aXJzdCBvbmUuCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMi5maWxlbmFtZSkiICJeJGZp bGVfcmUiIFwKKysgICAgIkNvcmVmaWxlLmZpbGVuYW1lIGF0dHJpYnV0ZSB3b3JrcyBmcm9tIGRp ZmZlcmVudCBwcm9nc3BhY2UiCisrCisrIyBMb2FkIHRoZSBvdGhlciBjb3JlZmlsZSBpbnRvIHRo ZSBmaXJzdCBpbmZlcmlvci4KKytjb3JlX2ZpbGVfY21kIC1jb3JlZmlsZSAkb3RoZXJfY29yZWZp bGUgXAorKyAgICAtcHJlZml4ICJsb2FkIG90aGVyIGNvcmVmaWxlIGludG8gaW5mZXJpb3IgMSIK KysKKysjIERlbGV0ZSB0aGUgc2Vjb25kIGluZmVyaW9yLiAgV2UgbmVlZCB0byBzd2l0Y2ggdG8g dGhlIHNlY29uZAorKyMgaW5mZXJpb3IgYW5kIHVubG9hZCBpdHMgY29yZWZpbGUgYmVmb3JlIHdl IGNhbiBkbyB0aGF0LiAgVGhlbiwKKysjIHN3aXRjaCBiYWNrIHRvIHRoZSBmaXJzdCBpbmZlcmlv ciwgZGVsZXRlIHRoZSBzZWNvbmQsIGFuZCB0cnkgdG8KKysjIHJlYWQgdGhlIGZpbGVuYW1lIG9m IHRoZSBjb3JlIGZpbGUgZnJvbSB0aGUgKG5vdyBkZWxldGVkKSBzZWNvbmQKKysjIGluZmVyaW9y LiAgV2Ugc2hvdWxkIGdldCBhbiBlcnJvciBhYm91dCB0aGUgZ2RiLkNvcmVmaWxlIGJlaW5nCisr IyBpbnZhbGlkLgorK3dpdGhfdGVzdF9wcmVmaXggInJlbW92ZSBzZWNvbmQgaW5mZXJpb3IiIHsK KysgICAgZ2RiX3Rlc3QgImluZmVyaW9yIDIiCisrCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJp bnQoaW5mLmNvcmVmaWxlLmZpbGVuYW1lKSIgXAorKwkiXltzdHJpbmdfdG9fcmVnZXhwICRvdGhl cl9jb3JlZmlsZV0iIFwKKysJInJlYWQgaW5mZXJpb3IgMSBjb3JlZmlsZSB3aGVuIGluIGluZmVy aW9yIDIiCisrCisrICAgIGdkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGNvcmUxPWluZi5jb3Jl ZmlsZSIgXAorKwkiY2FwdHVyZSBpbmZlcmlvciAxIGdkYi5Db3JlZmlsZSB3aGlsZSBpbiBpbmZl cmlvciAyIgorKworKyAgICAjIFRoaXMgaXMgYSBuZXcgQ09SRTEgb2JqZWN0LCBjaGVjayB0aGF0 IF9teV9hdHRyaWJ1dGUgaXMgZ29uZS4KKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3Jl MS5fbXlfYXR0cmlidXRlKSIgXAorKwkiQXR0cmlidXRlRXJyb3IuKjogJ2dkYlxcLkNvcmVmaWxl JyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnX215X2F0dHJpYnV0ZSciIFwKKysJInRyeSB0byBy ZWFkIGF0dHJpYnV0ZSB0aGF0IGRvZXNuJ3QgZXhpc3QiCisrCisrICAgIGNvcmVfZmlsZV9jbWQg LWluZmVyaW9yIDIKKysKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMi5maWxlbmFt ZSkiIFwKKysJW211bHRpX2xpbmUgXAorKwkgICAgICJQeXRob24gRXhjZXB0aW9uIDxjbGFzcyAn UnVudGltZUVycm9yJz46IENvcmVmaWxlIG5vIGxvbmdlciBleGlzdHNcXC4iIFwKKysJICAgICAi RXJyb3Igb2NjdXJyZWQgaW4gUHl0aG9uOiBDb3JlZmlsZSBubyBsb25nZXIgZXhpc3RzXFwuIl0g XAorKwkiZXJyb3Igd2hlbiByZWFkaW5nIGZpbGVuYW1lIGZyb20gaW52YWxpZCBDb3JlZmlsZSIK KysKKysgICAgZ2RiX3Rlc3QgImluZmVyaW9yIDEiCisrCisrICAgIGdkYl90ZXN0ICJyZW1vdmUt aW5mZXJpb3JzIDIiCisrCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTIuaXNfdmFs aWQoKSkiICJeRmFsc2UiIFwKKysJIkNvcmVmaWxlLmlzX3ZhbGlkKCkgaXMgRmFsc2UgYWZ0ZXIg Y29yZWZpbGUgaXMgdW5sb2FkZWQsIGFuZCBQcm9nc3BhY2UgaXMgZGVsZXRlZCIKKysKKysgICAg Z2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMi5maWxlbmFtZSkiIFwKKysJW211bHRpX2xpbmUg XAorKwkgICAgICJQeXRob24gRXhjZXB0aW9uIDxjbGFzcyAnUnVudGltZUVycm9yJz46IENvcmVm aWxlIG5vIGxvbmdlciBleGlzdHNcXC4iIFwKKysJICAgICAiRXJyb3Igb2NjdXJyZWQgaW4gUHl0 aG9uOiBDb3JlZmlsZSBubyBsb25nZXIgZXhpc3RzXFwuIl0gXAorKwkiZXJyb3Igd2hlbiByZWFk aW5nIGZpbGVuYW1lIG9mIGFuIGludmFsaWQgQ29yZWZpbGUsIGZyb20gZGVsZXRlZCBwcm9ncmFt IHNwYWNlIgorKworKyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUxLmlzX3ZhbGlkKCkp IiAiXlRydWUiIFwKKysJImNoZWNrIGluZmVyaW9yIDEgY29yZSBmaWxlIGlzIHN0aWxsIHZhbGlk IgorK30KKysKKysjIFRlc3QgdGhlIENvcmVmaWxlLm1hcHBlZF9maWxlcygpIEFQSS4gIFRoZSBQ eXRob24gc2NyaXB0IHRoYXQgaXMKKysjIHNvdXJjZWQgaGVyZSBpbXBsZW1lbnRzICdpbmZvIHBy b2MgbWFwcGluZ3MnIGluIFB5dGhvbiB1c2luZyB0aGUKKysjIG1hcHBlZF9maWxlcyBBUEkuICBU aGUgb3V0cHV0IGZyb20gdGhlIGJ1aWx0LWluIGNvbW1hbmQsIGFuZCB0aGUKKysjIFB5dGhvbiBj b21tYW5kIHNob3VsZCBiZSBpZGVudGljYWwuCisrd2l0aF90ZXN0X3ByZWZpeCAidGVzdCBtYXBw ZWQgZmlsZXMgZGF0YSIgeworKyAgICBjbGVhbl9yZXN0YXJ0X2FuZF9sb2FkX3B5X3NjcmlwdAor KworKyAgICAjIExvYWQgdGhlIGNvcmUgZmlsZS4KKysgICAgY29yZV9maWxlX2NtZCAtY29yZWZp bGUgJGNvcmVmaWxlCisrCisrICAgICMgVHdvIGZpbGVzIHRvIHdyaXRlIHRoZSBvdXRwdXQgdG8u CisrICAgIHNldCBvdXRfMSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHtnZGJfdGVzdF9maWxlX25h bWV9LW91dC0xLnR4dF0KKysgICAgc2V0IG91dF8yIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2dk Yl90ZXN0X2ZpbGVfbmFtZX0tb3V0LTIudHh0XQorKworKyAgICAjIFJ1biB0aGUgYnVpbHQtaW4g Y29tbWFuZCwgdGhlbiB0aGUgbmV3IFB5dGhvbiBjb21tYW5kLCBjYXB0dXJlCisrICAgICMgdGhl IG91dHB1dC4KKysgICAgZ2RiX3Rlc3QgInBpcGUgaW5mbyBwcm9jIG1hcHBpbmdzIHwgdGVlICRv dXRfMSIgIi4qIiBcCisrCSJjYXB0dXJlIGJ1aWx0LWluIG1hcHBpbmdzIG91dHB1dCIKKysgICAg Z2RiX3Rlc3QgInBpcGUgaW5mbyBwcm9jIHB5LW1hcHBpbmdzIHwgdGVlICRvdXRfMiIgIi4qIiBc CisrCSJjYXB0dXJlIFB5dGhvbiBiYXNlZCBtYXBwaW5ncyBkYXRhIgorKworKyAgICAjIENoZWNr IHRoZSBvdXRwdXQgaXMgaWRlbnRpY2FsLgorKyAgICBnZGJfdGVzdCAic2hlbGwgZGlmZiAtcyAk b3V0XzEgJG91dF8yIiBcCisrCSJGaWxlcyBcW15cclxuXF0rLW91dC0xLnR4dCBhbmQgXFteXHJc blxdKy1vdXQtMi50eHQgYXJlIGlkZW50aWNhbCIgXAorKwkiZGlmZiBpbnB1dCBhbmQgb3V0cHV0 IG9uZSIKKysKKysgICAgIyBDaGVjayBidWlsZC1pZHMgd2l0aGluIHRoZSBjb3JlIGZpbGUgbWFw cGluZyBkYXRhLgorKyAgICBnZGJfdGVzdCAiY2hlY2stYnVpbGQtaWRzIiAiXlBBU1MiCisrCisr ICAgICMgQ2hlY2sgdGhlIGlzX21haW5fZXhlY3V0YWJsZSBmbGFnIGluIHRoZSBtYXBwaW5nIGRh dGEuCisrICAgIGdkYl90ZXN0ICJjaGVjay1tYWluLWV4ZWN1dGFibGUiICJeUEFTUyIKKysKKysg ICAgIyBDaGVjayB0aGF0IHRoZSBtYXBwZWQgZmlsZXMgImxpc3QiIGlzIGFjdHVhbGx5IGFuIGlt bXV0YWJsZQorKyAgICAjIHR1cGxlLgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBj b3JlID0gZ2RiLnNlbGVjdGVkX2luZmVyaW9yKCkuY29yZWZpbGUiCisrICAgIGdkYl90ZXN0X25v X291dHB1dCAicHl0aG9uIG1hcHBlZF9maWxlcyA9IGNvcmUubWFwcGVkX2ZpbGVzKCkiCisrICAg IGdkYl90ZXN0ICJweXRob24gcHJpbnQodHlwZShtYXBwZWRfZmlsZXMpKSIgXAorKwkiXjxjbGFz cyAndHVwbGUnPiIKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBtYXBwZWRfZmlsZXNcWzBcXSA9IE5v bmUiIFwKKysJIid0dXBsZScgb2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgaXRlbSBhc3NpZ25tZW50 IgorKyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50KG1hcHBlZF9maWxlc1xbMFxdIGlzIE5vbmUp IiAiXkZhbHNlIgorKworKyAgICAjIEFuZCBzYW1lIGZvciB0aGUgbGlzdCBvZiByZWdpb25zIGZv ciBhIG1hcHBlZCBmaWxlLgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiByZWdpb25z ID0gbWFwcGVkX2ZpbGVzXFswXF0ucmVnaW9ucyIKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dCh0eXBlKHJlZ2lvbnMpKSIgXAorKwkiXjxjbGFzcyAndHVwbGUnPiIKKysgICAgZ2RiX3Rlc3Qg InB5dGhvbiByZWdpb25zXFswXF0gPSBOb25lIiBcCisrCSIndHVwbGUnIG9iamVjdCBkb2VzIG5v dCBzdXBwb3J0IGl0ZW0gYXNzaWdubWVudCIKKyt9CisrCisrIyBMb2FkIGEgY29yZSBmaWxlLiAg R0RCIHNob3VsZCBmaWd1cmUgb3V0IHdoaWNoIGZpbGUgaXMgYmVpbmcgZGVidWdnZWQuCisrIyBU aGVuIHVzZSAnc3RhcnQnIHRvIHJ1biB0aGlzIGV4ZWN1dGFibGUsIHRoaXMgd2lsbCByZXBsYWNl IHRoZSBjb3JlIGZpbGUKKysjIHRhcmdldC4gIEF0IGxlYXN0IG9uIExpbnV4LCB0aGlzIHJlcGxh Y2VtZW50IGlzIGRvbmUgd2l0aG91dCBjYWxsaW5nCisrIyB0YXJnZXRfZGV0YWNoLiAgVGhpcyB0 ZXN0IGNoZWNrcyB0aGF0IHRoZSBleHBlY3RlZCBjb3JlIGZpbGUgY2hhbmdlZCBhbmQKKysjIGlu ZmVyaW9yIGV4aXRlZCBldmVudHMgYXJlIHN0aWxsIHNlZW4uCisrd2l0aF90ZXN0X3ByZWZpeCAi c3RhcnQgZnJvbSBjb3JlZmlsZSIgeworKyAgICBpZiB7IFtnZGJfcHJvdG9jb2xfaXNfbmF0aXZl XSB9IHsKKysJY2xlYW5fcmVzdGFydF9hbmRfbG9hZF9weV9zY3JpcHQKKysKKysJIyBMb2FkIHRo ZSBjb3JlIGZpbGUuCisrCWNvcmVfZmlsZV9jbWQgLWNvcmVmaWxlICRjb3JlZmlsZQorKworKwkj IENoZWNrIEdEQiBmaWd1cmVkIG91dCB0aGUgZXhlY3V0YWJsZS4KKysJZ2RiX3Rlc3QgImluZm8g aW5mZXJpb3JzIDEiIFwKKysJICAgICJcW15cclxuXF0rW3N0cmluZ190b19yZWdleHAgJGJpbmZp bGVdXFxzKiIgXAorKwkgICAgImNoZWNrIGV4ZWN1dGFibGUgd2FzIGRldGVjdGVkIGNvcnJlY3Rs eSIKKysKKysJZ2RiX3Rlc3QgInN0YXJ0IiBcCisrCSAgICAiVGVtcG9yYXJ5IGJyZWFrcG9pbnQg JDo6ZGVjaW1hbCwgbWFpbiBcXChcXCkuKiIgXAorKworKwlnZGJfdGVzdCAiZXZlbnRzIGNvcmVm aWxlX2NoYW5nZWQgY2hlY2siIFwKKysJICAgICJFdmVudCAxLzEsIEluZmVyaW9yIDEsIENvcmVm aWxlIE5vbmUiIFwKKysJICAgICJleHBlY3RlZCBjb3JlZmlsZSBldmVudCBoYXMgYmVlbiBzZWVu IgorKworKwlnZGJfdGVzdCAiZXZlbnRzIGV4aXRlZCBjaGVjayIgXAorKwkgICAgIkV2ZW50IDEv MSwgSW5mZXJpb3IgMSwgRXhpdCBDb2RlIE5vbmUiIFwKKysJICAgICJleHBlY3RlZCBleGl0ZWQg ZXZlbnQgaGFzIGJlZW4gc2VlbiIKKysKKysJZ2RiX3Rlc3Rfbm9fb3V0cHV0IC1ub3Bhc3MgImV2 ZW50cyBjb3JlZmlsZV9jaGFuZ2VkIHJlc2V0IgorKwlnZGJfdGVzdF9ub19vdXRwdXQgLW5vcGFz cyAiZXZlbnRzIGV4aXRlZCByZXNldCIKKysgICAgfQorK30KKysKKysjIExvYWQgYSBjb3JlIGZp bGUsIHRoZW4gbG9hZCBhIGRpZmZlcmVudCBjb3JlIGZpbGUgdG8gcmVwbGFjZSBpdC4KKysjIENo ZWNrIHRoYXQgdGhlIGV2ZW50cyB0aGF0IGFyZSBlbWl0dGVkIGFyZSBhcyBleHBlY3RlZC4KKyt3 aXRoX3Rlc3RfcHJlZml4ICJsb2FkIG9uZSBjb3JlIGZpbGUgb3ZlciBhbm90aGVyIiB7CisrICAg IGNsZWFuX3Jlc3RhcnRfYW5kX2xvYWRfcHlfc2NyaXB0CisrCisrICAgICMgTG9hZCB0aGUgY29y ZSBmaWxlLgorKyAgICBjb3JlX2ZpbGVfY21kIC1jb3JlZmlsZSAkY29yZWZpbGUgXAorKwktcHJl Zml4ICJsb2FkIGZpcnN0IGNvcmVmaWxlIgorKworKyAgICBjb3JlX2ZpbGVfY21kIC1jb3JlZmls ZSAkb3RoZXJfY29yZWZpbGUgXAorKwktcHJlZml4ICJsb2FkIHNlY29uZCBjb3JlZmlsZSIgXAor KwktcmVwbGFjZW1lbnQKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWNvcmVmaWxlLnB5IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvcmVmaWxlLnB5 CituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LWNvcmVmaWxlLnB5CitAQCAtMCwwICsxLDI2MSBAQAorKyMgQ29weXJp Z2h0IChDKSAyMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytpbXBvcnQgcGF0aGxpYgorKworKworK2NsYXNzIE1h cHBpbmc6CisrICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXBwaW5nLCByZWdpb24pOgorKyAgICAg ICAgc2VsZi5fbWFwcGluZyA9IG1hcHBpbmcKKysgICAgICAgIHNlbGYuX3JlZ2lvbiA9IHJlZ2lv bgorKworKyAgICBAcHJvcGVydHkKKysgICAgZGVmIHN0YXJ0KHNlbGYpOgorKyAgICAgICAgcmV0 dXJuIHNlbGYuX3JlZ2lvbi5zdGFydAorKworKyAgICBAcHJvcGVydHkKKysgICAgZGVmIGVuZChz ZWxmKToKKysgICAgICAgIHJldHVybiBzZWxmLl9yZWdpb24uZW5kCisrCisrICAgIEBwcm9wZXJ0 eQorKyAgICBkZWYgb2Zmc2V0KHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlZ2lvbi5m aWxlX29mZnNldAorKworKyAgICBAcHJvcGVydHkKKysgICAgZGVmIGZpbGVuYW1lKHNlbGYpOgor KyAgICAgICAgcmV0dXJuIHNlbGYuX21hcHBpbmcuZmlsZW5hbWUKKysKKysKKytkZWYgaW5mb19w cm9jX21hcHBpbmdzKCk6CisrICAgIHByaW50KCJNYXBwZWQgYWRkcmVzcyBzcGFjZXM6IikKKysg ICAgcHJpbnQoIiIpCisrICAgIGZvcm1hdF9zdHIgPSAiJS0xOHMgJS0xOHMgJS0xOHMgJS0xOHMg JXMgIgorKyAgICBwcmludChmb3JtYXRfc3RyICUgKCJTdGFydCBBZGRyIiwgIkVuZCBBZGRyIiwg IlNpemUiLCAiT2Zmc2V0IiwgIkZpbGUiKSkKKysKKysgICAgY29yZSA9IGdkYi5zZWxlY3RlZF9p bmZlcmlvcigpLmNvcmVmaWxlCisrICAgIG1hcHBpbmdzID0gY29yZS5tYXBwZWRfZmlsZXMoKQor KworKyAgICByZXN1bHQgPSBbXQorKyAgICBmb3IgbSBpbiBtYXBwaW5nczoKKysgICAgICAgIGZv ciByIGluIG0ucmVnaW9uczoKKysgICAgICAgICAgICByZXN1bHQuYXBwZW5kKE1hcHBpbmcobSwg cikpCisrCisrICAgIHJlc3VsdC5zb3J0KGtleT1sYW1iZGEgeDogeC5zdGFydCkKKysgICAgZm9y IHIgaW4gcmVzdWx0OgorKyAgICAgICAgc3ogPSByLmVuZCAtIHIuc3RhcnQKKysgICAgICAgIHBy aW50KAorKyAgICAgICAgICAgIGZvcm1hdF9zdHIKKysgICAgICAgICAgICAlICgKKysgICAgICAg ICAgICAgICAgIjB4JTAxNngiICUgci5zdGFydCwKKysgICAgICAgICAgICAgICAgIjB4JTAxNngi ICUgci5lbmQsCisrICAgICAgICAgICAgICAgICIweCUtMTZ4IiAlIHN6LAorKyAgICAgICAgICAg ICAgICAiMHglLTE2eCIgJSByLm9mZnNldCwKKysgICAgICAgICAgICAgICAgIiVzIiAlIHIuZmls ZW5hbWUsCisrICAgICAgICAgICAgKQorKyAgICAgICAgKQorKworKworK2NsYXNzIEluZm9Qcm9j UHlNYXBwaW5ncyhnZGIuQ29tbWFuZCk6CisrICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKysgICAg ICAgIGdkYi5Db21tYW5kLl9faW5pdF9fKHNlbGYsICJpbmZvIHByb2MgcHktbWFwcGluZ3MiLCBn ZGIuQ09NTUFORF9EQVRBKQorKworKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ3MsIGZyb21fdHR5 KToKKysgICAgICAgIGluZm9fcHJvY19tYXBwaW5ncygpCisrCisrCisrSW5mb1Byb2NQeU1hcHBp bmdzKCkKKysKKysKKytjbGFzcyBDaGVja0J1aWxkSWRzKGdkYi5Db21tYW5kKToKKysgICAgZGVm IF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgZ2RiLkNvbW1hbmQuX19pbml0X18oc2VsZiwgImNo ZWNrLWJ1aWxkLWlkcyIsIGdkYi5DT01NQU5EX0RBVEEpCisrCisrICAgIGRlZiBpbnZva2Uoc2Vs ZiwgYXJncywgZnJvbV90dHkpOgorKyAgICAgICAgaW5mID0gZ2RiLnNlbGVjdGVkX2luZmVyaW9y KCkKKysgICAgICAgIG9iamZpbGVzID0gaW5mLnByb2dzcGFjZS5vYmpmaWxlcygpCisrCisrICAg ICAgICBwYXRoX3RvX2J1aWxkX2lkID0ge30KKysKKysgICAgICAgIGZvciBvIGluIG9iamZpbGVz OgorKyAgICAgICAgICAgIGlmIG5vdCBvLmlzX2ZpbGUgb3Igby5idWlsZF9pZCBpcyBOb25lOgor KyAgICAgICAgICAgICAgICBjb250aW51ZQorKyAgICAgICAgICAgIHAgPSBwYXRobGliLlBhdGgo by5maWxlbmFtZSkucmVzb2x2ZSgpCisrICAgICAgICAgICAgYiA9IG8uYnVpbGRfaWQKKysgICAg ICAgICAgICBwYXRoX3RvX2J1aWxkX2lkW3BdID0gYgorKworKyAgICAgICAgY291bnQgPSAwCisr ICAgICAgICBjb3JlX21hcHBlZF9maWxlcyA9IGluZi5jb3JlZmlsZS5tYXBwZWRfZmlsZXMoKQor KyAgICAgICAgZm9yIG0gaW4gY29yZV9tYXBwZWRfZmlsZXM6CisrICAgICAgICAgICAgcCA9IHBh dGhsaWIuUGF0aChtLmZpbGVuYW1lKS5yZXNvbHZlKCkKKysgICAgICAgICAgICBiID0gbS5idWls ZF9pZAorKworKyAgICAgICAgICAgIGlmIHAgaW4gcGF0aF90b19idWlsZF9pZDoKKysgICAgICAg ICAgICAgICAgY291bnQgKz0gMQorKyAgICAgICAgICAgICAgICBhc3NlcnQgcGF0aF90b19idWls ZF9pZFtwXSA9PSBiLCAiYnVpbGQtaWQgbWlzbWF0Y2ggZm9yICVzIiAlIHAKKysKKysgICAgICAg IGFzc2VydCBjb3VudCA+IDAsICJubyBtYXBwZWQgZmlsZXMgY2hlY2tlZCIKKysKKysgICAgICAg IHByaW50KCJQQVNTIikKKysKKysKKytDaGVja0J1aWxkSWRzKCkKKysKKysKKytjbGFzcyBDaGVj a01haW5FeGVjKGdkYi5Db21tYW5kKToKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAg ICAgZ2RiLkNvbW1hbmQuX19pbml0X18oc2VsZiwgImNoZWNrLW1haW4tZXhlY3V0YWJsZSIsIGdk Yi5DT01NQU5EX0RBVEEpCisrCisrICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJncywgZnJvbV90dHkp OgorKyAgICAgICAgaW5mID0gZ2RiLnNlbGVjdGVkX2luZmVyaW9yKCkKKysgICAgICAgIHBzcGFj ZSA9IGluZi5wcm9nc3BhY2UKKysgICAgICAgIGV4ZWNfZmlsZW5hbWUgPSBwYXRobGliLlBhdGgo cHNwYWNlLmV4ZWN1dGFibGVfZmlsZW5hbWUpLnJlc29sdmUoKQorKworKyAgICAgICAgY291bnQg PSAwCisrICAgICAgICBjb3JlX21hcHBlZF9maWxlcyA9IGluZi5jb3JlZmlsZS5tYXBwZWRfZmls ZXMoKQorKyAgICAgICAgZm9yIG0gaW4gY29yZV9tYXBwZWRfZmlsZXM6CisrICAgICAgICAgICAg aWYgbm90IG0uaXNfbWFpbl9leGVjdXRhYmxlOgorKyAgICAgICAgICAgICAgICBjb250aW51ZQor KworKyAgICAgICAgICAgIHAgPSBwYXRobGliLlBhdGgobS5maWxlbmFtZSkucmVzb2x2ZSgpCisr CisrICAgICAgICAgICAgY291bnQgKz0gMQorKyAgICAgICAgICAgIGFzc2VydCBleGVjX2ZpbGVu YW1lID09IHAsICJtYWluIGV4ZWMgZmlsZW5hbWUgbWlzbWF0Y2giCisrCisrICAgICAgICBhc3Nl cnQgY291bnQgPT0gMSwgImludmFsaWQgbWFpbiBleGVjdXRhYmxlIGNvdW50IgorKworKyAgICAg ICAgcHJpbnQoIlBBU1MiKQorKworKworK0NoZWNrTWFpbkV4ZWMoKQorKworKworKyMgQW4gJ2V2 ZW50cycgcHJlZml4IGNvbW1hbmQuCisrY2xhc3MgZXZlbnRzX2NtZChnZGIuQ29tbWFuZCk6Cisr ICAgICIiIkluZm9ybWF0aW9uIGFib3V0IHJlY2VudCBQeXRob24gZXZlbnRzLiIiIgorKworKyAg ICBkZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICBnZGIuQ29tbWFuZC5fX2luaXRfXyhzZWxm LCAiZXZlbnRzIiwgZ2RiLkNPTU1BTkRfVVNFUiwgcHJlZml4PVRydWUpCisrCisrCisrIyBBbiAn ZXZlbnRzIGNvcmVmaWxlX2NoYW5nZWQnIHN1Yi1jb21tYW5kLgorK2NsYXNzIGV2ZW50c19jb3Jl ZmlsZV9jaGFuZ2VkX2NtZChnZGIuQ29tbWFuZCk6CisrICAgICIiIkNoZWNrIHJlY2VudCBjb3Jl ZmlsZV9jaGFuZ2VkIGV2ZW50cy4KKysKKysgICAgUmVxdWlyZXMgYSBzaW5nbGUgYXJndW1lbnQg ZWl0aGVyICdjaGVjaycgb3IgJ3Jlc2V0Jy4gIFdpdGgKKysgICAgJ2NoZWNrJywgcHJpbnQgZGV0 YWlscyBvZiBldmVyeSByZWNlbnQgY29yZWZpbGVfY2hhbmdlZCBldmVudC4KKysgICAgV2l0aCAn cmVzZXQnIGNsZWFyIHRoZSBsaXN0IG9mIHJlY2VudCBjb3JlZmlsZV9jaGFuZ2VkIGV2ZW50cy4i IiIKKysKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgZ2RiLkNvbW1hbmQuX19p bml0X18oc2VsZiwgImV2ZW50cyBjb3JlZmlsZV9jaGFuZ2VkIiwgZ2RiLkNPTU1BTkRfVVNFUikK KysgICAgICAgIHNlbGYuX2V2ZW50cyA9IFtdCisrICAgICAgICBnZGIuZXZlbnRzLmNvcmVmaWxl X2NoYW5nZWQuY29ubmVjdChsYW1iZGEgZTogc2VsZi5fY29yZWZpbGVfY2hhbmdlZF9oYW5kbGVy KGUpKQorKworKyAgICBkZWYgX2NvcmVmaWxlX2NoYW5nZWRfaGFuZGxlcihzZWxmLCBldmVudCk6 CisrICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShldmVudCwgZ2RiLkNvcmVmaWxlQ2hhbmdlZEV2 ZW50KQorKyAgICAgICAgaW5mID0gZXZlbnQuaW5mZXJpb3IKKysgICAgICAgIGFzc2VydCBpc2lu c3RhbmNlKGluZiwgZ2RiLkluZmVyaW9yKQorKworKyAgICAgICAgY29yZWZpbGUgPSBpbmYuY29y ZWZpbGUKKysgICAgICAgIGlmIGNvcmVmaWxlIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgIGFz c2VydCBjb3JlZmlsZS5pc192YWxpZCgpCisrICAgICAgICAgICAgY29yZWZpbGUgPSBjb3JlZmls ZS5maWxlbmFtZQorKworKyAgICAgICAgb2JqID0geyJpbmZlcmlvciI6IGluZi5udW0sICJjb3Jl ZmlsZSI6IGNvcmVmaWxlfQorKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChvYmopCisrCisr ICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJncywgZnJvbV90dHkpOgorKyAgICAgICAgaWYgYXJncyA9 PSAiY2hlY2siOgorKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl9ldmVudHMpID09IDA6CisrICAg ICAgICAgICAgICAgIHByaW50KCJObyBjb3JlZmlsZV9jaGFuZ2VkIGV2ZW50IGhhcyBiZWVuIHNl ZW4uIikKKysgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICB0b3RhbCA9IGxlbihz ZWxmLl9ldmVudHMpCisrICAgICAgICAgICAgICAgIGZvciBpZHgsIG9iaiBpbiBlbnVtZXJhdGUo c2VsZi5fZXZlbnRzLCBzdGFydD0xKToKKysgICAgICAgICAgICAgICAgICAgIGluZl9udW0gPSBv YmpbImluZmVyaW9yIl0KKysgICAgICAgICAgICAgICAgICAgIGNvcmVmaWxlID0gb2JqWyJjb3Jl ZmlsZSJdCisrCisrICAgICAgICAgICAgICAgICAgICBpZiBjb3JlZmlsZSBpcyBOb25lOgorKyAg ICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJOb25lIgorKyAgICAgICAgICAgICAgICAgICAg ZWxzZToKKysgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBjb3JlZmlsZQorKworKyAgICAg ICAgICAgICAgICAgICAgcHJpbnQoCisrICAgICAgICAgICAgICAgICAgICAgICAgIkV2ZW50IHt9 L3t9LCBJbmZlcmlvciB7fSwgQ29yZWZpbGUge30iLmZvcm1hdCgKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWR4LCB0b3RhbCwgaW5mX251bSwgbXNnCisrICAgICAgICAgICAgICAgICAg ICAgICAgKQorKyAgICAgICAgICAgICAgICAgICAgKQorKyAgICAgICAgZWxpZiBhcmdzID09ICJy ZXNldCI6CisrICAgICAgICAgICAgc2VsZi5fZXZlbnRzID0gW10KKysgICAgICAgIGVsc2U6Cisr ICAgICAgICAgICAgcmFpc2UgZ2RiLkdkYkVycm9yKCJVbmtub3duIGNvbW1hbmQgYXJnczoge30i LmZvcm1hdChhcmdzKSkKKysKKysKKysjIEFuICdldmVudHMgZXhpdGVkJyBzdWItY29tbWFuZC4K KytjbGFzcyBldmVudHNfZXhpdGVkX2NtZChnZGIuQ29tbWFuZCk6CisrICAgICIiIkNoZWNrIHJl Y2VudCBleGl0ZWQgZXZlbnRzLgorKworKyAgICBSZXF1aXJlcyBhIHNpbmdsZSBhcmd1bWVudCBl aXRoZXIgJ2NoZWNrJyBvciAncmVzZXQnLiAgV2l0aAorKyAgICAnY2hlY2snLCBwcmludCBkZXRh aWxzIG9mIGV2ZXJ5IHJlY2VudCBleGl0ZWQgZXZlbnQuICBXaXRoICdyZXNldCcKKysgICAgY2xl YXIgdGhlIGxpc3Qgb2YgcmVjZW50IGV4aXRlZCBldmVudHMuIiIiCisrCisrICAgIGRlZiBfX2lu aXRfXyhzZWxmKToKKysgICAgICAgIGdkYi5Db21tYW5kLl9faW5pdF9fKHNlbGYsICJldmVudHMg ZXhpdGVkIiwgZ2RiLkNPTU1BTkRfVVNFUikKKysgICAgICAgIHNlbGYuX2V2ZW50cyA9IFtdCisr ICAgICAgICBnZGIuZXZlbnRzLmV4aXRlZC5jb25uZWN0KGxhbWJkYSBlOiBzZWxmLl9leGl0ZWRf aGFuZGxlcihlKSkKKysKKysgICAgZGVmIF9leGl0ZWRfaGFuZGxlcihzZWxmLCBldmVudCk6Cisr ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShldmVudCwgZ2RiLkV4aXRlZEV2ZW50KQorKyAgICAg ICAgaW5mID0gZXZlbnQuaW5mZXJpb3IKKysgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGluZiwg Z2RiLkluZmVyaW9yKQorKworKyAgICAgICAgaWYgaGFzYXR0cihldmVudCwgImV4aXRfY29kZSIp OgorKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGV2ZW50LmV4aXRfY29kZSwgaW50KQor KyAgICAgICAgICAgIGV4aXRfY29kZSA9IGV2ZW50LmV4aXRfY29kZQorKyAgICAgICAgZWxzZToK KysgICAgICAgICAgICBleGl0X2NvZGUgPSBOb25lCisrCisrICAgICAgICBvYmogPSB7ImluZmVy aW9yIjogaW5mLm51bSwgImV4aXRfY29kZSI6IGV4aXRfY29kZX0KKysgICAgICAgIHNlbGYuX2V2 ZW50cy5hcHBlbmQob2JqKQorKworKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ3MsIGZyb21fdHR5 KToKKysgICAgICAgIGlmIGFyZ3MgPT0gImNoZWNrIjoKKysgICAgICAgICAgICBpZiBsZW4oc2Vs Zi5fZXZlbnRzKSA9PSAwOgorKyAgICAgICAgICAgICAgICBwcmludCgiTm8gZXhpdGVkIGV2ZW50 IGhhcyBiZWVuIHNlZW4uIikKKysgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICB0 b3RhbCA9IGxlbihzZWxmLl9ldmVudHMpCisrICAgICAgICAgICAgICAgIGZvciBpZHgsIG9iaiBp biBlbnVtZXJhdGUoc2VsZi5fZXZlbnRzLCBzdGFydD0xKToKKysgICAgICAgICAgICAgICAgICAg IGluZl9udW0gPSBvYmpbImluZmVyaW9yIl0KKysgICAgICAgICAgICAgICAgICAgIGV4aXRfY29k ZSA9IG9ialsiZXhpdF9jb2RlIl0KKysKKysgICAgICAgICAgICAgICAgICAgIGlmIGV4aXRfY29k ZSBpcyBOb25lOgorKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJOb25lIgorKyAgICAg ICAgICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBleGl0 X2NvZGUKKysKKysgICAgICAgICAgICAgICAgICAgIHByaW50KAorKyAgICAgICAgICAgICAgICAg ICAgICAgICJFdmVudCB7fS97fSwgSW5mZXJpb3Ige30sIEV4aXQgQ29kZSB7fSIuZm9ybWF0KAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHgsIHRvdGFsLCBpbmZfbnVtLCBtc2cKKysg ICAgICAgICAgICAgICAgICAgICAgICApCisrICAgICAgICAgICAgICAgICAgICApCisrICAgICAg ICBlbGlmIGFyZ3MgPT0gInJlc2V0IjoKKysgICAgICAgICAgICBzZWxmLl9ldmVudHMgPSBbXQor KyAgICAgICAgZWxzZToKKysgICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3IoIlVua25vd24g Y29tbWFuZCBhcmdzOiB7fSIuZm9ybWF0KGFyZ3MpKQorKworKworK2V2ZW50c19jbWQoKQorK2V2 ZW50c19jb3JlZmlsZV9jaGFuZ2VkX2NtZCgpCisrZXZlbnRzX2V4aXRlZF9jbWQoKQorKworK3By aW50KCJTdWNjZXNzIikKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9kYXAtc3VwcG9y dC5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9kYXAtc3VwcG9ydC5leHAKKy0tLSBhL2dkYi90ZXN0 c3VpdGUvbGliL2RhcC1zdXBwb3J0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZGFwLXN1 cHBvcnQuZXhwCitAQCAtMzYyLDYgKzM2MiwyMiBAQCBwcm9jIGRhcF9hdHRhY2gge3BpZCB7cHJv ZyAiIn19IHsKKyAgICAgcmV0dXJuIFtkYXBfc2VuZF9yZXF1ZXN0IGF0dGFjaCAkYXJnc10KKyB9 CisgCisrIyBTdGFydCBnZGIsIHNlbmQgYSBEQVAgaW5pdGlhbGl6ZSByZXF1ZXN0LCBhbmQgdGhl biBhbiBhdHRhY2ggcmVxdWVzdAorKyMgc3BlY2lmeWluZyBDT1JFRklMRSBhcyB0aGUgY29yZSBm aWxlIHRvIGF0dGFjaCB0by4gIFJldHVybnMgdGhlCisrIyBlbXB0eSBzdHJpbmcgb24gZmFpbHVy ZSwgb3IgdGhlIGF0dGFjaCByZXF1ZXN0IHNlcXVlbmNlIElELgorK3Byb2MgZGFwX2NvcmVmaWxl IHtjb3JlZmlsZSB7cHJvZyAiIn19IHsKKysgICAgaWYge1tkYXBfaW5pdGlhbGl6ZSAic3RhcnR1 cCAtIGluaXRpYWxpemUiXSA9PSAiIn0geworKwlyZXR1cm4gIiIKKysgICAgfQorKworKyAgICBz ZXQgYXJncyBbZm9ybWF0IHtvIGNvcmVGaWxlIFtzICIlcyJdfSAkY29yZWZpbGVdCisrICAgIGlm IHskcHJvZyAhPSAiIn0geworKwlhcHBlbmQgYXJncyBbZm9ybWF0IHsgcHJvZ3JhbSBbcyAiJXMi XX0gJHByb2ddCisrICAgIH0KKysKKysgICAgcmV0dXJuIFtkYXBfc2VuZF9yZXF1ZXN0IGF0dGFj aCAkYXJnc10KKyt9CisrCisgIyBTdGFydCBnZGIsIHNlbmQgYSBEQVAgaW5pdGlhbGl6ZSByZXF1 ZXN0LCBhbmQgdGhlbiBhbiBhdHRhY2ggcmVxdWVzdAorICMgc3BlY2lmeWluZyBUQVJHRVQgYXMg dGhlIHJlbW90ZSB0YXJnZXQuICBSZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcgb24KKyAjIGZhaWx1 cmUsIG9yIHRoZSBhdHRhY2ggcmVxdWVzdCBzZXF1ZW5jZSBJRC4KK0BAIC0zNzIsMjYgKzM4OCwz MyBAQCBwcm9jIGRhcF90YXJnZXRfcmVtb3RlIHt0YXJnZXR9IHsKKyAgICAgcmV0dXJuIFtkYXBf c2VuZF9yZXF1ZXN0IGF0dGFjaCBbZm9ybWF0IHtvIHRhcmdldCBbcyAlc119ICR0YXJnZXRdXQor IH0KKyAKKy0jIFJlYWQgdGhlIG1vc3QgcmVjZW50IERBUCBsb2cgZmlsZSBhbmQgY2hlY2sgaXQg Zm9yIGV4Y2VwdGlvbnMuCistcHJvYyBkYXBfY2hlY2tfbG9nX2ZpbGUge30geworKyMgUmVhZCB0 aGUgbW9zdCByZWNlbnQgREFQIGxvZyBmaWxlIGFuZCBjaGVjayBpdCBmb3IgZXhjZXB0aW9ucy4g IFdlCisrIyBleHBlY3QgdG8gc2VlIGV4YWN0bHkgRVhQRUNURURfRVhDRVBUSU9OX0NPVU5UIGV4 Y2VwdGlvbnMgaW4gdGhlIGxvZy4KKytwcm9jIGRhcF9jaGVja19sb2dfZmlsZSB7IHtleHBlY3Rl ZF9leGNlcHRpb25fY291bnQgMH0gfSB7CisgICAgIHNldCBmZCBbb3BlbiBbY3VycmVudF9kYXBf bG9nX2ZpbGVdXQorICAgICBzZXQgY29udGVudHMgW3JlYWQgJGZkXQorICAgICBjbG9zZSAkZmQK KyAKKy0gICAgc2V0IG9rIDEKKysgICAgc2V0IGV4Y2VwdGlvbl9jb3VudCAwCisgICAgIGZvcmVh Y2ggbGluZSBbc3BsaXQgJGNvbnRlbnRzICJcbiJdIHsKKyAJaWYge1tyZWdleHAgIl5UcmFjZWJh Y2siICRsaW5lXX0geworLQkgICAgc2V0IG9rIDAKKy0JICAgIGJyZWFrCisrCSAgICBpbmNyIGV4 Y2VwdGlvbl9jb3VudAorKwkgICAgaWYgeyAkZXhjZXB0aW9uX2NvdW50ID4gJGV4cGVjdGVkX2V4 Y2VwdGlvbl9jb3VudH0geworKwkJYnJlYWsKKysJICAgIH0KKyAJfQorICAgICB9CisgCistICAg IGlmIHskb2t9IHsKKysgICAgaWYgeyRleGNlcHRpb25fY291bnQgPT0gJGV4cGVjdGVkX2V4Y2Vw dGlvbl9jb3VudH0geworIAlwYXNzICJleGNlcHRpb25zIGluIGxvZyBmaWxlIgorICAgICB9IGVs c2UgeworIAl2ZXJib3NlIC1sb2cgLS0gICItLS0gREFQIExPRyBTVEFSVCAtLS0iCisgCXZlcmJv c2UgLWxvZyAtLSAkY29udGVudHMKKyAJdmVyYm9zZSAtbG9nIC0tICAiLS0tIERBUCBMT0cgRU5E IC0tLSIKKysJaWYgeyAkZXhwZWN0ZWRfZXhjZXB0aW9uX2NvdW50ID4gMCB9IHsKKysJICAgIHZl cmJvc2UgLWxvZyAtLSBbam9pbiBbbGlzdCAiRXhwZWN0ZWQgJGV4cGVjdGVkX2V4Y2VwdGlvbl9j b3VudCIgXAorKwkJCQkJImV4Y2VwdGlvbihzKSwgc2F3ICRleGNlcHRpb25fY291bnQiXV0KKysJ fQorIAlmYWlsICJleGNlcHRpb25zIGluIGxvZyBmaWxlIgorICAgICB9CisgfQorQEAgLTQwNyw4 ICs0MzAsOSBAQCBwcm9jIGRhcF9jaGVja19sb2dfZmlsZV9yZSB7IHJlIH0geworIH0KKyAKKyAj IENsZWFubHkgc2h1dCBkb3duIGdkYi4gIFRFUk1JTkFURSBpcyBwYXNzZWQgYXMgdGhlIHRlcm1p bmF0ZURlYnVnZ2VlCistIyBwYXJhbWV0ZXIgdG8gdGhlIHJlcXVlc3QuCistcHJvYyBkYXBfc2h1 dGRvd24ge3t0ZXJtaW5hdGUgZmFsc2V9fSB7CisrIyBwYXJhbWV0ZXIgdG8gdGhlIHJlcXVlc3Qu ICBUaGUgRVhQRUNURURfRVhDRVBUSU9OX0NPVU5UIGlzIHRoZQorKyMgbnVtYmVyIG9mIGV4Y2Vw dGlvbnMgdGhhdCB3ZSBleHBlY3QgdG8gc2VlIGluIHRoZSBsYXRlc3QgREFQIGxvZy4KKytwcm9j IGRhcF9zaHV0ZG93biB7e3Rlcm1pbmF0ZSBmYWxzZX0ge2V4cGVjdGVkX2V4Y2VwdGlvbl9jb3Vu dCAwfX0geworICAgICBkYXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2UgInNodXRkb3duIiBk aXNjb25uZWN0IFwKKyAJW2Zvcm1hdCB7byB0ZXJtaW5hdGVEZWJ1Z2dlZSBbbCAlc119ICR0ZXJt aW5hdGVdCisgCitAQCAtNDIwLDcgKzQ0NCw3IEBAIHByb2MgZGFwX3NodXRkb3duIHt7dGVybWlu YXRlIGZhbHNlfX0geworIAorICAgICBjbGVhcl9nZGJfc3Bhd25faWQKKyAKKy0gICAgZGFwX2No ZWNrX2xvZ19maWxlCisrICAgIGRhcF9jaGVja19sb2dfZmlsZSAkZXhwZWN0ZWRfZXhjZXB0aW9u X2NvdW50CisgfQorIAorICMgU2VhcmNoIHRoZSBldmVudCBsaXN0IEVWRU5UUyBmb3IgYW4gb3V0 cHV0IGV2ZW50IG1hdGNoaW5nIHRoZSByZWdleHAKCmRpZmYgLS1naXQgYS9nZGItaW5kZXgtZ2Vu ZXJhdGlvbi1maXhlcy5wYXRjaCBiL2dkYi1pbmRleC1nZW5lcmF0aW9uLWZpeGVzLnBhdGNoCmlu ZGV4IGFiNWJlZWMuLjRmN2MwNzQgMTAwNjQ0Ci0tLSBhL2dkYi1pbmRleC1nZW5lcmF0aW9uLWZp eGVzLnBhdGNoCisrKyBiL2dkYi1pbmRleC1nZW5lcmF0aW9uLWZpeGVzLnBhdGNoCkBAIC01OTcs NyArNTk3LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC1nZGItaW5kZXguYyBiL2dk Yi9kd2FyZjIvcmVhZC1nZGItaW5kZXguYwogZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dk Yi9zeW10YWIuYwogLS0tIGEvZ2RiL3N5bXRhYi5jCiArKysgYi9nZGIvc3ltdGFiLmMKLUBAIC00 ODMwLDcgKzQ4MzAsNTAgQEAgc3ltYm9sX3NlYXJjaDo6Y29tcGFyZV9zZWFyY2hfc3ltcyAoY29u c3Qgc3ltYm9sX3NlYXJjaCAmc3ltX2EsCitAQCAtNDg2OSw3ICs0ODY5LDUwIEBAIHN5bWJvbF9z ZWFyY2g6OmNvbXBhcmVfc2VhcmNoX3N5bXMgKGNvbnN0IHN5bWJvbF9zZWFyY2ggJnN5bV9hLAog ICAgaWYgKHN5bV9hLmJsb2NrICE9IHN5bV9iLmJsb2NrKQogICAgICByZXR1cm4gc3ltX2EuYmxv Y2sgLSBzeW1fYi5ibG9jazsKICAKCmRpZmYgLS1naXQgYS9nZGItcmhiejI0MDM1ODAtbWlzcGxh Y2VkLXN5bXRhYnMucGF0Y2ggYi9nZGItcmhiejI0MDM1ODAtbWlzcGxhY2VkLXN5bXRhYnMucGF0 Y2gKaW5kZXggNzk5NmQ4Mi4uMzVmZGFhZCAxMDA2NDQKLS0tIGEvZ2RiLXJoYnoyNDAzNTgwLW1p c3BsYWNlZC1zeW10YWJzLnBhdGNoCisrKyBiL2dkYi1yaGJ6MjQwMzU4MC1taXNwbGFjZWQtc3lt dGFicy5wYXRjaApAQCAtOTIsNyArOTIsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9saW5l LWhlYWRlci5oIGIvZ2RiL2R3YXJmMi9saW5lLWhlYWRlci5oCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3 YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQuYwogLS0tIGEvZ2RiL2R3YXJmMi9yZWFkLmMK ICsrKyBiL2dkYi9kd2FyZjIvcmVhZC5jCi1AQCAtNjIyMiw4ICs2MjIyLDggQEAgZHdhcmYyX2N1 OjpzZXR1cF90eXBlX3VuaXRfZ3JvdXBzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSkKK0BAIC02MjI3 LDggKzYyMjcsOCBAQCBkd2FyZjJfY3U6OnNldHVwX3R5cGVfdW5pdF9ncm91cHMgKHN0cnVjdCBk aWVfaW5mbyAqZGllKQogIAkgICAgICBzZi0+c3ltdGFiID0gYWxsb2NhdGVfc3ltdGFiIChjdXN0 LCBuYW1lLCBuYW1lX2Zvcl9pZCk7CiAgCSAgICB9CiAgCkBAIC0xMDMsNyArMTAzLDcgQEAgZGlm ZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKICAJfQogICAg ICB9CiAgICBlbHNlCi1AQCAtNjI0MSw3ICs2MjQxLDcgQEAgZHdhcmYyX2N1OjpzZXR1cF90eXBl X3VuaXRfZ3JvdXBzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSkKK0BAIC02MjQ2LDcgKzYyNDYsNyBA QCBkd2FyZjJfY3U6OnNldHVwX3R5cGVfdW5pdF9ncm91cHMgKHN0cnVjdCBkaWVfaW5mbyAqZGll KQogICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWxlX25hbWVzLnNpemUgKCk7ICsraSkKICAJewog IAkgIGZpbGVfZW50cnkgJmZlID0gZmlsZV9uYW1lc1tpXTsKQEAgLTExMiw3ICsxMTIsNyBAQCBk aWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQuYwogIAl9CiAg ICAgIH0KICAKLUBAIC0xMTU4NCw3ICsxMTU4NCw3IEBAIHByb2Nlc3Nfc3RydWN0dXJlX3Njb3Bl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMTE1ODks NyArMTE1ODksNyBAQCBwcm9jZXNzX3N0cnVjdHVyZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkgICAgewogIAkgICAgICAvKiBBbnkgcmVsYXRl ZCBzeW10YWIgd2lsbCBkby4gICovCiAgCSAgICAgIHN5bXRhYgpAQCAtMTIxLDcgKzEyMSw3IEBA IGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCiAgCSAg ICB9CiAgCSAgZWxzZQogIAkgICAgewotQEAgLTE2NTg3LDYgKzE2NTg3LDkgQEAgZHdhcmZfZGVj b2RlX2xpbmVzIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwK K0BAIC0xNjU5Miw2ICsxNjU5Miw5IEBAIGR3YXJmX2RlY29kZV9saW5lcyAoc3RydWN0IGxpbmVf aGVhZGVyICpsaCwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgICBpZiAoZGVjb2RlX21hcHBpbmcp CiAgICAgIGR3YXJmX2RlY29kZV9saW5lc18xIChsaCwgY3UsIGxvd3BjKTsKICAKQEAgLTEzMSw3 ICsxMzEsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3Jl YWQuYwogICAgLyogTWFrZSBzdXJlIGEgc3ltdGFiIGlzIGNyZWF0ZWQgZm9yIGV2ZXJ5IGZpbGUs IGV2ZW4gZmlsZXMKICAgICAgIHdoaWNoIGNvbnRhaW4gb25seSB2YXJpYWJsZXMgKGkuZS4gbm8g Y29kZSB3aXRoIGFzc29jaWF0ZWQKICAgICAgIGxpbmUgbnVtYmVycykuICAqLwotQEAgLTE2NjAy LDcgKzE2NjA1LDcgQEAgZHdhcmZfZGVjb2RlX2xpbmVzIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxo LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKK0BAIC0xNjYwNyw3ICsxNjYxMCw3IEBAIGR3YXJmX2Rl Y29kZV9saW5lcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgc3RydWN0IGR3YXJmMl9jdSAqY3Us CiAgCXNmLT5zeW10YWIgPSBhbGxvY2F0ZV9zeW10YWIgKGN1c3QsIHNmLT5uYW1lLmNfc3RyICgp LAogIAkJCQkgICAgICBzZi0+bmFtZV9mb3JfaWQuY19zdHIgKCkpOwogIApAQCAtMTQwLDcgKzE0 MCw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5j CiAgICAgIH0KICB9CiAgCi1AQCAtMTY4NzksNyArMTY4ODIsNyBAQCBuZXdfc3ltYm9sIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 LAorQEAgLTE2ODg0LDcgKzE2ODg3LDcgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKICAJICAgICAgaWYg KGZlID09IE5VTEwpCiAgCQljb21wbGFpbnQgKF8oImZpbGUgaW5kZXggb3V0IG9mIHJhbmdlIikp OwogIAkgICAgICBlbHNlCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyNDM1OTUwLXNraXAtcmV2ZXJ0 LnBhdGNoIGIvZ2RiLXJoYnoyNDM1OTUwLXNraXAtcmV2ZXJ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA5MzFkMDYzLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MjQzNTk1MC1z a2lwLXJldmVydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi1Gcm9tIEZF RE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmV3IEJ1cmdl c3MgPGFidXJnZXNzQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDkgRmViIDIwMjYgMTY6MzE6MjMg KzAwMDAKLVN1YmplY3Q6IGdkYi1yaGJ6MjQzNTk1MC1za2lwLXJldmVydC5wYXRjaAotCi07OyBC YWNrcG9ydCBvZiB1cHN0cmVhbSBjb21taXQgZjA4ZmZiYmYyNjkxYmFkMmQ1ZGY2NjBlZTY0NDY0 NzY4Nzc3NWYwYwotOzsgQ2FuIGJlIGRyb3BwZWQgb24gYSByZWJhc2UgdG8gZ2RiIDE3LjIgb3Ig MTguMQotCi1SZXZlcnQgInNraXAgLWdmaWxlOiBjYWxsIGZubWF0Y2ggd2l0aG91dCBGTk1fRklM RV9OQU1FIgotCi1UaGlzIHJldmVydHMgY29tbWl0IDAyNjQ2YTRjNTYxZWM4ODQ5MTExNGI4Nzk1 MGNiYjgyN2M3ZDYxNGMuICBTZWU6Ci0KLSAgaHR0cHM6Ly9pbmJveC5zb3VyY2V3YXJlLm9yZy9n ZGItcGF0Y2hlcy8yMDI2MDIwMzE4NTUyOC45NDY5MTgtMS1ndWluZXZlcmVAcmVkaGF0LmNvbQot Ci1UaGlzIGNvbW1pdCBpbnRyb2R1Y2VkIGEgbm9uIGJhY2t3YXJkIGNvbXBhdGlibGUgY2hhbmdl IHRvIGhvdyBHREIKLWhhbmRsZWQgc2tpcCBmaWxlcy4gIFNvbWV0aGluZyBsaWtlOgotCi0gIHNr aXAgLWdmaWxlIGRpci8qLmMKLQotbm8gbG9uZ2VyIG1hdGNoZXMgZXZlcnkgZmlsZSB3aXRoaW4g J2Rpci8nLCBidXQgbm93IG1hdGNoZXMgZXZlcnkgZmlsZQotaW4gJ2Rpci8nIGFuZCB3aXRoaW4g ZXZlcnkgc3ViLWRpcmVjdG9yeSBvZiAnZGlyLycsIHdoaWNoIG1pZ2h0IG5vdCBiZQotd2hhdCB0 aGUgdXNlciB3YW50ZWQuCi0KLVRoZSBvcmlnaW5hbCBpbnRlbnRpb24gYmVoaW5kIHRoZSBjb21t aXQgaXMgc29saWQsIHdlIGp1c3QgbmVlZCB0bwotZmluZCBhIGJldHRlciBpbXBsZW1lbnRhdGlv bi4KLQotQnVnOiBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9p ZD0zMzg3MgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2Ri LnRleGluZm8KLS0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2RiLnRl eGluZm8KLUBAIC02ODI1LDkgKzY4MjUsNyBAQCBGdW5jdGlvbnMgaW4gQHZhcntmaWxlfSB3aWxs IGJlIHNraXBwZWQgb3ZlciB3aGVuIHN0ZXBwaW5nLgotIEBpdGVteCAtZ2ZpIEB2YXJ7ZmlsZS1n bG9iLXBhdHRlcm59Ci0gQGNpbmRleCBza2lwcGluZyBvdmVyIGZpbGVzIHZpYSBnbG9iLXN0eWxl IHBhdHRlcm5zCi0gRnVuY3Rpb25zIGluIGZpbGVzIG1hdGNoaW5nIEB2YXJ7ZmlsZS1nbG9iLXBh dHRlcm59IHdpbGwgYmUgc2tpcHBlZAotLW92ZXIgd2hlbiBzdGVwcGluZy4gIFRoZSBkaXJlY3Rv cnkgc2VwYXJhdG9yIGNoYXJhY3RlciBAZmlsZXsvfSBpcyB0cmVhdGVkIGFzIGEKLS1yZWd1bGFy IGNoYXJhY3Rlciwgc28gaXQgY2FuIGJlIG1hdGNoZWQgYnkgd2lsZGNhcmQgY2hhcmFjdGVycyBA ZmlsZXsqfSBhbmQKLS1AZmlsZXs/fS4KLStvdmVyIHdoZW4gc3RlcHBpbmcuCi0gCi0gQHNtYWxs ZXhhbXBsZQotIChAdmFsdWV7R0RCUH0pIHNraXAgLWdmaSB1dGlscy8qLmMKLWRpZmYgLS1naXQg YS9nZGIvc2tpcC5jIGIvZ2RiL3NraXAuYwotLS0tIGEvZ2RiL3NraXAuYwotKysrIGIvZ2RiL3Nr aXAuYwotQEAgLTUzMSw3ICs1MzEsNyBAQCBza2lwbGlzdF9lbnRyeTo6ZG9fc2tpcF9nZmlsZV9w IChjb25zdCBzeW10YWJfYW5kX2xpbmUgJmZ1bmN0aW9uX3NhbCkgY29uc3QKLSAgIC8qIENoZWNr IGZpcnN0IHNvbGUgU1lNVEFCLT5GSUxFTkFNRS4gIEl0IG1heSBub3QgYmUgYSBzdWJzdHJpbmcg b2YKLSAgICAgIHN5bXRhYl90b19mdWxsbmFtZSBhcyBpdCBtYXkgY29udGFpbiAiLi8iIGV0Yy4g ICovCi0gICBpZiAoZ2RiX2ZpbGVuYW1lX2ZubWF0Y2ggKG1fZmlsZS5jX3N0ciAoKSwgZnVuY3Rp b25fc2FsLnN5bXRhYi0+ZmlsZW5hbWUsCi0tCQkJICAgIEZOTV9OT0VTQ0FQRSkgPT0gMCkKLSsJ CQkgICAgRk5NX0ZJTEVfTkFNRSB8IEZOTV9OT0VTQ0FQRSkgPT0gMCkKLSAgICAgcmVzdWx0ID0g dHJ1ZTsKLSAKLSAgIC8qIEJlZm9yZSB3ZSBpbnZva2Ugc3ltdGFiX3RvX2Z1bGxuYW1lLCB3aGlj aCBpcyBleHBlbnNpdmUsIGRvIGEgcXVpY2sKLUBAIC01NDIsMTQgKzU0MiwxNCBAQCBza2lwbGlz dF9lbnRyeTo6ZG9fc2tpcF9nZmlsZV9wIChjb25zdCBzeW10YWJfYW5kX2xpbmUgJmZ1bmN0aW9u X3NhbCkgY29uc3QKLSAgIGVsc2UgaWYgKCFiYXNlbmFtZXNfbWF5X2RpZmZlcgotICAgICAgICYm IGdkYl9maWxlbmFtZV9mbm1hdGNoIChsYmFzZW5hbWUgKG1fZmlsZS5jX3N0ciAoKSksCi0gCQkJ ICAgICAgIGxiYXNlbmFtZSAoZnVuY3Rpb25fc2FsLnN5bXRhYi0+ZmlsZW5hbWUpLAotLQkJCSAg ICAgICBGTk1fTk9FU0NBUEUpICE9IDApCi0rCQkJICAgICAgIEZOTV9GSUxFX05BTUUgfCBGTk1f Tk9FU0NBUEUpICE9IDApCi0gICAgIHJlc3VsdCA9IGZhbHNlOwotICAgZWxzZQotICAgICB7Ci0g ICAgICAgLyogTm90ZTogc3ltdGFiX3RvX2Z1bGxuYW1lIGNhY2hlcyBpdHMgcmVzdWx0LCB0aHVz IHdlIGRvbid0IGhhdmUgdG8uICAqLwotICAgICAgIGNvbnN0IGNoYXIgKmZ1bGxuYW1lID0gc3lt dGFiX3RvX2Z1bGxuYW1lIChmdW5jdGlvbl9zYWwuc3ltdGFiKTsKLSAKLS0gICAgICByZXN1bHQg PSBnZGJfZmlsZW5hbWVfZm5tYXRjaCAobV9maWxlLmNfc3RyICgpLCBmdWxsbmFtZSwgRk5NX05P RVNDQVBFKTsKLSsgICAgICByZXN1bHQgPSBjb21wYXJlX2dsb2JfZmlsZW5hbWVzX2Zvcl9zZWFy Y2ggKGZ1bGxuYW1lLCBtX2ZpbGUuY19zdHIgKCkpOwotICAgICB9Ci0gCi0gICBpZiAoZGVidWdf c2tpcCkKLWRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLS0tLSBhL2dk Yi9zeW10YWIuYwotKysrIGIvZ2RiL3N5bXRhYi5jCi1AQCAtNjk4LDYgKzY5OCw0MCBAQCBpdGVy YXRlX292ZXJfc29tZV9zeW10YWJzIChjb25zdCBjaGFyICpuYW1lLAotICAgcmV0dXJuIGZhbHNl OwotIH0KLSAKLSsvKiBTYW1lIGFzIGNvbXBhcmVfZmlsZW5hbWVzX2Zvcl9zZWFyY2gsIGJ1dCBm b3IgZ2xvYi1zdHlsZSBwYXR0ZXJucy4KLSsgICBIZWFkcyB1cCBvbiB0aGUgb3JkZXIgb2YgdGhl IGFyZ3VtZW50cy4gIFRoZXkgbWF0Y2ggdGhlIG9yZGVyIG9mCi0rICAgY29tcGFyZV9maWxlbmFt ZXNfZm9yX3NlYXJjaCwgYnV0IGl0J3MgdGhlIG9wcG9zaXRlIG9mIHRoZSBvcmRlciBvZgotKyAg IGFyZ3VtZW50cyB0byBnZGJfZmlsZW5hbWVfZm5tYXRjaC4gICovCi0rCi0rYm9vbAotK2NvbXBh cmVfZ2xvYl9maWxlbmFtZXNfZm9yX3NlYXJjaCAoY29uc3QgY2hhciAqZmlsZW5hbWUsCi0rCQkJ CSAgIGNvbnN0IGNoYXIgKnNlYXJjaF9uYW1lKQotK3sKLSsgIC8qIFdlIHJlbHkgb24gdGhlIHBy b3BlcnR5IG9mIGdsb2Itc3R5bGUgcGF0dGVybnMgd2l0aCBGTk1fRklMRV9OQU1FIHRoYXQKLSsg ICAgIGFsbCAvcyBoYXZlIHRvIGJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkLiAgKi8KLSsgIGludCBm aWxlX3BhdGhfZWxlbWVudHMgPSBjb3VudF9wYXRoX2VsZW1lbnRzIChmaWxlbmFtZSk7Ci0rICBp bnQgc2VhcmNoX3BhdGhfZWxlbWVudHMgPSBjb3VudF9wYXRoX2VsZW1lbnRzIChzZWFyY2hfbmFt ZSk7Ci0rCi0rICBpZiAoc2VhcmNoX3BhdGhfZWxlbWVudHMgPiBmaWxlX3BhdGhfZWxlbWVudHMp Ci0rICAgIHJldHVybiBmYWxzZTsKLSsKLSsgIGlmIChJU19BQlNPTFVURV9QQVRIIChzZWFyY2hf bmFtZSkpCi0rICAgIHsKLSsgICAgICByZXR1cm4gKHNlYXJjaF9wYXRoX2VsZW1lbnRzID09IGZp bGVfcGF0aF9lbGVtZW50cwotKwkgICAgICAmJiBnZGJfZmlsZW5hbWVfZm5tYXRjaCAoc2VhcmNo X25hbWUsIGZpbGVuYW1lLAotKwkJCQkgICAgICAgRk5NX0ZJTEVfTkFNRSB8IEZOTV9OT0VTQ0FQ RSkgPT0gMCk7Ci0rICAgIH0KLSsKLSsgIHsKLSsgICAgY29uc3QgY2hhciAqZmlsZV90b19jb21w YXJlCi0rICAgICAgPSBzdHJpcF9sZWFkaW5nX3BhdGhfZWxlbWVudHMgKGZpbGVuYW1lLAotKwkJ CQkgICAgIGZpbGVfcGF0aF9lbGVtZW50cyAtIHNlYXJjaF9wYXRoX2VsZW1lbnRzKTsKLSsKLSsg ICAgcmV0dXJuIGdkYl9maWxlbmFtZV9mbm1hdGNoIChzZWFyY2hfbmFtZSwgZmlsZV90b19jb21w YXJlLAotKwkJCQkgRk5NX0ZJTEVfTkFNRSB8IEZOTV9OT0VTQ0FQRSkgPT0gMDsKLSsgIH0KLSt9 Ci0rCi0gLyogU2VlIHN5bXRhYi5oLiAgKi8KLSAKLSB2b2lkCi1kaWZmIC0tZ2l0IGEvZ2RiL3V0 aWxzLmMgYi9nZGIvdXRpbHMuYwotLS0tIGEvZ2RiL3V0aWxzLmMKLSsrKyBiL2dkYi91dGlscy5j Ci1AQCAtMzQ2Niw4ICszNDY2LDggQEAgd2FpdF90b19kaWVfd2l0aF90aW1lb3V0IChwaWRfdCBw aWQsIGludCAqc3RhdHVzLCBpbnQgdGltZW91dCkKLSAKLSAjZW5kaWYgLyogSEFWRV9XQUlUUElE ICovCi0gCi0tLyogUHJvdmlkZSBmbm1hdGNoIGNvbXBhdGlibGUgZnVuY3Rpb24gZm9yIG1hdGNo aW5nIG9mIGhvc3QgZmlsZXMuCi0tICAgRk5NX05PRVNDQVBFIG11c3QgYmUgc2V0IGluIEZMQUdT LgotKy8qIFByb3ZpZGUgZm5tYXRjaCBjb21wYXRpYmxlIGZ1bmN0aW9uIGZvciBGTk1fRklMRV9O QU1FIG1hdGNoaW5nIG9mIGhvc3QgZmlsZXMuCi0rICAgQm90aCBGTk1fRklMRV9OQU1FIGFuZCBG Tk1fTk9FU0NBUEUgbXVzdCBiZSBzZXQgaW4gRkxBR1MuCi0gCi0gICAgSXQgaGFuZGxlcyBjb3Jy ZWN0bHkgSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0gYW5kCi0gICAgSEFWRV9DQVNFX0lOU0VO U0lUSVZFX0ZJTEVfU1lTVEVNLiAgKi8KLUBAIC0zNDc1LDYgKzM0NzUsOCBAQCB3YWl0X3RvX2Rp ZV93aXRoX3RpbWVvdXQgKHBpZF90IHBpZCwgaW50ICpzdGF0dXMsIGludCB0aW1lb3V0KQotIGlu dAotIGdkYl9maWxlbmFtZV9mbm1hdGNoIChjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25zdCBjaGFy ICpzdHJpbmcsIGludCBmbGFncykKLSB7Ci0rICBnZGJfYXNzZXJ0ICgoZmxhZ3MgJiBGTk1fRklM RV9OQU1FKSAhPSAwKTsKLSsKLSAgIC8qIEl0IGlzIHVuY2xlYXIgaG93ICdcJyBlc2NhcGluZyB2 cy4gZGlyZWN0b3J5IHNlcGFyYXRvciBzaG91bGQgY29leGlzdC4gICovCi0gICBnZGJfYXNzZXJ0 ICgoZmxhZ3MgJiBGTk1fTk9FU0NBUEUpICE9IDApOwotIAoKZGlmZiAtLWdpdCBhL2dkYi1ycG0t c3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2ggYi9nZGItcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNo CmluZGV4IDA3YTY4ZDUuLjI4ZGYxNGIgMTAwNjQ0Ci0tLSBhL2dkYi1ycG0tc3VnZ2VzdGlvbi1z Y3JpcHQucGF0Y2gKKysrIGIvZ2RiLXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaApAQCAtMzMs NyArMzMsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2Ri LnRleGluZm8KICAqIE1hbiBQYWdlczo6ICAgICAgICAgICAgICAgICAgIE1hbnVhbCBwYWdlcwog ICogQ29weWluZzo6ICAgICAgICAgICAgICAgICAgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2Ugc2F5cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG93IHlvdSBjYW4gY29w eSBhbmQgc2hhcmUgQHZhbHVle0dEQk59Ci1AQCAtNTA5ODgsNiArNTA5ODksMTExIEBAIFNob3cg dGhlIGN1cnJlbnQgdmVyYm9zaXR5IHNldHRpbmcuCitAQCAtNTA5ODYsNiArNTA5ODcsMTExIEBA IFNob3cgdGhlIGN1cnJlbnQgdmVyYm9zaXR5IHNldHRpbmcuCiAgCiAgQGVuZCB0YWJsZQogIAoK ZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggNDVjNjcyNS4uZDViN2E3YiAx MDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTQxLDExICs0MSwxMSBAQCBO YW1lOiAlez9zY2xfcHJlZml4fWdkYgogIyBTZWUgdGltZXN0YW1wIG9mIHNvdXJjZSBnbnVsaWIg aW5zdGFsbGVkIGludG8gZ251bGliLyAuCiAlZ2xvYmFsIHNuYXBnbnVsaWIgMjAyMjA1MDEKICVn bG9iYWwgdGFybmFtZSBnZGItJXt2ZXJzaW9ufQotVmVyc2lvbjogMTcuMQorVmVyc2lvbjogMTcu MgogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVt YmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUn IHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGlu Zy4KLVJlbGVhc2U6IDEwJXs/ZGlzdH0KK1JlbGVhc2U6IDElez9kaXN0fQogCiBMaWNlbnNlOiBH UEwtMy4wLW9yLWxhdGVyIEFORCBCU0QtMy1DbGF1c2UgQU5EIEZTRkFQIEFORCBMR1BMLTIuMS1v ci1sYXRlciBBTkQgR1BMLTIuMC1vci1sYXRlciBBTkQgTEdQTC0yLjAtb3ItbGF0ZXIgQU5EIExp Y2Vuc2VSZWYtRmVkb3JhLVB1YmxpYy1Eb21haW4gQU5EIEdGREwtMS4zLW9yLWxhdGVyIEFORCBM R1BMLTIuMC1vci1sYXRlciBXSVRIIEdDQy1leGNlcHRpb24tMi4wIEFORCBHUEwtMy4wLW9yLWxh dGVyIFdJVEggR0NDLWV4Y2VwdGlvbi0zLjEgQU5EIEdQTC0yLjAtb3ItbGF0ZXIgV0lUSCBHTlUt Y29tcGlsZXItZXhjZXB0aW9uIEFORCBNSVQKICMgRG8gbm90IHByb3ZpZGUgVVJMIGZvciBzbmFw c2hvdHMgYXMgdGhlIGZpbGUgbGFzdHMgdGhlcmUgb25seSBmb3IgMiBkYXlzLgpAQCAtOTI0LDYg KzkyNCwxMyBAQCBmaQogIyBlbmRpZiBzY2wKIAogJWNoYW5nZWxvZworKiBUdWUgSnVuIDIzIDIw MjYgTWljaGFsIEtvbGFyIDxta29sYXJAcmVkaGF0LmNvbT4gLSAxNy4yLTEKKy0gUmViYXNlIHRv IEZTRiBHREIgMTcuMi4KKyAgRGVsZXRlZDogZ2RiLXJoYnoyNDM1OTUwLXNraXAtcmV2ZXJ0LnBh dGNoCisgIEJhY2twb3J0IGU0OTJmYjIyYjcwLCBnZGI6IGJhY2twb3J0IERBUCBjb3JlIGZpbGUg c3VwcG9ydAorICBSZXBsYWNlIG1hbnVhbCwgbXVsdGktZmlsZSBwYXRjaCBpbmNsdXNpb24gd2l0 aCBtb2Rlcm4gYXV0b3NldHVwCisgIEFkZCBycG1pbnNwZWN0LnlhbWwgdG8gZGVmaW5lIHBhY2th Z2Utc3BlY2lmaWMgdGVzdGluZyBwb2xpY3kKKwogKiBUaHUgSnVuIDA0IDIwMjYgUHl0aG9uIE1h aW50IDxweXRob24tbWFpbnRAcmVkaGF0LmNvbT4KIC0gUmVidWlsdCBmb3IgUHl0aG9uIDMuMTUK IAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGZkM2MyMDQuLmY3NmU3N2Mg MTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSArMSBAQAotU0hBNTEyIChn ZGItMTcuMS50YXIueHopID0gZjFhNjc1MWU0MzlhMjEyOGZlY2YzZWFlOGI1N2MxNjA4YTBkYzdj ZmU3OWI0MzU2YTkzNzg3NGU1YTQyYmIyZGYwYWJhMzZlYjZhOTQ1MmM0MTk2NjkwOGI5YTU5MDc2 YzdjYWQ5NzIwZjY4NDY4OGFiOTU2YjY1MDgwZjFkN2MKK1NIQTUxMiAoZ2RiLTE3LjIudGFyLnh6 KSA9IDc3OTRjNWExODViZTdlZDVlN2FkMTAwMGM0ZmY3ZDg0OTdjODA0MjVhMWJjMTA4YWFiOGZk M2RkOGVjZGRlMDM0ZTI5NGRmZDY1YjI1YzZiMGRjZDhlZDJhMjQwY2FmMDcyOTNmM2U3Mzc5MWI2 Y2ZjODkwZDU4MGQwYWY0NTgxCg==