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: Rich Mattes To: git-commits@fedoraproject.org Subject: [rpms/pcl] f44: Update to 1.11.1 Date: Thu, 25 Jun 2026 05:50:01 GMT Message-ID: <178236660170.1.6841854493344772493.rpms-pcl-85ae4a8b6867@fedoraproject.org> List-ID: X-Git-Repo: rpms/pcl X-Git-Branch: f44 X-Git-Rev: 85ae4a8b68676597ee52d6688f766ad525d923a1 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvcGNsCiAgICAgICAgICAgIEJyYW5jaCA6IGY0NAogICAgICAgICAgICBDb21t aXQgOiA4NWFlNGE4YjY4Njc2NTk3ZWU1MmQ2Njg4Zjc2NmFkNTI1ZDkyM2ExCiAgICAgICAgICAg IEF1dGhvciA6IFJpY2ggTWF0dGVzIDxyaWNobWF0dGVzQGdtYWlsLmNvbT4KICAgICAgICAgICAg RGF0ZSAgIDogMjAyMS0wMi0yMlQwOToyMToyMy0wNTowMAogICAgICAgICAgICBTdGF0cyAgOiAr MzM3My8tMyBpbiA0IGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVk b3JhcHJvamVjdC5vcmcvcnBtcy9wY2wvYy84NWFlNGE4YjY4Njc2NTk3ZWU1MmQ2Njg4Zjc2NmFk NTI1ZDkyM2ExP2JyYW5jaD1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgVXBkYXRl IHRvIDEuMTEuMQpCYWNrcG9ydCB1cHN0cmVhbSBwYXRjaCB0byBidWlsZCBhZ2FpbnN0IFZUSyA5 LjAgKHJoYnojMTg0MDk3NCkKCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25v cmUKaW5kZXggMmRiZWI3OC4uN2M1NDc4OSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8u Z2l0aWdub3JlCkBAIC0xNCwzICsxNCw0IEBACiAvcGNsLTEuOC4xLWZlZG9yYS50YXIueHoKIC9w Y2wtMS45LjEtZmVkb3JhLnRhci54egogL3BjbC0xLjExLjAtZmVkb3JhLnRhci54egorL3BjbC0x LjExLjEtZmVkb3JhLnRhci54egoKZGlmZiAtLWdpdCBhLzQyNjIucGF0Y2ggYi80MjYyLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZDdkZjYKLS0tIC9kZXYvbnVs bAorKysgYi80MjYyLnBhdGNoCkBAIC0wLDAgKzEsMzM2MSBAQAorZGlmZiAtdXAgLi8yZC9DTWFr ZUxpc3RzLnR4dC40MjYyIC4vMmQvQ01ha2VMaXN0cy50eHQKKy0tLSAuLzJkL0NNYWtlTGlzdHMu dHh0LjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuLzJkL0NN YWtlTGlzdHMudHh0CTIwMjEtMDItMjEgMjE6MzI6NTguMzE5MTc2NzI1IC0wNTAwCitAQCAtMzEs OCArMzEsNiBAQCBzZXQoaW1wbF9pbmNzCisgKQorIAorIGlmKCR7VlRLX0ZPVU5EfSkKKy0gIHNl dChWVEtfVVNFX0ZJTEUgIiR7VlRLX1VTRV9GSUxFfSIgQ0FDSEUgSU5URVJOQUwgIlZUS19VU0Vf RklMRSIpCistICBpbmNsdWRlKCIke1ZUS19VU0VfRklMRX0iKQorICAgc2V0KFZUS19JT19UQVJH RVRfTElOS19MSUJSQVJJRVMgdnRrQ29tbW9uIHZ0a1dpZGdldHMgdnRrSU8gdnRrSW1hZ2luZykK KyBlbmRpZigpCisgCitkaWZmIC11cCAuL2FwcHMvM2RfcmVjX2ZyYW1ld29yay9DTWFrZUxpc3Rz LnR4dC40MjYyIC4vYXBwcy8zZF9yZWNfZnJhbWV3b3JrL0NNYWtlTGlzdHMudHh0CistLS0gLi9h cHBzLzNkX3JlY19mcmFtZXdvcmsvQ01ha2VMaXN0cy50eHQuNDI2MgkyMDIwLTA4LTE0IDA4OjIz OjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vYXBwcy8zZF9yZWNfZnJhbWV3b3JrL0NNYWtlTGlz dHMudHh0CTIwMjEtMDItMjEgMjE6MzI6NTguMzI1MTc2NzUwIC0wNTAwCitAQCAtOSw3ICs5LDYg QEAgaWYoTk9UIFZUS19GT1VORCkKKyBlbHNlKCkKKyAgIHNldChERUZBVUxUIFRSVUUpCisgICBz ZXQoUkVBU09OKQorLSAgaW5jbHVkZSgiJHtWVEtfVVNFX0ZJTEV9IikKKyBlbmRpZigpCisgCisg IyBPcGVuTkkgZm91bmQ/CitkaWZmIC11cCAuL2FwcHMvM2RfcmVjX2ZyYW1ld29yay9pbmNsdWRl L3BjbC9hcHBzLzNkX3JlY19mcmFtZXdvcmsvdXRpbHMvdnRrX21vZGVsX3NhbXBsaW5nLmguNDI2 MiAuL2FwcHMvM2RfcmVjX2ZyYW1ld29yay9pbmNsdWRlL3BjbC9hcHBzLzNkX3JlY19mcmFtZXdv cmsvdXRpbHMvdnRrX21vZGVsX3NhbXBsaW5nLmgKKy0tLSAuL2FwcHMvM2RfcmVjX2ZyYW1ld29y ay9pbmNsdWRlL3BjbC9hcHBzLzNkX3JlY19mcmFtZXdvcmsvdXRpbHMvdnRrX21vZGVsX3NhbXBs aW5nLmguNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vYXBw cy8zZF9yZWNfZnJhbWV3b3JrL2luY2x1ZGUvcGNsL2FwcHMvM2RfcmVjX2ZyYW1ld29yay91dGls cy92dGtfbW9kZWxfc2FtcGxpbmcuaAkyMDIxLTAyLTIxIDIxOjM0OjAyLjk1MjQ2NjA0NCAtMDUw MAorQEAgLTgsNiArOCw3IEBACisgI3ByYWdtYSBvbmNlCisgCisgI2luY2x1ZGUgPHBjbC9jb21t b24vY29tbW9uLmg+CisrI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL3Z0ay9wY2xfdnRrX2Nv bXBhdGliaWxpdHkuaD4KKyAKKyAjaW5jbHVkZSA8dnRrQ2VsbEFycmF5Lmg+CisgI2luY2x1ZGUg PHZ0a1BMWVJlYWRlci5oPgorQEAgLTc0LDcgKzc1LDcgQEAgcmFuZFBTdXJmYWNlKHZ0a1BvbHlE YXRhKiBwb2x5ZGF0YSwKKyAKKyAgIGRvdWJsZSBBWzNdLCBCWzNdLCBDWzNdOworICAgdnRrSWRU eXBlIG5wdHMgPSAwOworLSAgdnRrSWRUeXBlKiBwdElkcyA9IG51bGxwdHI7CisrICB2dGtDZWxs UHRzUHRyIHB0SWRzID0gbnVsbHB0cjsKKyAgIHBvbHlkYXRhLT5HZXRDZWxsUG9pbnRzKGVsLCBu cHRzLCBwdElkcyk7CisgCisgICBpZiAocHRJZHMgPT0gbnVsbHB0cikKK0BAIC05OCw3ICs5OSw5 IEBAIHVuaWZvcm1fc2FtcGxpbmcoY29uc3QgdnRrU21hcnRQb2ludGVyPHYKKyAgIGRvdWJsZSBw MVszXSwgcDJbM10sIHAzWzNdLCB0b3RhbEFyZWEgPSAwOworICAgc3RkOjp2ZWN0b3I8ZG91Ymxl PiBjdW11bGF0aXZlQXJlYXMoY2VsbHMtPkdldE51bWJlck9mQ2VsbHMoKSwgMCk7CisgICBzdGQ6 OnNpemVfdCBpID0gMDsKKy0gIHZ0a0lkVHlwZSBucHRzID0gMCwgKnB0SWRzID0gbnVsbHB0cjsK KysgIHZ0a0lkVHlwZSBucHRzID0gMDsKKysgIHZ0a0NlbGxQdHNQdHIgcHRJZHMgPSBudWxscHRy OworKworICAgZm9yIChjZWxscy0+SW5pdFRyYXZlcnNhbCgpOyBjZWxscy0+R2V0TmV4dENlbGwo bnB0cywgcHRJZHMpOyBpKyspIHsKKyAgICAgcG9seWRhdGEtPkdldFBvaW50KHB0SWRzWzBdLCBw MSk7CisgICAgIHBvbHlkYXRhLT5HZXRQb2ludChwdElkc1sxXSwgcDIpOworZGlmZiAtdXAgLi9h cHBzL2Nsb3VkX2NvbXBvc2VyL0NNYWtlTGlzdHMudHh0LjQyNjIgLi9hcHBzL2Nsb3VkX2NvbXBv c2VyL0NNYWtlTGlzdHMudHh0CistLS0gLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL0NNYWtlTGlzdHMu dHh0LjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL2FwcHMv Y2xvdWRfY29tcG9zZXIvQ01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjYxNzY3 NTQgLTA1MDAKK0BAIC0xNCw3ICsxNCw2IEBAIGlmKE5PVCBWVEtfRk9VTkQpCisgZWxzZSgpCisg ICBzZXQoREVGQVVMVCBUUlVFKQorICAgc2V0KFJFQVNPTikKKy0gIGluY2x1ZGUoIiR7VlRLX1VT RV9GSUxFfSIpCisgZW5kaWYoKQorIAorICMgUVQ1IEZvdW5kPworQEAgLTI3LDcgKzI2LDcgQEAg ZWxzZWlmKE5PVCAke0RFRkFVTFR9IFNUUkVRVUFMICJBVVRPX09GRgorIGVuZGlmKCkKKyAKKyAj IFFWVEs/CistaWYoTk9UIFFWVEtfRk9VTkQpCisraWYoTk9UIEhBVkVfUVZUSykKKyAgIHNldChE RUZBVUxUIEFVVE9fT0ZGKQorICAgc2V0KFJFQVNPTiAiQ2xvdWQgY29tcG9zZXIgcmVxdWlyZXMg UVZUSyIpCisgZWxzZWlmKE5PVCAke0RFRkFVTFR9IFNUUkVRVUFMICJBVVRPX09GRiIpCitAQCAt NDEsNyArNDAsNyBAQCBpZigiJHtERUZBVUxUfSIgU1RSRVFVQUwgIlRSVUUiKQorIGVuZGlmKCkK KyAKKyBQQ0xfU1VCU1VCU1lTX09QVElPTihidWlsZCAiJHtTVUJTWVNfTkFNRX0iICIke1NVQlNV QlNZU19OQU1FfSIgIiR7U1VCU1VCU1lTX0RFU0N9IiAke0RFRkFVTFR9ICIke1JFQVNPTn0iKQor LVBDTF9TVUJTVUJTWVNfREVQRU5EKGJ1aWxkICIke1NVQlNZU19OQU1FfSIgIiR7U1VCU1VCU1lT X05BTUV9IiBERVBTICR7U1VCU1VCU1lTX0RFUFN9KQorK1BDTF9TVUJTVUJTWVNfREVQRU5EKGJ1 aWxkICIke1NVQlNZU19OQU1FfSIgIiR7U1VCU1VCU1lTX05BTUV9IiBERVBTICR7U1VCU1VCU1lT X0RFUFN9IEVYVF9ERVBTIHZ0aykKKyAKKyBQQ0xfQUREX0RPQygke1NVQlNVQlNZU19OQU1FfSkK KyAKK0BAIC05Miw3ICs5MSwxNCBAQCBzZXQoUENMX0xJQl9UWVBFX09SSUdJTiAke1BDTF9MSUJf VFlQRX0pCisgc2V0KFBDTF9MSUJfVFlQRSBTVEFUSUMpCisgUVQ1X1dSQVBfQ1BQKElOVEVSRkFD RV9IRUFERVJTX01PQyAke0lOVEVSRkFDRV9IRUFERVJTfSBPUFRJT05TIC1EQk9PU1RfVFRfSEFT X09QRVJBVE9SX0hQUF9JTkNMVURFRCAtREJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lB TElaQVRJT04pCisgUENMX0FERF9MSUJSQVJZKHBjbF9jY190b29sX2ludGVyZmFjZSBDT01QT05F TlQgJHtTVUJTVUJTWVNfTkFNRX0gU09VUkNFUyAke0lOVEVSRkFDRV9IRUFERVJTfSAke0lOVEVS RkFDRV9TT1VSQ0VTfSAke0lOVEVSRkFDRV9IRUFERVJTX01PQ30pCistdGFyZ2V0X2xpbmtfbGli cmFyaWVzKHBjbF9jY190b29sX2ludGVyZmFjZSBwY2xfY29tbW9uIHBjbF9maWx0ZXJzIHBjbF9z ZWFyY2ggcGNsX3Zpc3VhbGl6YXRpb24gJHtWVEtfTElCUkFSSUVTfSBRdDU6OldpZGdldHMpCisr Cisrc2V0KHZ0a19saWJzICR7VlRLX0xJQlJBUklFU30pCisrI1RPRE86IFVwZGF0ZSB3aGVuIENN QUtFIDMuMTAgaXMgYXZhaWxhYmxlCisraWYgKE5PVCAoJHtWVEtfVkVSU0lPTn0gVkVSU0lPTl9M RVNTIDkuMCkpCisrICBzZXQodnRrX2xpYnMgVlRLOjpHVUlTdXBwb3J0UXQpCisrZW5kaWYoKQor K3RhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfY2NfdG9vbF9pbnRlcmZhY2UgcGNsX2NvbW1vbiBw Y2xfZmlsdGVycyBwY2xfc2VhcmNoIHBjbF92aXN1YWxpemF0aW9uIFF0NTo6V2lkZ2V0cyAke3Z0 a19saWJzfSkKKysKKyBzZXQoUENMX0xJQl9UWVBFICR7UENMX0xJQl9UWVBFX09SSUdJTn0pCisg CisgaWYoQVBQTEUpCitkaWZmIC11cCAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wv YXBwcy9jbG91ZF9jb21wb3Nlci9jbG91ZF92aWV3LmguNDI2MiAuL2FwcHMvY2xvdWRfY29tcG9z ZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9jbG91ZF92aWV3LmgKKy0tLSAuL2Fw cHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9jbG91ZF92 aWV3LmguNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vYXBw cy9jbG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL2Nsb3VkX3Zp ZXcuaAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyNjE3Njc1NCAtMDUwMAorQEAgLTQyLDggKzQyLDE1 IEBACisgI2luY2x1ZGUgPHZ0a0V2ZW50UXRTbG90Q29ubmVjdC5oPgorIAorICNpbmNsdWRlIDxw Y2wvdmlzdWFsaXphdGlvbi9wY2xfdmlzdWFsaXplci5oPgorKyNpbmNsdWRlIDxwY2wvdmlzdWFs aXphdGlvbi9xdnRrX2NvbXBhdGliaWxpdHkuaD4KKyAjaW5jbHVkZSA8cGNsL2FwcHMvY2xvdWRf Y29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL2ludGVyYWN0b3Jfc3R5bGVfc3dpdGNoLmg+CisgCisr CisrI2luY2x1ZGUgPHZ0a1NtYXJ0UG9pbnRlci5oPgorKyNpbmNsdWRlIDx2dGtPcmllbnRhdGlv bk1hcmtlcldpZGdldC5oPgorKyNpbmNsdWRlIDx2dGtBeGVzQWN0b3IuaD4KKysjaW5jbHVkZSA8 dnRrVmVyc2lvbi5oPgorKworIGNsYXNzIFFJdGVtU2VsZWN0aW9uOworIGNsYXNzIFFTdGFuZGFy ZEl0ZW07CisgCitAQCAtNjcsMTEgKzc0LDEyIEBAIG5hbWVzcGFjZSBwY2wKKyAgICAgICAKKyAg ICAgICB2b2lkIAorICAgICAgIHNldE1vZGVsIChQcm9qZWN0TW9kZWwqIG5ld19tb2RlbCk7Cisr ICAgICAgCisgICAgICAgUHJvamVjdE1vZGVsKiAKKyAgICAgICBnZXRNb2RlbCAoKSBjb25zdCB7 IHJldHVybiBtb2RlbF87IH0KKyAgICAgICAKKy0gICAgICBRVlRLV2lkZ2V0KiAKKy0gICAgICBn ZXRRVlRLKCkgY29uc3Qge3JldHVybiBxdnRrXzsgfQorKyAgICAgIFBDTFFWVEtXaWRnZXQqCisr ICAgICAgZ2V0UVZUSygpIGNvbnN0IHsgcmV0dXJuIHF2dGtfOyB9CisgICAgICAgCisgICAgICAg cGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpQdHIKKyAgICAgICBnZXRQQ0xWaXN1 YWxpemVyICgpIGNvbnN0IHsgcmV0dXJuIHZpc187IH0KK0BAIC0xNDEsNyArMTQ5LDkgQEAgbmFt ZXNwYWNlIHBjbAorICAgICAgIAorICAgICAgIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFs aXplcjo6UHRyIHZpc187CisgICAgICAgUHJvamVjdE1vZGVsKiBtb2RlbF87CistICAgICAgUVZU S1dpZGdldCogcXZ0a187CisrCisrICAgICAgUENMUVZUS1dpZGdldCogcXZ0a187CisrCisgICAg ICAgdnRrU21hcnRQb2ludGVyPEludGVyYWN0b3JTdHlsZVN3aXRjaD4gc3R5bGVfc3dpdGNoXzsK KyAgICAgICAKKyAgICAgICB2dGtTbWFydFBvaW50ZXI8dnRrT3JpZW50YXRpb25NYXJrZXJXaWRn ZXQ+IGF4ZXNfd2lkZ2V0XzsKK2RpZmYgLXVwIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9pbmNsdWRl L3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL2l0ZW1zL2Nsb3VkX2l0ZW0uaC40MjYyIC4vYXBwcy9j bG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL2l0ZW1zL2Nsb3Vk X2l0ZW0uaAorLS0tIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9hcHBzL2Nsb3Vk X2NvbXBvc2VyL2l0ZW1zL2Nsb3VkX2l0ZW0uaC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAw MDAwMDAwIC0wNDAwCisrKysgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMv Y2xvdWRfY29tcG9zZXIvaXRlbXMvY2xvdWRfaXRlbS5oCTIwMjEtMDItMjEgMjE6MzI6NTguMzI2 MTc2NzU0IC0wNTAwCitAQCAtNDAsMTAgKzQwLDE3IEBACisgI2luY2x1ZGUgPFFEZWJ1Zz4KKyAK KyAjaW5jbHVkZSA8cGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvaXRlbXMvY2xvdWRfY29tcG9zZXJf aXRlbS5oPgorKworKyNpbmNsdWRlIDxwY2wvcG9pbnRfdHlwZXMuaD4KKysjaW5jbHVkZSA8cGNs L3BvaW50X2Nsb3VkLmg+CisrI2luY2x1ZGUgPHBjbC9QQ0xQb2ludENsb3VkMi5oPgorICNpbmNs dWRlIDxwY2wvbWVtb3J5Lmg+CisgI2luY2x1ZGUgPHBjbC9wY2xfbWFjcm9zLmg+CistI2luY2x1 ZGUgPHBjbC92aXN1YWxpemF0aW9uL3BjbF92aXN1YWxpemVyLmg+CisgI2luY2x1ZGUgPHBjbC9z ZWFyY2gva2R0cmVlLmg+CisrI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL3BvaW50X2Nsb3Vk X2dlb21ldHJ5X2hhbmRsZXJzLmg+CisrI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL3BvaW50 X2Nsb3VkX2NvbG9yX2hhbmRsZXJzLmg+CisrI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL3Bj bF92aXN1YWxpemVyLmg+CisrCisgCisgLy9UeXBlZGVmcyB0byBtYWtlIHRoaW5ncyBzYW5lCisg dXNpbmcgR2VvbWV0cnlIYW5kbGVyID0gcGNsOjp2aXN1YWxpemF0aW9uOjpQb2ludENsb3VkR2Vv bWV0cnlIYW5kbGVyPHBjbDo6UENMUG9pbnRDbG91ZDI+OworZGlmZiAtdXAgLi9hcHBzL2Nsb3Vk X2NvbXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvaXRlbXMvZnBmaF9pdGVt LmguNDI2MiAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21w b3Nlci9pdGVtcy9mcGZoX2l0ZW0uaAorLS0tIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9pbmNsdWRl L3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL2l0ZW1zL2ZwZmhfaXRlbS5oLjQyNjIJMjAyMC0wOC0x NCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5j bHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9pdGVtcy9mcGZoX2l0ZW0uaAkyMDIxLTAyLTIx IDIxOjMyOjU4LjMyNjE3Njc1NCAtMDUwMAorQEAgLTQxLDEwICs0MSw5IEBACisgI2luY2x1ZGUg PHBjbC9mZWF0dXJlcy9mcGZoLmg+CisgCisgI2luY2x1ZGUgPHBjbC9hcHBzL2Nsb3VkX2NvbXBv c2VyL2l0ZW1zL2Nsb3VkX2NvbXBvc2VyX2l0ZW0uaD4KKysjaW5jbHVkZSA8cGNsL3Zpc3VhbGl6 YXRpb24vcXZ0a19jb21wYXRpYmlsaXR5Lmg+CisgI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9u L3BjbF9wbG90dGVyLmg+CisgCistY2xhc3MgUVZUS1dpZGdldDsKKy0KKyBuYW1lc3BhY2UgcGNs CisgeworICAgbmFtZXNwYWNlIGNsb3VkX2NvbXBvc2VyCitAQCAtNzQsNyArNzMsNyBAQCBuYW1l c3BhY2UgcGNsCisgICAgICAgICBwY2w6OlBvaW50Q2xvdWQ8cGNsOjpGUEZIU2lnbmF0dXJlMzM+ OjpQdHIgZnBmaF9wdHJfOworICAgICAgICAgZG91YmxlIHJhZGl1c187CisgICAgICAgICBwY2w6 OnZpc3VhbGl6YXRpb246OlBDTFBsb3R0ZXI6OlB0ciBwbG90XzsKKy0gICAgICAgIFFWVEtXaWRn ZXQgKnF2dGtfOworKyAgICAgICAgUENMUVZUS1dpZGdldCogcXZ0a187CisgICAgICAgICBRV2lk Z2V0ICpoaXN0X3BhZ2VfOworICAgICB9OworIAorZGlmZiAtdXAgLi9hcHBzL2Nsb3VkX2NvbXBv c2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL2NsaWNr X3RyYWNrYmFsbF9pbnRlcmFjdG9yX3N0eWxlLmguNDI2MiAuL2FwcHMvY2xvdWRfY29tcG9zZXIv aW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9wb2ludF9zZWxlY3RvcnMvY2xpY2tfdHJh Y2tiYWxsX2ludGVyYWN0b3Jfc3R5bGUuaAorLS0tIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9pbmNs dWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9jbGlja190cmFja2Jh bGxfaW50ZXJhY3Rvcl9zdHlsZS5oLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAg LTA0MDAKKysrKyAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9j b21wb3Nlci9wb2ludF9zZWxlY3RvcnMvY2xpY2tfdHJhY2tiYWxsX2ludGVyYWN0b3Jfc3R5bGUu aAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyNjE3Njc1NCAtMDUwMAorQEAgLTM5LDYgKzM5LDggQEAK KyAKKyAjaW5jbHVkZSA8cGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL2lu dGVyYWN0b3Jfc3R5bGVfc3dpdGNoLmg+CisgCisrI2luY2x1ZGUgPHZ0a0ludGVyYWN0b3JTdHls ZVRyYWNrYmFsbEFjdG9yLmg+CisrCisgbmFtZXNwYWNlIHBjbAorIHsKKyAgIG5hbWVzcGFjZSBj bG91ZF9jb21wb3NlcgorZGlmZiAtdXAgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNs L2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL2ludGVyYWN0b3Jfc3R5bGVfc3dp dGNoLmguNDI2MiAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9j b21wb3Nlci9wb2ludF9zZWxlY3RvcnMvaW50ZXJhY3Rvcl9zdHlsZV9zd2l0Y2guaAorLS0tIC4v YXBwcy9jbG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50 X3NlbGVjdG9ycy9pbnRlcmFjdG9yX3N0eWxlX3N3aXRjaC5oLjQyNjIJMjAyMC0wOC0xNCAwODoy MzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9w Y2wvYXBwcy9jbG91ZF9jb21wb3Nlci9wb2ludF9zZWxlY3RvcnMvaW50ZXJhY3Rvcl9zdHlsZV9z d2l0Y2guaAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyNjE3Njc1NCAtMDUwMAorQEAgLTM5LDEyICsz OSwxOSBAQAorIAorICNpbmNsdWRlIDxRTWFwPgorIAorLSNpbmNsdWRlIDxwY2wvdmlzdWFsaXph dGlvbi92dGsuaD4KKyAjaW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24vaW50ZXJhY3Rvcl9zdHls ZS5oPgorICNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi9jb21tb24vYWN0b3JfbWFwLmg+Cisg I2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL2NvbW1vbi9yZW5fd2luX2ludGVyYWN0X21hcC5o PgorICNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi9wY2xfdmlzdWFsaXplci5oPgorIAorKyNp bmNsdWRlIDx2dGtTbWFydFBvaW50ZXIuaD4KKysjaW5jbHVkZSA8dnRrQXJlYVBpY2tlci5oPgor KyNpbmNsdWRlIDx2dGtQb2ludFBpY2tlci5oPgorKyNpbmNsdWRlIDx2dGtSZW5kZXJXaW5kb3dJ bnRlcmFjdG9yLmg+CisrI2luY2x1ZGUgPHZ0a0NvbW1hbmQuaD4KKysjaW5jbHVkZSA8dnRrUmVu ZGVyZXJDb2xsZWN0aW9uLmg+CisrI2luY2x1ZGUgPHZ0a0ludGVyYWN0b3JTdHlsZS5oPgorKwor IGNsYXNzIFFWVEtXaWRnZXQ7CisgCisgbmFtZXNwYWNlIHBjbAorZGlmZiAtdXAgLi9hcHBzL2Ns b3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0 b3JzL21hbmlwdWxhdGlvbl9ldmVudC5oLjQyNjIgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1 ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL21hbmlwdWxhdGlvbl9l dmVudC5oCistLS0gLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRf Y29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL21hbmlwdWxhdGlvbl9ldmVudC5oLjQyNjIJMjAyMC0w OC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL2FwcHMvY2xvdWRfY29tcG9zZXIv aW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9wb2ludF9zZWxlY3RvcnMvbWFuaXB1bGF0 aW9uX2V2ZW50LmgJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjYxNzY3NTQgLTA1MDAKK0BAIC0zNyw3 ICszNyw2IEBACisgCisgI3ByYWdtYSBvbmNlCisgCistI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0 aW9uL3Z0ay5oPgorICNpbmNsdWRlIDxwY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9pdGVtcy9jbG91 ZF9pdGVtLmg+CisgCisgbmFtZXNwYWNlIHBjbAorZGlmZiAtdXAgLi9hcHBzL2Nsb3VkX2NvbXBv c2VyL2luY2x1ZGUvcGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL3JlY3Rh bmd1bGFyX2ZydXN0dW1fc2VsZWN0b3IuaC40MjYyIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9pbmNs dWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9yZWN0YW5ndWxhcl9m cnVzdHVtX3NlbGVjdG9yLmgKKy0tLSAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wv YXBwcy9jbG91ZF9jb21wb3Nlci9wb2ludF9zZWxlY3RvcnMvcmVjdGFuZ3VsYXJfZnJ1c3R1bV9z ZWxlY3Rvci5oLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAu L2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9wb2lu dF9zZWxlY3RvcnMvcmVjdGFuZ3VsYXJfZnJ1c3R1bV9zZWxlY3Rvci5oCTIwMjEtMDItMjEgMjE6 MzI6NTguMzI2MTc2NzU0IC0wNTAwCitAQCAtMzksNiArMzksMTAgQEAKKyAKKyAjaW5jbHVkZSA8 cGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL2ludGVyYWN0b3Jfc3R5bGVf c3dpdGNoLmg+CisgCisrI2luY2x1ZGUgPHZ0a1NtYXJ0UG9pbnRlci5oPgorKyNpbmNsdWRlIDx2 dGtSZW5kZXJlckNvbGxlY3Rpb24uaD4KKysjaW5jbHVkZSA8dnRrSW50ZXJhY3RvclN0eWxlUnVi YmVyQmFuZFBpY2suaD4KKysKKyBuYW1lc3BhY2UgcGNsCisgeworICAgbmFtZXNwYWNlIGNsb3Vk X2NvbXBvc2VyCitkaWZmIC11cCAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBw cy9jbG91ZF9jb21wb3Nlci9wb2ludF9zZWxlY3RvcnMvc2VsZWN0ZWRfdHJhY2tiYWxsX2ludGVy YWN0b3Jfc3R5bGUuaC40MjYyIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9hcHBz L2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVjdG9ycy9zZWxlY3RlZF90cmFja2JhbGxfaW50ZXJh Y3Rvcl9zdHlsZS5oCistLS0gLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL2luY2x1ZGUvcGNsL2FwcHMv Y2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL3NlbGVjdGVkX3RyYWNrYmFsbF9pbnRlcmFj dG9yX3N0eWxlLmguNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysr IC4vYXBwcy9jbG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3Bv aW50X3NlbGVjdG9ycy9zZWxlY3RlZF90cmFja2JhbGxfaW50ZXJhY3Rvcl9zdHlsZS5oCTIwMjEt MDItMjEgMjE6MzI6NTguMzI2MTc2NzU0IC0wNTAwCitAQCAtMzcsNiArMzcsMTAgQEAKKyAKKyAj aW5jbHVkZSA8cGNsL2FwcHMvY2xvdWRfY29tcG9zZXIvcG9pbnRfc2VsZWN0b3JzL2ludGVyYWN0 b3Jfc3R5bGVfc3dpdGNoLmg+CisgCisrI2luY2x1ZGUgPHZ0a0ludGVyYWN0b3JTdHlsZVRyYWNr YmFsbEFjdG9yLmg+CisrI2luY2x1ZGUgPHZ0a1NtYXJ0UG9pbnRlci5oPgorKyNpbmNsdWRlIDx2 dGtNYXRyaXg0eDQuaD4KKysKKyBuYW1lc3BhY2UgcGNsCisgeworICAgbmFtZXNwYWNlIGNsb3Vk X2NvbXBvc2VyCitkaWZmIC11cCAuL2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBw cy9jbG91ZF9jb21wb3Nlci9wb2ludF9zZWxlY3RvcnMvc2VsZWN0aW9uX2V2ZW50LmguNDI2MiAu L2FwcHMvY2xvdWRfY29tcG9zZXIvaW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9wb2lu dF9zZWxlY3RvcnMvc2VsZWN0aW9uX2V2ZW50LmgKKy0tLSAuL2FwcHMvY2xvdWRfY29tcG9zZXIv aW5jbHVkZS9wY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9wb2ludF9zZWxlY3RvcnMvc2VsZWN0aW9u X2V2ZW50LmguNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4v YXBwcy9jbG91ZF9jb21wb3Nlci9pbmNsdWRlL3BjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50 X3NlbGVjdG9ycy9zZWxlY3Rpb25fZXZlbnQuaAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyNjE3Njc1 NCAtMDUwMAorQEAgLTM3LDkgKzM3LDE0IEBACisgCisgI3ByYWdtYSBvbmNlCisgCistI2luY2x1 ZGUgPHBjbC92aXN1YWxpemF0aW9uL3Z0ay5oPgorICNpbmNsdWRlIDxwY2wvYXBwcy9jbG91ZF9j b21wb3Nlci9pdGVtcy9jbG91ZF9pdGVtLmg+CisgCisrI2luY2x1ZGUgPHZ0a1NtYXJ0UG9pbnRl ci5oPgorKyNpbmNsdWRlIDx2dGtQb2x5RGF0YS5oPgorKyNpbmNsdWRlIDx2dGtBY3Rvci5oPgor KyNpbmNsdWRlIDx2dGtEYXRhU2V0TWFwcGVyLmg+CisrI2luY2x1ZGUgPHZ0a1JlbmRlcmVyLmg+ CisrCisgbmFtZXNwYWNlIHBjbAorIHsKKyAgIG5hbWVzcGFjZSBjbG91ZF9jb21wb3NlcgorZGlm ZiAtdXAgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9jbG91ZF92aWV3LmNwcC40MjYyIC4vYXBw cy9jbG91ZF9jb21wb3Nlci9zcmMvY2xvdWRfdmlldy5jcHAKKy0tLSAuL2FwcHMvY2xvdWRfY29t cG9zZXIvc3JjL2Nsb3VkX3ZpZXcuY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAw MDAgLTA0MDAKKysrKyAuL2FwcHMvY2xvdWRfY29tcG9zZXIvc3JjL2Nsb3VkX3ZpZXcuY3BwCTIw MjEtMDItMjEgMjE6MzI6NTguMzI3MTc2NzU4IC0wNTAwCitAQCAtNSwyMCArNSwyOSBAQAorICNp bmNsdWRlIDxwY2wvYXBwcy9jbG91ZF9jb21wb3Nlci9wb2ludF9zZWxlY3RvcnMvc2VsZWN0aW9u X2V2ZW50Lmg+CisgI2luY2x1ZGUgPHBjbC9hcHBzL2Nsb3VkX2NvbXBvc2VyL3BvaW50X3NlbGVj dG9ycy9tYW5pcHVsYXRpb25fZXZlbnQuaD4KKyAKKysjaW5jbHVkZSA8dnRrR2VuZXJpY09wZW5H TFJlbmRlcldpbmRvdy5oPgorKworICNpbmNsdWRlIDxRRGVidWc+CisgCistI2luY2x1ZGUgPFFW VEtXaWRnZXQuaD4KKyAKKyBwY2w6OmNsb3VkX2NvbXBvc2VyOjpDbG91ZFZpZXc6OkNsb3VkVmll dyAoUVdpZGdldCogcGFyZW50KQorICAgOiBRV2lkZ2V0IChwYXJlbnQpCisgeworLSAgdmlzXy5y ZXNldCAobmV3IHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplciAoIiIsIGZhbHNlKSk7 CistICB2aXNfLT5nZXRJbnRlcmFjdG9yU3R5bGUgKCktPnNldEtleWJvYXJkTW9kaWZpZXIgKHBj bDo6dmlzdWFsaXphdGlvbjo6SU5URVJBQ1RPUl9LQl9NT0RfU0hJRlQpOworKyAgcXZ0a18gPSBu ZXcgUENMUVZUS1dpZGdldCh0aGlzKTsKKyAgIC8vQ3JlYXRlIHRoZSBRVlRLV2lkZ2V0CistICBx dnRrXyA9IG5ldyBRVlRLV2lkZ2V0ICh0aGlzKTsKKy0gIHF2dGtfLT5TZXRSZW5kZXJXaW5kb3cg KHZpc18tPmdldFJlbmRlcldpbmRvdyAoKSk7CisrI2lmIFZUS19NQUpPUl9WRVJTSU9OID4gOAor KyAgYXV0byByZW5kZXJlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtSZW5kZXJlcj46Ok5ldygpOwor KyAgYXV0byByZW5kZXJXaW5kb3cgPSB2dGtTbWFydFBvaW50ZXI8dnRrR2VuZXJpY09wZW5HTFJl bmRlcldpbmRvdz46Ok5ldygpOworKyAgcmVuZGVyV2luZG93LT5BZGRSZW5kZXJlcihyZW5kZXJl cik7CisrICB2aXNfLnJlc2V0KG5ldyBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXIo cmVuZGVyZXIsIHJlbmRlcldpbmRvdywgIiIsIGZhbHNlKSk7CisrI2Vsc2UKKysgIHZpc18ucmVz ZXQobmV3IHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcigiIiwgZmFsc2UpKTsKKysj ZW5kaWYgLy8gVlRLX01BSk9SX1ZFUlNJT04gPiA4CisrICBzZXRSZW5kZXJXaW5kb3dDb21wYXQo KnF2dGtfLCAqKHZpc18tPmdldFJlbmRlcldpbmRvdygpKSk7CisrICB2aXNfLT5zZXR1cEludGVy YWN0b3IoZ2V0SW50ZXJhY3RvckNvbXBhdCgqcXZ0a18pLCBnZXRSZW5kZXJXaW5kb3dDb21wYXQo KnF2dGtfKSwgc3R5bGVfc3dpdGNoXyk7CisrICB2aXNfLT5nZXRJbnRlcmFjdG9yU3R5bGUoKS0+ c2V0S2V5Ym9hcmRNb2RpZmllcihwY2w6OnZpc3VhbGl6YXRpb246OklOVEVSQUNUT1JfS0JfTU9E X1NISUZUKTsKKysgIAorICAgaW5pdGlhbGl6ZUludGVyYWN0b3JTd2l0Y2ggKCk7CistICB2aXNf LT5zZXR1cEludGVyYWN0b3IgKHF2dGtfLT5HZXRJbnRlcmFjdG9yICgpLCBxdnRrXy0+R2V0UmVu ZGVyV2luZG93ICgpLCBzdHlsZV9zd2l0Y2hfKTsKKyAgIAorICAgUUdyaWRMYXlvdXQgKm1haW5M YXlvdXQgPSBuZXcgUUdyaWRMYXlvdXQgKHRoaXMpOworICAgbWFpbkxheW91dC0+IGFkZFdpZGdl dCAocXZ0a18sMCwwKTsKK0BAIC0yOCwxMyArMzcsMjIgQEAgcGNsOjpjbG91ZF9jb21wb3Nlcjo6 Q2xvdWRWaWV3OjpDbG91ZFZpZQorICAgOiBRV2lkZ2V0IChwYXJlbnQpCisgeworICAgbW9kZWxf ID0gbW9kZWw7CistICB2aXNfLnJlc2V0IChuZXcgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1 YWxpemVyICgiIiwgZmFsc2UpKTsKKy0gLy8gdmlzXy0+Z2V0SW50ZXJhY3RvclN0eWxlICgpLT5z ZXRLZXlib2FyZE1vZGlmaWVyIChwY2w6OnZpc3VhbGl6YXRpb246OklOVEVSQUNUT1JfS0JfTU9E X1NISUZUKTsKKysgIAorKyAgcXZ0a18gPSBuZXcgUENMUVZUS1dpZGdldCh0aGlzKTsKKyAgIC8v Q3JlYXRlIHRoZSBRVlRLV2lkZ2V0CistICBxdnRrXyA9IG5ldyBRVlRLV2lkZ2V0ICh0aGlzKTsK Ky0gIHF2dGtfLT5TZXRSZW5kZXJXaW5kb3cgKHZpc18tPmdldFJlbmRlcldpbmRvdyAoKSk7Cisr I2lmIFZUS19NQUpPUl9WRVJTSU9OID4gOAorKyAgYXV0byByZW5kZXJlciA9IHZ0a1NtYXJ0UG9p bnRlcjx2dGtSZW5kZXJlcj46Ok5ldygpOworKyAgYXV0byByZW5kZXJXaW5kb3cgPSB2dGtTbWFy dFBvaW50ZXI8dnRrR2VuZXJpY09wZW5HTFJlbmRlcldpbmRvdz46Ok5ldygpOworKyAgcmVuZGVy V2luZG93LT5BZGRSZW5kZXJlcihyZW5kZXJlcik7CisrICB2aXNfLnJlc2V0KG5ldyBwY2w6OnZp c3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXIocmVuZGVyZXIsIHJlbmRlcldpbmRvdywgIiIsIGZh bHNlKSk7CisrI2Vsc2UKKysgIHZpc18ucmVzZXQobmV3IHBjbDo6dmlzdWFsaXphdGlvbjo6UENM VmlzdWFsaXplcigiIiwgZmFsc2UpKTsKKysjZW5kaWYgLy8gVlRLX01BSk9SX1ZFUlNJT04gPiA4 CisrICBzZXRSZW5kZXJXaW5kb3dDb21wYXQoKnF2dGtfLCAqKHZpc18tPmdldFJlbmRlcldpbmRv dygpKSk7CisrICB2aXNfLT5zZXR1cEludGVyYWN0b3IoZ2V0SW50ZXJhY3RvckNvbXBhdCgqcXZ0 a18pLCBnZXRSZW5kZXJXaW5kb3dDb21wYXQoKnF2dGtfKSwgc3R5bGVfc3dpdGNoXyk7CisrICAv L3Zpc18tPmdldEludGVyYWN0b3JTdHlsZSgpLT5zZXRLZXlib2FyZE1vZGlmaWVyKHBjbDo6dmlz dWFsaXphdGlvbjo6SU5URVJBQ1RPUl9LQl9NT0RfU0hJRlQpOworKworICAgaW5pdGlhbGl6ZUlu dGVyYWN0b3JTd2l0Y2ggKCk7CistICB2aXNfLT5zZXR1cEludGVyYWN0b3IgKHF2dGtfLT5HZXRJ bnRlcmFjdG9yICgpLCBxdnRrXy0+R2V0UmVuZGVyV2luZG93ICgpLCBzdHlsZV9zd2l0Y2hfKTsK KyAgIHNldE1vZGVsKG1vZGVsKTsKKyAgIAorICAgUUdyaWRMYXlvdXQgKm1haW5MYXlvdXQgPSBu ZXcgUUdyaWRMYXlvdXQgKHRoaXMpOworQEAgLTU3LDkgKzc1LDkgQEAgcGNsOjpjbG91ZF9jb21w b3Nlcjo6Q2xvdWRWaWV3OjpzZXRNb2RlbAorICAgY29ubmVjdFNpZ25hbHNBbmRTbG90cygpOwor ICAgLy9SZWZyZXNoIHRoZSB2aWV3CisgICBxdnRrXy0+c2hvdygpOworLSAgcXZ0a18tPnVwZGF0 ZSAoKTsKKysgIHJlZnJlc2goKTsKKyAgIAorLSAvLyB2aXNfLT5hZGRPcmllbnRhdGlvbk1hcmtl cldpZGdldEF4ZXMgKHF2dGtfLT5HZXRJbnRlcmFjdG9yICgpKTsKKysgLy8gdmlzXy0+YWRkT3Jp ZW50YXRpb25NYXJrZXJXaWRnZXRBeGVzIChnZXRJbnRlcmFjdG9yQ29tcGF0KHF2dGtfKSk7Cisg fQorIAorIHZvaWQKK0BAIC03Niw3ICs5NCwxMSBAQCBwY2w6OmNsb3VkX2NvbXBvc2VyOjpDbG91 ZFZpZXc6OmNvbm5lY3RTCisgdm9pZAorIHBjbDo6Y2xvdWRfY29tcG9zZXI6OkNsb3VkVmlldzo6 cmVmcmVzaCAoKQorIHsKKysjaWYgVlRLX01BSk9SX1ZFUlNJT04gPiA4CisrICBxdnRrXy0+cmVu ZGVyV2luZG93KCktPlJlbmRlcigpOworKyNlbHNlCisgICBxdnRrXy0+dXBkYXRlICgpOyAKKysj ZW5kaWYgLy8gVlRLX01BSk9SX1ZFUlNJT04gPiA4CisgfQorIAorIHZvaWQKK0BAIC04OCw3ICsx MTAsNyBAQCBwY2w6OmNsb3VkX2NvbXBvc2VyOjpDbG91ZFZpZXc6Oml0ZW1DaGFuCisgICB7Cisg ICAgIGl0ZW0tPnBhaW50VmlldyAodmlzXyk7CisgICB9CistICBxdnRrXy0+dXBkYXRlICgpOwor KyAgcmVmcmVzaCgpOworIH0KKyAKKyAKK0BAIC0xMTUsOCArMTM3LDcgQEAgcGNsOjpjbG91ZF9j b21wb3Nlcjo6Q2xvdWRWaWV3Ojpyb3dzSW5zZQorICAgICAgIHJvd3NJbnNlcnRlZChuZXdfaXRl bS0+aW5kZXgoKSwwLG5ld19pdGVtLT5yb3dDb3VudCAoKS0xKTsKKyAgIH0KKyAgIAorLSAgcXZ0 a18tPnVwZGF0ZSAoKTsKKy0KKysgIHJlZnJlc2goKTsKKyB9CisgCisgdm9pZAorQEAgLTE0Mywy MCArMTY0LDIwIEBAIHBjbDo6Y2xvdWRfY29tcG9zZXI6OkNsb3VkVmlldzo6cm93c0Fib3UKKyAg ICAgaWYgKGl0ZW1fdG9fcmVtb3ZlLT5yb3dDb3VudCAoKSA+IDApIAorICAgICAgIHJvd3NBYm91 dFRvQmVSZW1vdmVkKGl0ZW1fdG9fcmVtb3ZlLT5pbmRleCgpLDAsaXRlbV90b19yZW1vdmUtPnJv d0NvdW50ICgpLTEpOworICAgfQorLSAgcXZ0a18tPnVwZGF0ZSAoKTsKKysgIHJlZnJlc2goKTsK KyB9CisgCisgCisgdm9pZCAKKyBwY2w6OmNsb3VkX2NvbXBvc2VyOjpDbG91ZFZpZXc6OnBhaW50 RXZlbnQgKFFQYWludEV2ZW50KikKKyB7CistICBxdnRrXy0+dXBkYXRlICgpOworKyAgcmVmcmVz aCgpOworIH0KKyAKKyB2b2lkIAorIHBjbDo6Y2xvdWRfY29tcG9zZXI6OkNsb3VkVmlldzo6cmVz aXplRXZlbnQgKFFSZXNpemVFdmVudCopCisgeworLSAgcXZ0a18tPnVwZGF0ZSAoKTsKKysgIHJl ZnJlc2goKTsKKyB9CisgCisgdm9pZAorQEAgLTE4Niw3ICsyMDcsNyBAQCBwY2w6OmNsb3VkX2Nv bXBvc2VyOjpDbG91ZFZpZXc6OnNlbGVjdGVkCisgICAgICAgfQorICAgICB9CisgICB9CistICBx dnRrXy0+dXBkYXRlICgpOworKyAgcmVmcmVzaCgpOworIH0KKyAKKyB2b2lkCitAQCAtMjA0LDE0 ICsyMjUsMTQgQEAgcGNsOjpjbG91ZF9jb21wb3Nlcjo6Q2xvdWRWaWV3OjpzZXRBeGlzVgorICAg aWYgKHZpc2libGUpCisgICB7CisgICAgIHFEZWJ1ZyAoKSA8PCAiQWRkaW5nIGNvb3JkaW5hdGUg c3lzdGVtISI7CistICAgIHZpc18tPmFkZE9yaWVudGF0aW9uTWFya2VyV2lkZ2V0QXhlcyAoIHF2 dGtfLT5HZXRJbnRlcmFjdG9yKCkgKTsKKysgICAgdmlzXy0+YWRkT3JpZW50YXRpb25NYXJrZXJX aWRnZXRBeGVzKGdldEludGVyYWN0b3JDb21wYXQoKnF2dGtfKSk7CisgICB9CisgICBlbHNlCisg ICB7CisgICAgIHZpc18tPnJlbW92ZU9yaWVudGF0aW9uTWFya2VyV2lkZ2V0QXhlcyAoKTsKKyAg IH0KKyAKKy0gIHF2dGtfLT51cGRhdGUgKCk7CisrICByZWZyZXNoKCk7CisgfQorIAorIHZvaWQK K0BAIC0yMjQsNyArMjQ1LDcgQEAgcGNsOjpjbG91ZF9jb21wb3Nlcjo6Q2xvdWRWaWV3OjphZGRP cmllbgorICAgICBheGVzX3dpZGdldF8gPSB2dGtTbWFydFBvaW50ZXI8dnRrT3JpZW50YXRpb25N YXJrZXJXaWRnZXQ+OjpOZXcgKCk7CisgICAgIGF4ZXNfd2lkZ2V0Xy0+U2V0T3V0bGluZUNvbG9y ICggMC45MzAwLCAwLjU3MDAsIDAuMTMwMCApOworICAgICBheGVzX3dpZGdldF8tPlNldE9yaWVu dGF0aW9uTWFya2VyKCBheGVzICk7CistICAgIGF4ZXNfd2lkZ2V0Xy0+U2V0SW50ZXJhY3Rvcigg cXZ0a18tPkdldEludGVyYWN0b3IgKCkgKTsKKysgICAgYXhlc193aWRnZXRfLT5TZXRJbnRlcmFj dG9yKGdldEludGVyYWN0b3JDb21wYXQoKnF2dGtfKSk7CisgICAgIGF4ZXNfd2lkZ2V0Xy0+U2V0 Vmlld3BvcnQoIDAuMCwgMC4wLCAwLjQsIDAuNCApOworICAgICBheGVzX3dpZGdldF8tPlNldEVu YWJsZWQoIDEgKTsKKyAgICAgYXhlc193aWRnZXRfLT5JbnRlcmFjdGl2ZU9uKCk7CitAQCAtMjQ0 LDggKzI2NSw2IEBAIHBjbDo6Y2xvdWRfY29tcG9zZXI6OkNsb3VkVmlldzo6cmVtb3ZlT3IKKyAg IHsKKyAgICAgYXhlc193aWRnZXRfLT5TZXRFbmFibGVkIChmYWxzZSk7CisgICB9CistICAKKy0g IAorIH0KKyAKKyAvLy8vLy8vLyAgSW50ZXJhY3RvciBGdW5jdGlvbnMKK0BAIC0yNTUsNyArMjc0 LDcgQEAgcGNsOjpjbG91ZF9jb21wb3Nlcjo6Q2xvdWRWaWV3Ojppbml0aWFsaQorIHsKKyAgIHN0 eWxlX3N3aXRjaF8gPSB2dGtTbWFydFBvaW50ZXI8SW50ZXJhY3RvclN0eWxlU3dpdGNoPjo6TmV3 KCk7CisgICBzdHlsZV9zd2l0Y2hfLT5pbml0aWFsaXplSW50ZXJhY3RvclN0eWxlcyAodmlzXywg bW9kZWxfKTsKKy0gIHN0eWxlX3N3aXRjaF8tPlNldEludGVyYWN0b3IgKHF2dGtfLT5HZXRJbnRl cmFjdG9yICgpKTsKKysgIHN0eWxlX3N3aXRjaF8tPlNldEludGVyYWN0b3IoZ2V0SW50ZXJhY3Rv ckNvbXBhdCgqcXZ0a18pKTsKKyAgIHN0eWxlX3N3aXRjaF8tPnNldEN1cnJlbnRJbnRlcmFjdG9y U3R5bGUgKGludGVyYWN0b3Jfc3R5bGVzOjpQQ0xfVklTVUFMSVpFUik7CisgICAKKyAgIC8vQ29u bmVjdCB0aGUgZXZlbnRzIQorZGlmZiAtdXAgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9pdGVt cy9mcGZoX2l0ZW0uY3BwLjQyNjIgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9pdGVtcy9mcGZo X2l0ZW0uY3BwCistLS0gLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9pdGVtcy9mcGZoX2l0ZW0u Y3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL2FwcHMv Y2xvdWRfY29tcG9zZXIvc3JjL2l0ZW1zL2ZwZmhfaXRlbS5jcHAJMjAyMS0wMi0yMSAyMTozMjo1 OC4zMjcxNzY3NTggLTA1MDAKK0BAIC0zLDggKzMsNiBAQAorIAorICNpbmNsdWRlIDxRR3JpZExh eW91dD4KKyAKKy0jaW5jbHVkZSA8UVZUS1dpZGdldC5oPgorLQorIHBjbDo6Y2xvdWRfY29tcG9z ZXI6OkZQRkhJdGVtOjpGUEZISXRlbSAoUVN0cmluZyBuYW1lLCBjb25zdCBwY2w6OlBvaW50Q2xv dWQ8cGNsOjpGUEZIU2lnbmF0dXJlMzM+OjpQdHImIGZwZmhfcHRyLCBkb3VibGUgcmFkaXVzKQor ICAgOiBDbG91ZENvbXBvc2VySXRlbSAoc3RkOjptb3ZlKG5hbWUpKQorICAgLCBmcGZoX3B0cl8g KGZwZmhfcHRyKQorQEAgLTQwLDcgKzM4LDcgQEAgcGNsOjpjbG91ZF9jb21wb3Nlcjo6RlBGSEl0 ZW06OmdldEluc3BlYworICAgaWYgKCFwbG90XykKKyAgIHsKKyAgICAgcGxvdF8ucmVzZXQgKG5l dyBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFBsb3R0ZXIpOworLSAgICBxdnRrXyA9IG5ldyBRVlRL V2lkZ2V0ICgpOworKyAgICBxdnRrXyA9IG5ldyBQQ0xRVlRLV2lkZ2V0KCk7CisgICAgIGhpc3Rf cGFnZV8gPSBuZXcgUVdpZGdldCAoKTsKKyAgICAgUUdyaWRMYXlvdXQgKm1haW5MYXlvdXQgPSBu ZXcgUUdyaWRMYXlvdXQgKGhpc3RfcGFnZV8pOworICAgICBtYWluTGF5b3V0LT4gYWRkV2lkZ2V0 IChxdnRrXywwLDApOworQEAgLTQ5LDEwICs0NywxNSBAQCBwY2w6OmNsb3VkX2NvbXBvc2VyOjpG UEZISXRlbTo6Z2V0SW5zcGVjCisgICAvL1Bsb3QgdGhlIGhpc3RvZ3JhbQorICAgcGxvdF8tPmFk ZEZlYXR1cmVIaXN0b2dyYW0gKCpmcGZoX3B0cl8sIGZwZmhfcHRyXy0+d2lkdGgsIGRhdGEoSXRl bURhdGFSb2xlOjpJVEVNX0lEKS50b1N0cmluZygpLnRvU3RkU3RyaW5nICgpKTsKKyAgIC8vU2V0 IHRoZSByZW5kZXIgd2luZG93IG9mIHRoZSBRVlRLIHdpZGdldCwgdXBkYXRlCistICBwbG90Xy0+ c2V0Vmlld0ludGVyYWN0b3IgKHZ0a1NtYXJ0UG9pbnRlcjx2dGtSZW5kZXJXaW5kb3dJbnRlcmFj dG9yPiAocXZ0a18tPkdldEludGVyYWN0b3IgKCkpKTsKKy0gIHF2dGtfLT5TZXRSZW5kZXJXaW5k b3cgKHBsb3RfLT5nZXRSZW5kZXJXaW5kb3cgKCkpOworKyAgcGxvdF8tPnNldFZpZXdJbnRlcmFj dG9yKGdldEludGVyYWN0b3JDb21wYXQoKnF2dGtfKSk7CisrICBzZXRSZW5kZXJXaW5kb3dDb21w YXQoKnF2dGtfLCAqKHBsb3RfLT5nZXRSZW5kZXJXaW5kb3coKSkpOworKyNpZiBWVEtfTUFKT1Jf VkVSU0lPTiA+IDgKKysgIHF2dGtfLT5yZW5kZXJXaW5kb3coKS0+UmVuZGVyKCk7CisrI2Vsc2UK KysgIHF2dGtfLT51cGRhdGUoKTsKKysjZW5kaWYgLy8gVlRLX01BSk9SX1ZFUlNJT04gPiA4Cisg ICBxdnRrXy0+c2hvdyAoKTsKKy0gIHF2dGtfLT51cGRhdGUgKCk7CisrICAKKyAgIAorICAgUU1h cCA8UVN0cmluZywgUVdpZGdldCo+IHRhYnM7CisgICB0YWJzLmluc2VydCAoIkhpc3RvZ3JhbSIs aGlzdF9wYWdlXyk7CitkaWZmIC11cCAuL2FwcHMvY2xvdWRfY29tcG9zZXIvc3JjL3BvaW50X3Nl bGVjdG9ycy9jbGlja190cmFja2JhbGxfaW50ZXJhY3Rvcl9zdHlsZS5jcHAuNDI2MiAuL2FwcHMv Y2xvdWRfY29tcG9zZXIvc3JjL3BvaW50X3NlbGVjdG9ycy9jbGlja190cmFja2JhbGxfaW50ZXJh Y3Rvcl9zdHlsZS5jcHAKKy0tLSAuL2FwcHMvY2xvdWRfY29tcG9zZXIvc3JjL3BvaW50X3NlbGVj dG9ycy9jbGlja190cmFja2JhbGxfaW50ZXJhY3Rvcl9zdHlsZS5jcHAuNDI2MgkyMDIwLTA4LTE0 IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMv cG9pbnRfc2VsZWN0b3JzL2NsaWNrX3RyYWNrYmFsbF9pbnRlcmFjdG9yX3N0eWxlLmNwcAkyMDIx LTAyLTIxIDIxOjMyOjU4LjMyNzE3Njc1OCAtMDUwMAorQEAgLTQsNiArNCwxMCBAQAorIAorICNp bmNsdWRlIDxRRGVidWc+CisgCisrCisrI2luY2x1ZGUgPHZ0a09iamVjdEZhY3RvcnkuaD4gLy8g Rm9yIHZ0a1N0YW5kYXJkTmV3TWFjcm8KKysjaW5jbHVkZSA8dnRrVHJhbnNmb3JtLmg+CisrCisg bmFtZXNwYWNlIHBjbAorIHsKKyAgIG5hbWVzcGFjZSBjbG91ZF9jb21wb3NlcgorZGlmZiAtdXAg Li9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9wb2ludF9zZWxlY3RvcnMvaW50ZXJhY3Rvcl9zdHls ZV9zd2l0Y2guY3BwLjQyNjIgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9wb2ludF9zZWxlY3Rv cnMvaW50ZXJhY3Rvcl9zdHlsZV9zd2l0Y2guY3BwCistLS0gLi9hcHBzL2Nsb3VkX2NvbXBvc2Vy L3NyYy9wb2ludF9zZWxlY3RvcnMvaW50ZXJhY3Rvcl9zdHlsZV9zd2l0Y2guY3BwLjQyNjIJMjAy MC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL2FwcHMvY2xvdWRfY29tcG9z ZXIvc3JjL3BvaW50X3NlbGVjdG9ycy9pbnRlcmFjdG9yX3N0eWxlX3N3aXRjaC5jcHAJMjAyMS0w Mi0yMSAyMTozMjo1OC4zMjcxNzY3NTggLTA1MDAKK0BAIC02LDYgKzYsOSBAQAorIAorICNpbmNs dWRlIDxRRGVidWc+CisgCisrI2luY2x1ZGUgPHZ0a0NhbGxiYWNrQ29tbWFuZC5oPgorKyNpbmNs dWRlIDx2dGtPYmplY3RGYWN0b3J5Lmg+CisrCisgbmFtZXNwYWNlIHBjbAorIHsKKyAgIG5hbWVz cGFjZSBjbG91ZF9jb21wb3NlcgorZGlmZiAtdXAgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9w b2ludF9zZWxlY3RvcnMvcmVjdGFuZ3VsYXJfZnJ1c3R1bV9zZWxlY3Rvci5jcHAuNDI2MiAuL2Fw cHMvY2xvdWRfY29tcG9zZXIvc3JjL3BvaW50X3NlbGVjdG9ycy9yZWN0YW5ndWxhcl9mcnVzdHVt X3NlbGVjdG9yLmNwcAorLS0tIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMvcG9pbnRfc2VsZWN0 b3JzL3JlY3Rhbmd1bGFyX2ZydXN0dW1fc2VsZWN0b3IuY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoy MzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL2FwcHMvY2xvdWRfY29tcG9zZXIvc3JjL3BvaW50 X3NlbGVjdG9ycy9yZWN0YW5ndWxhcl9mcnVzdHVtX3NlbGVjdG9yLmNwcAkyMDIxLTAyLTIxIDIx OjMyOjU4LjMyNzE3Njc1OCAtMDUwMAorQEAgLTMsNiArMywxNCBAQAorIAorICNpbmNsdWRlIDxR RGVidWc+CisgCisrI2luY2x1ZGUgPHZ0a1NtYXJ0UG9pbnRlci5oPgorKyNpbmNsdWRlIDx2dGtJ ZEZpbHRlci5oPgorKyNpbmNsdWRlIDx2dGtFeHRyYWN0R2VvbWV0cnkuaD4KKysjaW5jbHVkZSA8 dnRrVmVydGV4R2x5cGhGaWx0ZXIuaD4KKysjaW5jbHVkZSA8dnRrUGxhbmVzLmg+CisrI2luY2x1 ZGUgPHZ0a0FyZWFQaWNrZXIuaD4KKysjaW5jbHVkZSA8dnRrT2JqZWN0RmFjdG9yeS5oPgorKwor IG5hbWVzcGFjZSBwY2wKKyB7CisgICBuYW1lc3BhY2UgY2xvdWRfY29tcG9zZXIKK2RpZmYgLXVw IC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMvcG9pbnRfc2VsZWN0b3JzL3NlbGVjdGVkX3RyYWNr YmFsbF9pbnRlcmFjdG9yX3N0eWxlLmNwcC40MjYyIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMv cG9pbnRfc2VsZWN0b3JzL3NlbGVjdGVkX3RyYWNrYmFsbF9pbnRlcmFjdG9yX3N0eWxlLmNwcAor LS0tIC4vYXBwcy9jbG91ZF9jb21wb3Nlci9zcmMvcG9pbnRfc2VsZWN0b3JzL3NlbGVjdGVkX3Ry YWNrYmFsbF9pbnRlcmFjdG9yX3N0eWxlLmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAw MDAwMDAwIC0wNDAwCisrKysgLi9hcHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9wb2ludF9zZWxlY3Rv cnMvc2VsZWN0ZWRfdHJhY2tiYWxsX2ludGVyYWN0b3Jfc3R5bGUuY3BwCTIwMjEtMDItMjEgMjE6 MzI6NTguMzI3MTc2NzU4IC0wNTAwCitAQCAtNCw2ICs0LDE1IEBACisgI2luY2x1ZGUgPFFEZWJ1 Zz4KKyAjaW5jbHVkZSA8UUl0ZW1TZWxlY3Rpb25Nb2RlbD4KKyAKKysjaW5jbHVkZSA8dnRrU21h cnRQb2ludGVyLmg+CisrI2luY2x1ZGUgPHZ0a01hdHJpeDR4NC5oPgorKyNpbmNsdWRlIDx2dGtM T0RBY3Rvci5oPgorKyNpbmNsdWRlIDx2dGtJbnRlcmFjdG9yU3R5bGVUcmFja2JhbGxBY3Rvci5o PgorKyNpbmNsdWRlIDx2dGtSZW5kZXJXaW5kb3dJbnRlcmFjdG9yLmg+CisrI2luY2x1ZGUgPHZ0 a1RyYW5zZm9ybS5oPgorKyNpbmNsdWRlIDx2dGtPYmplY3RGYWN0b3J5Lmg+CisrCisrCisgbmFt ZXNwYWNlIHBjbAorIHsKKyAgIG5hbWVzcGFjZSBjbG91ZF9jb21wb3NlcgorZGlmZiAtdXAgLi9h cHBzL2Nsb3VkX2NvbXBvc2VyL3NyYy9wcm9qZWN0X21vZGVsLmNwcC40MjYyIC4vYXBwcy9jbG91 ZF9jb21wb3Nlci9zcmMvcHJvamVjdF9tb2RlbC5jcHAKKy0tLSAuL2FwcHMvY2xvdWRfY29tcG9z ZXIvc3JjL3Byb2plY3RfbW9kZWwuY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAw MDAgLTA0MDAKKysrKyAuL2FwcHMvY2xvdWRfY29tcG9zZXIvc3JjL3Byb2plY3RfbW9kZWwuY3Bw CTIwMjEtMDItMjEgMjE6MzI6NTguMzI3MTc2NzU4IC0wNTAwCitAQCAtMTQsNiArMTQsMTEgQEAK KyAjaW5jbHVkZSA8UU1lc3NhZ2VCb3g+CisgI2luY2x1ZGUgPFFUaHJlYWQ+CisgCisrI2luY2x1 ZGUgPHZ0a1NtYXJ0UG9pbnRlci5oPgorKyNpbmNsdWRlIDx2dGtJbWFnZURhdGEuaD4KKysjaW5j bHVkZSA8dnRrSW1hZ2VSZWFkZXIyRmFjdG9yeS5oPgorKyNpbmNsdWRlIDx2dGtJbWFnZVJlYWRl cjIuaD4KKysKKyBwY2w6OmNsb3VkX2NvbXBvc2VyOjpQcm9qZWN0TW9kZWw6OlByb2plY3RNb2Rl bCAoUU9iamVjdCogcGFyZW50KQorICAgOiBRU3RhbmRhcmRJdGVtTW9kZWwgKHBhcmVudCkKKyB7 CitkaWZmIC11cCAuL2FwcHMvQ01ha2VMaXN0cy50eHQuNDI2MiAuL2FwcHMvQ01ha2VMaXN0cy50 eHQKKy0tLSAuL2FwcHMvQ01ha2VMaXN0cy50eHQuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAw MDAwMDAwMCAtMDQwMAorKysrIC4vYXBwcy9DTWFrZUxpc3RzLnR4dAkyMDIxLTAyLTIxIDIxOjMy OjU4LjMyNTE3Njc1MCAtMDUwMAorQEAgLTM0LDggKzM0LDYgQEAgaWYoTElCVVNCXzFfRk9VTkQp CisgZW5kaWYoKQorIAorIGlmKFZUS19GT1VORCkKKy0gIGluY2x1ZGUoIiR7VlRLX1VTRV9GSUxF fSIpCistCisgICBzZXQoaW5jcyAiaW5jbHVkZS9wY2wvJHtTVUJTWVNfTkFNRX0vcmVuZGVyX3Zp ZXdzX3Rlc3NlbGF0ZWRfc3BoZXJlLmgiKQorICAgc2V0KHNyY3MgInNyYy9yZW5kZXJfdmlld3Nf dGVzc2VsYXRlZF9zcGhlcmUuY3BwIikKKyAKK0BAIC02MCw2ICs1OCwxMCBAQCBpZihWVEtfRk9V TkQpCisgICBpZihRSFVMTF9GT1VORCkKKyAgICAgUENMX0FERF9FWEVDVVRBQkxFKHBjbF9wY2Rf c2VsZWN0X29iamVjdF9wbGFuZSBDT01QT05FTlQgJHtTVUJTWVNfTkFNRX0gU09VUkNFUyBzcmMv cGNkX3NlbGVjdF9vYmplY3RfcGxhbmUuY3BwKQorICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMo cGNsX3BjZF9zZWxlY3Rfb2JqZWN0X3BsYW5lIHBjbF9jb21tb24gcGNsX2lvIHBjbF9maWx0ZXJz IHBjbF92aXN1YWxpemF0aW9uIHBjbF9zZWdtZW50YXRpb24gcGNsX2ZlYXR1cmVzIHBjbF9zdXJm YWNlKQorKyAgICAjVE9ETzogVXBkYXRlIHdoZW4gQ01BS0UgMy4xMCBpcyBhdmFpbGFibGUKKysg ICAgaWYoTk9UICgke1ZUS19WRVJTSU9OfSBWRVJTSU9OX0xFU1MgOS4wKSkKKysgICAgICB0YXJn ZXRfbGlua19saWJyYXJpZXMocGNsX3BjZF9zZWxlY3Rfb2JqZWN0X3BsYW5lIFZUSzo6RmlsdGVy c0dlb21ldHJ5KQorKyAgICBlbmRpZigpCisgICBlbmRpZigpCisgCisgICBQQ0xfQUREX0VYRUNV VEFCTEUocGNsX3BjZF9vcmdhbml6ZWRfZWRnZV9kZXRlY3Rpb24gQ09NUE9ORU5UICR7U1VCU1lT X05BTUV9IFNPVVJDRVMgc3JjL3BjZF9vcmdhbml6ZWRfZWRnZV9kZXRlY3Rpb24uY3BwKQorQEAg LTc0LDE3ICs3NiwyNSBAQCBpZihWVEtfRk9VTkQpCisgICBQQ0xfQUREX0VYRUNVVEFCTEUocGNs X3N0ZXJlb19ncm91bmRfc2VnbWVudGF0aW9uIENPTVBPTkVOVCAke1NVQlNZU19OQU1FfSBTT1VS Q0VTIHNyYy9zdGVyZW9fZ3JvdW5kX3NlZ21lbnRhdGlvbi5jcHApCisgICB0YXJnZXRfbGlua19s aWJyYXJpZXMocGNsX3N0ZXJlb19ncm91bmRfc2VnbWVudGF0aW9uIHBjbF9jb21tb24gcGNsX2lv IHBjbF9maWx0ZXJzIHBjbF92aXN1YWxpemF0aW9uIHBjbF9zZWdtZW50YXRpb24gcGNsX2ZlYXR1 cmVzIHBjbF9zdGVyZW8pCisgCistICBpZihRdDVfRk9VTkQgQU5EIFFWVEtfRk9VTkQpCisrICBp ZihRdDVfRk9VTkQgQU5EIEhBVkVfUVZUSykKKyAgICAgIyBNYW51YWwgcmVnaXN0cmF0aW9uIGRl bW8KKyAgICAgUVQ1X1dSQVBfVUkobWFudWFsX3JlZ2lzdHJhdGlvbl91aSBzcmMvbWFudWFsX3Jl Z2lzdHJhdGlvbi9tYW51YWxfcmVnaXN0cmF0aW9uLnVpKQorICAgICBRVDVfV1JBUF9DUFAobWFu dWFsX3JlZ2lzdHJhdGlvbl9tb2MgaW5jbHVkZS9wY2wvYXBwcy9tYW51YWxfcmVnaXN0cmF0aW9u LmggT1BUSU9OUyAtREJPT1NUX1RUX0hBU19PUEVSQVRPUl9IUFBfSU5DTFVERUQgLURCT09TVF9O T19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQorICAgICBQQ0xfQUREX0VYRUNVVEFC TEUocGNsX21hbnVhbF9yZWdpc3RyYXRpb24gQ09NUE9ORU5UICR7U1VCU1lTX05BTUV9IFNPVVJD RVMgJHttYW51YWxfcmVnaXN0cmF0aW9uX3VpfSAke21hbnVhbF9yZWdpc3RyYXRpb25fbW9jfSBz cmMvbWFudWFsX3JlZ2lzdHJhdGlvbi9tYW51YWxfcmVnaXN0cmF0aW9uLmNwcCBCVU5ETEUpCisg ICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfbWFudWFsX3JlZ2lzdHJhdGlvbiBwY2xfY29t bW9uIHBjbF9pbyBwY2xfdmlzdWFsaXphdGlvbiBwY2xfc2VnbWVudGF0aW9uIHBjbF9mZWF0dXJl cyBwY2xfc3VyZmFjZSBRdDU6OldpZGdldHMpCisrICAgICNUT0RPOiBVcGRhdGUgd2hlbiBDTUFL RSAzLjEwIGlzIGF2YWlsYWJsZQorKyAgICBpZihOT1QgKCR7VlRLX1ZFUlNJT059IFZFUlNJT05f TEVTUyA5LjApKQorKyAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfbWFudWFsX3JlZ2lz dHJhdGlvbiBWVEs6OkdVSVN1cHBvcnRRdCkKKysgICAgZW5kaWYoKQorIAorICAgICBRVDVfV1JB UF9VSShwY2RfdmlkZW9fcGxheWVyX3VpIHNyYy9wY2RfdmlkZW9fcGxheWVyL3BjZF92aWRlb19w bGF5ZXIudWkpCisgICAgIFFUNV9XUkFQX0NQUChwY2RfdmlkZW9fcGxheWVyX21vYyBpbmNsdWRl L3BjbC9hcHBzL3BjZF92aWRlb19wbGF5ZXIuaCBPUFRJT05TIC1EQk9PU1RfVFRfSEFTX09QRVJB VE9SX0hQUF9JTkNMVURFRCAtREJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJ T04pCisgICAgIFBDTF9BRERfRVhFQ1VUQUJMRShwY2xfcGNkX3ZpZGVvX3BsYXllciBDT01QT05F TlQgJHtTVUJTWVNfTkFNRX0gU09VUkNFUyAke3BjZF92aWRlb19wbGF5ZXJfdWl9ICR7cGNkX3Zp ZGVvX3BsYXllcl9tb2N9IHNyYy9wY2RfdmlkZW9fcGxheWVyL3BjZF92aWRlb19wbGF5ZXIuY3Bw IEJVTkRMRSkKKyAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF9wY2RfdmlkZW9fcGxheWVy IHBjbF9jb21tb24gcGNsX2lvIHBjbF92aXN1YWxpemF0aW9uIHBjbF9zZWdtZW50YXRpb24gcGNs X2ZlYXR1cmVzIHBjbF9zdXJmYWNlIFF0NTo6V2lkZ2V0cykKKysgICAgI1RPRE86IFVwZGF0ZSB3 aGVuIENNQUtFIDMuMTAgaXMgYXZhaWxhYmxlCisrICAgIGlmKE5PVCAoJHtWVEtfVkVSU0lPTn0g VkVSU0lPTl9MRVNTIDkuMCkpCisrICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF9wY2Rf dmlkZW9fcGxheWVyIFZUSzo6R1VJU3VwcG9ydFF0KQorKyAgICBlbmRpZigpCisgICBlbmRpZigp CisgCisgICBpZihXSVRIX09QRU5OSSkKK0BAIC0xMzgsMTggKzE0OCwyNiBAQCBpZihWVEtfRk9V TkQpCisgICAgIFBDTF9BRERfRVhFQ1VUQUJMRShwY2xfb3Blbm5pX2ZhY2VfZGV0ZWN0b3IgQ09N UE9ORU5UICR7U1VCU1lTX05BTUV9IFNPVVJDRVMgc3JjL2ZhY2VfZGV0ZWN0aW9uLy9vcGVubmlf ZmFjZV9kZXRlY3Rpb24uY3BwIHNyYy9mYWNlX2RldGVjdGlvbi8vb3Blbm5pX2ZyYW1lX3NvdXJj ZS5jcHAgQlVORExFKQorICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX29wZW5uaV9mYWNl X2RldGVjdG9yIHBjbF9mZWF0dXJlcyBwY2xfcmVjb2duaXRpb24gcGNsX2NvbW1vbiBwY2xfaW8g cGNsX2ZpbHRlcnMgcGNsX3Zpc3VhbGl6YXRpb24gcGNsX3NlZ21lbnRhdGlvbiBwY2xfc2FtcGxl X2NvbnNlbnN1cyBwY2xfc3VyZmFjZSBwY2xfa2V5cG9pbnRzIHBjbF9tbCBwY2xfc2VhcmNoIHBj bF9rZHRyZWUgJHtWVEtfTElCUkFSSUVTfSkKKyAKKy0gICAgaWYoUXQ1X0ZPVU5EIEFORCBRVlRL X0ZPVU5EKQorLSAgICAjIE9wZW5OSSBQYXNzdGhyb3VnaCBhcHBsaWNhdGlvbiBkZW1vCistICAg IFFUNV9XUkFQX1VJKG9wZW5uaV9wYXNzdGhyb3VnaF91aSBzcmMvb3Blbm5pX3Bhc3N0aHJvdWdo LnVpKQorLSAgICBRVDVfV1JBUF9DUFAob3Blbm5pX3Bhc3N0aHJvdWdoX21vYyBpbmNsdWRlL3Bj bC9hcHBzL29wZW5uaV9wYXNzdGhyb3VnaC5oIE9QVElPTlMgLURCT09TVF9UVF9IQVNfT1BFUkFU T1JfSFBQX0lOQ0xVREVEIC1EQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElP TikKKy0gICAgUENMX0FERF9FWEVDVVRBQkxFKHBjbF9vcGVubmlfcGFzc3Rocm91Z2ggQ09NUE9O RU5UICR7U1VCU1lTX05BTUV9IFNPVVJDRVMgJHtvcGVubmlfcGFzc3Rocm91Z2hfdWl9ICR7b3Bl bm5pX3Bhc3N0aHJvdWdoX21vY30gc3JjL29wZW5uaV9wYXNzdGhyb3VnaC5jcHApCistICAgIHRh cmdldF9saW5rX2xpYnJhcmllcyhwY2xfb3Blbm5pX3Bhc3N0aHJvdWdoIHBjbF9jb21tb24gcGNs X2lvIHBjbF9maWx0ZXJzIHBjbF92aXN1YWxpemF0aW9uIFF0NTo6V2lkZ2V0cykKKy0KKy0gICAg IyBPcGVuTkkgT3JnYW5pemVkIENvbm5lY3RlZCBDb21wb25lbnQgYXBwbGljYXRpb24gZGVtbwor LSAgICBRVDVfV1JBUF9VSShvcmdhbml6ZWRfc2VnbWVudGF0aW9uX2RlbW9fdWkgc3JjL29yZ2Fu aXplZF9zZWdtZW50YXRpb25fZGVtby51aSkKKy0gICAgUVQ1X1dSQVBfQ1BQKG9yZ2FuaXplZF9z ZWdtZW50YXRpb25fZGVtb19tb2MgaW5jbHVkZS9wY2wvYXBwcy9vcmdhbml6ZWRfc2VnbWVudGF0 aW9uX2RlbW8uaCBPUFRJT05TIC1EQk9PU1RfVFRfSEFTX09QRVJBVE9SX0hQUF9JTkNMVURFRCAt REJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCistICAgIFBDTF9BRERf RVhFQ1VUQUJMRShwY2xfb3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vIENPTVBPTkVOVCAke1NV QlNZU19OQU1FfSBTT1VSQ0VTICR7b3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vX3VpfSAke29y Z2FuaXplZF9zZWdtZW50YXRpb25fZGVtb19tb2N9IHNyYy9vcmdhbml6ZWRfc2VnbWVudGF0aW9u X2RlbW8uY3BwIEJVTkRMRSkKKy0gICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF9vcmdhbml6 ZWRfc2VnbWVudGF0aW9uX2RlbW8gcGNsX2NvbW1vbiBwY2xfaW8gcGNsX3Zpc3VhbGl6YXRpb24g cGNsX3NlZ21lbnRhdGlvbiBwY2xfZmVhdHVyZXMgcGNsX3N1cmZhY2UgUXQ1OjpXaWRnZXRzKQor KyAgICBpZihRdDVfRk9VTkQgQU5EIEhBVkVfUVZUSykKKysgICAgICAjIE9wZW5OSSBQYXNzdGhy b3VnaCBhcHBsaWNhdGlvbiBkZW1vCisrICAgICAgUVQ1X1dSQVBfVUkob3Blbm5pX3Bhc3N0aHJv dWdoX3VpIHNyYy9vcGVubmlfcGFzc3Rocm91Z2gudWkpCisrICAgICAgUVQ1X1dSQVBfQ1BQKG9w ZW5uaV9wYXNzdGhyb3VnaF9tb2MgaW5jbHVkZS9wY2wvYXBwcy9vcGVubmlfcGFzc3Rocm91Z2gu aCBPUFRJT05TIC1EQk9PU1RfVFRfSEFTX09QRVJBVE9SX0hQUF9JTkNMVURFRCAtREJPT1NUX05P X1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCisrICAgICAgUENMX0FERF9FWEVDVVRB QkxFKHBjbF9vcGVubmlfcGFzc3Rocm91Z2ggQ09NUE9ORU5UICR7U1VCU1lTX05BTUV9IFNPVVJD RVMgJHtvcGVubmlfcGFzc3Rocm91Z2hfdWl9ICR7b3Blbm5pX3Bhc3N0aHJvdWdoX21vY30gc3Jj L29wZW5uaV9wYXNzdGhyb3VnaC5jcHApCisrICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBj bF9vcGVubmlfcGFzc3Rocm91Z2ggcGNsX2NvbW1vbiBwY2xfaW8gcGNsX2ZpbHRlcnMgcGNsX3Zp c3VhbGl6YXRpb24gUXQ1OjpXaWRnZXRzKQorKyAgICAgICNUT0RPOiBVcGRhdGUgd2hlbiBDTUFL RSAzLjEwIGlzIGF2YWlsYWJsZQorKyAgICAgIGlmKE5PVCAoJHtWVEtfVkVSU0lPTn0gVkVSU0lP Tl9MRVNTIDkuMCkpCisrICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX29wZW5uaV9w YXNzdGhyb3VnaCBWVEs6OkdVSVN1cHBvcnRRdCkKKysgICAgICBlbmRpZigpCisrCisrICAgICAg IyBPcGVuTkkgT3JnYW5pemVkIENvbm5lY3RlZCBDb21wb25lbnQgYXBwbGljYXRpb24gZGVtbwor KyAgICAgIFFUNV9XUkFQX1VJKG9yZ2FuaXplZF9zZWdtZW50YXRpb25fZGVtb191aSBzcmMvb3Jn YW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vLnVpKQorKyAgICAgIFFUNV9XUkFQX0NQUChvcmdhbml6 ZWRfc2VnbWVudGF0aW9uX2RlbW9fbW9jIGluY2x1ZGUvcGNsL2FwcHMvb3JnYW5pemVkX3NlZ21l bnRhdGlvbl9kZW1vLmggT1BUSU9OUyAtREJPT1NUX1RUX0hBU19PUEVSQVRPUl9IUFBfSU5DTFVE RUQgLURCT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQorKyAgICAgIFBD TF9BRERfRVhFQ1VUQUJMRShwY2xfb3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vIENPTVBPTkVO VCAke1NVQlNZU19OQU1FfSBTT1VSQ0VTICR7b3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vX3Vp fSAke29yZ2FuaXplZF9zZWdtZW50YXRpb25fZGVtb19tb2N9IHNyYy9vcmdhbml6ZWRfc2VnbWVu dGF0aW9uX2RlbW8uY3BwIEJVTkRMRSkKKysgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNs X29yZ2FuaXplZF9zZWdtZW50YXRpb25fZGVtbyBwY2xfY29tbW9uIHBjbF9pbyBwY2xfdmlzdWFs aXphdGlvbiBwY2xfc2VnbWVudGF0aW9uIHBjbF9mZWF0dXJlcyBwY2xfc3VyZmFjZSBRdDU6Oldp ZGdldHMpCisrICAgICAgI1RPRE86IFVwZGF0ZSB3aGVuIENNQUtFIDMuMTAgaXMgYXZhaWxhYmxl CisrICAgICAgaWYoTk9UICgke1ZUS19WRVJTSU9OfSBWRVJTSU9OX0xFU1MgOS4wKSkKKysgICAg ICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfb3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1v IFZUSzo6R1VJU3VwcG9ydFF0KQorKyAgICAgIGVuZGlmKCkgICAgICAKKyAgICAgZW5kaWYoKQor IAorICAgICBpZihRSFVMTF9GT1VORCkKK2RpZmYgLXVwIC4vYXBwcy9pbmNsdWRlL3BjbC9hcHBz L21hbnVhbF9yZWdpc3RyYXRpb24uaC40MjYyIC4vYXBwcy9pbmNsdWRlL3BjbC9hcHBzL21hbnVh bF9yZWdpc3RyYXRpb24uaAorLS0tIC4vYXBwcy9pbmNsdWRlL3BjbC9hcHBzL21hbnVhbF9yZWdp c3RyYXRpb24uaC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCisrKysg Li9hcHBzL2luY2x1ZGUvcGNsL2FwcHMvbWFudWFsX3JlZ2lzdHJhdGlvbi5oCTIwMjEtMDItMjEg MjE6MzI6NTguMzI3MTc2NzU4IC0wNTAwCitAQCAtMTA2LDYgKzEwNiw5IEBAIHB1YmxpYzoKKyAg IERzdFBvaW50UGlja0NhbGxiYWNrKGNvbnN0IHBjbDo6dmlzdWFsaXphdGlvbjo6UG9pbnRQaWNr aW5nRXZlbnQmIGV2ZW50LCB2b2lkKik7CisgCisgcHJvdGVjdGVkOgorKyAgdm9pZAorKyAgcmVm cmVzaFZpZXcoKTsKKysKKyAgIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6UHRy IHZpc19zcmNfOworICAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpQdHIgdmlz X2RzdF87CisgCitkaWZmIC11cCAuL2FwcHMvaW5jbHVkZS9wY2wvYXBwcy9vcGVubmlfcGFzc3Ro cm91Z2guaC40MjYyIC4vYXBwcy9pbmNsdWRlL3BjbC9hcHBzL29wZW5uaV9wYXNzdGhyb3VnaC5o CistLS0gLi9hcHBzL2luY2x1ZGUvcGNsL2FwcHMvb3Blbm5pX3Bhc3N0aHJvdWdoLmguNDI2Mgky MDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vYXBwcy9pbmNsdWRlL3Bj bC9hcHBzL29wZW5uaV9wYXNzdGhyb3VnaC5oCTIwMjEtMDItMjEgMjE6MzI6NTguMzI3MTc2NzU4 IC0wNTAwCitAQCAtODYsNiArODYsOSBAQCBwdWJsaWM6CisgICBjbG91ZF9jYihjb25zdCBDbG91 ZENvbnN0UHRyJiBjbG91ZCk7CisgCisgcHJvdGVjdGVkOgorKyAgdm9pZAorKyAgcmVmcmVzaFZp ZXcoKTsKKysgIAorICAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpQdHIgdmlz XzsKKyAgIHBjbDo6T3Blbk5JR3JhYmJlciYgZ3JhYmJlcl87CisgICBzdGQ6OnN0cmluZyBkZXZp Y2VfaWRfOworZGlmZiAtdXAgLi9hcHBzL2luY2x1ZGUvcGNsL2FwcHMvb3JnYW5pemVkX3NlZ21l bnRhdGlvbl9kZW1vLmguNDI2MiAuL2FwcHMvaW5jbHVkZS9wY2wvYXBwcy9vcmdhbml6ZWRfc2Vn bWVudGF0aW9uX2RlbW8uaAorLS0tIC4vYXBwcy9pbmNsdWRlL3BjbC9hcHBzL29yZ2FuaXplZF9z ZWdtZW50YXRpb25fZGVtby5oLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0 MDAKKysrKyAuL2FwcHMvaW5jbHVkZS9wY2wvYXBwcy9vcmdhbml6ZWRfc2VnbWVudGF0aW9uX2Rl bW8uaAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyNzE3Njc1OCAtMDUwMAorQEAgLTE4OSw0ICsxODks OCBAQCBwdWJsaWMgUV9TTE9UUzoKKyBwcml2YXRlIFFfU0xPVFM6CisgICB2b2lkCisgICB0aW1l b3V0U2xvdCgpOworKworK3ByaXZhdGU6CisrICB2b2lkCisrICByZWZyZXNoVmlldygpOworIH07 CitkaWZmIC11cCAuL2FwcHMvaW5jbHVkZS9wY2wvYXBwcy9wY2RfdmlkZW9fcGxheWVyLmguNDI2 MiAuL2FwcHMvaW5jbHVkZS9wY2wvYXBwcy9wY2RfdmlkZW9fcGxheWVyLmgKKy0tLSAuL2FwcHMv aW5jbHVkZS9wY2wvYXBwcy9wY2RfdmlkZW9fcGxheWVyLmguNDI2MgkyMDIwLTA4LTE0IDA4OjIz OjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vYXBwcy9pbmNsdWRlL3BjbC9hcHBzL3BjZF92aWRl b19wbGF5ZXIuaAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyODE3Njc2MyAtMDUwMAorQEAgLTUzLDcg KzUzLDYgQEAKKyAjaW5jbHVkZSA8UU1haW5XaW5kb3c+CisgI2luY2x1ZGUgPFFNdXRleD4KKyAj aW5jbHVkZSA8UVRpbWVyPgorLSNpbmNsdWRlIDx1aV9wY2RfdmlkZW9fcGxheWVyLmg+CisgCisg I2luY2x1ZGUgPGN0aW1lPgorICNpbmNsdWRlIDxpb3N0cmVhbT4KK0BAIC05Myw2ICs5Miw5IEBA IHB1YmxpYzoKKyAgIH5QQ0RWaWRlb1BsYXllcigpIHt9CisgCisgcHJvdGVjdGVkOgorKyAgdm9p ZAorKyAgcmVmcmVzaFZpZXcoKTsKKysKKyAgIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFs aXplcjo6UHRyIHZpc187CisgICBwY2w6OlBvaW50Q2xvdWQ8cGNsOjpQb2ludFhZWlJHQkE+OjpQ dHIgY2xvdWRfOworIAorZGlmZiAtdXAgLi9hcHBzL21vZGVsZXIvQ01ha2VMaXN0cy50eHQuNDI2 MiAuL2FwcHMvbW9kZWxlci9DTWFrZUxpc3RzLnR4dAorLS0tIC4vYXBwcy9tb2RlbGVyL0NNYWtl TGlzdHMudHh0LjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAu L2FwcHMvbW9kZWxlci9DTWFrZUxpc3RzLnR4dAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyODE3Njc2 MyAtMDUwMAorQEAgLTEwLDggKzEwLDYgQEAgaWYoTk9UIFZUS19GT1VORCkKKyBlbHNlKCkKKyAg IHNldChERUZBVUxUIFRSVUUpCisgICBzZXQoUkVBU09OKQorLSAgc2V0KFZUS19VU0VfRklMRSAi JHtWVEtfVVNFX0ZJTEV9IiBDQUNIRSBJTlRFUk5BTCAiVlRLX1VTRV9GSUxFIikKKy0gIGluY2x1 ZGUoIiR7VlRLX1VTRV9GSUxFfSIpCisgZW5kaWYoKQorIAorICMgUVQ1IEZvdW5kPworQEAgLTI0 LDcgKzIyLDcgQEAgZWxzZWlmKE5PVCAke0RFRkFVTFR9IFNUUkVRVUFMICJBVVRPX09GRgorIGVu ZGlmKCkKKyAKKyAjIFFWVEs/CistaWYoTk9UIFFWVEtfRk9VTkQpCisraWYoTk9UIEhBVkVfUVZU SykKKyAgIHNldChERUZBVUxUIEFVVE9fT0ZGKQorICAgc2V0KFJFQVNPTiAiVlRLIHdhcyBub3Qg YnVpbHQgd2l0aCBRdCBzdXBwb3J0LiIpCisgZWxzZWlmKE5PVCAke0RFRkFVTFR9IFNUUkVRVUFM ICJBVVRPX09GRiIpCitAQCAtMzcsOCArMzUsOCBAQCBpZigke0RFRkFVTFR9IFNUUkVRVUFMICJU UlVFIikKKyAgIHNldChERUZBVUxUIEZBTFNFKQorIGVuZGlmKCkKKyAKKy1QQ0xfU1VCU1VCU1lT X09QVElPTihidWlsZCAiJHtTVUJTWVNfTkFNRX0iICIke1NVQlNVQlNZU19OQU1FfSIgIiR7U1VC U1lTX0RFU0N9IiAke0RFRkFVTFR9ICIke1JFQVNPTn0iKQorLVBDTF9TVUJTVUJTWVNfREVQRU5E KGJ1aWxkICIke1NVQlNZU19OQU1FfSIgIiR7U1VCU1VCU1lTX05BTUV9IiBERVBTICR7U1VCU1lT X0RFUFN9IEVYVF9ERVBTIHZ0aykKKytQQ0xfU1VCU1VCU1lTX09QVElPTihidWlsZCAiJHtTVUJT WVNfTkFNRX0iICIke1NVQlNVQlNZU19OQU1FfSIgIiR7U1VCU1VCU1lTX0RFU0N9IiAke0RFRkFV TFR9ICIke1JFQVNPTn0iKQorK1BDTF9TVUJTVUJTWVNfREVQRU5EKGJ1aWxkICIke1NVQlNZU19O QU1FfSIgIiR7U1VCU1VCU1lTX05BTUV9IiBERVBTICR7U1VCU1VCU1lTX0RFUFN9IEVYVF9ERVBT IHZ0aykKKyAKKyBQQ0xfQUREX0RPQygiJHtTVUJTVUJTWVNfTkFNRX0iKQorIAorQEAgLTE0MCw2 ICsxMzgsMTAgQEAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7c3Jjc30gUFJPUAorIHNl dChFWEVfTkFNRSAicGNsXyR7U1VCU1VCU1lTX05BTUV9IikKKyBQQ0xfQUREX0VYRUNVVEFCTEUo JHtFWEVfTkFNRX0gQ09NUE9ORU5UICR7U1VCU1VCU1lTX05BTUV9IFNPVVJDRVMgJHt1aV9zcmNz fSAke21vY19zcmNzfSAke3Jlc291cmNlX3NyY3N9ICR7c3Jjc30gJHtpbmNzfSAke2ltcGxfaW5j c30pCisgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCIke0VYRV9OQU1FfSIgcGNsX2NvbW1vbiBwY2xf aW8gcGNsX2tkdHJlZSBwY2xfZmlsdGVycyBwY2xfdmlzdWFsaXphdGlvbiBwY2xfc2VnbWVudGF0 aW9uIHBjbF9zdXJmYWNlIHBjbF9mZWF0dXJlcyBwY2xfc2FtcGxlX2NvbnNlbnN1cyBwY2xfc2Vh cmNoIFF0NTo6V2lkZ2V0cykKKysjVE9ETzogVXBkYXRlIHdoZW4gQ01BS0UgMy4xMCBpcyBhdmFp bGFibGUKKytpZihOT1QgKCR7VlRLX1ZFUlNJT059IFZFUlNJT05fTEVTUyA5LjApKQorKyAgdGFy Z2V0X2xpbmtfbGlicmFyaWVzKCIke0VYRV9OQU1FfSIgVlRLOjpHVUlTdXBwb3J0UXQpCisrZW5k aWYoKQorIAorICMgUHV0IHRoZSB1aSBpbiB0aGUgd2luZG93cyBwcm9qZWN0IGZpbGUKKyBpZigo IiR7Q01BS0VfQlVJTERfVE9PTH0iIE1BVENIRVMgIm1zZGV2IikgT1IoIiR7Q01BS0VfQlVJTERf VE9PTH0iIE1BVENIRVMgImRldmVudiIpKQorZGlmZiAtdXAgLi9hcHBzL21vZGVsZXIvaW5jbHVk ZS9wY2wvYXBwcy9tb2RlbGVyL3JlbmRlcl93aW5kb3cuaC40MjYyIC4vYXBwcy9tb2RlbGVyL2lu Y2x1ZGUvcGNsL2FwcHMvbW9kZWxlci9yZW5kZXJfd2luZG93LmgKKy0tLSAuL2FwcHMvbW9kZWxl ci9pbmNsdWRlL3BjbC9hcHBzL21vZGVsZXIvcmVuZGVyX3dpbmRvdy5oLjQyNjIJMjAyMC0wOC0x NCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL2FwcHMvbW9kZWxlci9pbmNsdWRlL3Bj bC9hcHBzL21vZGVsZXIvcmVuZGVyX3dpbmRvdy5oCTIwMjEtMDItMjEgMjE6MzI6NTguMzI4MTc2 NzYzIC0wNTAwCitAQCAtMzUsOCArMzUsNyBAQAorICAqLworIAorICNwcmFnbWEgb25jZQorLQor LSNpbmNsdWRlIDxRVlRLV2lkZ2V0Lmg+CisrI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL3F2 dGtfY29tcGF0aWJpbGl0eS5oPgorIAorICNpbmNsdWRlIDx2dGtTbWFydFBvaW50ZXIuaD4KKyAK K0BAIC00Nyw3ICs0Niw3IEBAIG5hbWVzcGFjZSBtb2RlbGVyIHsKKyAKKyBjbGFzcyBSZW5kZXJX aW5kb3dJdGVtOworIAorLWNsYXNzIFJlbmRlcldpbmRvdyA6IHB1YmxpYyBRVlRLV2lkZ2V0IHsK KytjbGFzcyBSZW5kZXJXaW5kb3cgOiBwdWJsaWMgUENMUVZUS1dpZGdldCB7CisgcHVibGljOgor ICAgUmVuZGVyV2luZG93KFJlbmRlcldpbmRvd0l0ZW0qIHJlbmRlcl93aW5kb3dfaXRlbSwKKyAg ICAgICAgICAgICAgICBRV2lkZ2V0KiBwYXJlbnQgPSBudWxscHRyLAorZGlmZiAtdXAgLi9hcHBz L21vZGVsZXIvc3JjL2Nsb3VkX21lc2guY3BwLjQyNjIgLi9hcHBzL21vZGVsZXIvc3JjL2Nsb3Vk X21lc2guY3BwCistLS0gLi9hcHBzL21vZGVsZXIvc3JjL2Nsb3VkX21lc2guY3BwLjQyNjIJMjAy MC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL2FwcHMvbW9kZWxlci9zcmMv Y2xvdWRfbWVzaC5jcHAJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjgxNzY3NjMgLTA1MDAKK0BAIC0x OTgsNyArMTk4LDcgQEAgcGNsOjptb2RlbGVyOjpDbG91ZE1lc2g6OnVwZGF0ZVZ0a1BvbHlnbwor ICAgaWYgKGNsb3VkXy0+aXNfZGVuc2UpIHsKKyAgICAgZm9yIChjb25zdCBhdXRvJiBwb2x5Z29u IDogcG9seWdvbnNfKSB7CisgICAgICAgdnRrX3BvbHlnb25zXy0+SW5zZXJ0TmV4dENlbGwocG9s eWdvbi52ZXJ0aWNlcy5zaXplKCkpOworLSAgICAgIGZvciAoY29uc3QgdW5zaWduZWQgaW50JiB2 ZXJ0ZXggOiBwb2x5Z29uLnZlcnRpY2VzKQorKyAgICAgIGZvciAoY29uc3QgYXV0byYgdmVydGV4 IDogcG9seWdvbi52ZXJ0aWNlcykKKyAgICAgICAgIHZ0a19wb2x5Z29uc18tPkluc2VydENlbGxQ b2ludCh2ZXJ0ZXgpOworICAgICB9CisgICB9CitAQCAtMjA4LDcgKzIwOCw3IEBAIHBjbDo6bW9k ZWxlcjo6Q2xvdWRNZXNoOjp1cGRhdGVWdGtQb2x5Z28KKyAKKyAgICAgZm9yIChjb25zdCBhdXRv JiBwb2x5Z29uIDogcG9seWdvbnNfKSB7CisgICAgICAgdnRrX3BvbHlnb25zXy0+SW5zZXJ0TmV4 dENlbGwocG9seWdvbi52ZXJ0aWNlcy5zaXplKCkpOworLSAgICAgIGZvciAoY29uc3QgdW5zaWdu ZWQgaW50JiB2ZXJ0ZXggOiBwb2x5Z29uLnZlcnRpY2VzKQorKyAgICAgIGZvciAoY29uc3QgYXV0 byYgdmVydGV4IDogcG9seWdvbi52ZXJ0aWNlcykKKyAgICAgICAgIHZ0a19wb2x5Z29uc18tPklu c2VydENlbGxQb2ludCgoKmluZGljZXMpW3ZlcnRleF0pOworICAgICB9CisgICB9CitkaWZmIC11 cCAuL2FwcHMvbW9kZWxlci9zcmMvY2xvdWRfbWVzaF9pdGVtLmNwcC40MjYyIC4vYXBwcy9tb2Rl bGVyL3NyYy9jbG91ZF9tZXNoX2l0ZW0uY3BwCistLS0gLi9hcHBzL21vZGVsZXIvc3JjL2Nsb3Vk X21lc2hfaXRlbS5jcHAuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAor KysrIC4vYXBwcy9tb2RlbGVyL3NyYy9jbG91ZF9tZXNoX2l0ZW0uY3BwCTIwMjEtMDItMjEgMjE6 MzI6NTguMzI4MTc2NzYzIC0wNTAwCitAQCAtMTU2LDEyICsxNTYsMTMgQEAgdm9pZAorIHBjbDo6 bW9kZWxlcjo6Q2xvdWRNZXNoSXRlbTo6Y3JlYXRlQ2hhbm5lbHMoKQorIHsKKyAgIFJlbmRlcldp bmRvd0l0ZW0qIHJlbmRlcl93aW5kb3dfaXRlbSA9IGR5bmFtaWNfY2FzdDxSZW5kZXJXaW5kb3dJ dGVtKj4ocGFyZW50KCkpOworLSAgYWRkQ2hpbGQobmV3IFBvaW50c0FjdG9ySXRlbSgKKy0gICAg ICB0aGlzLCBjbG91ZF9tZXNoXywgcmVuZGVyX3dpbmRvd19pdGVtLT5nZXRSZW5kZXJXaW5kb3co KS0+R2V0UmVuZGVyV2luZG93KCkpKTsKKy0gIGFkZENoaWxkKG5ldyBOb3JtYWxzQWN0b3JJdGVt KAorLSAgICAgIHRoaXMsIGNsb3VkX21lc2hfLCByZW5kZXJfd2luZG93X2l0ZW0tPmdldFJlbmRl cldpbmRvdygpLT5HZXRSZW5kZXJXaW5kb3coKSkpOworLSAgYWRkQ2hpbGQobmV3IFN1cmZhY2VB Y3Rvckl0ZW0oCistICAgICAgdGhpcywgY2xvdWRfbWVzaF8sIHJlbmRlcl93aW5kb3dfaXRlbS0+ Z2V0UmVuZGVyV2luZG93KCktPkdldFJlbmRlcldpbmRvdygpKSk7CisrICB2dGtSZW5kZXJXaW5k b3cqIHdpbiA9CisrICAgICAgZ2V0UmVuZGVyV2luZG93Q29tcGF0KCoocmVuZGVyX3dpbmRvd19p dGVtLT5nZXRSZW5kZXJXaW5kb3coKSkpOworKworKyAgYWRkQ2hpbGQobmV3IFBvaW50c0FjdG9y SXRlbSh0aGlzLCBjbG91ZF9tZXNoXywgd2luKSk7CisrICBhZGRDaGlsZChuZXcgTm9ybWFsc0Fj dG9ySXRlbSh0aGlzLCBjbG91ZF9tZXNoXywgd2luKSk7CisrICBhZGRDaGlsZChuZXcgU3VyZmFj ZUFjdG9ySXRlbSh0aGlzLCBjbG91ZF9tZXNoXywgd2luKSk7CisrCisgICBmb3IgKGludCBpID0g MCwgaV9lbmQgPSBjaGlsZENvdW50KCk7IGkgPCBpX2VuZDsgKytpKSB7CisgICAgIENoYW5uZWxB Y3Rvckl0ZW0qIGNoaWxkX2l0ZW0gPSBkeW5hbWljX2Nhc3Q8Q2hhbm5lbEFjdG9ySXRlbSo+KGNo aWxkKGkpKTsKKyAgICAgY2hpbGRfaXRlbS0+aW5pdCgpOworQEAgLTI0Miw3ICsyNDMsNyBAQCBw Y2w6Om1vZGVsZXI6OkNsb3VkTWVzaEl0ZW06OnVwZGF0ZVJlbmRlCisgICBmb3IgKGludCBpID0g MCwgaV9lbmQgPSBjaGlsZENvdW50KCk7IGkgPCBpX2VuZDsgKytpKSB7CisgICAgIENoYW5uZWxB Y3Rvckl0ZW0qIGNoaWxkX2l0ZW0gPSBkeW5hbWljX2Nhc3Q8Q2hhbm5lbEFjdG9ySXRlbSo+KGNo aWxkKGkpKTsKKyAgICAgY2hpbGRfaXRlbS0+c3dpdGNoUmVuZGVyV2luZG93KAorLSAgICAgICAg cmVuZGVyX3dpbmRvd19pdGVtLT5nZXRSZW5kZXJXaW5kb3coKS0+R2V0UmVuZGVyV2luZG93KCkp OworKyAgICAgICAgZ2V0UmVuZGVyV2luZG93Q29tcGF0KCpyZW5kZXJfd2luZG93X2l0ZW0tPmdl dFJlbmRlcldpbmRvdygpKSk7CisgICB9CisgCisgICByZW5kZXJfd2luZG93X2l0ZW0tPmdldFJl bmRlcldpbmRvdygpLT51cGRhdGVBeGVzKCk7CitkaWZmIC11cCAuL2FwcHMvbW9kZWxlci9zcmMv cmVuZGVyX3dpbmRvdy5jcHAuNDI2MiAuL2FwcHMvbW9kZWxlci9zcmMvcmVuZGVyX3dpbmRvdy5j cHAKKy0tLSAuL2FwcHMvbW9kZWxlci9zcmMvcmVuZGVyX3dpbmRvdy5jcHAuNDI2MgkyMDIwLTA4 LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vYXBwcy9tb2RlbGVyL3NyYy9yZW5k ZXJfd2luZG93LmNwcAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyODE3Njc2MyAtMDUwMAorQEAgLTUy LDcgKzUyLDcgQEAKKyBwY2w6Om1vZGVsZXI6OlJlbmRlcldpbmRvdzo6UmVuZGVyV2luZG93KFJl bmRlcldpbmRvd0l0ZW0qIHJlbmRlcl93aW5kb3dfaXRlbSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFXaWRnZXQqIHBhcmVudCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFF0OjpXaW5kb3dGbGFncyBmbGFncykKKy06IFFWVEtX aWRnZXQocGFyZW50LCBmbGFncykKKys6IFBDTFFWVEtXaWRnZXQocGFyZW50LCBmbGFncykKKyAs IGF4ZXNfKHZ0a1NtYXJ0UG9pbnRlcjx2dGtDdWJlQXhlc0FjdG9yPjo6TmV3KCkpCisgLCByZW5k ZXJfd2luZG93X2l0ZW1fKHJlbmRlcl93aW5kb3dfaXRlbSkKKyB7CitAQCAtNzYsNyArNzYsNyBA QCBwY2w6Om1vZGVsZXI6OlJlbmRlcldpbmRvdzo6flJlbmRlcldpbmRvCisgdm9pZAorIHBjbDo6 bW9kZWxlcjo6UmVuZGVyV2luZG93Ojppbml0UmVuZGVyZXIoKQorIHsKKy0gIHZ0a1NtYXJ0UG9p bnRlcjx2dGtSZW5kZXJXaW5kb3c+IHdpbiA9IEdldFJlbmRlcldpbmRvdygpOworKyAgdnRrU21h cnRQb2ludGVyPHZ0a1JlbmRlcldpbmRvdz4gd2luID0gZ2V0UmVuZGVyV2luZG93Q29tcGF0KCp0 aGlzKTsKKyAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtSZW5kZXJlcj4gcmVuZGVyZXIgPSB2dGtTbWFy dFBvaW50ZXI8dnRrUmVuZGVyZXI+OjpOZXcoKTsKKyAgIHdpbi0+QWRkUmVuZGVyZXIocmVuZGVy ZXIpOworIAorQEAgLTEwNSw3ICsxMDUsNyBAQCBwY2w6Om1vZGVsZXI6OlJlbmRlcldpbmRvdzo6 Zm9jdXNJbkV2ZW50CisgICBkeW5hbWljX2Nhc3Q8U2NlbmVUcmVlKj4ocmVuZGVyX3dpbmRvd19p dGVtXy0+dHJlZVdpZGdldCgpKQorICAgICAgIC0+c2VsZWN0UmVuZGVyV2luZG93SXRlbShyZW5k ZXJfd2luZG93X2l0ZW1fKTsKKyAKKy0gIFFWVEtXaWRnZXQ6OmZvY3VzSW5FdmVudChldmVudCk7 CisrICBQQ0xRVlRLV2lkZ2V0Ojpmb2N1c0luRXZlbnQoZXZlbnQpOworIH0KKyAKKyAvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitAQCAtMTMwLDcgKzEzMCw3IEBAIHBjbDo6 bW9kZWxlcjo6UmVuZGVyV2luZG93OjpzZXRUaXRsZShjb24KKyB2b2lkCisgcGNsOjptb2RlbGVy OjpSZW5kZXJXaW5kb3c6OnJlbmRlcigpCisgeworLSAgR2V0UmVuZGVyV2luZG93KCktPlJlbmRl cigpOworKyAgZ2V0UmVuZGVyV2luZG93Q29tcGF0KCp0aGlzKS0+UmVuZGVyKCk7CisgfQorIAor IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK0BAIC0xMzgsOSArMTM4LDEx IEBAIHZvaWQKKyBwY2w6Om1vZGVsZXI6OlJlbmRlcldpbmRvdzo6cmVzZXRDYW1lcmEoKQorIHsK KyAgIGRvdWJsZSBib3VuZHNbNl07CistICBHZXRSZW5kZXJXaW5kb3coKS0+R2V0UmVuZGVyZXJz KCktPkdldEZpcnN0UmVuZGVyZXIoKS0+Q29tcHV0ZVZpc2libGVQcm9wQm91bmRzKAorLSAgICAg IGJvdW5kcyk7CistICBHZXRSZW5kZXJXaW5kb3coKS0+R2V0UmVuZGVyZXJzKCktPkdldEZpcnN0 UmVuZGVyZXIoKS0+UmVzZXRDYW1lcmEoYm91bmRzKTsKKysgIGdldFJlbmRlcldpbmRvd0NvbXBh dCgqdGhpcykKKysgICAgICAtPkdldFJlbmRlcmVycygpCisrICAgICAgLT5HZXRGaXJzdFJlbmRl cmVyKCkKKysgICAgICAtPkNvbXB1dGVWaXNpYmxlUHJvcEJvdW5kcyhib3VuZHMpOworKyAgZ2V0 UmVuZGVyV2luZG93Q29tcGF0KCp0aGlzKS0+R2V0UmVuZGVyZXJzKCktPkdldEZpcnN0UmVuZGVy ZXIoKS0+UmVzZXRDYW1lcmEoYm91bmRzKTsKKyAgIHJlbmRlcigpOworIH0KKyAKK0BAIC0xNDgs MTQgKzE1MCwxNiBAQCBwY2w6Om1vZGVsZXI6OlJlbmRlcldpbmRvdzo6cmVzZXRDYW1lcmEoCisg dm9pZAorIHBjbDo6bW9kZWxlcjo6UmVuZGVyV2luZG93OjpnZXRCYWNrZ3JvdW5kKGRvdWJsZSYg ciwgZG91YmxlJiBnLCBkb3VibGUmIGIpCisgeworLSAgR2V0UmVuZGVyV2luZG93KCktPkdldFJl bmRlcmVycygpLT5HZXRGaXJzdFJlbmRlcmVyKCktPkdldEJhY2tncm91bmQociwgZywgYik7Cisr ICBnZXRSZW5kZXJXaW5kb3dDb21wYXQoKnRoaXMpLT5HZXRSZW5kZXJlcnMoKS0+R2V0Rmlyc3RS ZW5kZXJlcigpLT5HZXRCYWNrZ3JvdW5kKAorKyAgICAgIHIsIGcsIGIpOworIH0KKyAKKyAvLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgdm9pZAorIHBjbDo6bW9kZWxlcjo6 UmVuZGVyV2luZG93OjpzZXRCYWNrZ3JvdW5kKGRvdWJsZSByLCBkb3VibGUgZywgZG91YmxlIGIp CisgeworLSAgR2V0UmVuZGVyV2luZG93KCktPkdldFJlbmRlcmVycygpLT5HZXRGaXJzdFJlbmRl cmVyKCktPlNldEJhY2tncm91bmQociwgZywgYik7CisrICBnZXRSZW5kZXJXaW5kb3dDb21wYXQo KnRoaXMpLT5HZXRSZW5kZXJlcnMoKS0+R2V0Rmlyc3RSZW5kZXJlcigpLT5TZXRCYWNrZ3JvdW5k KAorKyAgICAgIHIsIGcsIGIpOworIH0KKyAKKyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCitAQCAtMTY1LDcgKzE2OSw3IEBAIHBjbDo6bW9kZWxlcjo6UmVuZGVyV2luZG93 Ojp1cGRhdGVBeGVzKCkKKyAgIHZ0a0JvdW5kaW5nQm94IGJiOworIAorICAgdnRrQWN0b3JDb2xs ZWN0aW9uKiBhY3RvcnMgPQorLSAgICAgIEdldFJlbmRlcldpbmRvdygpLT5HZXRSZW5kZXJlcnMo KS0+R2V0Rmlyc3RSZW5kZXJlcigpLT5HZXRBY3RvcnMoKTsKKysgICAgICBnZXRSZW5kZXJXaW5k b3dDb21wYXQoKnRoaXMpLT5HZXRSZW5kZXJlcnMoKS0+R2V0Rmlyc3RSZW5kZXJlcigpLT5HZXRB Y3RvcnMoKTsKKyAKKyAgIGFjdG9ycy0+SW5pdFRyYXZlcnNhbCgpOworICAgZm9yIChpbnQgaSA9 IDAsIGlfZW5kID0gYWN0b3JzLT5HZXROdW1iZXJPZkl0ZW1zKCk7IGkgPCBpX2VuZDsgKytpKSB7 CitAQCAtMTgxLDggKzE4NSwxMCBAQCBwY2w6Om1vZGVsZXI6OlJlbmRlcldpbmRvdzo6dXBkYXRl QXhlcygpCisgICBkb3VibGUgYm91bmRzWzZdOworICAgYmIuR2V0Qm91bmRzKGJvdW5kcyk7Cisg ICBheGVzXy0+U2V0Qm91bmRzKGJvdW5kcyk7CistICBheGVzXy0+U2V0Q2FtZXJhKAorLSAgICAg IEdldFJlbmRlcldpbmRvdygpLT5HZXRSZW5kZXJlcnMoKS0+R2V0Rmlyc3RSZW5kZXJlcigpLT5H ZXRBY3RpdmVDYW1lcmEoKSk7CisrICBheGVzXy0+U2V0Q2FtZXJhKGdldFJlbmRlcldpbmRvd0Nv bXBhdCgqdGhpcykKKysgICAgICAgICAgICAgICAgICAgICAgIC0+R2V0UmVuZGVyZXJzKCkKKysg ICAgICAgICAgICAgICAgICAgICAgIC0+R2V0Rmlyc3RSZW5kZXJlcigpCisrICAgICAgICAgICAg ICAgICAgICAgICAtPkdldEFjdGl2ZUNhbWVyYSgpKTsKKyB9CisgCisgLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworQEAgLTE5MCw3ICsxOTYsOCBAQCB2b2lkCisgcGNsOjpt b2RlbGVyOjpSZW5kZXJXaW5kb3c6OnNldFNob3dBeGVzKGJvb2wgZmxhZykKKyB7CisgICBpZiAo ZmxhZykKKy0gICAgR2V0UmVuZGVyV2luZG93KCktPkdldFJlbmRlcmVycygpLT5HZXRGaXJzdFJl bmRlcmVyKCktPkFkZEFjdG9yKGF4ZXNfKTsKKysgICAgZ2V0UmVuZGVyV2luZG93Q29tcGF0KCp0 aGlzKS0+R2V0UmVuZGVyZXJzKCktPkdldEZpcnN0UmVuZGVyZXIoKS0+QWRkQWN0b3IoYXhlc18p OworICAgZWxzZQorLSAgICBHZXRSZW5kZXJXaW5kb3coKS0+R2V0UmVuZGVyZXJzKCktPkdldEZp cnN0UmVuZGVyZXIoKS0+UmVtb3ZlQWN0b3IoYXhlc18pOworKyAgICBnZXRSZW5kZXJXaW5kb3dD b21wYXQoKnRoaXMpLT5HZXRSZW5kZXJlcnMoKS0+R2V0Rmlyc3RSZW5kZXJlcigpLT5SZW1vdmVB Y3RvcigKKysgICAgICAgIGF4ZXNfKTsKKyB9CitkaWZmIC11cCAuL2FwcHMvc3JjL21hbnVhbF9y ZWdpc3RyYXRpb24vbWFudWFsX3JlZ2lzdHJhdGlvbi5jcHAuNDI2MiAuL2FwcHMvc3JjL21hbnVh bF9yZWdpc3RyYXRpb24vbWFudWFsX3JlZ2lzdHJhdGlvbi5jcHAKKy0tLSAuL2FwcHMvc3JjL21h bnVhbF9yZWdpc3RyYXRpb24vbWFudWFsX3JlZ2lzdHJhdGlvbi5jcHAuNDI2MgkyMDIwLTA4LTE0 IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vYXBwcy9zcmMvbWFudWFsX3JlZ2lzdHJh dGlvbi9tYW51YWxfcmVnaXN0cmF0aW9uLmNwcAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyODE3Njc2 MyAtMDUwMAorQEAgLTQ4LDYgKzQ4LDcgQEAKKyAjaW5jbHVkZSA8dnRrQ2FtZXJhLmg+CisgI2lu Y2x1ZGUgPHZ0a1JlbmRlcldpbmRvdy5oPgorICNpbmNsdWRlIDx2dGtSZW5kZXJlckNvbGxlY3Rp b24uaD4KKysjaW5jbHVkZSA8dnRrR2VuZXJpY09wZW5HTFJlbmRlcldpbmRvdy5oPgorIAorIHVz aW5nIG5hbWVzcGFjZSBwY2w7CisgCitAQCAtNjYsMjkgKzY3LDQ2IEBAIE1hbnVhbFJlZ2lzdHJh dGlvbjo6TWFudWFsUmVnaXN0cmF0aW9uKCkKKyAgIHRoaXMtPnNldFdpbmRvd1RpdGxlKCJQQ0wg TWFudWFsIFJlZ2lzdHJhdGlvbiIpOworIAorICAgLy8gU2V0IHVwIHRoZSBzb3VyY2Ugd2luZG93 CisrI2lmIFZUS19NQUpPUl9WRVJTSU9OID4gOAorKyAgYXV0byByZW5kZXJlcl9zcmMgPSB2dGtT bWFydFBvaW50ZXI8dnRrUmVuZGVyZXI+OjpOZXcoKTsKKysgIGF1dG8gcmVuZGVyV2luZG93X3Ny YyA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtHZW5lcmljT3BlbkdMUmVuZGVyV2luZG93Pjo6TmV3KCk7 CisrICByZW5kZXJXaW5kb3dfc3JjLT5BZGRSZW5kZXJlcihyZW5kZXJlcl9zcmMpOworKyAgdmlz X3NyY18ucmVzZXQobmV3IHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcihyZW5kZXJl cl9zcmMsIHJlbmRlcldpbmRvd19zcmMsICIiLCBmYWxzZSkpOworKyNlbHNlCisgICB2aXNfc3Jj Xy5yZXNldChuZXcgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyKCIiLCBmYWxzZSkp OworLSAgdWlfLT5xdnRrX3dpZGdldF9zcmMtPlNldFJlbmRlcldpbmRvdyh2aXNfc3JjXy0+Z2V0 UmVuZGVyV2luZG93KCkpOworLSAgdmlzX3NyY18tPnNldHVwSW50ZXJhY3Rvcih1aV8tPnF2dGtf d2lkZ2V0X3NyYy0+R2V0SW50ZXJhY3RvcigpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aV8tPnF2dGtfd2lkZ2V0X3NyYy0+R2V0UmVuZGVyV2luZG93KCkpOworKyNlbmRpZiAvLyBW VEtfTUFKT1JfVkVSU0lPTiA+IDgKKysgIHNldFJlbmRlcldpbmRvd0NvbXBhdCgqKHVpXy0+cXZ0 a193aWRnZXRfc3JjKSwqKHZpc19zcmNfLT5nZXRSZW5kZXJXaW5kb3coKSkpOworKyAgdmlzX3Ny Y18tPnNldHVwSW50ZXJhY3RvcihnZXRJbnRlcmFjdG9yQ29tcGF0KCoodWlfLT5xdnRrX3dpZGdl dF9zcmMpKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVuZGVyV2luZG93Q29t cGF0KCoodWlfLT5xdnRrX3dpZGdldF9zcmMpKSk7CisrCisgICB2aXNfc3JjXy0+Z2V0SW50ZXJh Y3RvclN0eWxlKCktPnNldEtleWJvYXJkTW9kaWZpZXIoCisgICAgICAgcGNsOjp2aXN1YWxpemF0 aW9uOjpJTlRFUkFDVE9SX0tCX01PRF9TSElGVCk7CistICB1aV8tPnF2dGtfd2lkZ2V0X3NyYy0+ dXBkYXRlKCk7CisgCisgICB2aXNfc3JjXy0+cmVnaXN0ZXJQb2ludFBpY2tpbmdDYWxsYmFjaygm TWFudWFsUmVnaXN0cmF0aW9uOjpTb3VyY2VQb2ludFBpY2tDYWxsYmFjaywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0aGlzKTsKKyAKKyAgIC8vIFNldCB1cCB0 aGUgZGVzdGluYXRpb24gd2luZG93CisrI2lmIFZUS19NQUpPUl9WRVJTSU9OID4gOAorKyAgYXV0 byByZW5kZXJlcl9kc3QgPSB2dGtTbWFydFBvaW50ZXI8dnRrUmVuZGVyZXI+OjpOZXcoKTsKKysg IGF1dG8gcmVuZGVyV2luZG93X2RzdCA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtHZW5lcmljT3BlbkdM UmVuZGVyV2luZG93Pjo6TmV3KCk7CisrICByZW5kZXJXaW5kb3dfZHN0LT5BZGRSZW5kZXJlcihy ZW5kZXJlcl9kc3QpOworKyAgdmlzX2RzdF8ucmVzZXQobmV3IHBjbDo6dmlzdWFsaXphdGlvbjo6 UENMVmlzdWFsaXplcihyZW5kZXJlcl9kc3QsIHJlbmRlcldpbmRvd19kc3QsICIiLCBmYWxzZSkp OworKyNlbHNlCisgICB2aXNfZHN0Xy5yZXNldChuZXcgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xW aXN1YWxpemVyKCIiLCBmYWxzZSkpOworLSAgdWlfLT5xdnRrX3dpZGdldF9kc3QtPlNldFJlbmRl cldpbmRvdyh2aXNfZHN0Xy0+Z2V0UmVuZGVyV2luZG93KCkpOworLSAgdmlzX2RzdF8tPnNldHVw SW50ZXJhY3Rvcih1aV8tPnF2dGtfd2lkZ2V0X2RzdC0+R2V0SW50ZXJhY3RvcigpLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aV8tPnF2dGtfd2lkZ2V0X2RzdC0+R2V0UmVuZGVyV2lu ZG93KCkpOworKyNlbmRpZiAvLyBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKKysgIHNldFJlbmRlcldp bmRvd0NvbXBhdCgqKHVpXy0+cXZ0a193aWRnZXRfZHN0KSwgKih2aXNfZHN0Xy0+Z2V0UmVuZGVy V2luZG93KCkpKTsKKysgIHZpc19kc3RfLT5zZXR1cEludGVyYWN0b3IoZ2V0SW50ZXJhY3RvckNv bXBhdCgqKHVpXy0+cXZ0a193aWRnZXRfZHN0KSksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdldFJlbmRlcldpbmRvd0NvbXBhdCgqKHVpXy0+cXZ0a193aWRnZXRfZHN0KSkpOworKwor KworICAgdmlzX2RzdF8tPmdldEludGVyYWN0b3JTdHlsZSgpLT5zZXRLZXlib2FyZE1vZGlmaWVy KAorLSAgICAgIHBjbDo6dmlzdWFsaXphdGlvbjo6SU5URVJBQ1RPUl9LQl9NT0RfU0hJRlQpOwor LSAgdWlfLT5xdnRrX3dpZGdldF9kc3QtPnVwZGF0ZSgpOworKyAgICBwY2w6OnZpc3VhbGl6YXRp b246OklOVEVSQUNUT1JfS0JfTU9EX1NISUZUKTsKKyAKKyAgIHZpc19kc3RfLT5yZWdpc3RlclBv aW50UGlja2luZ0NhbGxiYWNrKCZNYW51YWxSZWdpc3RyYXRpb246OkRzdFBvaW50UGlja0NhbGxi YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnRoaXMpOwor LQorKyAgLy8gUmVuZGVyIHZpZXcKKysgIHJlZnJlc2hWaWV3KCk7CisrICAKKyAgIC8vIENvbm5l Y3QgYWxsIGJ1dHRvbnMKKyAgIGNvbm5lY3QodWlfLT5jb25maXJtU3JjUG9pbnRCdXR0b24sCisg ICAgICAgICAgIFNJR05BTChjbGlja2VkKCkpLAorQEAgLTIzNiw4ICsyNTQsOCBAQCBNYW51YWxS ZWdpc3RyYXRpb246Om9ydGhvQ2hhbmdlZChpbnQgc3RhCisgICAgICAgICAtPkdldEFjdGl2ZUNh bWVyYSgpCisgICAgICAgICAtPlNldFBhcmFsbGVsUHJvamVjdGlvbigxKTsKKyAgIH0KKy0gIHVp Xy0+cXZ0a193aWRnZXRfc3JjLT51cGRhdGUoKTsKKy0gIHVpXy0+cXZ0a193aWRnZXRfZHN0LT51 cGRhdGUoKTsKKysKKysgIHJlZnJlc2hWaWV3KCk7CisgfQorIAorIC8vIFRPRE8KK0BAIC0yNzQs OCArMjkyLDE3IEBAIE1hbnVhbFJlZ2lzdHJhdGlvbjo6dGltZW91dFNsb3QoKQorICAgICB9Cisg ICAgIGNsb3VkX2RzdF9tb2RpZmllZF8gPSBmYWxzZTsKKyAgIH0KKy0gIHVpXy0+cXZ0a193aWRn ZXRfc3JjLT51cGRhdGUoKTsKKysgIHJlZnJlc2hWaWV3KCk7CisrfQorKworK3ZvaWQKKytNYW51 YWxSZWdpc3RyYXRpb246OnJlZnJlc2hWaWV3KCkKKyt7CisrI2lmIFZUS19NQUpPUl9WRVJTSU9O ID4gOAorKyAgdWlfLT5xdnRrX3dpZGdldF9kc3QtPnJlbmRlcldpbmRvdygpLT5SZW5kZXIoKTsK KysjZWxzZQorICAgdWlfLT5xdnRrX3dpZGdldF9kc3QtPnVwZGF0ZSgpOworKyNlbmRpZiAvLyBW VEtfTUFKT1JfVkVSU0lPTiA+IDgKKyB9CisgCisgdm9pZAorZGlmZiAtdXAgLi9hcHBzL3NyYy9t YW51YWxfcmVnaXN0cmF0aW9uL21hbnVhbF9yZWdpc3RyYXRpb24udWkuNDI2MiAuL2FwcHMvc3Jj L21hbnVhbF9yZWdpc3RyYXRpb24vbWFudWFsX3JlZ2lzdHJhdGlvbi51aQorLS0tIC4vYXBwcy9z cmMvbWFudWFsX3JlZ2lzdHJhdGlvbi9tYW51YWxfcmVnaXN0cmF0aW9uLnVpLjQyNjIJMjAyMC0w OC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL2FwcHMvc3JjL21hbnVhbF9yZWdp c3RyYXRpb24vbWFudWFsX3JlZ2lzdHJhdGlvbi51aQkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyODE3 Njc2MyAtMDUwMAorQEAgLTM3LDcgKzM3LDcgQEAKKyAgICA8L3Byb3BlcnR5PgorICAgIDxsYXlv dXQgY2xhc3M9IlFHcmlkTGF5b3V0IiBuYW1lPSJncmlkTGF5b3V0Ij4KKyAgICAgPGl0ZW0gcm93 PSIwIiBjb2x1bW49IjMiPgorLSAgICAgPHdpZGdldCBjbGFzcz0iUVZUS1dpZGdldCIgbmFtZT0i cXZ0a193aWRnZXRfc3JjIj4KKysgICAgIDx3aWRnZXQgY2xhc3M9IlBDTFFWVEtXaWRnZXQiIG5h bWU9InF2dGtfd2lkZ2V0X3NyYyI+CisgICAgICAgPHByb3BlcnR5IG5hbWU9InNpemVQb2xpY3ki PgorICAgICAgICA8c2l6ZXBvbGljeSBoc2l6ZXR5cGU9IkV4cGFuZGluZyIgdnNpemV0eXBlPSJF eHBhbmRpbmciPgorICAgICAgICAgPGhvcnN0cmV0Y2g+MjU1PC9ob3JzdHJldGNoPgorQEAgLTEz Myw3ICsxMzMsNyBAQAorICAgICAgPC9sYXlvdXQ+CisgICAgIDwvaXRlbT4KKyAgICAgPGl0ZW0g cm93PSIwIiBjb2x1bW49IjciPgorLSAgICAgPHdpZGdldCBjbGFzcz0iUVZUS1dpZGdldCIgbmFt ZT0icXZ0a193aWRnZXRfZHN0Ij4KKysgICAgIDx3aWRnZXQgY2xhc3M9IlBDTFFWVEtXaWRnZXQi IG5hbWU9InF2dGtfd2lkZ2V0X2RzdCI+CisgICAgICAgPHByb3BlcnR5IG5hbWU9InNpemVQb2xp Y3kiPgorICAgICAgICA8c2l6ZXBvbGljeSBoc2l6ZXR5cGU9IkV4cGFuZGluZyIgdnNpemV0eXBl PSJFeHBhbmRpbmciPgorICAgICAgICAgPGhvcnN0cmV0Y2g+MjU1PC9ob3JzdHJldGNoPgorQEAg LTE2MSw5ICsxNjEsOSBAQAorICA8L3dpZGdldD4KKyAgPGN1c3RvbXdpZGdldHM+CisgICA8Y3Vz dG9td2lkZ2V0PgorLSAgIDxjbGFzcz5RVlRLV2lkZ2V0PC9jbGFzcz4KKy0gICA8ZXh0ZW5kcz5R V2lkZ2V0PC9leHRlbmRzPgorLSAgIDxoZWFkZXI+UVZUS1dpZGdldC5oPC9oZWFkZXI+CisrICAg PGNsYXNzPlBDTFFWVEtXaWRnZXQ8L2NsYXNzPgorKyAgIDxleHRlbmRzPlFPcGVuR0xXaWRnZXQ8 L2V4dGVuZHM+CisrICAgPGhlYWRlciBsb2NhdGlvbj0iZ2xvYmFsIj5wY2wvdmlzdWFsaXphdGlv bi9xdnRrX2NvbXBhdGliaWxpdHkuaDwvaGVhZGVyPgorICAgPC9jdXN0b213aWRnZXQ+CisgIDwv Y3VzdG9td2lkZ2V0cz4KKyAgPHJlc291cmNlcy8+CitkaWZmIC11cCAuL2FwcHMvc3JjL29wZW5u aV9vY3RyZWVfY29tcHJlc3Npb24uY3BwLjQyNjIgLi9hcHBzL3NyYy9vcGVubmlfb2N0cmVlX2Nv bXByZXNzaW9uLmNwcAorLS0tIC4vYXBwcy9zcmMvb3Blbm5pX29jdHJlZV9jb21wcmVzc2lvbi5j cHAuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vYXBwcy9z cmMvb3Blbm5pX29jdHJlZV9jb21wcmVzc2lvbi5jcHAJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjkx NzY3NjcgLTA1MDAKK0BAIC0zODIsNyArMzgyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy Z3YpCisgICBpZiAoIWJTZXJ2ZXJGaWxlTW9kZSkgeworICAgICBpZiAoYkVuRGVjb2RlKSB7Cisg ICAgICAgLy8gRU5DT0RJTkcKKy0gICAgICBvZnN0cmVhbSBjb21wcmVzc2VkUENGaWxlOworKyAg ICAgIHN0ZDo6b2ZzdHJlYW0gY29tcHJlc3NlZFBDRmlsZTsKKyAgICAgICBjb21wcmVzc2VkUENG aWxlLm9wZW4oZmlsZU5hbWUuY19zdHIoKSwgc3RkOjppb3M6Om91dCB8IHN0ZDo6aW9zOjp0cnVu YyB8IHN0ZDo6aW9zOjpiaW5hcnkpOworIAorICAgICAgIGlmICghYlNob3dJbnB1dENsb3VkKSB7 CitkaWZmIC11cCAuL2FwcHMvc3JjL29wZW5uaV9wYXNzdGhyb3VnaC5jcHAuNDI2MiAuL2FwcHMv c3JjL29wZW5uaV9wYXNzdGhyb3VnaC5jcHAKKy0tLSAuL2FwcHMvc3JjL29wZW5uaV9wYXNzdGhy b3VnaC5jcHAuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4v YXBwcy9zcmMvb3Blbm5pX3Bhc3N0aHJvdWdoLmNwcAkyMDIxLTAyLTIxIDIxOjMzOjM2LjY4NjM0 Mzg4MiAtMDUwMAorQEAgLTQ0LDkgKzQ0LDEzIEBACisgI2luY2x1ZGUgPFFPYmplY3Q+CisgCisg I2luY2x1ZGUgPHZ0a1JlbmRlcldpbmRvdy5oPgorKyNpbmNsdWRlIDx2dGtSZW5kZXJlckNvbGxl Y3Rpb24uaD4KKysjaW5jbHVkZSA8dnRrR2VuZXJpY09wZW5HTFJlbmRlcldpbmRvdy5oPgorIAor ICNpbmNsdWRlIDx0aHJlYWQ+CisgCisrI2luY2x1ZGUgPHVpX29wZW5uaV9wYXNzdGhyb3VnaC5o PgorKworIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ub19saXRlcmFsczsKKyAKKyAvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K K0BAIC02MSwxMyArNjUsMjEgQEAgT3Blbk5JUGFzc3Rocm91Z2g6Ok9wZW5OSVBhc3N0aHJvdWdo KHBjbAorICAgdWlfLT5zZXR1cFVpKHRoaXMpOworIAorICAgdGhpcy0+c2V0V2luZG93VGl0bGUo IlBDTCBPcGVuTkkgUGFzc1Rocm91Z2ggVmlld2VyIik7CisrICAgIC8vQ3JlYXRlIHRoZSBRVlRL V2lkZ2V0CisrI2lmIFZUS19NQUpPUl9WRVJTSU9OID4gOAorKyAgYXV0byByZW5kZXJlciA9IHZ0 a1NtYXJ0UG9pbnRlcjx2dGtSZW5kZXJlcj46Ok5ldygpOworKyAgYXV0byByZW5kZXJXaW5kb3cg PSB2dGtTbWFydFBvaW50ZXI8dnRrR2VuZXJpY09wZW5HTFJlbmRlcldpbmRvdz46Ok5ldygpOwor KyAgcmVuZGVyV2luZG93LT5BZGRSZW5kZXJlcihyZW5kZXJlcik7CisrICB2aXNfLnJlc2V0KG5l dyBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXIocmVuZGVyZXIsIHJlbmRlcldpbmRv dywgIiIsIGZhbHNlKSk7CisrI2Vsc2UKKyAgIHZpc18ucmVzZXQobmV3IHBjbDo6dmlzdWFsaXph dGlvbjo6UENMVmlzdWFsaXplcigiIiwgZmFsc2UpKTsKKy0gIHVpXy0+cXZ0a193aWRnZXQtPlNl dFJlbmRlcldpbmRvdyh2aXNfLT5nZXRSZW5kZXJXaW5kb3coKSk7CistICB2aXNfLT5zZXR1cElu dGVyYWN0b3IodWlfLT5xdnRrX3dpZGdldC0+R2V0SW50ZXJhY3RvcigpLAorLSAgICAgICAgICAg ICAgICAgICAgICAgIHVpXy0+cXZ0a193aWRnZXQtPkdldFJlbmRlcldpbmRvdygpKTsKKy0gIHZp c18tPmdldEludGVyYWN0b3JTdHlsZSgpLT5zZXRLZXlib2FyZE1vZGlmaWVyKAorLSAgICAgIHBj bDo6dmlzdWFsaXphdGlvbjo6SU5URVJBQ1RPUl9LQl9NT0RfU0hJRlQpOworLSAgdWlfLT5xdnRr X3dpZGdldC0+dXBkYXRlKCk7CisrI2VuZGlmIC8vIFZUS19NQUpPUl9WRVJTSU9OID4gOAorKyAg c2V0UmVuZGVyV2luZG93Q29tcGF0KCoodWlfLT5xdnRrX3dpZGdldCksKih2aXNfLT5nZXRSZW5k ZXJXaW5kb3coKSkpOworKyAgdmlzXy0+c2V0dXBJbnRlcmFjdG9yKGdldEludGVyYWN0b3JDb21w YXQoKih1aV8tPnF2dGtfd2lkZ2V0KSksIGdldFJlbmRlcldpbmRvd0NvbXBhdCgqKHVpXy0+cXZ0 a193aWRnZXQpKSk7CisrICAKKysgIHZpc18tPmdldEludGVyYWN0b3JTdHlsZSgpLT5zZXRLZXli b2FyZE1vZGlmaWVyKHBjbDo6dmlzdWFsaXphdGlvbjo6SU5URVJBQ1RPUl9LQl9NT0RfU0hJRlQp OworKyAgCisrICByZWZyZXNoVmlldygpOworIAorICAgLy8gU3RhcnQgdGhlIE9wZW5OSSBkYXRh IGFjcXVpc2lvbgorICAgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IENsb3VkQ29uc3RQdHImKT4g ZiA9IFt0aGlzXShjb25zdCBDbG91ZENvbnN0UHRyJiBjbG91ZCkgeworQEAgLTEyNSw2ICsxMzcs MTYgQEAgT3Blbk5JUGFzc3Rocm91Z2g6OnRpbWVvdXRTbG90KCkKKyAgIHVpXy0+cXZ0a193aWRn ZXQtPnVwZGF0ZSgpOworIH0KKyAKKyt2b2lkCisrT3Blbk5JUGFzc3Rocm91Z2g6OnJlZnJlc2hW aWV3KCkKKyt7CisrI2lmIFZUS19NQUpPUl9WRVJTSU9OID4gOAorKyAgdWlfLT5xdnRrX3dpZGdl dC0+cmVuZGVyV2luZG93KCktPlJlbmRlcigpOworKyNlbHNlCisrICB1aV8tPnF2dGtfd2lkZ2V0 LT51cGRhdGUoKTsKKysjZW5kaWYgLy8gVlRLX01BSk9SX1ZFUlNJT04gPiA4CisrfQorKworIGlu dAorIG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorIHsKK2RpZmYgLXVwIC4vYXBwcy9zcmMv b3Blbm5pX3Bhc3N0aHJvdWdoLnVpLjQyNjIgLi9hcHBzL3NyYy9vcGVubmlfcGFzc3Rocm91Z2gu dWkKKy0tLSAuL2FwcHMvc3JjL29wZW5uaV9wYXNzdGhyb3VnaC51aS40MjYyCTIwMjAtMDgtMTQg MDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCisrKysgLi9hcHBzL3NyYy9vcGVubmlfcGFzc3Rocm91 Z2gudWkJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjkxNzY3NjcgLTA1MDAKK0BAIC0zNyw3ICszNyw3 IEBACisgICAgPC9wcm9wZXJ0eT4KKyAgICA8bGF5b3V0IGNsYXNzPSJRR3JpZExheW91dCIgbmFt ZT0iZ3JpZExheW91dCI+CisgICAgIDxpdGVtIHJvdz0iMCIgY29sdW1uPSIwIj4KKy0gICAgIDx3 aWRnZXQgY2xhc3M9IlFWVEtXaWRnZXQiIG5hbWU9InF2dGtfd2lkZ2V0Ij4KKysgICAgIDx3aWRn ZXQgY2xhc3M9IlBDTFFWVEtXaWRnZXQiIG5hbWU9InF2dGtfd2lkZ2V0Ij4KKyAgICAgICA8cHJv cGVydHkgbmFtZT0ic2l6ZVBvbGljeSI+CisgICAgICAgIDxzaXplcG9saWN5IGhzaXpldHlwZT0i RXhwYW5kaW5nIiB2c2l6ZXR5cGU9IkV4cGFuZGluZyI+CisgICAgICAgICA8aG9yc3RyZXRjaD4y NTU8L2hvcnN0cmV0Y2g+CitAQCAtOTQsOSArOTQsOSBAQAorICA8L3dpZGdldD4KKyAgPGN1c3Rv bXdpZGdldHM+CisgICA8Y3VzdG9td2lkZ2V0PgorLSAgIDxjbGFzcz5RVlRLV2lkZ2V0PC9jbGFz cz4KKy0gICA8ZXh0ZW5kcz5RV2lkZ2V0PC9leHRlbmRzPgorLSAgIDxoZWFkZXI+UVZUS1dpZGdl dC5oPC9oZWFkZXI+CisrICAgPGNsYXNzPlBDTFFWVEtXaWRnZXQ8L2NsYXNzPgorKyAgIDxleHRl bmRzPlFPcGVuR0xXaWRnZXQ8L2V4dGVuZHM+CisrICAgPGhlYWRlciBsb2NhdGlvbj0iZ2xvYmFs Ij5wY2wvdmlzdWFsaXphdGlvbi9xdnRrX2NvbXBhdGliaWxpdHkuaDwvaGVhZGVyPgorICAgPC9j dXN0b213aWRnZXQ+CisgIDwvY3VzdG9td2lkZ2V0cz4KKyAgPHJlc291cmNlcz4KK2RpZmYgLXVw IC4vYXBwcy9zcmMvb3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vLmNwcC40MjYyIC4vYXBwcy9z cmMvb3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vLmNwcAorLS0tIC4vYXBwcy9zcmMvb3JnYW5p emVkX3NlZ21lbnRhdGlvbl9kZW1vLmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAw MDAwIC0wNDAwCisrKysgLi9hcHBzL3NyYy9vcmdhbml6ZWRfc2VnbWVudGF0aW9uX2RlbW8uY3Bw CTIwMjEtMDItMjEgMjE6MzI6NTguMzI5MTc2NzY3IC0wNTAwCitAQCAtMTIsNiArMTIsOCBAQAor ICNpbmNsdWRlIDxRT2JqZWN0PgorIAorICNpbmNsdWRlIDx2dGtSZW5kZXJXaW5kb3cuaD4KKysj aW5jbHVkZSA8dnRrUmVuZGVyZXJDb2xsZWN0aW9uLmg+CisrI2luY2x1ZGUgPHZ0a0dlbmVyaWNP cGVuR0xSZW5kZXJXaW5kb3cuaD4KKyAKKyAvLyAjaW5jbHVkZSA8Ym9vc3QvZmlsZXN5c3RlbS5o cHA+ICAvLyBmb3IgYm9vc3Q6OmZpbGVzeXN0ZW06OmRpcmVjdG9yeV9pdGVyYXRvcgorICNpbmNs dWRlIDxib29zdC9zaWduYWxzMi9jb25uZWN0aW9uLmhwcD4gLy8gZm9yIGJvb3N0OjpzaWduYWxz Mjo6Y29ubmVjdGlvbgorQEAgLTIwNCwxMyArMjA2LDIzIEBAIE9yZ2FuaXplZFNlZ21lbnRhdGlv bkRlbW86Ok9yZ2FuaXplZFNlZ20KKyAgIHVpXy0+c2V0dXBVaSh0aGlzKTsKKyAKKyAgIHRoaXMt PnNldFdpbmRvd1RpdGxlKCJQQ0wgT3JnYW5pemVkIENvbm5lY3RlZCBDb21wb25lbnQgU2VnbWVu dGF0aW9uIERlbW8iKTsKKysgIAorKyNpZiBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKKysgIGF1dG8g cmVuZGVyZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrUmVuZGVyZXI+OjpOZXcoKTsKKysgIGF1dG8g cmVuZGVyV2luZG93ID0gdnRrU21hcnRQb2ludGVyPHZ0a0dlbmVyaWNPcGVuR0xSZW5kZXJXaW5k b3c+OjpOZXcoKTsKKysgIHJlbmRlcldpbmRvdy0+QWRkUmVuZGVyZXIocmVuZGVyZXIpOworKyAg dmlzXy5yZXNldChuZXcgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyKHJlbmRlcmVy LCByZW5kZXJXaW5kb3csICIiLCBmYWxzZSkpOworKyNlbHNlCisgICB2aXNfLnJlc2V0KG5ldyBw Y2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXIoIiIsIGZhbHNlKSk7CistICB1aV8tPnF2 dGtfd2lkZ2V0LT5TZXRSZW5kZXJXaW5kb3codmlzXy0+Z2V0UmVuZGVyV2luZG93KCkpOworLSAg dmlzXy0+c2V0dXBJbnRlcmFjdG9yKHVpXy0+cXZ0a193aWRnZXQtPkdldEludGVyYWN0b3IoKSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICB1aV8tPnF2dGtfd2lkZ2V0LT5HZXRSZW5kZXJXaW5k b3coKSk7CisrI2VuZGlmIC8vIFZUS19NQUpPUl9WRVJTSU9OID4gOAorKyAgc2V0UmVuZGVyV2lu ZG93Q29tcGF0KCoodWlfLT5xdnRrX3dpZGdldCksKih2aXNfLT5nZXRSZW5kZXJXaW5kb3coKSkp OworKyAgdmlzXy0+c2V0dXBJbnRlcmFjdG9yKGdldEludGVyYWN0b3JDb21wYXQoKih1aV8tPnF2 dGtfd2lkZ2V0KSksIGdldFJlbmRlcldpbmRvd0NvbXBhdCgqKHVpXy0+cXZ0a193aWRnZXQpKSk7 CisrICAKKysgIHJlZnJlc2hWaWV3KCk7CisrICAKKyAgIHZpc18tPmdldEludGVyYWN0b3JTdHls ZSgpLT5zZXRLZXlib2FyZE1vZGlmaWVyKAorICAgICAgIHBjbDo6dmlzdWFsaXphdGlvbjo6SU5U RVJBQ1RPUl9LQl9NT0RfU0hJRlQpOworLSAgdWlfLT5xdnRrX3dpZGdldC0+dXBkYXRlKCk7Cisr ICAKKyAKKyAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBDbG91ZENvbnN0UHRyJik+IGYgPSBb dGhpc10oY29uc3QgQ2xvdWRDb25zdFB0ciYgY2xvdWQpIHsKKyAgICAgY2xvdWRfY2IoY2xvdWQp OworQEAgLTMwOSw2ICszMjEsMTYgQEAgT3JnYW5pemVkU2VnbWVudGF0aW9uRGVtbzo6T3JnYW5p emVkU2VnbQorIH0KKyAKKyB2b2lkCisrT3JnYW5pemVkU2VnbWVudGF0aW9uRGVtbzo6cmVmcmVz aFZpZXcoKQorK3sKKysjaWYgVlRLX01BSk9SX1ZFUlNJT04gPiA4CisrICB1aV8tPnF2dGtfd2lk Z2V0LT5yZW5kZXJXaW5kb3coKS0+UmVuZGVyKCk7CisrI2Vsc2UKKysgIHVpXy0+cXZ0a193aWRn ZXQtPnVwZGF0ZSgpOworKyNlbmRpZiAvLyBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKKyt9CisrCisr dm9pZAorIE9yZ2FuaXplZFNlZ21lbnRhdGlvbkRlbW86OmNsb3VkX2NiKGNvbnN0IENsb3VkQ29u c3RQdHImIGNsb3VkKQorIHsKKyAgIGlmICghY2FwdHVyZV8pCitAQCAtNDQwLDggKzQ2Miw3IEBA IE9yZ2FuaXplZFNlZ21lbnRhdGlvbkRlbW86OnRpbWVvdXRTbG90KCkKKyAgICAgICBkYXRhX21v ZGlmaWVkXyA9IGZhbHNlOworICAgICB9CisgICB9CistCistICB1aV8tPnF2dGtfd2lkZ2V0LT51 cGRhdGUoKTsKKysgIHJlZnJlc2hWaWV3KCk7CisgfQorIAorIHZvaWQKK2RpZmYgLXVwIC4vYXBw cy9zcmMvb3JnYW5pemVkX3NlZ21lbnRhdGlvbl9kZW1vLnVpLjQyNjIgLi9hcHBzL3NyYy9vcmdh bml6ZWRfc2VnbWVudGF0aW9uX2RlbW8udWkKKy0tLSAuL2FwcHMvc3JjL29yZ2FuaXplZF9zZWdt ZW50YXRpb25fZGVtby51aS40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAw CisrKysgLi9hcHBzL3NyYy9vcmdhbml6ZWRfc2VnbWVudGF0aW9uX2RlbW8udWkJMjAyMS0wMi0y MSAyMTozMjo1OC4zMjkxNzY3NjcgLTA1MDAKK0BAIC0zNyw3ICszNyw3IEBACisgICAgPC9wcm9w ZXJ0eT4KKyAgICA8bGF5b3V0IGNsYXNzPSJRR3JpZExheW91dCIgbmFtZT0iZ3JpZExheW91dCI+ CisgICAgIDxpdGVtIHJvdz0iMCIgY29sdW1uPSIzIj4KKy0gICAgIDx3aWRnZXQgY2xhc3M9IlFW VEtXaWRnZXQiIG5hbWU9InF2dGtfd2lkZ2V0Ij4KKysgICAgIDx3aWRnZXQgY2xhc3M9IlBDTFFW VEtXaWRnZXQiIG5hbWU9InF2dGtfd2lkZ2V0Ij4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0ic2l6 ZVBvbGljeSI+CisgICAgICAgIDxzaXplcG9saWN5IGhzaXpldHlwZT0iRXhwYW5kaW5nIiB2c2l6 ZXR5cGU9IkV4cGFuZGluZyI+CisgICAgICAgICA8aG9yc3RyZXRjaD4yNTU8L2hvcnN0cmV0Y2g+ CitAQCAtMjE0LDkgKzIxNCw5IEBACisgIDwvd2lkZ2V0PgorICA8Y3VzdG9td2lkZ2V0cz4KKyAg IDxjdXN0b213aWRnZXQ+CistICAgPGNsYXNzPlFWVEtXaWRnZXQ8L2NsYXNzPgorLSAgIDxleHRl bmRzPlFXaWRnZXQ8L2V4dGVuZHM+CistICAgPGhlYWRlcj5RVlRLV2lkZ2V0Lmg8L2hlYWRlcj4K KysgICA8Y2xhc3M+UENMUVZUS1dpZGdldDwvY2xhc3M+CisrICAgPGV4dGVuZHM+UU9wZW5HTFdp ZGdldDwvZXh0ZW5kcz4KKysgICA8aGVhZGVyIGxvY2F0aW9uPSJnbG9iYWwiPnBjbC92aXN1YWxp emF0aW9uL3F2dGtfY29tcGF0aWJpbGl0eS5oPC9oZWFkZXI+CisgICA8L2N1c3RvbXdpZGdldD4K KyAgPC9jdXN0b213aWRnZXRzPgorICA8cmVzb3VyY2VzPgorZGlmZiAtdXAgLi9hcHBzL3NyYy9w Y2RfdmlkZW9fcGxheWVyL3BjZF92aWRlb19wbGF5ZXIuY3BwLjQyNjIgLi9hcHBzL3NyYy9wY2Rf dmlkZW9fcGxheWVyL3BjZF92aWRlb19wbGF5ZXIuY3BwCistLS0gLi9hcHBzL3NyYy9wY2Rfdmlk ZW9fcGxheWVyL3BjZF92aWRlb19wbGF5ZXIuY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4w MDAwMDAwMDAgLTA0MDAKKysrKyAuL2FwcHMvc3JjL3BjZF92aWRlb19wbGF5ZXIvcGNkX3ZpZGVv X3BsYXllci5jcHAJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjkxNzY3NjcgLTA1MDAKK0BAIC0zNSw2 ICszNSw4IEBACisgICoKKyAgKi8KKyAKKysjaW5jbHVkZSA8dWlfcGNkX3ZpZGVvX3BsYXllci5o PgorKworICNpbmNsdWRlIDxwY2wvYXBwcy9wY2RfdmlkZW9fcGxheWVyLmg+CisgI2luY2x1ZGUg PHBjbC9pby9wY2RfaW8uaD4KKyAjaW5jbHVkZSA8cGNsL3BvaW50X3R5cGVzLmg+CitAQCAtNTEs NiArNTMsNyBAQAorICNpbmNsdWRlIDx2dGtDYW1lcmEuaD4KKyAjaW5jbHVkZSA8dnRrUmVuZGVy V2luZG93Lmg+CisgI2luY2x1ZGUgPHZ0a1JlbmRlcmVyQ29sbGVjdGlvbi5oPgorKyNpbmNsdWRl IDx2dGtHZW5lcmljT3BlbkdMUmVuZGVyV2luZG93Lmg+CisgCisgI2luY2x1ZGUgPGZzdHJlYW0+ CisgI2luY2x1ZGUgPGlvc3RyZWFtPgorQEAgLTgwLDE0ICs4MywyMSBAQCBQQ0RWaWRlb1BsYXll cjo6UENEVmlkZW9QbGF5ZXIoKQorICAgLy8gU2V0dXAgdGhlIGNsb3VkIHBvaW50ZXIKKyAgIGNs b3VkXy5yZXNldChuZXcgcGNsOjpQb2ludENsb3VkPHBjbDo6UG9pbnRYWVpSR0JBPik7CisgCist ICAvLyBTZXQgdXAgdGhlIHF2dGsgd2luZG93CisrICAvL0NyZWF0ZSB0aGUgUVZUS1dpZGdldAor KyNpZiBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKKysgIGF1dG8gcmVuZGVyZXIgPSB2dGtTbWFydFBv aW50ZXI8dnRrUmVuZGVyZXI+OjpOZXcoKTsKKysgIGF1dG8gcmVuZGVyV2luZG93ID0gdnRrU21h cnRQb2ludGVyPHZ0a0dlbmVyaWNPcGVuR0xSZW5kZXJXaW5kb3c+OjpOZXcoKTsKKysgIHJlbmRl cldpbmRvdy0+QWRkUmVuZGVyZXIocmVuZGVyZXIpOworKyAgdmlzXy5yZXNldChuZXcgcGNsOjp2 aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyKHJlbmRlcmVyLCByZW5kZXJXaW5kb3csICIiLCBm YWxzZSkpOworKyNlbHNlCisgICB2aXNfLnJlc2V0KG5ldyBwY2w6OnZpc3VhbGl6YXRpb246OlBD TFZpc3VhbGl6ZXIoIiIsIGZhbHNlKSk7CistICB1aV8tPnF2dGtXaWRnZXQtPlNldFJlbmRlcldp bmRvdyh2aXNfLT5nZXRSZW5kZXJXaW5kb3coKSk7CistICB2aXNfLT5zZXR1cEludGVyYWN0b3Io dWlfLT5xdnRrV2lkZ2V0LT5HZXRJbnRlcmFjdG9yKCksCistICAgICAgICAgICAgICAgICAgICAg ICAgdWlfLT5xdnRrV2lkZ2V0LT5HZXRSZW5kZXJXaW5kb3coKSk7CistICB2aXNfLT5nZXRJbnRl cmFjdG9yU3R5bGUoKS0+c2V0S2V5Ym9hcmRNb2RpZmllcigKKy0gICAgICBwY2w6OnZpc3VhbGl6 YXRpb246OklOVEVSQUNUT1JfS0JfTU9EX1NISUZUKTsKKy0gIHVpXy0+cXZ0a1dpZGdldC0+dXBk YXRlKCk7CisrI2VuZGlmIC8vIFZUS19NQUpPUl9WRVJTSU9OID4gOAorKyAgc2V0UmVuZGVyV2lu ZG93Q29tcGF0KCoodWlfLT5xdnRrX3dpZGdldCksKih2aXNfLT5nZXRSZW5kZXJXaW5kb3coKSkp OworKyAgdmlzXy0+c2V0dXBJbnRlcmFjdG9yKGdldEludGVyYWN0b3JDb21wYXQoKih1aV8tPnF2 dGtfd2lkZ2V0KSksIGdldFJlbmRlcldpbmRvd0NvbXBhdCgqKHVpXy0+cXZ0a193aWRnZXQpKSk7 CisrCisrICB2aXNfLT5nZXRJbnRlcmFjdG9yU3R5bGUoKS0+c2V0S2V5Ym9hcmRNb2RpZmllcihw Y2w6OnZpc3VhbGl6YXRpb246OklOVEVSQUNUT1JfS0JfTU9EX1NISUZUKTsKKysKKysgIHJlZnJl c2hWaWV3KCk7CisgCisgICAvLyBDb25uZWN0IGFsbCBidXR0b25zCisgICBjb25uZWN0KHVpXy0+ cGxheUJ1dHRvbiwgU0lHTkFMKGNsaWNrZWQoKSksIHRoaXMsIFNMT1QocGxheUJ1dHRvblByZXNz ZWQoKSkpOworQEAgLTI1OCw3ICsyNjgsOCBAQCBQQ0RWaWRlb1BsYXllcjo6dGltZW91dFNsb3Qo KQorICAgICB9CisgICAgIGNsb3VkX21vZGlmaWVkXyA9IGZhbHNlOworICAgfQorLSAgdWlfLT5x dnRrV2lkZ2V0LT51cGRhdGUoKTsKKysKKysgIHJlZnJlc2hWaWV3KCk7CisgfQorIAorIHZvaWQK K0BAIC0yNzAsNiArMjgxLDE2IEBAIFBDRFZpZGVvUGxheWVyOjppbmRleFNsaWRlclZhbHVlQ2hh bmdlZCgKKyB9CisgCisgdm9pZAorK1BDRFZpZGVvUGxheWVyOjpyZWZyZXNoVmlldygpCisrewor KyNpZiBWVEtfTUFKT1JfVkVSU0lPTiA+IDgKKysgIHVpXy0+cXZ0a193aWRnZXQtPnJlbmRlcldp bmRvdygpLT5SZW5kZXIoKTsKKysjZWxzZQorKyAgdWlfLT5xdnRrX3dpZGdldC0+dXBkYXRlKCk7 CisrI2VuZGlmIC8vIFZUS19NQUpPUl9WRVJTSU9OID4gOAorK30KKysKKyt2b2lkCisgcHJpbnRf dXNhZ2UoKQorIHsKKyAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKK2RpZmYgLXVwIC4vYXBwcy9zcmMv cGNkX3ZpZGVvX3BsYXllci9wY2RfdmlkZW9fcGxheWVyLnVpLjQyNjIgLi9hcHBzL3NyYy9wY2Rf dmlkZW9fcGxheWVyL3BjZF92aWRlb19wbGF5ZXIudWkKKy0tLSAuL2FwcHMvc3JjL3BjZF92aWRl b19wbGF5ZXIvcGNkX3ZpZGVvX3BsYXllci51aS40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAw MDAwMDAwIC0wNDAwCisrKysgLi9hcHBzL3NyYy9wY2RfdmlkZW9fcGxheWVyL3BjZF92aWRlb19w bGF5ZXIudWkJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjkxNzY3NjcgLTA1MDAKK0BAIC0xNCwxMjIg KzE0LDEwOCBAQAorICAgIDxzdHJpbmc+TWFpbldpbmRvdzwvc3RyaW5nPgorICAgPC9wcm9wZXJ0 eT4KKyAgIDx3aWRnZXQgY2xhc3M9IlFXaWRnZXQiIG5hbWU9ImNlbnRyYWx3aWRnZXQiPgorLSAg IDx3aWRnZXQgY2xhc3M9IlFXaWRnZXQiIG5hbWU9InZlcnRpY2FsTGF5b3V0V2lkZ2V0Ij4KKy0g ICAgPHByb3BlcnR5IG5hbWU9Imdlb21ldHJ5Ij4KKy0gICAgIDxyZWN0PgorLSAgICAgIDx4PjMz OTwveD4KKy0gICAgICA8eT4xMDwveT4KKy0gICAgICA8d2lkdGg+NDUxPC93aWR0aD4KKy0gICAg ICA8aGVpZ2h0PjUzMTwvaGVpZ2h0PgorLSAgICAgPC9yZWN0PgorLSAgICA8L3Byb3BlcnR5Pgor LSAgICA8bGF5b3V0IGNsYXNzPSJRVkJveExheW91dCIgbmFtZT0idmVydGljYWxMYXlvdXQiPgor LSAgICAgPGl0ZW0+CistICAgICAgPHdpZGdldCBjbGFzcz0iUVZUS1dpZGdldCIgbmFtZT0icXZ0 a1dpZGdldCIvPgorLSAgICAgPC9pdGVtPgorLSAgICAgPGl0ZW0+CistICAgICAgPHdpZGdldCBj bGFzcz0iUVNsaWRlciIgbmFtZT0iaW5kZXhTbGlkZXIiPgorLSAgICAgICA8cHJvcGVydHkgbmFt ZT0ib3JpZW50YXRpb24iPgorLSAgICAgICAgPGVudW0+UXQ6Okhvcml6b250YWw8L2VudW0+Cist ICAgICAgIDwvcHJvcGVydHk+CistICAgICAgPC93aWRnZXQ+CistICAgICA8L2l0ZW0+CistICAg IDwvbGF5b3V0PgorLSAgIDwvd2lkZ2V0PgorLSAgIDx3aWRnZXQgY2xhc3M9IlFXaWRnZXQiIG5h bWU9InZlcnRpY2FsTGF5b3V0V2lkZ2V0XzIiPgorLSAgICA8cHJvcGVydHkgbmFtZT0iZ2VvbWV0 cnkiPgorLSAgICAgPHJlY3Q+CistICAgICAgPHg+OTwveD4KKy0gICAgICA8eT45PC95PgorLSAg ICAgIDx3aWR0aD4zMjE8L3dpZHRoPgorLSAgICAgIDxoZWlnaHQ+NTMxPC9oZWlnaHQ+CistICAg ICA8L3JlY3Q+CistICAgIDwvcHJvcGVydHk+CistICAgIDxsYXlvdXQgY2xhc3M9IlFWQm94TGF5 b3V0IiBuYW1lPSJ2ZXJ0aWNhbExheW91dF8yIj4KKy0gICAgIDxpdGVtPgorLSAgICAgIDx3aWRn ZXQgY2xhc3M9IlFQdXNoQnV0dG9uIiBuYW1lPSJzZWxlY3RGaWxlc0J1dHRvbiI+CistICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KKy0gICAgICAgIDxzdHJpbmc+U2VsZWN0IFBDRCBGaWxl czwvc3RyaW5nPgorLSAgICAgICA8L3Byb3BlcnR5PgorLSAgICAgIDwvd2lkZ2V0PgorLSAgICAg PC9pdGVtPgorLSAgICAgPGl0ZW0+CistICAgICAgPHdpZGdldCBjbGFzcz0iUVB1c2hCdXR0b24i IG5hbWU9InNlbGVjdEZvbGRlckJ1dHRvbiI+CistICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0 Ij4KKy0gICAgICAgIDxzdHJpbmc+U2VsZWN0IEZvbGRlcjwvc3RyaW5nPgorLSAgICAgICA8L3By b3BlcnR5PgorLSAgICAgIDwvd2lkZ2V0PgorLSAgICAgPC9pdGVtPgorLSAgICAgPGl0ZW0+Cist ICAgICAgPHdpZGdldCBjbGFzcz0iTGluZSIgbmFtZT0ibGluZV8yIj4KKy0gICAgICAgPHByb3Bl cnR5IG5hbWU9Im9yaWVudGF0aW9uIj4KKy0gICAgICAgIDxlbnVtPlF0OjpIb3Jpem9udGFsPC9l bnVtPgorLSAgICAgICA8L3Byb3BlcnR5PgorLSAgICAgIDwvd2lkZ2V0PgorLSAgICAgPC9pdGVt PgorLSAgICAgPGl0ZW0+CistICAgICAgPHNwYWNlciBuYW1lPSJ2ZXJ0aWNhbFNwYWNlciI+Cist ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJvcmllbnRhdGlvbiI+CistICAgICAgICA8ZW51bT5RdDo6 VmVydGljYWw8L2VudW0+CistICAgICAgIDwvcHJvcGVydHk+CistICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJzaXplSGludCIgc3Rkc2V0PSIwIj4KKy0gICAgICAgIDxzaXplPgorLSAgICAgICAgIDx3 aWR0aD4yMDwvd2lkdGg+CistICAgICAgICAgPGhlaWdodD40MDwvaGVpZ2h0PgorLSAgICAgICAg PC9zaXplPgorLSAgICAgICA8L3Byb3BlcnR5PgorLSAgICAgIDwvc3BhY2VyPgorLSAgICAgPC9p dGVtPgorLSAgICAgPGl0ZW0+CistICAgICAgPHdpZGdldCBjbGFzcz0iTGluZSIgbmFtZT0ibGlu ZV8zIj4KKy0gICAgICAgPHByb3BlcnR5IG5hbWU9Im9yaWVudGF0aW9uIj4KKy0gICAgICAgIDxl bnVtPlF0OjpIb3Jpem9udGFsPC9lbnVtPgorLSAgICAgICA8L3Byb3BlcnR5PgorLSAgICAgIDwv d2lkZ2V0PgorLSAgICAgPC9pdGVtPgorLSAgICAgPGl0ZW0+CistICAgICAgPGxheW91dCBjbGFz cz0iUUhCb3hMYXlvdXQiIG5hbWU9Imhvcml6b250YWxMYXlvdXQiPgorLSAgICAgICA8aXRlbT4K Ky0gICAgICAgIDx3aWRnZXQgY2xhc3M9IlFUb29sQnV0dG9uIiBuYW1lPSJiYWNrQnV0dG9uIj4K Ky0gICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+CistICAgICAgICAgIDxzdHJpbmc+Li4u PC9zdHJpbmc+CistICAgICAgICAgPC9wcm9wZXJ0eT4KKy0gICAgICAgICA8cHJvcGVydHkgbmFt ZT0iYXJyb3dUeXBlIj4KKy0gICAgICAgICAgPGVudW0+UXQ6OkxlZnRBcnJvdzwvZW51bT4KKy0g ICAgICAgICA8L3Byb3BlcnR5PgorLSAgICAgICAgPC93aWRnZXQ+CistICAgICAgIDwvaXRlbT4K Ky0gICAgICAgPGl0ZW0+CistICAgICAgICA8d2lkZ2V0IGNsYXNzPSJRVG9vbEJ1dHRvbiIgbmFt ZT0ic3RvcEJ1dHRvbiI+CistICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgorLSAgICAg ICAgICA8c3RyaW5nPlN0b3A8L3N0cmluZz4KKy0gICAgICAgICA8L3Byb3BlcnR5PgorLSAgICAg ICAgPC93aWRnZXQ+CistICAgICAgIDwvaXRlbT4KKy0gICAgICAgPGl0ZW0+CistICAgICAgICA8 d2lkZ2V0IGNsYXNzPSJRVG9vbEJ1dHRvbiIgbmFtZT0icGxheUJ1dHRvbiI+CistICAgICAgICAg PHByb3BlcnR5IG5hbWU9InRleHQiPgorLSAgICAgICAgICA8c3RyaW5nPlBsYXk8L3N0cmluZz4K Ky0gICAgICAgICA8L3Byb3BlcnR5PgorLSAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhcnJvd1R5 cGUiPgorLSAgICAgICAgICA8ZW51bT5RdDo6Tm9BcnJvdzwvZW51bT4KKy0gICAgICAgICA8L3By b3BlcnR5PgorLSAgICAgICAgPC93aWRnZXQ+CistICAgICAgIDwvaXRlbT4KKy0gICAgICAgPGl0 ZW0+CistICAgICAgICA8d2lkZ2V0IGNsYXNzPSJRVG9vbEJ1dHRvbiIgbmFtZT0ibmV4dEJ1dHRv biI+CistICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgorLSAgICAgICAgICA8c3RyaW5n Pi4uLjwvc3RyaW5nPgorLSAgICAgICAgIDwvcHJvcGVydHk+CistICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImFycm93VHlwZSI+CistICAgICAgICAgIDxlbnVtPlF0OjpSaWdodEFycm93PC9lbnVt PgorLSAgICAgICAgIDwvcHJvcGVydHk+CistICAgICAgICA8L3dpZGdldD4KKy0gICAgICAgPC9p dGVtPgorLSAgICAgIDwvbGF5b3V0PgorLSAgICAgPC9pdGVtPgorLSAgICA8L2xheW91dD4KKy0g ICA8L3dpZGdldD4KKysgICA8bGF5b3V0IGNsYXNzPSJRSEJveExheW91dCIgbmFtZT0iaG9yaXpv bnRhbExheW91dF8yIj4KKysgICAgPGl0ZW0+CisrICAgICA8bGF5b3V0IGNsYXNzPSJRVkJveExh eW91dCIgbmFtZT0idmVydGljYWxMYXlvdXRfMiI+CisrICAgICAgPGl0ZW0+CisrICAgICAgIDx3 aWRnZXQgY2xhc3M9IlFQdXNoQnV0dG9uIiBuYW1lPSJzZWxlY3RGaWxlc0J1dHRvbiI+CisrICAg ICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+CisrICAgICAgICAgPHN0cmluZz5TZWxlY3QgUENE IEZpbGVzPC9zdHJpbmc+CisrICAgICAgICA8L3Byb3BlcnR5PgorKyAgICAgICA8L3dpZGdldD4K KysgICAgICA8L2l0ZW0+CisrICAgICAgPGl0ZW0+CisrICAgICAgIDx3aWRnZXQgY2xhc3M9IlFQ dXNoQnV0dG9uIiBuYW1lPSJzZWxlY3RGb2xkZXJCdXR0b24iPgorKyAgICAgICAgPHByb3BlcnR5 IG5hbWU9InRleHQiPgorKyAgICAgICAgIDxzdHJpbmc+U2VsZWN0IEZvbGRlcjwvc3RyaW5nPgor KyAgICAgICAgPC9wcm9wZXJ0eT4KKysgICAgICAgPC93aWRnZXQ+CisrICAgICAgPC9pdGVtPgor KyAgICAgIDxpdGVtPgorKyAgICAgICA8d2lkZ2V0IGNsYXNzPSJMaW5lIiBuYW1lPSJsaW5lXzIi PgorKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im9yaWVudGF0aW9uIj4KKysgICAgICAgICA8ZW51 bT5RdDo6SG9yaXpvbnRhbDwvZW51bT4KKysgICAgICAgIDwvcHJvcGVydHk+CisrICAgICAgIDwv d2lkZ2V0PgorKyAgICAgIDwvaXRlbT4KKysgICAgICA8aXRlbT4KKysgICAgICAgPHNwYWNlciBu YW1lPSJ2ZXJ0aWNhbFNwYWNlciI+CisrICAgICAgICA8cHJvcGVydHkgbmFtZT0ib3JpZW50YXRp b24iPgorKyAgICAgICAgIDxlbnVtPlF0OjpWZXJ0aWNhbDwvZW51bT4KKysgICAgICAgIDwvcHJv cGVydHk+CisrICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2l6ZUhpbnQiIHN0ZHNldD0iMCI+Cisr ICAgICAgICAgPHNpemU+CisrICAgICAgICAgIDx3aWR0aD4yMDwvd2lkdGg+CisrICAgICAgICAg IDxoZWlnaHQ+NDA8L2hlaWdodD4KKysgICAgICAgICA8L3NpemU+CisrICAgICAgICA8L3Byb3Bl cnR5PgorKyAgICAgICA8L3NwYWNlcj4KKysgICAgICA8L2l0ZW0+CisrICAgICAgPGl0ZW0+Cisr ICAgICAgIDx3aWRnZXQgY2xhc3M9IkxpbmUiIG5hbWU9ImxpbmVfMyI+CisrICAgICAgICA8cHJv cGVydHkgbmFtZT0ib3JpZW50YXRpb24iPgorKyAgICAgICAgIDxlbnVtPlF0OjpIb3Jpem9udGFs PC9lbnVtPgorKyAgICAgICAgPC9wcm9wZXJ0eT4KKysgICAgICAgPC93aWRnZXQ+CisrICAgICAg PC9pdGVtPgorKyAgICAgIDxpdGVtPgorKyAgICAgICA8bGF5b3V0IGNsYXNzPSJRSEJveExheW91 dCIgbmFtZT0iaG9yaXpvbnRhbExheW91dCI+CisrICAgICAgICA8aXRlbT4KKysgICAgICAgICA8 d2lkZ2V0IGNsYXNzPSJRVG9vbEJ1dHRvbiIgbmFtZT0iYmFja0J1dHRvbiI+CisrICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KKysgICAgICAgICAgIDxzdHJpbmc+Li4uPC9zdHJpbmc+ CisrICAgICAgICAgIDwvcHJvcGVydHk+CisrICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhcnJv d1R5cGUiPgorKyAgICAgICAgICAgPGVudW0+UXQ6OkxlZnRBcnJvdzwvZW51bT4KKysgICAgICAg ICAgPC9wcm9wZXJ0eT4KKysgICAgICAgICA8L3dpZGdldD4KKysgICAgICAgIDwvaXRlbT4KKysg ICAgICAgIDxpdGVtPgorKyAgICAgICAgIDx3aWRnZXQgY2xhc3M9IlFUb29sQnV0dG9uIiBuYW1l PSJzdG9wQnV0dG9uIj4KKysgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgorKyAgICAg ICAgICAgPHN0cmluZz5TdG9wPC9zdHJpbmc+CisrICAgICAgICAgIDwvcHJvcGVydHk+CisrICAg ICAgICAgPC93aWRnZXQ+CisrICAgICAgICA8L2l0ZW0+CisrICAgICAgICA8aXRlbT4KKysgICAg ICAgICA8d2lkZ2V0IGNsYXNzPSJRVG9vbEJ1dHRvbiIgbmFtZT0icGxheUJ1dHRvbiI+CisrICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KKysgICAgICAgICAgIDxzdHJpbmc+UGxheTwv c3RyaW5nPgorKyAgICAgICAgICA8L3Byb3BlcnR5PgorKyAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0iYXJyb3dUeXBlIj4KKysgICAgICAgICAgIDxlbnVtPlF0OjpOb0Fycm93PC9lbnVtPgorKyAg ICAgICAgICA8L3Byb3BlcnR5PgorKyAgICAgICAgIDwvd2lkZ2V0PgorKyAgICAgICAgPC9pdGVt PgorKyAgICAgICAgPGl0ZW0+CisrICAgICAgICAgPHdpZGdldCBjbGFzcz0iUVRvb2xCdXR0b24i IG5hbWU9Im5leHRCdXR0b24iPgorKyAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+Cisr ICAgICAgICAgICA8c3RyaW5nPi4uLjwvc3RyaW5nPgorKyAgICAgICAgICA8L3Byb3BlcnR5Pgor KyAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYXJyb3dUeXBlIj4KKysgICAgICAgICAgIDxlbnVt PlF0OjpSaWdodEFycm93PC9lbnVtPgorKyAgICAgICAgICA8L3Byb3BlcnR5PgorKyAgICAgICAg IDwvd2lkZ2V0PgorKyAgICAgICAgPC9pdGVtPgorKyAgICAgICA8L2xheW91dD4KKysgICAgICA8 L2l0ZW0+CisrICAgICA8L2xheW91dD4KKysgICAgPC9pdGVtPgorKyAgICA8aXRlbT4KKysgICAg IDxsYXlvdXQgY2xhc3M9IlFWQm94TGF5b3V0IiBuYW1lPSJ2ZXJ0aWNhbExheW91dCI+CisrICAg ICAgPGl0ZW0+CisrICAgICAgIDx3aWRnZXQgY2xhc3M9IlBDTFFWVEtXaWRnZXQiIG5hbWU9InF2 dGtfd2lkZ2V0Ii8+CisrICAgICAgPC9pdGVtPgorKyAgICAgIDxpdGVtPgorKyAgICAgICA8d2lk Z2V0IGNsYXNzPSJRU2xpZGVyIiBuYW1lPSJpbmRleFNsaWRlciI+CisrICAgICAgICA8cHJvcGVy dHkgbmFtZT0ib3JpZW50YXRpb24iPgorKyAgICAgICAgIDxlbnVtPlF0OjpIb3Jpem9udGFsPC9l bnVtPgorKyAgICAgICAgPC9wcm9wZXJ0eT4KKysgICAgICAgPC93aWRnZXQ+CisrICAgICAgPC9p dGVtPgorKyAgICAgPC9sYXlvdXQ+CisrICAgIDwvaXRlbT4KKysgICA8L2xheW91dD4KKyAgIDwv d2lkZ2V0PgorICAgPHdpZGdldCBjbGFzcz0iUU1lbnVCYXIiIG5hbWU9Im1lbnViYXIiPgorICAg IDxwcm9wZXJ0eSBuYW1lPSJnZW9tZXRyeSI+CitAQCAtMTM3LDcgKzEyMyw3IEBACisgICAgICA8 eD4wPC94PgorICAgICAgPHk+MDwveT4KKyAgICAgIDx3aWR0aD44MDA8L3dpZHRoPgorLSAgICAg PGhlaWdodD4yNTwvaGVpZ2h0PgorKyAgICAgPGhlaWdodD4yMTwvaGVpZ2h0PgorICAgICA8L3Jl Y3Q+CisgICAgPC9wcm9wZXJ0eT4KKyAgIDwvd2lkZ2V0PgorQEAgLTE0NSw5ICsxMzEsOSBAQAor ICA8L3dpZGdldD4KKyAgPGN1c3RvbXdpZGdldHM+CisgICA8Y3VzdG9td2lkZ2V0PgorLSAgIDxj bGFzcz5RVlRLV2lkZ2V0PC9jbGFzcz4KKy0gICA8ZXh0ZW5kcz5RV2lkZ2V0PC9leHRlbmRzPgor LSAgIDxoZWFkZXI+UVZUS1dpZGdldC5oPC9oZWFkZXI+CisrICAgPGNsYXNzPlBDTFFWVEtXaWRn ZXQ8L2NsYXNzPgorKyAgIDxleHRlbmRzPlFPcGVuR0xXaWRnZXQ8L2V4dGVuZHM+CisrICAgPGhl YWRlciBsb2NhdGlvbj0iZ2xvYmFsIj5wY2wvdmlzdWFsaXphdGlvbi9xdnRrX2NvbXBhdGliaWxp dHkuaDwvaGVhZGVyPgorICAgPC9jdXN0b213aWRnZXQ+CisgIDwvY3VzdG9td2lkZ2V0cz4KKyAg PHJlc291cmNlcy8+CitkaWZmIC11cCAuL2FwcHMvc3JjL3JlbmRlcl92aWV3c190ZXNzZWxhdGVk X3NwaGVyZS5jcHAuNDI2MiAuL2FwcHMvc3JjL3JlbmRlcl92aWV3c190ZXNzZWxhdGVkX3NwaGVy ZS5jcHAKKy0tLSAuL2FwcHMvc3JjL3JlbmRlcl92aWV3c190ZXNzZWxhdGVkX3NwaGVyZS5jcHAu NDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vYXBwcy9zcmMv cmVuZGVyX3ZpZXdzX3Rlc3NlbGF0ZWRfc3BoZXJlLmNwcAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMy OTE3Njc2NyAtMDUwMAorQEAgLTcsNiArNyw3IEBACisgCisgI2luY2x1ZGUgPHBjbC9hcHBzL3Jl bmRlcl92aWV3c190ZXNzZWxhdGVkX3NwaGVyZS5oPgorICNpbmNsdWRlIDxwY2wvcG9pbnRfdHlw ZXMuaD4KKysjaW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24vdnRrL3BjbF92dGtfY29tcGF0aWJp bGl0eS5oPgorIAorICNpbmNsdWRlIDx2dGtBY3Rvci5oPgorICNpbmNsdWRlIDx2dGtDYW1lcmEu aD4KK0BAIC0yNiw2ICsyNyw3IEBACisgI2luY2x1ZGUgPHZ0a1RyYW5zZm9ybUZpbHRlci5oPgor ICNpbmNsdWRlIDx2dGtUcmlhbmdsZS5oPgorICNpbmNsdWRlIDx2dGtXb3JsZFBvaW50UGlja2Vy Lmg+CisrI2luY2x1ZGUgPHZ0a0lkVHlwZUFycmF5Lmg+CisgCisgI2luY2x1ZGUgPGFycmF5Pgor IAorQEAgLTM0LDcgKzM2LDggQEAgcGNsOjphcHBzOjpSZW5kZXJWaWV3c1Rlc3NlbGF0ZWRTcGhl cmU6OgorIHsKKyAgIC8vIGNlbnRlciBvYmplY3QKKyAgIGRvdWJsZSBDb01bM107CistICB2dGtJ ZFR5cGUgbnB0c19jb20gPSAwLCAqcHRJZHNfY29tID0gbnVsbHB0cjsKKysgIHZ0a0lkVHlwZSBu cHRzX2NvbSA9IDA7CisrICB2dGtDZWxsUHRzUHRyIHB0SWRzX2NvbSA9IG51bGxwdHI7CisgICB2 dGtTbWFydFBvaW50ZXI8dnRrQ2VsbEFycmF5PiBjZWxsc19jb20gPSBwb2x5ZGF0YV8tPkdldFBv bHlzKCk7CisgCisgICBkb3VibGUgY2VudGVyWzNdLCBwMV9jb21bM10sIHAyX2NvbVszXSwgcDNf Y29tWzNdLCB0b3RhbEFyZWFfY29tID0gMDsKK0BAIC05NSw3ICs5OCw4IEBAIHBjbDo6YXBwczo6 UmVuZGVyVmlld3NUZXNzZWxhdGVkU3BoZXJlOjoKKyAgIC8vICogQ29tcHV0ZSBhcmVhIG9mIHRo ZSBtZXNoCisgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgIHZ0a1NtYXJ0UG9p bnRlcjx2dGtDZWxsQXJyYXk+IGNlbGxzID0gbWFwcGVyLT5HZXRJbnB1dCgpLT5HZXRQb2x5cygp OworLSAgdnRrSWRUeXBlIG5wdHMgPSAwLCAqcHRJZHMgPSBudWxscHRyOworKyAgdnRrSWRUeXBl IG5wdHMgPSAwOworKyAgdnRrQ2VsbFB0c1B0ciBwdElkcyA9IG51bGxwdHI7CisgCisgICBkb3Vi bGUgcDFbM10sIHAyWzNdLCBwM1szXSwgdG90YWxBcmVhID0gMDsKKyAgIGZvciAoY2VsbHMtPklu aXRUcmF2ZXJzYWwoKTsgY2VsbHMtPkdldE5leHRDZWxsKG5wdHMsIHB0SWRzKTspIHsKK0BAIC0z NjMsNyArMzY3LDggQEAgcGNsOjphcHBzOjpSZW5kZXJWaWV3c1Rlc3NlbGF0ZWRTcGhlcmU6Ogor ICAgICAgIHBvbHlkYXRhLT5CdWlsZENlbGxzKCk7CisgCisgICAgICAgdnRrU21hcnRQb2ludGVy PHZ0a0NlbGxBcnJheT4gY2VsbHMgPSBwb2x5ZGF0YS0+R2V0UG9seXMoKTsKKy0gICAgICB2dGtJ ZFR5cGUgbnB0cyA9IDAsICpwdElkcyA9IG51bGxwdHI7CisrICAgICAgdnRrSWRUeXBlIG5wdHMg PSAwOworKyAgICAgIHZ0a0NlbGxQdHNQdHIgcHRJZHMgPSBudWxscHRyOworIAorICAgICAgIGRv dWJsZSBwMVszXSwgcDJbM10sIHAzWzNdLCBhcmVhLCB0b3RhbEFyZWEgPSAwOworICAgICAgIGZv ciAoY2VsbHMtPkluaXRUcmF2ZXJzYWwoKTsgY2VsbHMtPkdldE5leHRDZWxsKG5wdHMsIHB0SWRz KTspIHsKK2RpZmYgLXVwIC4vQ01ha2VMaXN0cy50eHQuNDI2MiAuL0NNYWtlTGlzdHMudHh0Cist LS0gLi9DTWFrZUxpc3RzLnR4dC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0w NDAwCisrKysgLi9DTWFrZUxpc3RzLnR4dAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMxOTE3NjcyNSAt MDUwMAorQEAgLTM2Niw4MSArMzY2LDE1IEBAIGVuZGlmKCkKKyBvcHRpb24oV0lUSF9RVCAiQnVp bGQgUVQgRnJvbnQtRW5kIiBUUlVFKQorIGlmKFdJVEhfUVQpCisgICBmaW5kX3BhY2thZ2UoUXQ1 IENPTVBPTkVOVFMgQ29uY3VycmVudCBPcGVuR0wgV2lkZ2V0cyBRVUlFVCkKKysgIGlmKFF0NV9G T1VORCkKKysgICAgbWVzc2FnZShTVEFUVVMgIkZvdW5kIFF0NSB2ZXJzaW9uOiAke1F0NV9WRVJT SU9OfSIpCisrICBlbmRpZigpCisgZW5kaWYoKQorIAorICMgRmluZCBWVEsKKyBvcHRpb24oV0lU SF9WVEsgIkJ1aWxkIFZUSy1WaXN1YWxpemF0aW9ucyIgVFJVRSkKKyBpZihXSVRIX1ZUSyBBTkQg Tk9UIEFORFJPSUQpCistICBzZXQoUENMX1ZUS19DT01QT05FTlRTCistICAgIHZ0a0NoYXJ0c0Nv cmUKKy0gICAgdnRrQ29tbW9uQ29yZQorLSAgICB2dGtDb21tb25EYXRhTW9kZWwKKy0gICAgdnRr Q29tbW9uRXhlY3V0aW9uTW9kZWwKKy0gICAgdnRrRmlsdGVyc0NvcmUKKy0gICAgdnRrRmlsdGVy c0V4dHJhY3Rpb24KKy0gICAgdnRrRmlsdGVyc01vZGVsaW5nCistICAgIHZ0a0ltYWdpbmdDb3Jl CistICAgIHZ0a0ltYWdpbmdTb3VyY2VzCistICAgIHZ0a0ludGVyYWN0aW9uU3R5bGUKKy0gICAg dnRrSW50ZXJhY3Rpb25XaWRnZXRzCistICAgIHZ0a0lPQ29yZQorLSAgICB2dGtJT0dlb21ldHJ5 CistICAgIHZ0a0lPSW1hZ2UKKy0gICAgdnRrSU9MZWdhY3kKKy0gICAgdnRrSU9QTFkKKy0gICAg dnRrUmVuZGVyaW5nQW5ub3RhdGlvbgorLSAgICB2dGtSZW5kZXJpbmdMT0QKKy0gICAgdnRrVmll d3NDb250ZXh0MkQKKy0gICkKKy0gIGZpbmRfcGFja2FnZShWVEsgQ09NUE9ORU5UUyAke1BDTF9W VEtfQ09NUE9ORU5UU30pCistICBpZihWVEtfRk9VTkQgQU5EICgiJHtWVEtfVkVSU0lPTn0iIFZF UlNJT05fTEVTUyA2LjIpKQorLSAgICBtZXNzYWdlKFdBUk5JTkcgIlRoZSBtaW5pbXVtIHJlcXVp cmVkIHZlcnNpb24gb2YgVlRLIGlzIDYuMiwgYnV0IGZvdW5kICR7VlRLX1ZFUlNJT059IikKKy0g ICAgc2V0KFZUS19GT1VORCBGQUxTRSkKKy0gIGVuZGlmKCkKKy0KKy0gIGlmKFZUS19GT1VORCkK Ky0gICAgaWYoTk9UIERFRklORUQgVlRLX1JFTkRFUklOR19CQUNLRU5EKQorLSAgICAgICMgT24g b2xkIFZUSyB2ZXJzaW9ucyB0aGlzIHZhcmlhYmxlIGRvZXMgbm90IGV4aXN0LiBJbiB0aGlzIGNh c2UgaXQgaXMKKy0gICAgICAjIHNhZmUgdG8gYXNzdW1lIE9wZW5HTCBiYWNrZW5kCistICAgICAg c2V0KFZUS19SRU5ERVJJTkdfQkFDS0VORCAiT3BlbkdMIikKKy0gICAgZW5kaWYoKQorLSAgICBs aXN0KEFQUEVORCBQQ0xfVlRLX0NPTVBPTkVOVFMgdnRrUmVuZGVyaW5nQ29udGV4dCR7VlRLX1JF TkRFUklOR19CQUNLRU5EfSkKKy0KKy0gICAgaWYoV0lUSF9RVCkKKy0gICAgICBpZigiOyR7VlRL X01PRFVMRVNfRU5BQkxFRH07IiBNQVRDSEVTICI7dnRrR1VJU3VwcG9ydFF0OyIgQU5EICI7JHtW VEtfTU9EVUxFU19FTkFCTEVEfTsiIE1BVENIRVMgIjt2dGtSZW5kZXJpbmdRdDsiKQorLSAgICAg ICAgc2V0KFFWVEtfRk9VTkQgT04pCistICAgICAgICBsaXN0KEFQUEVORCBQQ0xfVlRLX0NPTVBP TkVOVFMgdnRrUmVuZGVyaW5nUXQgdnRrR1VJU3VwcG9ydFF0KQorLSAgICAgIGVsc2UoKQorLSAg ICAgICAgdW5zZXQoUVZUS19GT1VORCkKKy0gICAgICBlbmRpZigpCistICAgIGVuZGlmKCkKKy0K Ky0gICAgZmluZF9wYWNrYWdlKFZUSyBDT01QT05FTlRTICR7UENMX1ZUS19DT01QT05FTlRTfSkK Ky0KKy0gICAgbWVzc2FnZShTVEFUVVMgIlZUS19NQUpPUl9WRVJTSU9OICR7VlRLX01BSk9SX1ZF UlNJT059LCByZW5kZXJpbmcgYmFja2VuZDogJHtWVEtfUkVOREVSSU5HX0JBQ0tFTkR9IikKKy0g ICAgaWYoUENMX1NIQVJFRF9MSUJTIE9SIChOT1QgKFBDTF9TSEFSRURfTElCUykgQU5EIE5PVCAo VlRLX0JVSUxEX1NIQVJFRF9MSUJTKSkpCistICAgICAgaWYoVlRLX1VTRV9GSUxFKQorLSAgICAg ICAgaW5jbHVkZSgke1ZUS19VU0VfRklMRX0pCistICAgICAgZW5kaWYoKQorLSAgICAgIG1lc3Nh Z2UoU1RBVFVTICJWVEsgZm91bmQgKGluY2x1ZGU6ICR7VlRLX0lOQ0xVREVfRElSU30sIGxpYnM6 ICR7VlRLX0xJQlJBUklFU30iKQorLSAgICAgIGlmKEFQUExFKQorLSAgICAgICAgb3B0aW9uKFZU S19VU0VfQ09DT0EgIlVzZSBDb2NvYSBmb3IgVlRLIHJlbmRlciB3aW5kb3dzIiBPTikKKy0gICAg ICAgIG1hcmtfYXNfYWR2YW5jZWQoVlRLX1VTRV9DT0NPQSkKKy0gICAgICBlbmRpZigpCistICAg ICAgaWYoJHtWVEtfUkVOREVSSU5HX0JBQ0tFTkR9IFNUUkVRVUFMICJPcGVuR0wiKQorLSAgICAg ICAgc2V0KFZUS19SRU5ERVJJTkdfQkFDS0VORF9PUEVOR0xfVkVSU0lPTiAiMSIpCistICAgICAg ICBtZXNzYWdlKERFUFJFQ0FUSU9OICJUaGUgcmVuZGVyaW5nIGJhY2tlbmQgT3BlbkdMIGlzIGRl cHJlY2F0ZWQgYW5kIG5vdCBhdmFpbGFibGUgYW55bW9yZSBzaW5jZSBWVEsgOC4yLiIKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSBzd2l0Y2ggdG8gdGhlIE9wZW5HTDIgYmFj a2VuZCBpbnN0ZWFkLCB3aGljaCBpcyBhdmFpbGFibGUgc2luY2UgVlRLIDYuMi4iCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJTdXBwb3J0IG9mIHRoZSBkZXByZWNhdGVkIGJhY2tlbmQg d2lsbCBiZSBkcm9wcGVkIHdpdGggUENMIDEuMTMuIikKKy0gICAgICBlbHNlaWYoJHtWVEtfUkVO REVSSU5HX0JBQ0tFTkR9IFNUUkVRVUFMICJPcGVuR0wyIikKKy0gICAgICAgIHNldChWVEtfUkVO REVSSU5HX0JBQ0tFTkRfT1BFTkdMX1ZFUlNJT04gIjIiKQorLSAgICAgIGVuZGlmKCkKKy0gICAg ZWxzZSgpCistICAgICAgc2V0KFZUS19GT1VORCBPRkYpCistICAgICAgbWVzc2FnZSgiV2Fybmlu ZzogWW91IGFyZSB0byBidWlsZCBQQ0wgaW4gU1RBVElDIGJ1dCBWVEsgaXMgU0hBUkVEISIpCist ICAgICAgbWVzc2FnZSgiV2FybmluZzogVlRLIGRpc2FibGVkISIpCistICAgIGVuZGlmKCkKKy0g IGVuZGlmKCkKKysgIGluY2x1ZGUoIiR7UENMX1NPVVJDRV9ESVJ9L2NtYWtlL3BjbF9maW5kX3Z0 ay5jbWFrZSIpCisgZWxzZSgpCisgICBzZXQoVlRLX0ZPVU5EIE9GRikKKyBlbmRpZigpCitkaWZm IC11cCAuL2NtYWtlL01vZHVsZXMvRmluZEdMRVcuY21ha2UuNDI2MiAuL2NtYWtlL01vZHVsZXMv RmluZEdMRVcuY21ha2UKKy0tLSAuL2NtYWtlL01vZHVsZXMvRmluZEdMRVcuY21ha2UuNDI2Mgky MDIxLTAyLTIxIDIxOjMyOjU4LjMzMDE3Njc3MSAtMDUwMAorKysrIC4vY21ha2UvTW9kdWxlcy9G aW5kR0xFVy5jbWFrZQkyMDIxLTAyLTIxIDIxOjMyOjU4LjMzMDE3Njc3MSAtMDUwMAorQEAgLTAs MCArMSw2OSBAQAorKyMgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE9TSS1hcHByb3ZlZCBCU0QgMy1D bGF1c2UgTGljZW5zZS4gIFNlZSBhY2NvbXBhbnlpbmcKKysjIGZpbGUgQ29weXJpZ2h0LnR4dCBv ciBodHRwczovL2NtYWtlLm9yZy9saWNlbnNpbmcgZm9yIGRldGFpbHMuCisrCisrIy5yc3Q6Cisr IyBGaW5kR0xFVworKyMgLS0tLS0tLS0KKysjCisrIyBGaW5kIHRoZSBPcGVuR0wgRXh0ZW5zaW9u IFdyYW5nbGVyIExpYnJhcnkgKEdMRVcpCisrIworKyMgSU1QT1JURUQgVGFyZ2V0cworKyMgXl5e Xl5eXl5eXl5eXl5eXgorKyMKKysjIFRoaXMgbW9kdWxlIGRlZmluZXMgdGhlIDpwcm9wX3RndDpg SU1QT1JURURgIHRhcmdldCBgYEdMRVc6OkdMRVdgYCwKKysjIGlmIEdMRVcgaGFzIGJlZW4gZm91 bmQuCisrIworKyMgUmVzdWx0IFZhcmlhYmxlcworKyMgXl5eXl5eXl5eXl5eXl5eXgorKyMKKysj IFRoaXMgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CisrIworKyMgOjoK KysjCisrIyAgIEdMRVdfSU5DTFVERV9ESVJTIC0gaW5jbHVkZSBkaXJlY3RvcmllcyBmb3IgR0xF VworKyMgICBHTEVXX0xJQlJBUklFUyAtIGxpYnJhcmllcyB0byBsaW5rIGFnYWluc3QgR0xFVwor KyMgICBHTEVXX0ZPVU5EIC0gdHJ1ZSBpZiBHTEVXIGhhcyBiZWVuIGZvdW5kIGFuZCBjYW4gYmUg dXNlZAorKworK2ZpbmRfcGF0aChHTEVXX0lOQ0xVREVfRElSIEdML2dsZXcuaCkKKysKKytpZihO T1QgR0xFV19MSUJSQVJZKQorKyAgZmluZF9saWJyYXJ5KEdMRVdfTElCUkFSWV9SRUxFQVNFIE5B TUVTIEdMRVcgZ2xldzMyIGdsZXcgZ2xldzMycyBQQVRIX1NVRkZJWEVTIGxpYjY0IGxpYngzMikK KysgIGZpbmRfbGlicmFyeShHTEVXX0xJQlJBUllfREVCVUcgTkFNRVMgR0xFV2QgZ2xldzMyZCBn bGV3ZCBQQVRIX1NVRkZJWEVTIGxpYjY0KQorKworKyAgaW5jbHVkZShTZWxlY3RMaWJyYXJ5Q29u ZmlndXJhdGlvbnMpCisrICBzZWxlY3RfbGlicmFyeV9jb25maWd1cmF0aW9ucyhHTEVXKQorK2Vu ZGlmICgpCisrCisraW5jbHVkZShGaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKKytmaW5k X3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3MoR0xFVworKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSRVFVSVJFRF9WQVJTIEdMRVdfSU5DTFVERV9ESVIgR0xFV19MSUJSQVJZ KQorKworK2lmKEdMRVdfRk9VTkQpCisrICBzZXQoR0xFV19JTkNMVURFX0RJUlMgJHtHTEVXX0lO Q0xVREVfRElSfSkKKysKKysgIGlmKE5PVCBHTEVXX0xJQlJBUklFUykKKysgICAgc2V0KEdMRVdf TElCUkFSSUVTICR7R0xFV19MSUJSQVJZfSkKKysgIGVuZGlmKCkKKysKKysgIGlmIChOT1QgVEFS R0VUIEdMRVc6OkdMRVcpCisrICAgIGFkZF9saWJyYXJ5KEdMRVc6OkdMRVcgVU5LTk9XTiBJTVBP UlRFRCkKKysgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEdMRVc6OkdMRVcgUFJPUEVSVElFUwor KyAgICAgIElOVEVSRkFDRV9JTkNMVURFX0RJUkVDVE9SSUVTICIke0dMRVdfSU5DTFVERV9ESVJT fSIpCisrCisrICAgIGlmKEdMRVdfTElCUkFSWV9SRUxFQVNFKQorKyAgICAgIHNldF9wcm9wZXJ0 eShUQVJHRVQgR0xFVzo6R0xFVyBBUFBFTkQgUFJPUEVSVFkgSU1QT1JURURfQ09ORklHVVJBVElP TlMgUkVMRUFTRSkKKysgICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoR0xFVzo6R0xFVyBQUk9Q RVJUSUVTIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7R0xFV19MSUJSQVJZX1JFTEVBU0V9 IikKKysgICAgZW5kaWYoKQorKworKyAgICBpZihHTEVXX0xJQlJBUllfREVCVUcpCisrICAgICAg c2V0X3Byb3BlcnR5KFRBUkdFVCBHTEVXOjpHTEVXIEFQUEVORCBQUk9QRVJUWSBJTVBPUlRFRF9D T05GSUdVUkFUSU9OUyBERUJVRykKKysgICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoR0xFVzo6 R0xFVyBQUk9QRVJUSUVTIElNUE9SVEVEX0xPQ0FUSU9OX0RFQlVHICIke0dMRVdfTElCUkFSWV9E RUJVR30iKQorKyAgICBlbmRpZigpCisrCisrICAgIGlmKE5PVCBHTEVXX0xJQlJBUllfUkVMRUFT RSBBTkQgTk9UIEdMRVdfTElCUkFSWV9ERUJVRykKKysgICAgICBzZXRfcHJvcGVydHkoVEFSR0VU IEdMRVc6OkdMRVcgQVBQRU5EIFBST1BFUlRZIElNUE9SVEVEX0xPQ0FUSU9OICIke0dMRVdfTElC UkFSWX0iKQorKyAgICBlbmRpZigpCisrICBlbmRpZigpCisrZW5kaWYoKQorKworK21hcmtfYXNf YWR2YW5jZWQoR0xFV19JTkNMVURFX0RJUikKK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor ZGlmZiAtdXAgLi9jbWFrZS9wY2xfZmluZF92dGsuY21ha2UuNDI2MiAuL2NtYWtlL3BjbF9maW5k X3Z0ay5jbWFrZQorLS0tIC4vY21ha2UvcGNsX2ZpbmRfdnRrLmNtYWtlLjQyNjIJMjAyMS0wMi0y MSAyMTozMjo1OC4zMTkxNzY3MjUgLTA1MDAKKysrKyAuL2NtYWtlL3BjbF9maW5kX3Z0ay5jbWFr ZQkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyMDE3NjcyOSAtMDUwMAorQEAgLTAsMCArMSwxNjQgQEAK KytmdW5jdGlvbihjaGVja1ZUS0NvbXBvbmVudHMpCisrICBjbWFrZV9wYXJzZV9hcmd1bWVudHMo UEFSQU0gIiIgIk1JU1NJTkdfQ09NUE9ORU5UUyIgIkNPTVBPTkVOVFMiICR7QVJHTn0pCisrCisr ICBzZXQodnRrTWlzc2luZ0NvbXBvbmVudHMpCisrICAKKysgIGZvcmVhY2godnRrQ29tcG9uZW50 ICR7UEFSQU1fQ09NUE9ORU5UU30pCisrICAgIGlmIChWVEtfVkVSU0lPTiBWRVJTSU9OX0xFU1Mg OS4wKQorKyAgICAgIGlmIChOT1QgVEFSR0VUICR7dnRrQ29tcG9uZW50fSkKKysgICAgICAgIGxp c3QoQVBQRU5EIHZ0a01pc3NpbmdDb21wb25lbnRzICR7dnRrQ29tcG9uZW50fSkKKysgICAgICBl bmRpZigpCisrICAgIGVsc2UoKQorKyAgICAgIGlmIChOT1QgVEFSR0VUIFZUSzo6JHt2dGtDb21w b25lbnR9KQorKyAgICAgICAgbGlzdChBUFBFTkQgdnRrTWlzc2luZ0NvbXBvbmVudHMgJHt2dGtD b21wb25lbnR9KQorKyAgICAgIGVuZGlmKCkKKysgICAgZW5kaWYoKQorKyAgZW5kZm9yZWFjaCgp CisrICAKKysgIHNldCgke1BBUkFNX01JU1NJTkdfQ09NUE9ORU5UU30gJHt2dGtNaXNzaW5nQ29t cG9uZW50c30gUEFSRU5UX1NDT1BFKQorK2VuZGZ1bmN0aW9uKCkKKysKKysjIFN0YXJ0IHdpdGgg YSBnZW5lcmljIGNhbGwgdG8gZmluZCBhbnkgVlRLIHZlcnNpb24gd2UgYXJlIHN1cHBvcnRpbmcs IHNvIHdlIHJldHJpZXZlCisrIyB0aGUgdmVyc2lvbiBvZiBWVEsuIEFzIHRoZSBtb2R1bGUgbmFt ZXMgd2VyZSBjaGFuZ2VkIGZyb20gVlRLIDguMiB0byA5LjAsIHdlIGRvbid0CisrIyBzZWFyY2gg ZXhwbGljaXRseSBmb3IgbW9kdWxlcy4gRnVydGhlcm1vcmUgd2UgZG9uJ3QgcGFzcyByZXF1aXJl ZCBtaW5pbXVtIHZlcnNpb24gNi4yCisrIyB0byBmaW5kX3BhY2thZ2UgYmVjYXVzZSB0aGVuIGl0 IG9ubHkgYWNjZXB0IHZlcnNpb25zIHdpdGggc2FtZSBtYWpvciB2ZXJzaW9uLgorK2ZpbmRfcGFj a2FnZShWVEspCisrCisraWYoTk9UIFZUS19GT1VORCkKKysgICAgcmV0dXJuKCkKKytlbmRpZigp CisrCisraWYoVlRLX0ZPVU5EIEFORCAoVlRLX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDYuMikpCisr ICBtZXNzYWdlKFdBUk5JTkcgIlRoZSBtaW5pbXVtIHJlcXVpcmVkIHZlcnNpb24gb2YgVlRLIGlz IDYuMiwgYnV0IGZvdW5kICR7VlRLX1ZFUlNJT059IikKKysgIHNldChWVEtfRk9VTkQgRkFMU0Up CisrICByZXR1cm4oKQorK2VuZGlmKCkKKysKKytzZXQoTk9OX1BSRUZJWF9QQ0xfVlRLX0NPTVBP TkVOVFMKKysgIENoYXJ0c0NvcmUKKysgIENvbW1vbkNvbG9yCisrICBDb21tb25Db3JlCisrICBD b21tb25EYXRhTW9kZWwKKysgIENvbW1vbkV4ZWN1dGlvbk1vZGVsCisrICBDb21tb25NYXRoCisr ICBDb21tb25NaXNjCisrICBDb21tb25UcmFuc2Zvcm1zCisrICBGaWx0ZXJzQ29yZQorKyAgRmls dGVyc0V4dHJhY3Rpb24KKysgIEZpbHRlcnNHZW5lcmFsCisrICBGaWx0ZXJzR2VvbWV0cnkKKysg IEZpbHRlcnNNb2RlbGluZworKyAgRmlsdGVyc1NvdXJjZXMKKysgIEltYWdpbmdDb3JlCisrICBJ bWFnaW5nU291cmNlcworKyAgSW50ZXJhY3Rpb25TdHlsZQorKyAgSW50ZXJhY3Rpb25XaWRnZXRz CisrICBJT0NvcmUKKysgIElPR2VvbWV0cnkKKysgIElPSW1hZ2UKKysgIElPTGVnYWN5CisrICBJ T1BMWQorKyAgUmVuZGVyaW5nQW5ub3RhdGlvbgorKyAgUmVuZGVyaW5nQ29yZQorKyAgUmVuZGVy aW5nQ29udGV4dDJECisrICBSZW5kZXJpbmdMT0QKKysgIFJlbmRlcmluZ0ZyZWVUeXBlCisrICBW aWV3c0NvcmUKKysgIFZpZXdzQ29udGV4dDJECisrKQorKworKyNJZiBWVEsgdmVyc2lvbiA2IHVz ZSBPcGVuR0wKKytpZihWVEtfVkVSU0lPTiBWRVJTSU9OX0xFU1MgNy4wKQorKyAgc2V0KFZUS19S RU5ERVJJTkdfQkFDS0VORCAiT3BlbkdMIikKKysgIHNldChWVEtfUkVOREVSSU5HX0JBQ0tFTkRf T1BFTkdMX1ZFUlNJT04gIjEiKQorKyAgbWVzc2FnZShERVBSRUNBVElPTiAiVGhlIHJlbmRlcmlu ZyBiYWNrZW5kIE9wZW5HTCBpcyBkZXByZWNhdGVkIGFuZCBub3QgYXZhaWxhYmxlIGFueW1vcmUg c2luY2UgVlRLIDguMi4iCisrCQkJCQkgICJQbGVhc2Ugc3dpdGNoIHRvIHRoZSBPcGVuR0wyIGJh Y2tlbmQgaW5zdGVhZCwgd2hpY2ggaXMgYXZhaWxhYmxlIHNpbmNlIFZUSyA2LjIuIgorKwkJCQkJ ICAiU3VwcG9ydCBvZiB0aGUgZGVwcmVjYXRlZCBiYWNrZW5kIHdpbGwgYmUgZHJvcHBlZCB3aXRo IFBDTCAxLjEzLiIpCisrCisrI0lmIFZUSyB2ZXJzaW9uIDcsOCBvciA5IHVzZSBPcGVuR0wyCisr ZWxzZSgpCisrICBzZXQoVlRLX1JFTkRFUklOR19CQUNLRU5EICJPcGVuR0wyIikKKysgIHNldChW VEtfUkVOREVSSU5HX0JBQ0tFTkRfT1BFTkdMX1ZFUlNJT04gIjIiKQorK2VuZGlmKCkKKysKKyts aXN0KEFQUEVORCBOT05fUFJFRklYX1BDTF9WVEtfQ09NUE9ORU5UUyBSZW5kZXJpbmcke1ZUS19S RU5ERVJJTkdfQkFDS0VORH0pCisrCisrI0FwcGVuZCB2dGsgdG8gY29tcG9uZW50cyBpZiB2ZXJz aW9uIGlzIDw5LjAKKytpZihWVEtfVkVSU0lPTiBWRVJTSU9OX0xFU1MgOS4wKQorKyAgZm9yZWFj aCh2dGtDb21wb25lbnQgJHtOT05fUFJFRklYX1BDTF9WVEtfQ09NUE9ORU5UU30pCisrICAgIHNl dCh2dGtDb21wb25lbnQgInZ0ayR7dnRrQ29tcG9uZW50fSIpCisrICAgIGxpc3QoQVBQRU5EIFBD TF9WVEtfQ09NUE9ORU5UUyAke3Z0a0NvbXBvbmVudH0pCisrICBlbmRmb3JlYWNoKCkKKytlbHNl KCkKKysgIHNldChQQ0xfVlRLX0NPTVBPTkVOVFMgJHtOT05fUFJFRklYX1BDTF9WVEtfQ09NUE9O RU5UU30pCisrZW5kaWYoKQorKworKyMgQ2hlY2sgaWYgcmVxdWVzdGVkIG1vZHVsZXMgYXJlIGF2 YWlsYWJsZQorK2NoZWNrVlRLQ29tcG9uZW50cyhDT01QT05FTlRTICR7UENMX1ZUS19DT01QT05F TlRTfSBNSVNTSU5HX0NPTVBPTkVOVFMgdnRrTWlzc2luZ0NvbXBvbmVudHMpCisrCisraWYgKHZ0 a01pc3NpbmdDb21wb25lbnRzKQorKyAgc2V0KFZUS19GT1VORCBGQUxTRSkKKysgIG1lc3NhZ2Uo V0FSTklORyAiTWlzc2luZyB2dGsgbW9kdWxlczogJHt2dGtNaXNzaW5nQ29tcG9uZW50c30iKQor K2VuZGlmKCkKKysKKytpZihXSVRIX1FUKQorKyAgaWYoVlRLX1ZFUlNJT04gVkVSU0lPTl9MRVNT IDkuMCkKKysgICAgaWYoIjske1ZUS19NT0RVTEVTX0VOQUJMRUR9OyIgTUFUQ0hFUyAiO3Z0a0dV SVN1cHBvcnRRdDsiIEFORCAiOyR7VlRLX01PRFVMRVNfRU5BQkxFRH07IiBNQVRDSEVTICI7dnRr UmVuZGVyaW5nUXQ7IikKKysgICAgICBzZXQoSEFWRV9RVlRLIFRSVUUpCisrICAgICAgI1BDTF9W VEtfQ09NUE9ORU5UUyBpcyB1c2VkIGluIHRoZSBQQ0xDb25maWcuY21ha2UgdG8gcmVmaW5kIHRo ZSByZXF1aXJlZCBtb2R1bGVzLgorKyAgICAgICNQcmUgdnRrIDkuMCwgYWxsIHZ0ayBsaWJyYXJp ZXMgYXJlIGxpbmtlZCBpbnRvIHBjbF92aXN1YWxpemVyLgorKyAgICAgICNTdWJwcm9qZWN0cyBj YW4gbGluayBhZ2FpbnN0IHBjbF92aXN1YWxpemVyIGFuZCBkaXJlY3RseSB1c2UgVlRLLVFUIGxp YnJhcmllcy4KKysgICAgICBsaXN0KEFQUEVORCBQQ0xfVlRLX0NPTVBPTkVOVFMgdnRrUmVuZGVy aW5nUXQgdnRrR1VJU3VwcG9ydFF0KQorKyAgICBlbHNlKCkKKysgICAgICB1bnNldChIQVZFX1FW VEspCisrICAgIGVuZGlmKCkKKysgIGVsc2UoKQorKwlpZigiOyR7VlRLX0FWQUlMQUJMRV9DT01Q T05FTlRTfTsiIE1BVENIRVMgIjtHVUlTdXBwb3J0UXQ7IiBBTkQgIjske1ZUS19BVkFJTEFCTEVf Q09NUE9ORU5UU307IiBNQVRDSEVTICI7UmVuZGVyaW5nUXQ7IikKKysgICAgICBzZXQoSEFWRV9R VlRLIFRSVUUpCisrICAgICAgI1BDTF9WVEtfQ09NUE9ORU5UUyBpcyB1c2VkIGluIHRoZSBQQ0xD b25maWcuY21ha2UgdG8gcmVmaW5kIHRoZSByZXF1aXJlZCBtb2R1bGVzLgorKyAgICAgICNQb3N0 IHZ0ayA5LjAsIG9ubHkgcmVxdWlyZWQgbGlicmFyaWVzIGFyZSBsaW5rZWQgYWdhaW5zdCBwY2xf dmlzdWFsaXplci4KKysgICAgICAjU3VicHJvamVjdHMgbmVlZCB0byBtYW51YWxseSBsaW5rIHRv IFZUSy1RVCBsaWJyYXJpZXMuCisrICAgICAgbGlzdChBUFBFTkQgUENMX1ZUS19DT01QT05FTlRT IFJlbmRlcmluZ1F0IEdVSVN1cHBvcnRRdCkKKysgICAgZWxzZSgpCisrICAgICAgdW5zZXQoSEFW RV9RVlRLKQorKyAgICBlbmRpZigpCisrICBlbmRpZigpCisrZW5kaWYoKQorKworK2lmKFBDTF9T SEFSRURfTElCUyBPUiAoTk9UIChQQ0xfU0hBUkVEX0xJQlMpIEFORCBOT1QgKFZUS19CVUlMRF9T SEFSRURfTElCUykpKQorKyAgaWYoVlRLX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDkuMCkKKysgICAg aWYoVlRLX1VTRV9GSUxFKQorKyAgICAgIGluY2x1ZGUoJHtWVEtfVVNFX0ZJTEV9KQorKyAgICBl bmRpZigpCisrICBlbmRpZigpCisrICAKKysgIGlmKEFQUExFKQorKyAgICBvcHRpb24oVlRLX1VT RV9DT0NPQSAiVXNlIENvY29hIGZvciBWVEsgcmVuZGVyIHdpbmRvd3MiIE9OKQorKyAgICBtYXJr X2FzX2FkdmFuY2VkKFZUS19VU0VfQ09DT0EpCisrICBlbmRpZigpCisrZWxzZSgpCisrICBzZXQo VlRLX0ZPVU5EIE9GRikKKysgIG1lc3NhZ2UoIldhcm5pbmc6IFlvdSBhcmUgdG8gYnVpbGQgUENM IGluIFNUQVRJQyBidXQgVlRLIGlzIFNIQVJFRCEiKQorKyAgbWVzc2FnZSgiV2FybmluZzogVlRL IGRpc2FibGVkISIpCisrZW5kaWYoKQorKworK21lc3NhZ2UoU1RBVFVTICJWVEsgdmVyc2lvbjog JHtWVEtfVkVSU0lPTn0iKQorK21lc3NhZ2UoU1RBVFVTICJWVEsgcmVuZGVyaW5nIGJhY2tlbmQ6 ICR7VlRLX1JFTkRFUklOR19CQUNLRU5EfSIpCisrCisraWYoV0lUSF9RVCkKKysgIGlmKEhBVkVf UVZUSykKKysgICAgbWVzc2FnZShTVEFUVVMgIlZUSyBRdCBzdXBwb3J0OiBZRVMiKQorKyAgZWxz ZSgpCisrICAgIG1lc3NhZ2UoU1RBVFVTICJWVEsgUXQgc3VwcG9ydDogTk9URk9VTkQiKQorKyAg ZW5kaWYoKQorK2Vsc2UoKQorKyAgbWVzc2FnZShTVEFUVVMgIlZUSyBRdCBzdXBwb3J0OiBOTyIp CisrZW5kaWYoKQorKworK2lmKFZUS19JTkNMVURFX0RJUlMpCisrICBtZXNzYWdlKFNUQVRVUyAi VlRLIGluY2x1ZGU6ICR7VlRLX0lOQ0xVREVfRElSU30iKQorK0VORElGKCkKKysKKytpZihWVEtf TElCUkFSSUVTKQorKyAgbWVzc2FnZShTVEFUVVMgIlZUSyBsaWJzOiAke1ZUS19MSUJSQVJJRVN9 IikKKytlbmRpZigpCitkaWZmIC11cCAuL2V4YW1wbGVzL2tleXBvaW50cy9DTWFrZUxpc3RzLnR4 dC40MjYyIC4vZXhhbXBsZXMva2V5cG9pbnRzL0NNYWtlTGlzdHMudHh0CistLS0gLi9leGFtcGxl cy9rZXlwb2ludHMvQ01ha2VMaXN0cy50eHQuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAw MDAwMCAtMDQwMAorKysrIC4vZXhhbXBsZXMva2V5cG9pbnRzL0NNYWtlTGlzdHMudHh0CTIwMjEt MDItMjEgMjE6MzI6NTguMzI1MTc2NzUwIC0wNTAwCitAQCAtNiwxMiArNiwxMSBAQCBQQ0xfU1VC U1lTX0RFUEVORChidWlsZCAke1NVQlNZU19OQU1FfSBECisgCisgIyMgRmluZCBWVEsKKyBpZihO T1QgVlRLX0ZPVU5EKQorLSAgICBzZXQoREVGQVVMVCBGQUxTRSkKKy0gICAgc2V0KFJFQVNPTiAi VlRLIHdhcyBub3QgZm91bmQuIikKKysgIHNldChERUZBVUxUIEZBTFNFKQorKyAgc2V0KFJFQVNP TiAiVlRLIHdhcyBub3QgZm91bmQuIikKKyBlbHNlKCkKKy0gICAgc2V0KERFRkFVTFQgVFJVRSkK Ky0gICAgc2V0KFJFQVNPTikKKy0gICAgaW5jbHVkZSgke1ZUS19VU0VfRklMRX0pCisrICBzZXQo REVGQVVMVCBUUlVFKQorKyAgc2V0KFJFQVNPTikKKyBlbmRpZigpCisgCisgUENMX0FERF9FWEFN UExFKHBjbF9leGFtcGxlX3NpZnRfa2V5cG9pbnRfZXN0aW1hdGlvbiBGSUxFUyBleGFtcGxlX3Np ZnRfa2V5cG9pbnRfZXN0aW1hdGlvbi5jcHAKK2RpZmYgLXVwIC4vZXhhbXBsZXMvb3V0b2Zjb3Jl L0NNYWtlTGlzdHMudHh0LjQyNjIgLi9leGFtcGxlcy9vdXRvZmNvcmUvQ01ha2VMaXN0cy50eHQK Ky0tLSAuL2V4YW1wbGVzL291dG9mY29yZS9DTWFrZUxpc3RzLnR4dC40MjYyCTIwMjAtMDgtMTQg MDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCisrKysgLi9leGFtcGxlcy9vdXRvZmNvcmUvQ01ha2VM aXN0cy50eHQJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjUxNzY3NTAgLTA1MDAKK0BAIC05LDcgKzks NiBAQCBpZihOT1QgVlRLX0ZPVU5EKQorIGVsc2UoKQorICAgc2V0KERFRkFVTFQgVFJVRSkKKyAg IHNldChSRUFTT04pCistICBpbmNsdWRlKCR7VlRLX1VTRV9GSUxFfSkKKyBlbmRpZigpCisgCisg UENMX1NVQlNZU19ERVBFTkQgKGJ1aWxkICR7U1VCU1lTX05BTUV9IERFUFMgb3V0b2Zjb3JlIGlv IGNvbW1vbiBvY3RyZWUgZmlsdGVycyB2aXN1YWxpemF0aW9uIEVYVF9ERVBTIHZ0aykKK2RpZmYg LXVwIC4vZXhhbXBsZXMvc2VnbWVudGF0aW9uL0NNYWtlTGlzdHMudHh0LjQyNjIgLi9leGFtcGxl cy9zZWdtZW50YXRpb24vQ01ha2VMaXN0cy50eHQKKy0tLSAuL2V4YW1wbGVzL3NlZ21lbnRhdGlv bi9DTWFrZUxpc3RzLnR4dC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAw CisrKysgLi9leGFtcGxlcy9zZWdtZW50YXRpb24vQ01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAy MTozMjo1OC4zMjUxNzY3NTAgLTA1MDAKK0BAIC0xMSw3ICsxMSw2IEBAIFBDTF9BRERfRVhBTVBM RShwY2xfZXhhbXBsZV9yZWdpb25fZ3Jvd2kKKyAKKyAjIyBGaW5kIFZUSworIGlmKFZUS19GT1VO RCkKKy0gIGluY2x1ZGUoJHtWVEtfVVNFX0ZJTEV9KQorICAgUENMX0FERF9FWEFNUExFKHBjbF9l eGFtcGxlX3N1cGVydm94ZWxzIEZJTEVTIGV4YW1wbGVfc3VwZXJ2b3hlbHMuY3BwCisgICAgICAg ICAgICAgICAgICAgTElOS19XSVRIIHBjbF9jb21tb24gcGNsX2ZlYXR1cmVzIHBjbF9zZWdtZW50 YXRpb24gcGNsX29jdHJlZSBwY2xfa2R0cmVlIHBjbF92aXN1YWxpemF0aW9uKQorICAgUENMX0FE RF9FWEFNUExFKHBjbF9leGFtcGxlX2xjY3Bfc2VnbWVudGF0aW9uIEZJTEVTIGV4YW1wbGVfbGNj cF9zZWdtZW50YXRpb24uY3BwCitkaWZmIC11cCAuL2V4YW1wbGVzL3N0ZXJlby9DTWFrZUxpc3Rz LnR4dC40MjYyIC4vZXhhbXBsZXMvc3RlcmVvL0NNYWtlTGlzdHMudHh0CistLS0gLi9leGFtcGxl cy9zdGVyZW8vQ01ha2VMaXN0cy50eHQuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAw MCAtMDQwMAorKysrIC4vZXhhbXBsZXMvc3RlcmVvL0NNYWtlTGlzdHMudHh0CTIwMjEtMDItMjEg MjE6MzI6NTguMzI1MTc2NzUwIC0wNTAwCitAQCAtMTEsNyArMTEsNiBAQCBpZihOT1QgVlRLX0ZP VU5EKQorIGVsc2UoKQorICAgc2V0KERFRkFVTFQgVFJVRSkKKyAgIHNldChSRUFTT04pCistICBp bmNsdWRlKCR7VlRLX1VTRV9GSUxFfSkKKyBlbmRpZigpCisgCisgUENMX0FERF9FWEFNUExFKHBj bF9leGFtcGxlX3N0ZXJlb19iYXNlbGluZSBGSUxFUyBleGFtcGxlX3N0ZXJlb19iYXNlbGluZS5j cHAKK2RpZmYgLXVwIC4vZXhhbXBsZXMvc3VyZmFjZS9DTWFrZUxpc3RzLnR4dC40MjYyIC4vZXhh bXBsZXMvc3VyZmFjZS9DTWFrZUxpc3RzLnR4dAorLS0tIC4vZXhhbXBsZXMvc3VyZmFjZS9DTWFr ZUxpc3RzLnR4dC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCisrKysg Li9leGFtcGxlcy9zdXJmYWNlL0NNYWtlTGlzdHMudHh0CTIwMjEtMDItMjEgMjE6MzI6NTguMzI1 MTc2NzUwIC0wNTAwCitAQCAtMTEsNyArMTEsNiBAQCBpZihOT1QgVlRLX0ZPVU5EKQorIGVsc2Uo KQorICAgc2V0KERFRkFVTFQgVFJVRSkKKyAgIHNldChSRUFTT04pCistICBpbmNsdWRlKCR7VlRL X1VTRV9GSUxFfSkKKyBlbmRpZigpCisgCisgUENMX0FERF9FWEFNUExFKHBjbF90ZXN0X251cmJz X2ZpdHRpbmdfc3VyZmFjZQorZGlmZiAtdXAgLi9ncHUva2luZnVfbGFyZ2Vfc2NhbGUvdG9vbHMv Q01ha2VMaXN0cy50eHQuNDI2MiAuL2dwdS9raW5mdV9sYXJnZV9zY2FsZS90b29scy9DTWFrZUxp c3RzLnR4dAorLS0tIC4vZ3B1L2tpbmZ1X2xhcmdlX3NjYWxlL3Rvb2xzL0NNYWtlTGlzdHMudHh0 LjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL2dwdS9raW5m dV9sYXJnZV9zY2FsZS90b29scy9DTWFrZUxpc3RzLnR4dAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMy NDE3Njc0NiAtMDUwMAorQEAgLTgsOCArOCw2IEBAIGlmKE5PVCBWVEtfRk9VTkQpCisgZWxzZSgp CisgICBzZXQoREVGQVVMVCBUUlVFKQorICAgc2V0KFJFQVNPTikKKy0gIHNldChWVEtfVVNFX0ZJ TEUgIiR7VlRLX1VTRV9GSUxFfSIgQ0FDSEUgSU5URVJOQUwgIlZUS19VU0VfRklMRSIpCistICBp bmNsdWRlKCIke1ZUS19VU0VfRklMRX0iKQorICAgaW5jbHVkZV9kaXJlY3RvcmllcygiJHtDTUFL RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUiKQorIGVuZGlmKCkKKyAKK2RpZmYgLXVwIC4v Z3B1L2tpbmZ1L3Rvb2xzL0NNYWtlTGlzdHMudHh0LjQyNjIgLi9ncHUva2luZnUvdG9vbHMvQ01h a2VMaXN0cy50eHQKKy0tLSAuL2dwdS9raW5mdS90b29scy9DTWFrZUxpc3RzLnR4dC40MjYyCTIw MjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCisrKysgLi9ncHUva2luZnUvdG9vbHMv Q01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjQxNzY3NDYgLTA1MDAKK0BAIC04 LDggKzgsNiBAQCBpZihOT1QgVlRLX0ZPVU5EKQorIGVsc2UoKQorICAgc2V0KERFRkFVTFQgVFJV RSkKKyAgIHNldChSRUFTT04pCistICBzZXQoVlRLX1VTRV9GSUxFICIke1ZUS19VU0VfRklMRX0i IENBQ0hFIElOVEVSTkFMICJWVEtfVVNFX0ZJTEUiKQorLSAgaW5jbHVkZSgiJHtWVEtfVVNFX0ZJ TEV9IikKKyAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS fS9pbmNsdWRlIikKKyBlbmRpZigpCisgCitkaWZmIC11cCAuL2dwdS9wZW9wbGUvdG9vbHMvQ01h a2VMaXN0cy50eHQuNDI2MiAuL2dwdS9wZW9wbGUvdG9vbHMvQ01ha2VMaXN0cy50eHQKKy0tLSAu L2dwdS9wZW9wbGUvdG9vbHMvQ01ha2VMaXN0cy50eHQuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAz LjAwMDAwMDAwMCAtMDQwMAorKysrIC4vZ3B1L3Blb3BsZS90b29scy9DTWFrZUxpc3RzLnR4dAky MDIxLTAyLTIxIDIxOjMyOjU4LjMyNDE3Njc0NiAtMDUwMAorQEAgLTYsOCArNiw2IEBAIGlmKE5P VCBWVEtfRk9VTkQpCisgZWxzZSgpCisgICBzZXQoREVGQVVMVCBUUlVFKQorICAgc2V0KFJFQVNP TikKKy0gIHNldChWVEtfVVNFX0ZJTEUgIiR7VlRLX1VTRV9GSUxFfSIgQ0FDSEUgSU5URVJOQUwg IlZUS19VU0VfRklMRSIpCistICBpbmNsdWRlKCIke1ZUS19VU0VfRklMRX0iKQorICAgaW5jbHVk ZV9kaXJlY3RvcmllcygiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUiKQorIGVu ZGlmKCkKKyAKK2RpZmYgLXVwIC4vaW8vQ01ha2VMaXN0cy50eHQuNDI2MiAuL2lvL0NNYWtlTGlz dHMudHh0CistLS0gLi9pby9DTWFrZUxpc3RzLnR4dC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMu MDAwMDAwMDAwIC0wNDAwCisrKysgLi9pby9DTWFrZUxpc3RzLnR4dAkyMDIxLTAyLTIxIDIxOjMy OjU4LjMxOTE3NjcyNSAtMDUwMAorQEAgLTMzMSwxMCArMzMxLDI0IEBAIGVuZGlmKCkKKyBzZXQo TElCX05BTUUgInBjbF8ke1NVQlNZU19OQU1FfSIpCisgCisgYWRkX2RlZmluaXRpb25zKCR7VlRL X0RFRklORVN9KQorKworIFBDTF9BRERfTElCUkFSWSgke0xJQl9OQU1FfSBDT01QT05FTlQgJHtT VUJTWVNfTkFNRX0gU09VUkNFUyAke3NyY3N9ICR7aW5jc30gJHtjb21wcmVzc2lvbl9pbmNzfSAk e2ltcGxfaW5jc30gJHtPUEVOTklfSU5DTFVERVN9ICR7T1BFTk5JMl9JTkNMVURFU30pCisrCisg dGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtMSUJfTkFNRX0gUFVCTElDICIke0NNQUtFX0NV UlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZSIpCistbGlua19kaXJlY3Rvcmllcygke1ZUS19MSU5L X0RJUkVDVE9SSUVTfSkKKy10YXJnZXRfbGlua19saWJyYXJpZXMoIiR7TElCX05BTUV9IiBwY2xf Y29tbW9uIHBjbF9pb19wbHkgJHtWVEtfTElCUkFSSUVTfSkKKysKKyt0YXJnZXRfbGlua19saWJy YXJpZXMoIiR7TElCX05BTUV9IiBwY2xfY29tbW9uIHBjbF9pb19wbHkpCisraWYoVlRLX0ZPVU5E KQorKyAgaWYoJHtWVEtfVkVSU0lPTn0gVkVSU0lPTl9MRVNTIDkuMCkKKysgICAgbGlua19kaXJl Y3Rvcmllcygke1ZUS19MSU5LX0RJUkVDVE9SSUVTfSkKKysgICAgdGFyZ2V0X2xpbmtfbGlicmFy aWVzKCIke0xJQl9OQU1FfSIgJHtWVEtfTElCUkFSSUVTfSkKKysgIGVsc2UoKQorKyAgICB0YXJn ZXRfbGlua19saWJyYXJpZXMoIiR7TElCX05BTUV9IiAKKysgICAgICAgICAgICAgICAgICAgICAg ICAgIFZUSzo6SU9JbWFnZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpJT0dlb21l dHJ5CisrICAgICAgICAgICAgICAgICAgICAgICAgICBWVEs6OklPUExZKQorKyAgZW5kaWYoKQor K2VuZGlmKCkKKysKKyBpZihQTkdfRk9VTkQpCisgICB0YXJnZXRfbGlua19saWJyYXJpZXMoIiR7 TElCX05BTUV9IiAke1BOR19MSUJSQVJJRVN9KQorIGVuZGlmKCkKK0BAIC0zNDksNiArMzYzLDkg QEAgZW5kaWYoKQorIAorIGlmKFdJVEhfT1BFTk5JKQorICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVz KCIke0xJQl9OQU1FfSIgJHtPUEVOTklfTElCUkFSSUVTfSkKKysgIGlmKFZUS19GT1VORCBBTkQg KE5PVCAke1ZUS19WRVJTSU9OfSBWRVJTSU9OX0xFU1MgOS4wKSkKKysgICAgdGFyZ2V0X2xpbmtf bGlicmFyaWVzKCIke0xJQl9OQU1FfSIgVlRLOjpGaWx0ZXJzQ29yZSBWVEs6OkZpbHRlcnNHZW5l cmFsKQorKyAgZW5kaWYoKQorIGVuZGlmKCkKKyAKKyBpZihXSVRIX0ZaQVBJKQorZGlmZiAtdXAg Li9pby9zcmMvdnRrX2xpYl9pby5jcHAuNDI2MiAuL2lvL3NyYy92dGtfbGliX2lvLmNwcAorLS0t IC4vaW8vc3JjL3Z0a19saWJfaW8uY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAw MDAgLTA0MDAKKysrKyAuL2lvL3NyYy92dGtfbGliX2lvLmNwcAkyMDIxLTAyLTIxIDIxOjMyOjU4 LjMxOTE3NjcyNSAtMDUwMAorQEAgLTM0Myw3ICszNDMsMTEgQEAgcGNsOjppbzo6dnRrMm1lc2gg KGNvbnN0IHZ0a1NtYXJ0UG9pbnRlcgorIAorICAgLy8gTm93IGhhbmRsZSB0aGUgcG9seWdvbnMK KyAgIG1lc2gucG9seWdvbnMucmVzaXplIChucl9wb2x5Z29ucyk7CisrI2lmZGVmIFZUS19DRUxM X0FSUkFZX1YyCisrICB2dGtJZFR5cGUgY29uc3QgKmNlbGxfcG9pbnRzOworKyNlbHNlCisgICB2 dGtJZFR5cGUqIGNlbGxfcG9pbnRzOworKyNlbmRpZgorICAgdnRrSWRUeXBlIG5yX2NlbGxfcG9p bnRzOworICAgdnRrQ2VsbEFycmF5ICogbWVzaF9wb2x5Z29ucyA9IHBvbHlfZGF0YS0+R2V0UG9s eXMgKCk7CisgICBtZXNoX3BvbHlnb25zLT5Jbml0VHJhdmVyc2FsICgpOworZGlmZiAtdXAgLi9v dXRvZmNvcmUvdG9vbHMvQ01ha2VMaXN0cy50eHQuNDI2MiAuL291dG9mY29yZS90b29scy9DTWFr ZUxpc3RzLnR4dAorLS0tIC4vb3V0b2Zjb3JlL3Rvb2xzL0NNYWtlTGlzdHMudHh0LjQyNjIJMjAy MC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL291dG9mY29yZS90b29scy9D TWFrZUxpc3RzLnR4dAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMxOTE3NjcyNSAtMDUwMAorQEAgLTEz LDggKzEzLDYgQEAgaWYoTk9UIFZUS19GT1VORCkKKyBlbHNlKCkKKyAgIHNldChERUZBVUxUIFRS VUUpCisgICBzZXQoUkVBU09OKQorLSAgc2V0KFZUS19VU0VfRklMRSAiJHtWVEtfVVNFX0ZJTEV9 IiBDQUNIRSBJTlRFUk5BTCAiVlRLX1VTRV9GSUxFIikKKy0gIGluY2x1ZGUoIiR7VlRLX1VTRV9G SUxFfSIpCisgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ Un0vaW5jbHVkZSIpCisgCisgICBzZXQoc3JjcyBvdXRvZmNvcmVfdmlld2VyLmNwcAorZGlmZiAt dXAgLi9wY2xfY29uZmlnLmguaW4uNDI2MiAuL3BjbF9jb25maWcuaC5pbgorLS0tIC4vcGNsX2Nv bmZpZy5oLmluLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAu L3BjbF9jb25maWcuaC5pbgkyMDIxLTAyLTIxIDIxOjMyOjU4LjMxODE3NjcyMSAtMDUwMAorQEAg LTk1LDMgKzk1LDUgQEAKKyAvKiBWZXJzaW9uIG9mIE9wZW5HTCB1c2VkIGJ5IFZUSyBhcyByZW5k ZXJpbmcgYmFja2VuZCAqLworICNkZWZpbmUgVlRLX1JFTkRFUklOR19CQUNLRU5EX09QRU5HTF9W RVJTSU9OICR7VlRLX1JFTkRFUklOR19CQUNLRU5EX09QRU5HTF9WRVJTSU9OfQorIAorKyNjbWFr ZWRlZmluZSBIQVZFX1FWVEsgMQorKworZGlmZiAtdXAgLi9wZW9wbGUvQ01ha2VMaXN0cy50eHQu NDI2MiAuL3Blb3BsZS9DTWFrZUxpc3RzLnR4dAorLS0tIC4vcGVvcGxlL0NNYWtlTGlzdHMudHh0 LjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL3Blb3BsZS9D TWFrZUxpc3RzLnR4dAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMxOTE3NjcyNSAtMDUwMAorQEAgLTgs OCArOCw2IEBAIGlmKE5PVCBWVEtfRk9VTkQpCisgZWxzZSgpCisgICBzZXQoREVGQVVMVCBUUlVF KQorICAgc2V0KFJFQVNPTikKKy0gIHNldChWVEtfVVNFX0ZJTEUgIiR7VlRLX1VTRV9GSUxFfSIg Q0FDSEUgSU5URVJOQUwgIlZUS19VU0VfRklMRSIpCistICBpbmNsdWRlKCIke1ZUS19VU0VfRklM RX0iKQorICAgaW5jbHVkZV9kaXJlY3RvcmllcygiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9 L2luY2x1ZGUiKQorIGVuZGlmKCkKKyAKK2RpZmYgLXVwIC4vcmVnaXN0cmF0aW9uL2luY2x1ZGUv cGNsL3JlZ2lzdHJhdGlvbi9pbXBsL3BwZl9yZWdpc3RyYXRpb24uaHBwLjQyNjIgLi9yZWdpc3Ry YXRpb24vaW5jbHVkZS9wY2wvcmVnaXN0cmF0aW9uL2ltcGwvcHBmX3JlZ2lzdHJhdGlvbi5ocHAK Ky0tLSAuL3JlZ2lzdHJhdGlvbi9pbmNsdWRlL3BjbC9yZWdpc3RyYXRpb24vaW1wbC9wcGZfcmVn aXN0cmF0aW9uLmhwcC40MjYyCTIwMjEtMDItMjEgMjE6MzI6NTguMzIwMTc2NzI5IC0wNTAwCisr KysgLi9yZWdpc3RyYXRpb24vaW5jbHVkZS9wY2wvcmVnaXN0cmF0aW9uL2ltcGwvcHBmX3JlZ2lz dHJhdGlvbi5ocHAJMjAyMS0wMi0yMSAyMTozNzoxNi43MzEyOTgxMDcgLTA1MDAKK0BAIC04Myw5 ICs4Myw5IEBAIHBjbDo6UFBGUmVnaXN0cmF0aW9uPFBvaW50U291cmNlLCBQb2ludFQKKyAKKyAg IFBvc2VXaXRoVm90ZXNMaXN0IHZvdGVkX3Bvc2VzOworICAgLy8gQ29uc2lkZXIgZXZlcnkgPHNj ZW5lX3JlZmVyZW5jZV9wb2ludF9zYW1wbGluZ19yYXRlPi10aCBwb2ludCBhcyB0aGUgcmVmZXJl bmNlIHBvaW50ID0+IGZpeCBzX3IKKy0gIGZsb2F0IGYxLCBmMiwgZjMsIGY0OworLSAgZm9yIChz dGQ6OnNpemVfdCBzY2VuZV9yZWZlcmVuY2VfaW5kZXggPSAwOyBzY2VuZV9yZWZlcmVuY2VfaW5k ZXggPCB0YXJnZXRfLT5zaXplICgpOyBzY2VuZV9yZWZlcmVuY2VfaW5kZXggKz0gc2NlbmVfcmVm ZXJlbmNlX3BvaW50X3NhbXBsaW5nX3JhdGVfKQorLSAgeworKyAgZmxvYXQgZjEsIGYyLCBmMywg ZjQ7ICAKKysgIGZvciAoaW5kZXhfdCBzY2VuZV9yZWZlcmVuY2VfaW5kZXggPSAwOworKyAgICAg ICBzY2VuZV9yZWZlcmVuY2VfaW5kZXggPCBzdGF0aWNfY2FzdDxpbmRleF90Pih0YXJnZXRfLT5z aXplKCkpOyBzY2VuZV9yZWZlcmVuY2VfaW5kZXggKz0gc2NlbmVfcmVmZXJlbmNlX3BvaW50X3Nh bXBsaW5nX3JhdGVfKSB7CisgICAgIEVpZ2VuOjpWZWN0b3IzZiBzY2VuZV9yZWZlcmVuY2VfcG9p bnQgPSAoKnRhcmdldF8pW3NjZW5lX3JlZmVyZW5jZV9pbmRleF0uZ2V0VmVjdG9yM2ZNYXAgKCks CisgICAgICAgICBzY2VuZV9yZWZlcmVuY2Vfbm9ybWFsID0gKCp0YXJnZXRfKVtzY2VuZV9yZWZl cmVuY2VfaW5kZXhdLmdldE5vcm1hbFZlY3RvcjNmTWFwICgpOworIAorZGlmZiAtdXAgLi9yZWdp c3RyYXRpb24vaW5jbHVkZS9wY2wvcmVnaXN0cmF0aW9uL3BwZl9yZWdpc3RyYXRpb24uaC40MjYy IC4vcmVnaXN0cmF0aW9uL2luY2x1ZGUvcGNsL3JlZ2lzdHJhdGlvbi9wcGZfcmVnaXN0cmF0aW9u LmgKK2RpZmYgLXVwIC4vc2ltdWxhdGlvbi9DTWFrZUxpc3RzLnR4dC40MjYyIC4vc2ltdWxhdGlv bi9DTWFrZUxpc3RzLnR4dAorLS0tIC4vc2ltdWxhdGlvbi9DTWFrZUxpc3RzLnR4dC40MjYyCTIw MjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCisrKysgLi9zaW11bGF0aW9uL0NNYWtl TGlzdHMudHh0CTIwMjEtMDItMjEgMjE6MzI6NTguMzMwMTc2NzcxIC0wNTAwCitAQCAtNCwxMiAr NCw4IEBAIHNldChTVUJTWVNfREVQUyBjb21tb24gaW8gc3VyZmFjZSBrZHRyZWUKKyAKKyBzZXQo YnVpbGQgRkFMU0UpCisgZmluZF9wYWNrYWdlKE9wZW5HTCkKKy1pZihBUFBMRSkKKy0gICMgaG9t ZWJyZXcncyBGaW5kR0xFVyBtb2R1bGUgaXMgbm90IGluIGdvb2Qgc2hhcGUKKy0gIGZpbmRfcGFj a2FnZShnbGV3IENPTkZJRykKKy1FTFNFKCkKKy0gIGZpbmRfcGFja2FnZShHTEVXKQorLUVORElG KCkKKysKKytmaW5kX3BhY2thZ2UoR0xFVykKKyAKKyBQQ0xfU1VCU1lTX09QVElPTihidWlsZCAi JHtTVUJTWVNfTkFNRX0iICIke1NVQlNZU19ERVNDfSIgT0ZGKQorIFBDTF9TVUJTWVNfREVQRU5E KGJ1aWxkICIke1NVQlNZU19OQU1FfSIgREVQUyAke1NVQlNZU19ERVBTfSBFWFRfREVQUyBvcGVu Z2wgZ2xldykKK2RpZmYgLXVwIC4vc2ltdWxhdGlvbi9zcmMvbW9kZWwuY3BwLjQyNjIgLi9zaW11 bGF0aW9uL3NyYy9tb2RlbC5jcHAKKy0tLSAuL3NpbXVsYXRpb24vc3JjL21vZGVsLmNwcC40MjYy CTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCisrKysgLi9zaW11bGF0aW9uL3Ny Yy9tb2RlbC5jcHAJMjAyMS0wMi0yMSAyMTozMjo1OC4zMzAxNzY3NzEgLTA1MDAKK0BAIC0yMSw3 ICsyMSw3IEBAIHBjbDo6c2ltdWxhdGlvbjo6VHJpYW5nbGVNZXNoTW9kZWw6OlRyaWEKKyAKKyAg ICAgRWlnZW46OlZlY3RvcjRmIHRtcDsKKyAgICAgZm9yIChjb25zdCBhdXRvJiBwb2x5Z29uIDog cGxnLT5wb2x5Z29ucykgeworLSAgICAgIGZvciAoY29uc3QgdW5zaWduZWQgaW50JiBwb2ludCA6 IHBvbHlnb24udmVydGljZXMpIHsKKysgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBvaW50IDogcG9s eWdvbi52ZXJ0aWNlcykgeworICAgICAgICAgdG1wID0gbmV3Y2xvdWRbcG9pbnRdLmdldFZlY3Rv cjRmTWFwKCk7CisgICAgICAgICB2ZXJ0aWNlcy5wdXNoX2JhY2soVmVydGV4KEVpZ2VuOjpWZWN0 b3IzZih0bXAoMCksIHRtcCgxKSwgdG1wKDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRWlnZW46OlZlY3RvcjNmKG5ld2Nsb3VkW3BvaW50XS5yIC8gMjU1LjBmLAorQEAg LTM2LDcgKzM2LDcgQEAgcGNsOjpzaW11bGF0aW9uOjpUcmlhbmdsZU1lc2hNb2RlbDo6VHJpYQor ICAgICBwY2w6OmZyb21QQ0xQb2ludENsb3VkMihwbGctPmNsb3VkLCBuZXdjbG91ZCk7CisgICAg IEVpZ2VuOjpWZWN0b3I0ZiB0bXA7CisgICAgIGZvciAoY29uc3QgYXV0byYgcG9seWdvbiA6IHBs Zy0+cG9seWdvbnMpIHsKKy0gICAgICBmb3IgKGNvbnN0IHVuc2lnbmVkIGludCYgcG9pbnQgOiBw b2x5Z29uLnZlcnRpY2VzKSB7CisrICAgICAgZm9yIChjb25zdCBhdXRvJiBwb2ludCA6IHBvbHln b24udmVydGljZXMpIHsKKyAgICAgICAgIHRtcCA9IG5ld2Nsb3VkW3BvaW50XS5nZXRWZWN0b3I0 Zk1hcCgpOworICAgICAgICAgdmVydGljZXMucHVzaF9iYWNrKFZlcnRleChFaWdlbjo6VmVjdG9y M2YodG1wKDApLCB0bXAoMSksIHRtcCgyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVpZ2VuOjpWZWN0b3IzZigxLjAsIDEuMCwgMS4wKSkpOworZGlmZiAtdXAgLi9zdXJm YWNlL0NNYWtlTGlzdHMudHh0LjQyNjIgLi9zdXJmYWNlL0NNYWtlTGlzdHMudHh0CistLS0gLi9z dXJmYWNlL0NNYWtlTGlzdHMudHh0LjQyNjIJMjAyMS0wMi0yMSAyMTozMjo1OC4zMTQxNzY3MDQg LTA1MDAKKysrKyAuL3N1cmZhY2UvQ01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAyMTozMjo1OC4z MjAxNzY3MjkgLTA1MDAKK0BAIC00LDcgKzQsNyBAQCBzZXQoU1VCU1lTX0RFUFMgY29tbW9uIHNl YXJjaCBrZHRyZWUgb2N0CisgCisgc2V0KGJ1aWxkIFRSVUUpCisgUENMX1NVQlNZU19PUFRJT04o YnVpbGQgIiR7U1VCU1lTX05BTUV9IiAiJHtTVUJTWVNfREVTQ30iIE9OKQorLVBDTF9TVUJTWVNf REVQRU5EKGJ1aWxkICIke1NVQlNZU19OQU1FfSIgREVQUyAke1NVQlNZU19ERVBTfSBPUFRfREVQ UyBxaHVsbCkKKytQQ0xfU1VCU1lTX0RFUEVORChidWlsZCAiJHtTVUJTWVNfTkFNRX0iIERFUFMg JHtTVUJTWVNfREVQU30gRVhUX0RFUFMgdnRrIE9QVF9ERVBTIHFodWxsKQorIAorIFBDTF9BRERf RE9DKCIke1NVQlNZU19OQU1FfSIpCisgCitAQCAtMTU0LDE5ICsxNTQsMzIgQEAgc2V0KGltcGxf aW5jcworICkKKyAKKyBzZXQoTElCX05BTUUgInBjbF8ke1NVQlNZU19OQU1FfSIpCisrCisgaW5j bHVkZV9kaXJlY3RvcmllcygKKyAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVk ZSIKKyAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0iCisgKQorLWluY2x1ZGVfZGlyZWN0 b3JpZXMoU1lTVEVNCistICAke1ZUS19JTkNMVURFX0RJUlN9CistKQorLWxpbmtfZGlyZWN0b3Jp ZXMoJHtWVEtfTElCUkFSWV9ESVJTfSkKKyBQQ0xfQUREX0xJQlJBUlkoJHtMSUJfTkFNRX0gQ09N UE9ORU5UICR7U1VCU1lTX05BTUV9IFNPVVJDRVMgJHtzcmNzfSAke2luY3N9ICR7aW1wbF9pbmNz fSAke1ZUS19TTU9PVEhJTkdfSU5DTFVERVN9ICR7UE9JU1NPTl9JTkNMVURFU30gJHtPUEVOTlVS QlNfSU5DTFVERVN9ICR7T05fTlVSQlNfSU5DTFVERVN9KQorLXRhcmdldF9saW5rX2xpYnJhcmll cygiJHtMSUJfTkFNRX0iIHBjbF9jb21tb24gcGNsX3NlYXJjaCBwY2xfa2R0cmVlIHBjbF9vY3Ry ZWUgJHtWVEtfTElCUkFSSUVTfSAke09OX05VUkJTX0xJQlJBUklFU30pCisrCisrdGFyZ2V0X2xp bmtfbGlicmFyaWVzKCIke0xJQl9OQU1FfSIgcGNsX2NvbW1vbiBwY2xfc2VhcmNoIHBjbF9rZHRy ZWUgcGNsX29jdHJlZSAke09OX05VUkJTX0xJQlJBUklFU30pCisrCisraWYoVlRLX0ZPVU5EKQor KyAgaWYoJHtWVEtfVkVSU0lPTn0gVkVSU0lPTl9MRVNTIDkuMCkKKysgICAgaW5jbHVkZV9kaXJl Y3RvcmllcyhTWVNURU0gJHtWVEtfSU5DTFVERV9ESVJTfSkKKysgICAgbGlua19kaXJlY3Rvcmll cygke1ZUS19MSUJSQVJZX0RJUlN9KQorKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoIiR7TElC X05BTUV9IiAke1ZUS19MSUJSQVJJRVN9KQorKyAgZWxzZSgpCisrICAgIHRhcmdldF9saW5rX2xp YnJhcmllcygiJHtMSUJfTkFNRX0iIFZUSzo6Q29tbW9uRGF0YU1vZGVsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZUSzo6Q29tbW9uRXhlY3V0aW9uTW9kZWwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpGaWx0ZXJzTW9kZWxp bmcKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpGaWx0ZXJz Q29yZSkKKysgIGVuZGlmKCkKKytlbmRpZigpCisrCisgaWYoUUhVTExfRk9VTkQpCisgICB0YXJn ZXRfbGlua19saWJyYXJpZXMoIiR7TElCX05BTUV9IiAke1FIVUxMX0xJQlJBUklFU30pCisgZW5k aWYoKQorKworIFBDTF9NQUtFX1BLR0NPTkZJRygke0xJQl9OQU1FfSBDT01QT05FTlQgJHtTVUJT WVNfTkFNRX0gREVTQyAke1NVQlNZU19ERVNDfSBQQ0xfREVQUyAke1NVQlNZU19ERVBTfSkKKyAK KyAjIEluc3RhbGwgaW5jbHVkZSBmaWxlcworQEAgLTE4Myw2ICsxOTYsNyBAQCBlbmRpZigpCisg aWYoVlRLX0ZPVU5EIEFORCBOT1QgQU5EUk9JRCkKKyAgIFBDTF9BRERfSU5DTFVERVMoIiR7U1VC U1lTX05BTUV9IiAiJHtTVUJTWVNfTkFNRX0vdnRrX3Ntb290aGluZyIgJHtWVEtfU01PT1RISU5H X0lOQ0xVREVTfSkKKyBlbmRpZigpCisrCisgaWYoV0lOMzIpCisgICB0YXJnZXRfbGlua19saWJy YXJpZXMoIiR7TElCX05BTUV9IiBScGNydDQubGliKQorIGVuZGlmKCkKK2RpZmYgLXVwIC4vc3Vy ZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfdXRpbHMuY3BwLjQyNjIgLi9zdXJmYWNlL3NyYy92 dGtfc21vb3RoaW5nL3Z0a191dGlscy5jcHAKKy0tLSAuL3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhp bmcvdnRrX3V0aWxzLmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAw CisrKysgLi9zdXJmYWNlL3NyYy92dGtfc21vb3RoaW5nL3Z0a191dGlscy5jcHAJMjAyMS0wMi0y MSAyMTozMjo1OC4zMjAxNzY3MjkgLTA1MDAKK0BAIC00OSw2ICs0OSw3IEBACisgI2luY2x1ZGUg PHZ0a1BvbHlEYXRhLmg+CisgI2luY2x1ZGUgPHZ0a1BvaW50RGF0YS5oPgorICNpbmNsdWRlIDx2 dGtGbG9hdEFycmF5Lmg+CisrI2luY2x1ZGUgPHZ0a1Vuc2lnbmVkQ2hhckFycmF5Lmg+CisgCisg Ly8gU3VwcG9ydCBmb3IgVlRLIDcuMSB1cHdhcmRzCisgI2lmZGVmIHZ0a0dlbmVyaWNEYXRhQXJy YXlfaAorQEAgLTE1NSw3ICsxNTYsMTEgQEAgcGNsOjpWVEtVdGlsczo6dnRrMm1lc2ggKGNvbnN0 IHZ0a1NtYXJ0UAorICAgfQorIAorICAgbWVzaC5wb2x5Z29ucy5yZXNpemUgKG5yX3BvbHlnb25z KTsKKysjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKKysgIHZ0a0lkVHlwZSBjb25zdCAqY2VsbF9w b2ludHM7CisrI2Vsc2UKKyAgIHZ0a0lkVHlwZSogY2VsbF9wb2ludHM7CisrI2VuZGlmCisgICB2 dGtJZFR5cGUgbnJfY2VsbF9wb2ludHM7CisgICB2dGtDZWxsQXJyYXkgKiBtZXNoX3BvbHlnb25z ID0gcG9seV9kYXRhLT5HZXRQb2x5cyAoKTsKKyAgIG1lc2hfcG9seWdvbnMtPkluaXRUcmF2ZXJz YWwgKCk7CitkaWZmIC11cCAuL3Rvb2xzL0NNYWtlTGlzdHMudHh0LjQyNjIgLi90b29scy9DTWFr ZUxpc3RzLnR4dAorLS0tIC4vdG9vbHMvQ01ha2VMaXN0cy50eHQuNDI2MgkyMDIwLTA4LTE0IDA4 OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vdG9vbHMvQ01ha2VMaXN0cy50eHQJMjAyMS0w Mi0yMSAyMTozMjo1OC4zMjQxNzY3NDYgLTA1MDAKK0BAIC0yMDAsMTIgKzIwMCwyMCBAQCBlbHNl KCkKKyAKKyAgIFBDTF9BRERfRVhFQ1VUQUJMRShwY2xfb2JqMnBjZCBDT01QT05FTlQgJHtTVUJT WVNfTkFNRX0gU09VUkNFUyBvYmoycGNkLmNwcCkKKyAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhw Y2xfb2JqMnBjZCBwY2xfY29tbW9uIHBjbF9pbykKKysgICNUT0RPOiBVcGRhdGUgd2hlbiBDTUFL RSAzLjEwIGlzIGF2YWlsYWJsZQorKyAgaWYoTk9UICgke1ZUS19WRVJTSU9OfSBWRVJTSU9OX0xF U1MgOS4wKSkKKysgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF9vYmoycGNkIFZUSzo6Rmls dGVyc0NvcmUpCisrICBlbmRpZigpCisgCisgICBQQ0xfQUREX0VYRUNVVEFCTEUocGNsX29iajJw bHkgQ09NUE9ORU5UICR7U1VCU1lTX05BTUV9IFNPVVJDRVMgb2JqMnBseS5jcHApCisgICB0YXJn ZXRfbGlua19saWJyYXJpZXMocGNsX29iajJwbHkgcGNsX2NvbW1vbiBwY2xfaW8pCisgCisgICBQ Q0xfQUREX0VYRUNVVEFCTEUocGNsX3Z0azJwY2QgQ09NUE9ORU5UICR7U1VCU1lTX05BTUV9IFNP VVJDRVMgdnRrMnBjZC5jcHApCisgICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX3Z0azJwY2Qg cGNsX2NvbW1vbiBwY2xfaW8pCisrICAjVE9ETzogVXBkYXRlIHdoZW4gQ01BS0UgMy4xMCBpcyBh dmFpbGFibGUKKysgIGlmKE5PVCAoJHtWVEtfVkVSU0lPTn0gVkVSU0lPTl9MRVNTIDkuMCkpCisr ICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfdnRrMnBjZCBWVEs6OkZpbHRlcnNDb3JlKQor KyAgZW5kaWYoKQorIAorICAgaWYoQlVJTERfdmlzdWFsaXphdGlvbikKKyAgICAgUENMX0FERF9F WEVDVVRBQkxFKHBjbF9vYmpfcmVjX3JhbnNhY19tb2RlbF9vcHBzIENPTVBPTkVOVCAke1NVQlNZ U19OQU1FfSBTT1VSQ0VTIG9ial9yZWNfcmFuc2FjX21vZGVsX29wcHMuY3BwKQorZGlmZiAtdXAg Li90b29scy9tZXNoX3NhbXBsaW5nLmNwcC40MjYyIC4vdG9vbHMvbWVzaF9zYW1wbGluZy5jcHAK Ky0tLSAuL3Rvb2xzL21lc2hfc2FtcGxpbmcuY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4w MDAwMDAwMDAgLTA0MDAKKysrKyAuL3Rvb2xzL21lc2hfc2FtcGxpbmcuY3BwCTIwMjEtMDItMjEg MjE6Mzc6NDkuODgzNDIxNzkyIC0wNTAwCitAQCAtMzYsNiArMzYsNyBAQAorICAqLworIAorICNp bmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi9wY2xfdmlzdWFsaXplci5oPgorKyNpbmNsdWRlIDxw Y2wvdmlzdWFsaXphdGlvbi92dGsvcGNsX3Z0a19jb21wYXRpYmlsaXR5Lmg+CisgI2luY2x1ZGUg PHBjbC9pby9wY2RfaW8uaD4KKyAjaW5jbHVkZSA8cGNsL2lvL3Z0a19saWJfaW8uaD4KKyAjaW5j bHVkZSA8cGNsL2NvbW1vbi90cmFuc2Zvcm1zLmg+CitAQCAtODcsNyArODgsOCBAQCByYW5kUFN1 cmZhY2UgKHZ0a1BvbHlEYXRhICogcG9seWRhdGEsIHN0CisgCisgICBkb3VibGUgQVszXSwgQlsz XSwgQ1szXTsKKyAgIHZ0a0lkVHlwZSBucHRzID0gMDsKKy0gIHZ0a0lkVHlwZSAqcHRJZHMgPSBu dWxscHRyOworKyAgdnRrQ2VsbFB0c1B0ciBwdElkcyA9IG51bGxwdHI7CisrCisgICBwb2x5ZGF0 YS0+R2V0Q2VsbFBvaW50cyAoZWwsIG5wdHMsIHB0SWRzKTsKKyAgIHBvbHlkYXRhLT5HZXRQb2lu dCAocHRJZHNbMF0sIEEpOworICAgcG9seWRhdGEtPkdldFBvaW50IChwdElkc1sxXSwgQik7CitA QCAtMTM4LDcgKzE0MCw4IEBAIHVuaWZvcm1fc2FtcGxpbmcgKHZ0a1NtYXJ0UG9pbnRlcjx2dGtQ b2wKKyAKKyAgIGRvdWJsZSBwMVszXSwgcDJbM10sIHAzWzNdLCB0b3RhbEFyZWEgPSAwOworICAg c3RkOjp2ZWN0b3I8ZG91YmxlPiBjdW11bGF0aXZlQXJlYXMgKGNlbGxzLT5HZXROdW1iZXJPZkNl bGxzICgpLCAwKTsKKy0gIHZ0a0lkVHlwZSBucHRzID0gMCwgKnB0SWRzID0gbnVsbHB0cjsKKysg IHZ0a0lkVHlwZSBucHRzID0gMDsKKysgIHZ0a0NlbGxQdHNQdHIgcHRJZHMgPSBudWxscHRyOwor ICAgc3RkOjpzaXplX3QgY2VsbElkID0gMDsKKyAgIGZvciAoY2VsbHMtPkluaXRUcmF2ZXJzYWwg KCk7IGNlbGxzLT5HZXROZXh0Q2VsbCAobnB0cywgcHRJZHMpOyBjZWxsSWQrKykKKyAgIHsKK2Rp ZmYgLXVwIC4vdG9vbHMvb3Blbm5pX3NhdmVfaW1hZ2UuY3BwLjQyNjIgLi90b29scy9vcGVubmlf c2F2ZV9pbWFnZS5jcHAKKy0tLSAuL3Rvb2xzL29wZW5uaV9zYXZlX2ltYWdlLmNwcC40MjYyCTIw MjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCisrKysgLi90b29scy9vcGVubmlfc2F2 ZV9pbWFnZS5jcHAJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjQxNzY3NDYgLTA1MDAKK0BAIC0zOSw5 ICszOSwxMyBAQAorICNpbmNsdWRlIDxwY2wvaW8vb3Blbm5pX2dyYWJiZXIuaD4KKyAjaW5jbHVk ZSA8cGNsL2lvL29wZW5uaV9jYW1lcmEvb3Blbm5pX2RyaXZlci5oPgorICNpbmNsdWRlIDxwY2wv Y29uc29sZS9wYXJzZS5oPgorLSNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi92dGsuaD4KKyAj aW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24vcGNsX3Zpc3VhbGl6ZXIuaD4KKyAKKysjaW5jbHVk ZSA8dnRrU21hcnRQb2ludGVyLmg+CisrI2luY2x1ZGUgPHZ0a0ltYWdlSW1wb3J0Lmg+CisrI2lu Y2x1ZGUgPHZ0a1RJRkZXcml0ZXIuaD4KKysjaW5jbHVkZSA8dnRrSW1hZ2VGbGlwLmg+CisrCisg I2luY2x1ZGUgImJvb3N0LmgiCisgCisgI2luY2x1ZGUgPG11dGV4PgorZGlmZiAtdXAgLi90b29s cy9wY2Rfdmlld2VyLmNwcC40MjYyIC4vdG9vbHMvcGNkX3ZpZXdlci5jcHAKKy0tLSAuL3Rvb2xz L3BjZF92aWV3ZXIuY3BwLjQyNjIJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjQxNzY3NDYgLTA1MDAK KysrKyAuL3Rvb2xzL3BjZF92aWV3ZXIuY3BwCTIwMjEtMDItMjEgMjE6Mzg6MTAuMDMxNDcxODc1 IC0wNTAwCitAQCAtNDUsNyArNDUsNiBAQAorICNpbmNsdWRlIDxwY2wvaW8vcGNkX2lvLmg+Cisg I2luY2x1ZGUgPGNmbG9hdD4KKyAjaW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24vZWlnZW4uaD4K Ky0vLyNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi92dGsuaD4KKyAjaW5jbHVkZSA8cGNsL3Zp c3VhbGl6YXRpb24vcG9pbnRfY2xvdWRfaGFuZGxlcnMuaD4KKyAjaW5jbHVkZSA8cGNsL3Zpc3Vh bGl6YXRpb24vcGNsX3Zpc3VhbGl6ZXIuaD4KKyAjaW5jbHVkZSA8cGNsL3Zpc3VhbGl6YXRpb24v aW1hZ2Vfdmlld2VyLmg+CitkaWZmIC11cCAuL3Rvb2xzL3ZpcnR1YWxfc2Nhbm5lci5jcHAuNDI2 MiAuL3Rvb2xzL3ZpcnR1YWxfc2Nhbm5lci5jcHAKKy0tLSAuL3Rvb2xzL3ZpcnR1YWxfc2Nhbm5l ci5jcHAuNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vdG9v bHMvdmlydHVhbF9zY2FubmVyLmNwcAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyNDE3Njc0NiAtMDUw MAorQEAgLTU0LDcgKzU0LDEyIEBACisgI2luY2x1ZGUgPHBjbC9tZW1vcnkuaD4gIC8vIGZvciBw Y2w6Om1ha2Vfc2hhcmVkCisgI2luY2x1ZGUgPHBjbC9wb2ludF90eXBlcy5oPgorICNpbmNsdWRl IDxwY2wvY29uc29sZS9wYXJzZS5oPgorLSNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi92dGsu aD4KKysKKysjaW5jbHVkZSA8dnRrR2VuZXJhbFRyYW5zZm9ybS5oPgorKyNpbmNsdWRlIDx2dGtQ bGF0b25pY1NvbGlkU291cmNlLmg+CisrI2luY2x1ZGUgPHZ0a0xvb3BTdWJkaXZpc2lvbkZpbHRl ci5oPgorKyNpbmNsdWRlIDx2dGtDZWxsTG9jYXRvci5oPgorKyNpbmNsdWRlIDx2dGtNYXRoLmg+ CisgCisgI2luY2x1ZGUgPGJvb3N0L2FsZ29yaXRobS9zdHJpbmcuaHBwPiAgLy8gZm9yIGJvb3N0 Ojppc19hbnlfb2YsIGJvb3N0OjpzcGxpdCwgYm9vc3Q6OnRva2VuX2NvbXByZXNzX29uLCBib29z dDo6dHJpbQorICNpbmNsdWRlIDxib29zdC9maWxlc3lzdGVtLmhwcD4gIC8vIGZvciBib29zdDo6 ZmlsZXN5c3RlbTo6Y3JlYXRlX2RpcmVjdG9yaWVzLCBib29zdDo6ZmlsZXN5c3RlbTo6ZXhpc3Rz LCBib29zdDo6ZmlsZXN5c3RlbTo6ZXh0ZW5zaW9uLCBib29zdDo6ZmlsZXN5c3RlbTo6cGF0aAor ZGlmZiAtdXAgLi92aXN1YWxpemF0aW9uL0NNYWtlTGlzdHMudHh0LjQyNjIgLi92aXN1YWxpemF0 aW9uL0NNYWtlTGlzdHMudHh0CistLS0gLi92aXN1YWxpemF0aW9uL0NNYWtlTGlzdHMudHh0LjQy NjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL3Zpc3VhbGl6YXRp b24vQ01ha2VMaXN0cy50eHQJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjExNzY3MzQgLTA1MDAKK0BA IC02Myw2ICs2MywxNCBAQCBpZihWVEtfUkVOREVSSU5HX0JBQ0tFTkRfT1BFTkdMX1ZFUlNJT04K KyAgICkKKyBlbmRpZigpCisgCisraWYoTk9UICgke1ZUS19WRVJTSU9OfSBWRVJTSU9OX0xFU1Mg OS4wKSkKKysgIGlmKE5PVCAoIjske1ZUS19BVkFJTEFCTEVfQ09NUE9ORU5UU307IiBNQVRDSEVT ICI7UmVuZGVyaW5nQ29udGV4dE9wZW5HTDI7IikpCisrICAgIGxpc3QoUkVNT1ZFX0lURU0gc3Jj cworKyAgICAgIHNyYy9wY2xfcGFpbnRlcjJELmNwcAorKyAgICApCisrICBlbmRpZigpICAKKytl bmRpZigpCisrCisgc2V0KGluY3MKKyAgICJpbmNsdWRlL3BjbC8ke1NVQlNZU19OQU1FfS9laWdl bi5oIgorICAgImluY2x1ZGUvcGNsLyR7U1VCU1lTX05BTUV9L2Jvb3N0LmgiCitAQCAtODUsNiAr OTMsNyBAQCBzZXQoaW5jcworICAgImluY2x1ZGUvcGNsLyR7U1VCU1lTX05BTUV9L3Z0ay5oIgor ICAgImluY2x1ZGUvcGNsLyR7U1VCU1lTX05BTUV9L3NpbXBsZV9idWZmZXJfdmlzdWFsaXplci5o IgorICAgImluY2x1ZGUvcGNsLyR7U1VCU1lTX05BTUV9L3BjbF9wbG90dGVyLmgiCisrICAiaW5j bHVkZS9wY2wvJHtTVUJTWVNfTkFNRX0vcXZ0a19jb21wYXRpYmlsaXR5LmgiCisgKQorIAorIHNl dChjb21tb25faW5jcworQEAgLTExNiw2ICsxMjUsNyBAQCBzZXQodnRrX2luY3MKKyAgICJpbmNs dWRlL3BjbC8ke1NVQlNZU19OQU1FfS92dGsvcGNsX2ltYWdlX2NhbnZhc19zb3VyY2VfMmQuaCIK KyAgICJpbmNsdWRlL3BjbC8ke1NVQlNZU19OQU1FfS92dGsvcGNsX2NvbnRleHRfaXRlbS5oIgor ICAgImluY2x1ZGUvcGNsLyR7U1VCU1lTX05BTUV9L3Z0ay92dGtSZW5kZXJXaW5kb3dJbnRlcmFj dG9yRml4LmgiCisrICAiaW5jbHVkZS9wY2wvJHtTVUJTWVNfTkFNRX0vdnRrL3BjbF92dGtfY29t cGF0aWJpbGl0eS5oIgorICkKKyAKKyBpZihWVEtfUkVOREVSSU5HX0JBQ0tFTkRfT1BFTkdMX1ZF UlNJT04gVkVSU0lPTl9MRVNTIDIpCitAQCAtMTI1LDYgKzEzNSwxNSBAQCBpZihWVEtfUkVOREVS SU5HX0JBQ0tFTkRfT1BFTkdMX1ZFUlNJT04KKyAgICkKKyBlbmRpZigpCisgCisraWYoTk9UICgk e1ZUS19WRVJTSU9OfSBWRVJTSU9OX0xFU1MgOS4wKSkKKysgIGlmKE5PVCAoIjske1ZUS19BVkFJ TEFCTEVfQ09NUE9ORU5UU307IiBNQVRDSEVTICI7UmVuZGVyaW5nQ29udGV4dE9wZW5HTDI7Iikp CisrICAgIAorKyAgICBsaXN0KFJFTU9WRV9JVEVNIGluY3MKKysgICAgICAiaW5jbHVkZS9wY2wv JHtTVUJTWVNfTkFNRX0vcGNsX3BhaW50ZXIyRC5oIgorKyAgICApCisrICBlbmRpZigpCisrZW5k aWYoKQorKworICMgb24gYXBwbGUsIGEgd29ya2Fyb3VuZCBpcyB1c2VkIGZvciB0aGUgY29jb2Eg cmVuZGVyIHdpbmRvdyBpbnRlcmFjdG9yCisgaWYoQVBQTEUpCisgICBsaXN0KEFQUEVORCBzcmNz CitAQCAtMTM0LDE0ICsxNTMsNDMgQEAgZW5kaWYoKQorIHNldChMSUJfTkFNRSAicGNsXyR7U1VC U1lTX05BTUV9IikKKyBQQ0xfQUREX0xJQlJBUlkoJHtMSUJfTkFNRX0gQ09NUE9ORU5UICR7U1VC U1lTX05BTUV9IFNPVVJDRVMgJHtzcmNzfSAke2luY3N9ICR7Y29tbW9uX2luY3N9ICR7aW1wbF9p bmNzfSAke2NvbW1vbl9pbXBsX2luY3N9ICR7dnRrX2luY3N9KQorIAorLXRhcmdldF9pbmNsdWRl X2RpcmVjdG9yaWVzKCIke0xJQl9OQU1FfSIgU1lTVEVNIFBVQkxJQyAke1ZUS19JTkNMVURFX0RJ UlN9KQorLQorICMgYXBwbGUgd29ya2Fyb3VuZCAoY29udGludWVkKQorIGlmKEFQUExFKQorICAg dGFyZ2V0X2xpbmtfbGlicmFyaWVzKCIke0xJQl9OQU1FfSIgIi1mcmFtZXdvcmsgQ29jb2EiKQor IGVuZGlmKCkKKyAKKy10YXJnZXRfbGlua19saWJyYXJpZXMoIiR7TElCX05BTUV9IiBwY2xfY29t bW9uIHBjbF9pbyBwY2xfa2R0cmVlICR7VlRLX0xJQlJBUklFU30gJHtPUEVOR0xfTElCUkFSSUVT fSkKKyt0YXJnZXRfbGlua19saWJyYXJpZXMoIiR7TElCX05BTUV9IiBwY2xfY29tbW9uIHBjbF9p byBwY2xfa2R0cmVlICR7T1BFTkdMX0xJQlJBUklFU30pCisrCisraWYoJHtWVEtfVkVSU0lPTn0g VkVSU0lPTl9MRVNTIDkuMCkKKysgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCIke0xJQl9O QU1FfSIgU1lTVEVNIFBVQkxJQyAke1ZUS19JTkNMVURFX0RJUlN9KQorKyAgdGFyZ2V0X2xpbmtf bGlicmFyaWVzKCIke0xJQl9OQU1FfSIgJHtWVEtfTElCUkFSSUVTfSkKKytlbHNlKCkKKysgICNT b21lIGxpYnMgYXJlIHJlZmVyZW5jZWQgdGhyb3VnaCBkZXBlbmRpbmcgb24gSU8KKysgIHRhcmdl dF9saW5rX2xpYnJhcmllcygiJHtMSUJfTkFNRX0iCisrICAgICAgICAgICAgICAgICAgICAgICAg VlRLOjpDaGFydHNDb3JlCisrICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpDb21tb25Db2xv cgorKyAgICAgICAgICAgICAgICAgICAgICAgIFZUSzo6Q29tbW9uRGF0YU1vZGVsCisrICAgICAg ICAgICAgICAgICAgICAgICAgVlRLOjpGaWx0ZXJzRXh0cmFjdGlvbgorKyAgICAgICAgICAgICAg ICAgICAgICAgIFZUSzo6RmlsdGVyc0dlb21ldHJ5CisrICAgICAgICAgICAgICAgICAgICAgICAg VlRLOjpGaWx0ZXJzR2VuZXJhbAorKyAgICAgICAgICAgICAgICAgICAgICAgIFZUSzo6RmlsdGVy c01vZGVsaW5nCisrICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpGaWx0ZXJzU291cmNlcwor KyAgICAgICAgICAgICAgICAgICAgICAgIFZUSzo6SU9JbWFnZQorKyAgICAgICAgICAgICAgICAg ICAgICAgIFZUSzo6SU9QTFkKKysgICAgICAgICAgICAgICAgICAgICAgICBWVEs6OkltYWdpbmdT b3VyY2VzCisrICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpJbnRlcmFjdGlvbkltYWdlCisr ICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpJbnRlcmFjdGlvblN0eWxlCisrICAgICAgICAg ICAgICAgICAgICAgICAgVlRLOjpSZW5kZXJpbmdBbm5vdGF0aW9uCisrICAgICAgICAgICAgICAg ICAgICAgICAgVlRLOjpSZW5kZXJpbmdDb250ZXh0MkQKKysgICAgICAgICAgICAgICAgICAgICAg ICBWVEs6OlJlbmRlcmluZ0ZyZWVUeXBlCisrICAgICAgICAgICAgICAgICAgICAgICAgVlRLOjpS ZW5kZXJpbmdMT0QKKysgICAgICAgICAgICAgICAgICAgICAgICBWVEs6OlJlbmRlcmluZ09wZW5H TDIKKysgICAgICAgICAgICAgICAgICAgICAgICBWVEs6OlZpZXdzQ29udGV4dDJEKQorKyAgICAg ICAgICAgICAgICAgICAgICAgIAorKyAgaWYoIjske1ZUS19BVkFJTEFCTEVfQ09NUE9ORU5UU307 IiBNQVRDSEVTICI7UmVuZGVyaW5nQ29udGV4dE9wZW5HTDI7IikKKysgICAgdGFyZ2V0X2xpbmtf bGlicmFyaWVzKCIke0xJQl9OQU1FfSIgVlRLOjpSZW5kZXJpbmdDb250ZXh0T3BlbkdMMikKKysg IGVuZGlmKCkKKytlbmRpZigpCisgCisgc2V0KEVYVF9ERVBTICIiKQorIGlmKFdJVEhfT1BFTk5J KQorQEAgLTE2Miw2ICsyMTAsNyBAQCBlbmRpZigpCisgaWYoV0lUSF9SU1NESykKKyAgIGxpc3Qo QVBQRU5EIEVYVF9ERVBTIHJzc2RrKQorIGVuZGlmKCkKKysKKyBQQ0xfTUFLRV9QS0dDT05GSUco JHtMSUJfTkFNRX0gQ09NUE9ORU5UICR7U1VCU1lTX05BTUV9IERFU0MgJHtTVUJTWVNfREVTQ30g UENMX0RFUFMgJHtTVUJTWVNfREVQU30gRVhUX0RFUFMgJHtFWFRfREVQU30pCisgCisgIyBJbnN0 YWxsIGluY2x1ZGUgZmlsZXMKK0BAIC0xNzEsNiArMjIwLDEzIEBAIFBDTF9BRERfSU5DTFVERVMo IiR7U1VCU1lTX05BTUV9IiAiJHtTVUIKKyBQQ0xfQUREX0lOQ0xVREVTKCIke1NVQlNZU19OQU1F fSIgIiR7U1VCU1lTX05BTUV9L2NvbW1vbi9pbXBsIiAke2NvbW1vbl9pbXBsX2luY3N9KQorIFBD TF9BRERfSU5DTFVERVMoIiR7U1VCU1lTX05BTUV9IiAiJHtTVUJTWVNfTkFNRX0vdnRrIiAke3Z0 a19pbmNzfSkKKyAKKysjVE9ETzogVXBkYXRlIHdoZW4gQ01BS0UgMy4xMCBpcyBhdmFpbGFibGUK KytpZihOT1QgKCR7VlRLX1ZFUlNJT059IFZFUlNJT05fTEVTUyA5LjApKQorKyAgdnRrX21vZHVs ZV9hdXRvaW5pdChUQVJHRVRTICIke0xJQl9OQU1FfSIgCisrICAgICAgICAgICAgICAgICAgICAg IE1PRFVMRVMgVlRLOjpSZW5kZXJpbmdPcGVuR0wyCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVlRLOjpSZW5kZXJpbmdGcmVlVHlwZSkKKytlbmRpZigpCisrCisgaWYoQlVJTERfVEVT VFMpCisgICBhZGRfc3ViZGlyZWN0b3J5KHRlc3QpCisgZW5kaWYoKQorZGlmZiAtdXAgLi92aXN1 YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vY29tbW9uL2FjdG9yX21hcC5oLjQy NjIgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vY29tbW9uL2FjdG9y X21hcC5oCistLS0gLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vY29t bW9uL2FjdG9yX21hcC5oLjQyNjIJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjExNzY3MzQgLTA1MDAK KysrKyAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9jb21tb24vYWN0 b3JfbWFwLmgJMjAyMS0wMi0yMSAyMTozNjoxMi40NDEwMTY3MDggLTA1MDAKK0BAIC00Myw2ICs0 Myw3IEBACisgCisgI2luY2x1ZGUgPHZ0a0xPREFjdG9yLmg+CisgI2luY2x1ZGUgPHZ0a1NtYXJ0 UG9pbnRlci5oPgorKyNpbmNsdWRlIDx2dGtJZFR5cGVBcnJheS5oPgorIAorICNpbmNsdWRlIDxt YXA+CisgI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CitkaWZmIC11cCAuL3Zpc3VhbGl6YXRpb24v aW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9jb21tb24vcmVuX3dpbl9pbnRlcmFjdF9tYXAuaC40 MjYyIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2NvbW1vbi9yZW5f d2luX2ludGVyYWN0X21hcC5oCistLS0gLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3Vh bGl6YXRpb24vY29tbW9uL3Jlbl93aW5faW50ZXJhY3RfbWFwLmguNDI2MgkyMDIwLTA4LTE0IDA4 OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92 aXN1YWxpemF0aW9uL2NvbW1vbi9yZW5fd2luX2ludGVyYWN0X21hcC5oCTIwMjEtMDItMjEgMjE6 MzI6NTguMzIxMTc2NzM0IC0wNTAwCitAQCAtNDEsOCArNDEsOSBAQAorICNpbmNsdWRlIDxtYXA+ CisgI2luY2x1ZGUgPHN0cmluZz4KKyAKKysjaW5jbHVkZSA8dnRrWFlQbG90QWN0b3IuaD4KKysK KyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgdnRrU21hcnRQb2ludGVyOworLWNsYXNzIHZ0 a1hZUGxvdEFjdG9yOworIGNsYXNzIHZ0a1JlbmRlcmVyOworIGNsYXNzIHZ0a1JlbmRlcldpbmRv dzsKKyBjbGFzcyB2dGtSZW5kZXJXaW5kb3dJbnRlcmFjdG9yOworZGlmZiAtdXAgLi92aXN1YWxp emF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vaW1wbC9wY2xfdmlzdWFsaXplci5ocHAu NDI2MiAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9pbXBsL3BjbF92 aXN1YWxpemVyLmhwcAorLS0tIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0 aW9uL2ltcGwvcGNsX3Zpc3VhbGl6ZXIuaHBwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAw MDAwMDAgLTA0MDAKKysrKyAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlv bi9pbXBsL3BjbF92aXN1YWxpemVyLmhwcAkyMDIxLTAyLTIxIDIxOjM1OjQ1LjkxNTg4OTAwOCAt MDUwMAorQEAgLTYyLDYgKzYyLDcgQEAKKyAjaW5jbHVkZSA8dnRrTE9EQWN0b3IuaD4KKyAjaW5j bHVkZSA8dnRrTGluZVNvdXJjZS5oPgorIAorKyNpbmNsdWRlIDxwY2wvY29tbW9uL3V0aWxzLmg+ IC8vIHBjbDo6dXRpbHM6Omlnbm9yZQorICNpbmNsdWRlIDxwY2wvdmlzdWFsaXphdGlvbi9jb21t b24vc2hhcGVzLmg+CisgCisgLy8gU3VwcG9ydCBmb3IgVlRLIDcuMSB1cHdhcmRzCitAQCAtMjcw LDExICsyNzEsNDAgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpjb252ZQor ICAgICBwb2ludHMtPlNldE51bWJlck9mUG9pbnRzIChucl9wb2ludHMpOworICAgfQorIAorKyNp ZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgorKyAgLy8gVE9ETzogUmVtb3ZlIHdoZW4gVlRLIDYsNyw4 IGlzIHVuc3VwcG9ydGVkCisrICBwY2w6OnV0aWxzOjppZ25vcmUoaW5pdGNlbGxzKTsKKysKKysg IGF1dG8gbnVtT2ZDZWxscyA9IHZlcnRpY2VzLT5HZXROdW1iZXJPZkNlbGxzKCk7CisrCisrICAv LyBJZiB3ZSBoYXZlIGxlc3MgY2VsbHMgdGhhbiBwb2ludHMsIGFkZCBuZXcgY2VsbHMuCisrICBp ZiAobnVtT2ZDZWxscyA8IG5yX3BvaW50cykKKysgIHsKKysgICAgZm9yIChpbnQgaSA9IG51bU9m Q2VsbHM7IGkgPCBucl9wb2ludHM7IGkrKykKKysgICAgeworKyAgICAgIHZlcnRpY2VzLT5JbnNl cnROZXh0Q2VsbCgxKTsKKysgICAgICB2ZXJ0aWNlcy0+SW5zZXJ0Q2VsbFBvaW50KGkpOworKyAg ICB9CisrICB9CisrICAvLyBpZiB3ZSB0b28gbWFueSBjZWxscyB0aGFuIHBvaW50cywgc2V0IHNp emUgKGRvZXNuJ3QgZnJlZSBleGNlc3NpdmUgbWVtb3J5KQorKyAgZWxzZSBpZiAobnVtT2ZDZWxs cyA+IG5yX3BvaW50cykKKysgIHsKKysgICAgdmVydGljZXMtPlJlc2l6ZUV4YWN0KG5yX3BvaW50 cywgbnJfcG9pbnRzKTsKKysgIH0KKysKKysgIHBvbHlkYXRhLT5TZXRQb2ludHMocG9pbnRzKTsK KysgIHBvbHlkYXRhLT5TZXRWZXJ0cyh2ZXJ0aWNlcyk7CisrCisrI2Vsc2UKKyAgIHZ0a1NtYXJ0 UG9pbnRlcjx2dGtJZFR5cGVBcnJheT4gY2VsbHMgPSB2ZXJ0aWNlcy0+R2V0RGF0YSAoKTsKKyAg IHVwZGF0ZUNlbGxzIChjZWxscywgaW5pdGNlbGxzLCBucl9wb2ludHMpOworIAorICAgLy8gU2V0 IHRoZSBjZWxscyBhbmQgdGhlIHZlcnRpY2VzCisgICB2ZXJ0aWNlcy0+U2V0Q2VsbHMgKG5yX3Bv aW50cywgY2VsbHMpOworKworKyAgLy8gU2V0IHRoZSBjZWxsIGNvdW50IGV4cGxpY2l0bHkgYXMg dGhlIGFycmF5IGRvZXNuJ3QgZ2V0IG1vZGlmaWVkIGVub3VnaCBzbyB0aGUgYWJvdmUgbWV0aG9k IHVwZGF0ZXMgYWNjb3JkaW5nbHkuIFNlZSAjNDAwMSBhbmQgIzM0NTIKKysgIHZlcnRpY2VzLT5T ZXROdW1iZXJPZkNlbGxzKG5yX3BvaW50cyk7CisrI2VuZGlmCisgfQorIAorIC8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK0BAIC0zMDQsMTAgKzMzNCwzNiBAQCBwY2w6OnZp c3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmNvbnZlCisgICBpZiAoIXZlcnRpY2VzKQorICAg ICB2ZXJ0aWNlcyA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtDZWxsQXJyYXk+OjpOZXcgKCk7CisgCisr I2lmZGVmIFZUS19DRUxMX0FSUkFZX1YyCisrICAvLyBUT0RPOiBSZW1vdmUgd2hlbiBWVEsgNiw3 LDggaXMgdW5zdXBwb3J0ZWQKKysgIHBjbDo6dXRpbHM6Omlnbm9yZShpbml0Y2VsbHMpOworKwor KyAgYXV0byBudW1PZkNlbGxzID0gdmVydGljZXMtPkdldE51bWJlck9mQ2VsbHMoKTsKKysKKysg IC8vIElmIHdlIGhhdmUgbGVzcyBjZWxscyB0aGFuIHBvaW50cywgYWRkIG5ldyBjZWxscy4KKysg IGlmIChudW1PZkNlbGxzIDwgbnJfcG9pbnRzKQorKyAgeworKyAgICBmb3IgKGludCBpID0gbnVt T2ZDZWxsczsgaSA8IG5yX3BvaW50czsgaSsrKQorKyAgICB7CisrICAgICAgdmVydGljZXMtPklu c2VydE5leHRDZWxsKDEpOworKyAgICAgIHZlcnRpY2VzLT5JbnNlcnRDZWxsUG9pbnQoaSk7Cisr ICAgIH0KKysgIH0KKysgIC8vIGlmIHdlIHRvbyBtYW55IGNlbGxzIHRoYW4gcG9pbnRzLCBzZXQg c2l6ZSAoZG9lc24ndCBmcmVlIGV4Y2Vzc2l2ZSBtZW1vcnkpCisrICBlbHNlIGlmIChudW1PZkNl bGxzID4gbnJfcG9pbnRzKQorKyAgeworKyAgICB2ZXJ0aWNlcy0+UmVzaXplRXhhY3QobnJfcG9p bnRzLCBucl9wb2ludHMpOworKyAgfQorKworKyAgcG9seWRhdGEtPlNldFBvaW50cyhwb2ludHMp OworKyAgcG9seWRhdGEtPlNldFZlcnRzKHZlcnRpY2VzKTsKKysKKysjZWxzZQorICAgdnRrU21h cnRQb2ludGVyPHZ0a0lkVHlwZUFycmF5PiBjZWxscyA9IHZlcnRpY2VzLT5HZXREYXRhICgpOwor ICAgdXBkYXRlQ2VsbHMgKGNlbGxzLCBpbml0Y2VsbHMsIG5yX3BvaW50cyk7CisgICAvLyBTZXQg dGhlIGNlbGxzIGFuZCB0aGUgdmVydGljZXMKKyAgIHZlcnRpY2VzLT5TZXRDZWxscyAobnJfcG9p bnRzLCBjZWxscyk7CisrI2VuZGlmCisgfQorIAorIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCitAQCAtMTMwNCw3ICsxMzYwLDYgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xW aXN1YWxpemVyOjpmcm9tSAorICAgdnRrU21hcnRQb2ludGVyPHZ0a0lkVHlwZUFycmF5PiBpbml0 Y2VsbHM7CisgICAvLyBDb252ZXJ0IHRoZSBQb2ludENsb3VkIHRvIFZUSyBQb2x5RGF0YQorICAg Y29udmVydFBvaW50Q2xvdWRUb1ZUS1BvbHlEYXRhPFBvaW50VD4gKGdlb21ldHJ5X2hhbmRsZXIs IHBvbHlkYXRhLCBpbml0Y2VsbHMpOworLSAgLy8gdXNlIHRoZSBnaXZlbiBnZW9tZXRyeSBoYW5k bGVyCisgCisgICAvLyBHZXQgdGhlIGNvbG9ycyBmcm9tIHRoZSBoYW5kbGVyCisgICBib29sIGhh c19jb2xvcnMgPSBmYWxzZTsKK0BAIC0xNzAxLDMyICsxNzU2LDkgQEAgcGNsOjp2aXN1YWxpemF0 aW9uOjpQQ0xWaXN1YWxpemVyOjphZGRQbworICAgeworICAgICAvLyBDcmVhdGUgcG9seXMgZnJv bSBwb2x5TWVzaC5wb2x5Z29ucworICAgICB2dGtTbWFydFBvaW50ZXI8dnRrQ2VsbEFycmF5PiBj ZWxsX2FycmF5ID0gdnRrU21hcnRQb2ludGVyPHZ0a0NlbGxBcnJheT46Ok5ldyAoKTsKKy0gICAg dnRrSWRUeXBlICpjZWxsID0gY2VsbF9hcnJheS0+V3JpdGVQb2ludGVyICh2ZXJ0aWNlcy5zaXpl ICgpLCB2ZXJ0aWNlcy5zaXplICgpICogKG1heF9zaXplX29mX3BvbHlnb24gKyAxKSk7CistICAg IGludCBpZHggPSAwOworLSAgICBpZiAoIWxvb2t1cC5lbXB0eSAoKSkKKy0gICAgeworLSAgICAg IGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCB2ZXJ0aWNlcy5zaXplICgpOyArK2ksICsraWR4 KQorLSAgICAgIHsKKy0gICAgICAgIHN0ZDo6c2l6ZV90IG5fcG9pbnRzID0gdmVydGljZXNbaV0u dmVydGljZXMuc2l6ZSAoKTsKKy0gICAgICAgICpjZWxsKysgPSBuX3BvaW50czsKKy0gICAgICAg IC8vY2VsbF9hcnJheS0+SW5zZXJ0TmV4dENlbGwgKG5fcG9pbnRzKTsKKy0gICAgICAgIGZvciAo c3RkOjpzaXplX3QgaiA9IDA7IGogPCBuX3BvaW50czsgaisrLCArK2lkeCkKKy0gICAgICAgICAg KmNlbGwrKyA9IGxvb2t1cFt2ZXJ0aWNlc1tpXS52ZXJ0aWNlc1tqXV07CistICAgICAgICAgIC8v Y2VsbF9hcnJheS0+SW5zZXJ0Q2VsbFBvaW50IChsb29rdXBbdmVydGljZXNbaV0udmVydGljZXNb al1dKTsKKy0gICAgICB9CistICAgIH0KKy0gICAgZWxzZQorLSAgICB7CistICAgICAgZm9yIChz dGQ6OnNpemVfdCBpID0gMDsgaSA8IHZlcnRpY2VzLnNpemUgKCk7ICsraSwgKytpZHgpCistICAg ICAgeworLSAgICAgICAgc3RkOjpzaXplX3Qgbl9wb2ludHMgPSB2ZXJ0aWNlc1tpXS52ZXJ0aWNl cy5zaXplICgpOworLSAgICAgICAgKmNlbGwrKyA9IG5fcG9pbnRzOworLSAgICAgICAgLy9jZWxs X2FycmF5LT5JbnNlcnROZXh0Q2VsbCAobl9wb2ludHMpOworLSAgICAgICAgZm9yIChzdGQ6OnNp emVfdCBqID0gMDsgaiA8IG5fcG9pbnRzOyBqKyssICsraWR4KQorLSAgICAgICAgICAqY2VsbCsr ID0gdmVydGljZXNbaV0udmVydGljZXNbal07CistICAgICAgICAgIC8vY2VsbF9hcnJheS0+SW5z ZXJ0Q2VsbFBvaW50ICh2ZXJ0aWNlc1tpXS52ZXJ0aWNlc1tqXSk7CistICAgICAgfQorLSAgICB9 CisrICAgIAorKyAgICBjb25zdCBhdXRvIGlkeCA9IGRldGFpbHM6OmZpbGxDZWxscyhsb29rdXAs dmVydGljZXMsY2VsbF9hcnJheSwgbWF4X3NpemVfb2ZfcG9seWdvbik7CisrCisgICAgIHZ0a1Nt YXJ0UG9pbnRlcjx2dGtQb2x5RGF0YT4gcG9seWRhdGE7CisgICAgIGFsbG9jVnRrUG9seURhdGEg KHBvbHlkYXRhKTsKKyAgICAgY2VsbF9hcnJheS0+R2V0RGF0YSAoKS0+U2V0TnVtYmVyT2ZWYWx1 ZXMgKGlkeCk7CitAQCAtMTg3OCwyOCArMTkxMCw5IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENM VmlzdWFsaXplcjo6dXBkYXQKKyAKKyAgIC8vIFVwZGF0ZSB0aGUgY2VsbHMKKyAgIGNlbGxzID0g dnRrU21hcnRQb2ludGVyPHZ0a0NlbGxBcnJheT46Ok5ldyAoKTsKKy0gIHZ0a0lkVHlwZSAqY2Vs bCA9IGNlbGxzLT5Xcml0ZVBvaW50ZXIgKHZlcnRzLnNpemUgKCksIHZlcnRzLnNpemUgKCkgKiAo bWF4X3NpemVfb2ZfcG9seWdvbiArIDEpKTsKKy0gIGludCBpZHggPSAwOworLSAgaWYgKCFsb29r dXAuZW1wdHkgKCkpCistICB7CistICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCB2ZXJ0 cy5zaXplICgpOyArK2ksICsraWR4KQorLSAgICB7CistICAgICAgc3RkOjpzaXplX3Qgbl9wb2lu dHMgPSB2ZXJ0c1tpXS52ZXJ0aWNlcy5zaXplICgpOworLSAgICAgICpjZWxsKysgPSBuX3BvaW50 czsKKy0gICAgICBmb3IgKHN0ZDo6c2l6ZV90IGogPSAwOyBqIDwgbl9wb2ludHM7IGorKywgY2Vs bCsrLCArK2lkeCkKKy0gICAgICAgICpjZWxsID0gbG9va3VwW3ZlcnRzW2ldLnZlcnRpY2VzW2pd XTsKKy0gICAgfQorLSAgfQorLSAgZWxzZQorLSAgeworLSAgICBmb3IgKHN0ZDo6c2l6ZV90IGkg PSAwOyBpIDwgdmVydHMuc2l6ZSAoKTsgKytpLCArK2lkeCkKKy0gICAgeworLSAgICAgIHN0ZDo6 c2l6ZV90IG5fcG9pbnRzID0gdmVydHNbaV0udmVydGljZXMuc2l6ZSAoKTsKKy0gICAgICAqY2Vs bCsrID0gbl9wb2ludHM7CistICAgICAgZm9yIChzdGQ6OnNpemVfdCBqID0gMDsgaiA8IG5fcG9p bnRzOyBqKyssIGNlbGwrKywgKytpZHgpCistICAgICAgICAqY2VsbCA9IHZlcnRzW2ldLnZlcnRp Y2VzW2pdOworLSAgICB9CistICB9CisrICAKKysgIGNvbnN0IGF1dG8gaWR4ID0gZGV0YWlsczo6 ZmlsbENlbGxzKGxvb2t1cCwgdmVydHMsIGNlbGxzLCBtYXhfc2l6ZV9vZl9wb2x5Z29uKTsKKysK KyAgIGNlbGxzLT5HZXREYXRhICgpLT5TZXROdW1iZXJPZlZhbHVlcyAoaWR4KTsKKyAgIGNlbGxz LT5TcXVlZXplICgpOworICAgLy8gU2V0IHRoZSB0aGUgdmVydGljZXMKK2RpZmYgLXVwIC4vdmlz dWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2ludGVyYWN0b3Jfc3R5bGUuaC40 MjYyIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2ludGVyYWN0b3Jf c3R5bGUuaAorLS0tIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2lu dGVyYWN0b3Jfc3R5bGUuaC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAw CisrKysgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vaW50ZXJhY3Rv cl9zdHlsZS5oCTIwMjEtMDItMjEgMjE6MzI6NTguMzIyMTc2NzM4IC0wNTAwCitAQCAtNTEsNiAr NTEsOCBAQAorICNpbmNsdWRlIDxib29zdC9zaWduYWxzMi9zaWduYWwuaHBwPgorICNlbmRpZgor ICNpbmNsdWRlIDx2dGtJbnRlcmFjdG9yU3R5bGVSdWJiZXJCYW5kUGljay5oPgorKyNpbmNsdWRl IDx2dGtSZW5kZXJlckNvbGxlY3Rpb24uaD4KKysjaW5jbHVkZSA8dnRrUmVuZGVyV2luZG93Lmg+ CisgCisgY2xhc3MgdnRrUmVuZGVyZXJDb2xsZWN0aW9uOworIGNsYXNzIHZ0a0xlZ2VuZFNjYWxl QWN0b3I7CitkaWZmIC11cCAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlv bi9wY2xfcGxvdHRlci5oLjQyNjIgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6 YXRpb24vcGNsX3Bsb3R0ZXIuaAorLS0tIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1 YWxpemF0aW9uL3BjbF9wbG90dGVyLmguNDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAw MCAtMDQwMAorKysrIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL3Bj bF9wbG90dGVyLmgJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjIxNzY3MzggLTA1MDAKK0BAIC00OSwx NiArNDksMTYgQEAKKyAjaW5jbHVkZSA8cGNsL3BvaW50X2Nsb3VkLmg+CisgI2luY2x1ZGUgPHBj bC9jb21tb24vaW8uaD4KKyAKKy1jbGFzcyB2dGtSZW5kZXJXaW5kb3c7CistY2xhc3MgdnRrUmVu ZGVyV2luZG93SW50ZXJhY3RvcjsKKy1jbGFzcyB2dGtDb250ZXh0VmlldzsKKy1jbGFzcyB2dGtD aGFydFhZOworLWNsYXNzIHZ0a0NvbG9yU2VyaWVzOworLQorKyNpbmNsdWRlIDx2dGtDb250ZXh0 Vmlldy5oPgorKyNpbmNsdWRlIDx2dGtDaGFydFhZLmg+CisrI2luY2x1ZGUgPHZ0a0NvbG9yU2Vy aWVzLmg+CisgI2luY2x1ZGUgPHZ0a1NtYXJ0UG9pbnRlci5oPgorICNpbmNsdWRlIDx2dGtDb21t YW5kLmg+CisgI2luY2x1ZGUgPHZ0a0NoYXJ0Lmg+CisgCisrY2xhc3MgdnRrUmVuZGVyV2luZG93 OworK2NsYXNzIHZ0a1JlbmRlcldpbmRvd0ludGVyYWN0b3I7CisrCisgbmFtZXNwYWNlIHBjbAor IHsKKyAgIG5hbWVzcGFjZSB2aXN1YWxpemF0aW9uCitkaWZmIC11cCAuL3Zpc3VhbGl6YXRpb24v aW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9wY2xfdmlzdWFsaXplci5oLjQyNjIgLi92aXN1YWxp emF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vcGNsX3Zpc3VhbGl6ZXIuaAorLS0tIC4v dmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL3BjbF92aXN1YWxpemVyLmgu NDI2MgkyMDIwLTA4LTE0IDA4OjIzOjAzLjAwMDAwMDAwMCAtMDQwMAorKysrIC4vdmlzdWFsaXph dGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL3BjbF92aXN1YWxpemVyLmgJMjAyMS0wMi0y MSAyMTozMjo1OC4zMjIxNzY3MzggLTA1MDAKK0BAIC01MywxNCArNTMsMTUgQEAKKyAjaW5jbHVk ZSA8cGNsL3Zpc3VhbGl6YXRpb24vYXJlYV9waWNraW5nX2V2ZW50Lmg+CisgI2luY2x1ZGUgPHBj bC92aXN1YWxpemF0aW9uL2ludGVyYWN0b3Jfc3R5bGUuaD4KKyAKKysjaW5jbHVkZSA8dnRrT3Jp ZW50YXRpb25NYXJrZXJXaWRnZXQuaD4KKysjaW5jbHVkZSA8dnRrUmVuZGVyV2luZG93SW50ZXJh Y3Rvci5oPgorKworIC8vIFZUSyBpbmNsdWRlcworIGNsYXNzIHZ0a1BvbHlEYXRhOworIGNsYXNz IHZ0a1RleHRBY3RvcjsKKyBjbGFzcyB2dGtSZW5kZXJXaW5kb3c7CistY2xhc3MgdnRrT3JpZW50 YXRpb25NYXJrZXJXaWRnZXQ7CisgY2xhc3MgdnRrQXBwZW5kUG9seURhdGE7CisgY2xhc3MgdnRr UmVuZGVyV2luZG93OworLWNsYXNzIHZ0a1JlbmRlcldpbmRvd0ludGVyYWN0b3I7CisgY2xhc3Mg dnRrVHJhbnNmb3JtOworIGNsYXNzIHZ0a0ludGVyYWN0b3JTdHlsZTsKKyBjbGFzcyB2dGtMT0RB Y3RvcjsKK0BAIC02OCw2ICs2OSw3IEBAIGNsYXNzIHZ0a1Byb3A7CisgY2xhc3MgdnRrQWN0b3I7 CisgY2xhc3MgdnRrRGF0YVNldDsKKyBjbGFzcyB2dGtVbnN0cnVjdHVyZWRHcmlkOworK2NsYXNz IHZ0a0NlbGxBcnJheTsKKyAKKyBuYW1lc3BhY2UgcGNsCisgeworQEAgLTc2LDYgKzc4LDExIEBA IG5hbWVzcGFjZSBwY2wKKyAKKyAgIG5hbWVzcGFjZSB2aXN1YWxpemF0aW9uCisgICB7CisrICAg IG5hbWVzcGFjZSBkZXRhaWxzCisrICAgIHsKKysgICAgICB2dGtJZFR5cGUgZmlsbENlbGxzKHN0 ZDo6dmVjdG9yPGludD4mIGxvb2t1cCwgY29uc3Qgc3RkOjp2ZWN0b3I8cGNsOjpWZXJ0aWNlcz4m IHZlcnRpY2VzLCB2dGtTbWFydFBvaW50ZXI8dnRrQ2VsbEFycmF5PiBjZWxsX2FycmF5LCBpbnQg bWF4X3NpemVfb2ZfcG9seWdvbik7CisrICAgIH0KKysKKyAgICAgLyoqIFxicmllZiBQQ0wgVmlz dWFsaXplciBtYWluIGNsYXNzLgorICAgICAgICogXGF1dGhvciBSYWR1IEIuIFJ1c3UKKyAgICAg ICAqIFxpbmdyb3VwIHZpc3VhbGl6YXRpb24KK0BAIC0yMTcwLDcgKzIxNzcsNyBAQCBuYW1lc3Bh Y2UgcGNsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0a1NtYXJ0 UG9pbnRlcjx2dGtQb2x5RGF0YT4gJnBvbHlkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2dGtTbWFydFBvaW50ZXI8dnRrSWRUeXBlQXJyYXk+ICZpbml0Y2Vs bHMpOworIAorLSAgICAgICAgLyoqIFxicmllZiBDb252ZXJ0cyBhIFBDTCB0ZW1wbGF0ZWQgUG9p bnRDbG91ZCBvYmplY3QgdG8gYSB2dGsgcG9seWRhdGEgb2JqZWN0LgorKyAgICAgICAgLyoqIFxi cmllZiBDb252ZXJ0cyBhIFBDTCBvYmplY3QgdG8gYSB2dGsgcG9seWRhdGEgb2JqZWN0LgorICAg ICAgICAgICAqIFxwYXJhbVtpbl0gZ2VvbWV0cnlfaGFuZGxlciB0aGUgZ2VvbWV0cnkgaGFuZGxl ciBvYmplY3QgdXNlZCB0byBleHRyYWN0IHRoZSBYWVogZGF0YQorICAgICAgICAgICAqIFxwYXJh bVtvdXRdIHBvbHlkYXRhIHRoZSByZXN1bHRhbnQgcG9seWRhdGEgY29udGFpbmluZyB0aGUgY2xv dWQKKyAgICAgICAgICAgKiBccGFyYW1bb3V0XSBpbml0Y2VsbHMgYSBsaXN0IG9mIGNlbGwgaW5k aWNlcyB1c2VkIGZvciB0aGUgY29udmVyc2lvbi4gVGhpcyBjYW4gYmUgc2V0IG9uY2UgYW5kIHRo ZW4gcGFzc2VkCitkaWZmIC11cCAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXph dGlvbi9xdnRrX2NvbXBhdGliaWxpdHkuaC40MjYyIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3Bj bC92aXN1YWxpemF0aW9uL3F2dGtfY29tcGF0aWJpbGl0eS5oCistLS0gLi92aXN1YWxpemF0aW9u L2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vcXZ0a19jb21wYXRpYmlsaXR5LmguNDI2MgkyMDIx LTAyLTIxIDIxOjMyOjU4LjMxODE3NjcyMSAtMDUwMAorKysrIC4vdmlzdWFsaXphdGlvbi9pbmNs dWRlL3BjbC92aXN1YWxpemF0aW9uL3F2dGtfY29tcGF0aWJpbGl0eS5oCTIwMjEtMDItMjEgMjE6 MzI6NTguMzIyMTc2NzM4IC0wNTAwCitAQCAtMCwwICsxLDUxIEBACisrLyoKKysgKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCisrICoKKysgKiAgUG9pbnQgQ2xvdWQgTGli cmFyeSAoUENMKSAtIHd3dy5wb2ludGNsb3Vkcy5vcmcKKysgKiAgQ29weXJpZ2h0IChjKSAyMDIw LSwgT3BlbiBQZXJjZXB0aW9uCisrICoKKysgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZAorKyAqLwor KyNpbmNsdWRlIDxwY2wvcGNsX21hY3Jvcy5oPgorKyNpbmNsdWRlIDxwY2wvcGNsX2NvbmZpZy5o PgorKworKyNpZiBIQVZFX1FWVEsKKysjaW5jbHVkZSA8dnRrVmVyc2lvbi5oPgorKyNpbmNsdWRl IDx2dGtSZW5kZXJXaW5kb3cuaD4KKysKKysjaWYgVlRLX01BSk9SX1ZFUlNJT04gPiA4CisrICAj aW5jbHVkZSA8UVZUS09wZW5HTE5hdGl2ZVdpZGdldC5oPgorKyAgdXNpbmcgUENMUVZUS1dpZGdl dCA9IFFWVEtPcGVuR0xOYXRpdmVXaWRnZXQ7CisrI2Vsc2UgCisrICAjaW5jbHVkZSA8UVZUS1dp ZGdldC5oPgorKyAgdXNpbmcgUENMUVZUS1dpZGdldCA9IFFWVEtXaWRnZXQ7CisrI2VuZGlmIC8v IFZUS19NQUpPUl9WRVJTSU9OID4gOAorKworKworK2lubGluZSBhdXRvIFBDTF9FWFBPUlRTIGdl dEludGVyYWN0b3JDb21wYXQoUENMUVZUS1dpZGdldCYgcXZ0aykgeworKyNpZiBWVEtfTUFKT1Jf VkVSU0lPTiA+IDgKKysgIHJldHVybiBxdnRrLmludGVyYWN0b3IoKTsKKysjZWxzZQorKyAgcmV0 dXJuIHF2dGsuR2V0SW50ZXJhY3RvcigpOworKyNlbmRpZiAvLyBWVEtfTUFKT1JfVkVSU0lPTiA+ IDgKKyt9CisrCisraW5saW5lIGF1dG8gUENMX0VYUE9SVFMgZ2V0UmVuZGVyV2luZG93Q29tcGF0 KFBDTFFWVEtXaWRnZXQmIHF2dGspIHsKKysjaWYgVlRLX01BSk9SX1ZFUlNJT04gPiA4CisrICBy ZXR1cm4gcXZ0ay5yZW5kZXJXaW5kb3coKTsKKysjZWxzZQorKyAgcmV0dXJuIHF2dGsuR2V0UmVu ZGVyV2luZG93KCk7CisrI2VuZGlmIC8vIFZUS19NQUpPUl9WRVJTSU9OID4gOAorK30KKysKKytp bmxpbmUgYXV0byBQQ0xfRVhQT1JUUyBzZXRSZW5kZXJXaW5kb3dDb21wYXQoUENMUVZUS1dpZGdl dCYgcXZ0aywgdnRrUmVuZGVyV2luZG93JiB3aW5kb3cpIHsKKysjaWYgVlRLX01BSk9SX1ZFUlNJ T04gPiA4CisrICByZXR1cm4gcXZ0ay5zZXRSZW5kZXJXaW5kb3coJndpbmRvdyk7CisrI2Vsc2UK KysgIHJldHVybiBxdnRrLlNldFJlbmRlcldpbmRvdygmd2luZG93KTsKKysjZW5kaWYgLy8gVlRL X01BSk9SX1ZFUlNJT04gPiA4CisrfQorKworKyNlbHNlCisrI2Vycm9yIFBDTCBpcyBub3QgY29t cGlsZWQgd2l0aCBRVlRLLgorKyNlbmRpZgorZGlmZiAtdXAgLi92aXN1YWxpemF0aW9uL2luY2x1 ZGUvcGNsL3Zpc3VhbGl6YXRpb24vdnRrLmguNDI2MiAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9w Y2wvdmlzdWFsaXphdGlvbi92dGsuaAorLS0tIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92 aXN1YWxpemF0aW9uL3Z0ay5oLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0 MDAKKysrKyAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi92dGsuaAky MDIxLTAyLTIxIDIxOjMyOjU4LjMyMjE3NjczOCAtMDUwMAorQEAgLTEsMTcyICsxLDEwIEBACisg LyoKKy0gKiBTb2Z0d2FyZSBMaWNlbnNlIEFncmVlbWVudCAoQlNEIExpY2Vuc2UpCisrICogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorICAqCisgICogIFBvaW50IENsb3Vk IExpYnJhcnkgKFBDTCkgLSB3d3cucG9pbnRjbG91ZHMub3JnCistICogIENvcHlyaWdodCAoYykg MjAwOS0yMDEyLCBXaWxsb3cgR2FyYWdlLCBJbmMuCistICogIENvcHlyaWdodCAoYykgMjAxMi0s IE9wZW4gUGVyY2VwdGlvbiwgSW5jLgorLSAqCistICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuCist ICoKKy0gKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0CistICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLSAqICBhcmUgbWV0OgorLSAqCist ICogICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv dmUgY29weXJpZ2h0CistICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy0gKiAgICogUmVkaXN0cmlidXRpb25zIGluIGJp bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLSAqICAgICBjb3B5cmlnaHQgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLSAqICAgICBk aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQKKy0gKiAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLSAqICAgKiBOZWl0aGVyIHRo ZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyKHMpIG5vciB0aGUgbmFtZXMgb2YgaXRzCist ICogICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv ZHVjdHMgZGVyaXZlZAorLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCistICoKKy0gKiAgVEhJUyBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLSAqICAi QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVAorLSAqICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUworLSAqICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLSAqICBDT1BZUklHSFQgT1dORVIg T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCistICog IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT IChJTkNMVURJTkcsCistICogIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKy0gKiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLSAqICBDQVVTRUQgQU5E IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QK Ky0gKiAgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ U0UpIEFSSVNJTkcgSU4KKy0gKiAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCistICogIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN QUdFLgorLSAqCistICogJElkJAorKyAqICBDb3B5cmlnaHQgKGMpIDIwMjAtLCBPcGVuIFBlcmNl cHRpb24KKyAgKgorKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkCisgICovCisgCistI3ByYWdtYSBv bmNlCistCistI2lmIGRlZmluZWQgX19HTlVDX18KKy0jcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVy CistI2lmZGVmIF9fREVQUkVDQVRFRAorLSN1bmRlZiBfX0RFUFJFQ0FURUQKKy0jZGVmaW5lIF9f REVQUkVDQVRFRF9ESVNBQkxFRF9fCistI2VuZGlmCistI2VuZGlmCistCistI2luY2x1ZGUgPHZ0 a1ZlcnNpb24uaD4KKy0jaW5jbHVkZSA8dnRrQXBwZW5kUG9seURhdGEuaD4KKy0jaW5jbHVkZSA8 dnRrQXNzZW1ibHlQYXRoLmg+CistI2luY2x1ZGUgPHZ0a0F4ZXNBY3Rvci5oPgorLSNpbmNsdWRl IDx2dGtBY3Rvci5oPgorLSNpbmNsdWRlIDx2dGtCb3hSZXByZXNlbnRhdGlvbi5oPgorLSNpbmNs dWRlIDx2dGtCb3hXaWRnZXQuaD4KKy0jaW5jbHVkZSA8dnRrQm94V2lkZ2V0Mi5oPgorLSNpbmNs dWRlIDx2dGtDZWxsRGF0YS5oPgorLSNpbmNsdWRlIDx2dGtNYXRoLmg+CistI2luY2x1ZGUgPHZ0 a0xvb3BTdWJkaXZpc2lvbkZpbHRlci5oPgorLSNpbmNsdWRlIDx2dGtMaW5lU291cmNlLmg+Cist I2luY2x1ZGUgPHZ0a0xlZ2VuZFNjYWxlQWN0b3IuaD4KKy0jaW5jbHVkZSA8dnRrTGlnaHRLaXQu aD4KKy0jaW5jbHVkZSA8dnRrUGxhdG9uaWNTb2xpZFNvdXJjZS5oPgorLSNpbmNsdWRlIDx2dGtQ cm9wUGlja2VyLmg+CistI2luY2x1ZGUgPHZ0a0dlbmVyYWxUcmFuc2Zvcm0uaD4KKy0jaW5jbHVk ZSA8dnRrU21hcnRQb2ludGVyLmg+CistI2luY2x1ZGUgPHZ0a0RhdGFTZXQuaD4KKy0jaW5jbHVk ZSA8dnRrRGF0YVNldFN1cmZhY2VGaWx0ZXIuaD4KKy0jaW5jbHVkZSA8dnRrRXhlY3V0aXZlLmg+ CistI2luY2x1ZGUgPHZ0a1BvbHlnb24uaD4KKy0jaW5jbHVkZSA8dnRrUG9pbnRQaWNrZXIuaD4K Ky0jaW5jbHVkZSA8dnRrVW5zdHJ1Y3R1cmVkR3JpZC5oPgorLSNpbmNsdWRlIDx2dGtDb25lU291 cmNlLmg+CistI2luY2x1ZGUgPHZ0a0Rpc2tTb3VyY2UuaD4KKy0jaW5jbHVkZSA8dnRrUGxhbmVT b3VyY2UuaD4KKy0jaW5jbHVkZSA8dnRrU3BoZXJlU291cmNlLmg+CistI2luY2x1ZGUgPHZ0a0lk ZW50aXR5VHJhbnNmb3JtLmg+CistI2luY2x1ZGUgPHZ0a1RyYW5zZm9ybS5oPgorLSNpbmNsdWRl IDx2dGtUcmFuc2Zvcm1Qb2x5RGF0YUZpbHRlci5oPgorLSNpbmNsdWRlIDx2dGtUdWJlRmlsdGVy Lmg+CistI2luY2x1ZGUgPHZ0a0N1YmVTb3VyY2UuaD4KKy0jaW5jbHVkZSA8dnRrQXhlcy5oPgor LSNpbmNsdWRlIDx2dGtGbG9hdEFycmF5Lmg+CistI2luY2x1ZGUgPHZ0a1BvaW50RGF0YS5oPgor LSNpbmNsdWRlIDx2dGtQb2x5RGF0YS5oPgorLSNpbmNsdWRlIDx2dGtQb2x5RGF0YVJlYWRlci5o PgorLSNpbmNsdWRlIDx2dGtQb2x5RGF0YU1hcHBlci5oPgorLSNpbmNsdWRlIDx2dGtEYXRhU2V0 TWFwcGVyLmg+CistI2luY2x1ZGUgPHZ0a0NlbGxBcnJheS5oPgorLSNpbmNsdWRlIDx2dGtDb21t YW5kLmg+CistI2luY2x1ZGUgPHZ0a0NlbGxMb2NhdG9yLmg+CistI2luY2x1ZGUgPHZ0a1BMWVJl YWRlci5oPgorLSNpbmNsdWRlIDx2dGtUcmFuc2Zvcm1GaWx0ZXIuaD4KKy0jaW5jbHVkZSA8dnRr UG9seUxpbmUuaD4KKy0jaW5jbHVkZSA8dnRrVmVjdG9yVGV4dC5oPgorLSNpbmNsdWRlIDx2dGtG b2xsb3dlci5oPgorLSNpbmNsdWRlIDx2dGtDYWxsYmFja0NvbW1hbmQuaD4KKy0jaW5jbHVkZSA8 dnRrSW50ZXJhY3RvclN0eWxlLmg+CistI2luY2x1ZGUgPHZ0a0luZm9ybWF0aW9uVmVjdG9yLmg+ CistI2luY2x1ZGUgPHZ0a0RhdGFBcnJheS5oPgorLSNpbmNsdWRlIDx2dGtVbnNpZ25lZENoYXJB cnJheS5oPgorLSNpbmNsdWRlIDx2dGtQb2ludHMuaD4KKy0jaW5jbHVkZSA8dnRrUmVuZGVyZXJD b2xsZWN0aW9uLmg+CistI2luY2x1ZGUgPHZ0a1BOR1dyaXRlci5oPgorLSNpbmNsdWRlIDx2dGtX aW5kb3dUb0ltYWdlRmlsdGVyLmg+CistI2luY2x1ZGUgPHZ0a0ludGVyYWN0b3JTdHlsZVRyYWNr YmFsbENhbWVyYS5oPgorLSNpbmNsdWRlIDx2dGtQcm9wZXJ0eS5oPgorLSNpbmNsdWRlIDx2dGtD YW1lcmEuaD4KKy0jaW5jbHVkZSA8dnRrT2JqZWN0RmFjdG9yeS5oPgorLSNpbmNsdWRlIDx2dGtT Y2FsYXJCYXJBY3Rvci5oPgorLSNpbmNsdWRlIDx2dGtTY2FsYXJzVG9Db2xvcnMuaD4KKy0jaW5j bHVkZSA8dnRrQ2xpcFBvbHlEYXRhLmg+CistI2luY2x1ZGUgPHZ0a1BsYW5lcy5oPgorLSNpbmNs dWRlIDx2dGtJbWFnZUltcG9ydC5oPgorLSNpbmNsdWRlIDx2dGtJbWFnZVZpZXdlci5oPgorLSNp bmNsdWRlIDx2dGtJbnRlcmFjdG9yU3R5bGVJbWFnZS5oPgorLSNpbmNsdWRlIDx2dGtJbWFnZUZs aXAuaD4KKy0jaW5jbHVkZSA8dnRrVElGRldyaXRlci5oPgorLSNpbmNsdWRlIDx2dGtCTVBXcml0 ZXIuaD4KKy0jaW5jbHVkZSA8dnRrSlBFR1dyaXRlci5oPgorLSNpbmNsdWRlIDx2dGtJbWFnZVZp ZXdlcjIuaD4KKy0jaW5jbHVkZSA8dnRrUmVuZGVyV2luZG93Lmg+CistI2luY2x1ZGUgPHZ0a1hZ UGxvdEFjdG9yLmg+CistI2luY2x1ZGUgPHZ0a1RleHRQcm9wZXJ0eS5oPgorLSNpbmNsdWRlIDx2 dGtQcm9wZXJ0eTJELmg+CistI2luY2x1ZGUgPHZ0a0ZpZWxkRGF0YS5oPgorLSNpbmNsdWRlIDx2 dGtEb3VibGVBcnJheS5oPgorLSNpbmNsdWRlIDx2dGtMT0RBY3Rvci5oPgorLSNpbmNsdWRlIDx2 dGtQb2x5RGF0YVdyaXRlci5oPgorLSNpbmNsdWRlIDx2dGtUZXh0QWN0b3IuaD4KKy0jaW5jbHVk ZSA8dnRrQ2xlYW5Qb2x5RGF0YS5oPgorLSNpbmNsdWRlIDx2dGtSZW5kZXJlci5oPgorLSNpbmNs dWRlIDx2dGtPYmplY3QuaD4KKy0jaW5jbHVkZSA8dnRrT3JpZW50YXRpb25NYXJrZXJXaWRnZXQu aD4KKy0jaW5jbHVkZSA8dnRrSW1hZ2VSZXNsaWNlLmg+CistI2luY2x1ZGUgPHZ0a0ltYWdlQ2hh bmdlSW5mb3JtYXRpb24uaD4KKy0jaW5jbHVkZSA8dnRrSW1hZ2VDYW52YXNTb3VyY2UyRC5oPgor LSNpbmNsdWRlIDx2dGtJbWFnZUJsZW5kLmg+CistI2luY2x1ZGUgPHZ0a0ltYWdlU3RlbmNpbERh dGEuaD4KKy0jaW5jbHVkZSA8dnRrUmVuZGVyV2luZG93SW50ZXJhY3Rvci5oPgorLSNpbmNsdWRl IDx2dGtDaGFydFhZLmg+CistI2luY2x1ZGUgPHZ0a1Bsb3QuaD4KKy0jaW5jbHVkZSA8dnRrVGFi bGUuaD4KKy0jaW5jbHVkZSA8dnRrQ29udGV4dFZpZXcuaD4KKy0jaW5jbHVkZSA8dnRrQ29udGV4 dFNjZW5lLmg+CistI2luY2x1ZGUgPHZ0a0NvbG9yU2VyaWVzLmg+CistI2luY2x1ZGUgPHZ0a0F4 aXMuaD4KKy0jaW5jbHVkZSA8dnRrU2VsZWN0aW9uLmg+CistCistI2luY2x1ZGUgPHZ0a0hhcmR3 YXJlU2VsZWN0b3IuaD4KKy0KKy0jaW5jbHVkZSA8dnRrVHJpYW5nbGUuaD4KKy0jaW5jbHVkZSA8 dnRrV29ybGRQb2ludFBpY2tlci5oPgorLQorLSNpbmNsdWRlIDx2dGtJbnRlcmFjdG9yU3R5bGVS dWJiZXJCYW5kUGljay5oPgorLSNpbmNsdWRlIDx2dGtJbnRlcmFjdG9yU3R5bGVUcmFja2JhbGxB Y3Rvci5oPgorLSNpbmNsdWRlIDx2dGtBcmVhUGlja2VyLmg+CistI2luY2x1ZGUgPHZ0a0V4dHJh Y3RHZW9tZXRyeS5oPgorLSNpbmNsdWRlIDx2dGtFeHRyYWN0UG9seURhdGFHZW9tZXRyeS5oPgor LSNpbmNsdWRlIDx2dGtWZXJ0ZXhHbHlwaEZpbHRlci5oPgorLSNpbmNsdWRlIDx2dGtJZEZpbHRl ci5oPgorLSNpbmNsdWRlIDx2dGtJZFR5cGVBcnJheS5oPgorLSNpbmNsdWRlIDx2dGtJbWFnZVJl YWRlcjJGYWN0b3J5Lmg+CistI2luY2x1ZGUgPHZ0a0ltYWdlUmVhZGVyMi5oPgorLSNpbmNsdWRl IDx2dGtJbWFnZURhdGEuaD4KKy0KKy0jaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiBkZWZpbmVkIF9f REVQUkVDQVRFRF9ESVNBQkxFRF9fCistI2RlZmluZSBfX0RFUFJFQ0FURUQKKy0jdW5kZWYgX19E RVBSRUNBVEVEX0RJU0FCTEVEX18KKy0jZW5kaWYKKytQQ0xfREVQUkVDQVRFRF9IRUFERVIoMSwg MTQsICJVc2UgcmVxdWlyZWQgdnRrIGluY2x1ZGVzIGluc3RlYWQuIikKK2RpZmYgLXVwIC4vdmlz dWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL3Z0ay9wY2xfdnRrX2NvbXBhdGli aWxpdHkuaC40MjYyIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL3Z0 ay9wY2xfdnRrX2NvbXBhdGliaWxpdHkuaAorLS0tIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3Bj bC92aXN1YWxpemF0aW9uL3Z0ay9wY2xfdnRrX2NvbXBhdGliaWxpdHkuaC40MjYyCTIwMjEtMDIt MjEgMjE6MzI6NTguMzE5MTc2NzI1IC0wNTAwCisrKysgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUv cGNsL3Zpc3VhbGl6YXRpb24vdnRrL3BjbF92dGtfY29tcGF0aWJpbGl0eS5oCTIwMjEtMDItMjEg MjE6MzI6NTguMzE5MTc2NzI1IC0wNTAwCitAQCAtMCwwICsxLDE3IEBACisrLyoKKysgKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCisrICoKKysgKiAgUG9pbnQgQ2xvdWQg TGlicmFyeSAoUENMKSAtIHd3dy5wb2ludGNsb3Vkcy5vcmcKKysgKiAgQ29weXJpZ2h0IChjKSAy MDIwLSwgT3BlbiBQZXJjZXB0aW9uCisrICoKKysgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZAorKyAq LworKworKyNpbmNsdWRlIDx2dGtDZWxsQXJyYXkuaD4KKysKKysjaWZkZWYgVlRLX0NFTExfQVJS QVlfVjIKKysgIHVzaW5nIHZ0a0NlbGxQdHNQdHIgPSB2dGtJZFR5cGUgY29uc3QqOworKyNlbHNl CisrICB1c2luZyB2dGtDZWxsUHRzUHRyID0gdnRrSWRUeXBlKjsKKysjZW5kaWYKKysKK2RpZmYg LXVwIC4vdmlzdWFsaXphdGlvbi9zcmMvY2xvdWRfdmlld2VyLmNwcC40MjYyIC4vdmlzdWFsaXph dGlvbi9zcmMvY2xvdWRfdmlld2VyLmNwcAorLS0tIC4vdmlzdWFsaXphdGlvbi9zcmMvY2xvdWRf dmlld2VyLmNwcC40MjYyCTIwMjAtMDgtMTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCisrKysg Li92aXN1YWxpemF0aW9uL3NyYy9jbG91ZF92aWV3ZXIuY3BwCTIwMjEtMDItMjEgMjE6MzI6NTgu MzIyMTc2NzM4IC0wNTAwCitAQCAtNDAsNiArNDAsOSBAQAorICNpbmNsdWRlIDxwY2wvdmlzdWFs aXphdGlvbi9ib29zdC5oPgorICNpbmNsdWRlIDxwY2wvbWVtb3J5Lmg+CisgCisrI2luY2x1ZGUg PHZ0a09yaWVudGF0aW9uTWFya2VyV2lkZ2V0Lmg+CisrI2luY2x1ZGUgPHZ0a1JlbmRlcldpbmRv d0ludGVyYWN0b3IuaD4KKysKKyAjaW5jbHVkZSA8bXV0ZXg+CisgI2luY2x1ZGUgPHRocmVhZD4K KyAKK2RpZmYgLXVwIC4vdmlzdWFsaXphdGlvbi9zcmMvaGlzdG9ncmFtX3Zpc3VhbGl6ZXIuY3Bw LjQyNjIgLi92aXN1YWxpemF0aW9uL3NyYy9oaXN0b2dyYW1fdmlzdWFsaXplci5jcHAKKy0tLSAu L3Zpc3VhbGl6YXRpb24vc3JjL2hpc3RvZ3JhbV92aXN1YWxpemVyLmNwcC40MjYyCTIwMjAtMDgt MTQgMDg6MjM6MDMuMDAwMDAwMDAwIC0wNDAwCisrKysgLi92aXN1YWxpemF0aW9uL3NyYy9oaXN0 b2dyYW1fdmlzdWFsaXplci5jcHAJMjAyMS0wMi0yMSAyMTozMjo1OC4zMjIxNzY3MzggLTA1MDAK K0BAIC00NSw3ICs0NSw2IEBACisgI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL2Jvb3N0Lmg+ CisgCisgI2luY2x1ZGUgPHZ0a1ZlcnNpb24uaD4KKy0jaW5jbHVkZSA8dnRrWFlQbG90QWN0b3Iu aD4KKyAjaW5jbHVkZSA8dnRrRG91YmxlQXJyYXkuaD4KKyAjaW5jbHVkZSA8dnRrVGV4dFByb3Bl cnR5Lmg+CisgI2luY2x1ZGUgPHZ0a1JlbmRlcldpbmRvdy5oPgorZGlmZiAtdXAgLi92aXN1YWxp emF0aW9uL3NyYy9pbnRlcmFjdG9yX3N0eWxlLmNwcC40MjYyIC4vdmlzdWFsaXphdGlvbi9zcmMv aW50ZXJhY3Rvcl9zdHlsZS5jcHAKKy0tLSAuL3Zpc3VhbGl6YXRpb24vc3JjL2ludGVyYWN0b3Jf c3R5bGUuY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAu L3Zpc3VhbGl6YXRpb24vc3JjL2ludGVyYWN0b3Jfc3R5bGUuY3BwCTIwMjEtMDItMjEgMjE6MzI6 NTguMzIzMTc2NzQyIC0wNTAwCitAQCAtMzYsNiArMzYsNyBAQAorICAqCisgICovCisgCisrI2lu Y2x1ZGUgPGZzdHJlYW0+CisgI2luY2x1ZGUgPGxpc3Q+CisgI2luY2x1ZGUgPHBjbC9jb21tb24v YW5nbGVzLmg+CisgI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0aW9uL2NvbW1vbi9pby5oPgorQEAg LTEzNyw3ICsxMzgsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXJJbnRlcmFj CisgeworICAgRmluZFBva2VkUmVuZGVyZXIgKEludGVyYWN0b3ItPkdldEV2ZW50UG9zaXRpb24g KClbMF0sIEludGVyYWN0b3ItPkdldEV2ZW50UG9zaXRpb24gKClbMV0pOworIAorLSAgb2ZzdHJl YW0gb2ZzX2NhbSAoZmlsZS5jX3N0ciAoKSk7CisrICBzdGQ6Om9mc3RyZWFtIG9mc19jYW0gKGZp bGUuY19zdHIgKCkpOworICAgaWYgKCFvZnNfY2FtLmlzX29wZW4gKCkpCisgICB7CisgICAgIHJl dHVybiAoZmFsc2UpOworZGlmZiAtdXAgLi92aXN1YWxpemF0aW9uL3NyYy9wY2xfdmlzdWFsaXpl ci5jcHAuNDI2MiAuL3Zpc3VhbGl6YXRpb24vc3JjL3BjbF92aXN1YWxpemVyLmNwcAorLS0tIC4v dmlzdWFsaXphdGlvbi9zcmMvcGNsX3Zpc3VhbGl6ZXIuY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoy MzowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyAuL3Zpc3VhbGl6YXRpb24vc3JjL3BjbF92aXN1YWxp emVyLmNwcAkyMDIxLTAyLTIxIDIxOjMyOjU4LjMyMzE3Njc0MiAtMDUwMAorQEAgLTUxLDcgKzUx LDcgQEAKKyAjaW5jbHVkZSA8dnRrUG9seURhdGFOb3JtYWxzLmg+CisgI2luY2x1ZGUgPHZ0a01h cHBlci5oPgorICNpbmNsdWRlIDx2dGtEYXRhU2V0TWFwcGVyLmg+CistCisrI2luY2x1ZGUgPHZ0 a0NlbGxBcnJheS5oPgorICNpbmNsdWRlIDx2dGtIYXJkd2FyZVNlbGVjdG9yLmg+CisgI2luY2x1 ZGUgPHZ0a1NlbGVjdGlvbk5vZGUuaD4KKyAKK0BAIC02MCw2ICs2MCw3IEBACisgCisgI2luY2x1 ZGUgPHBjbC92aXN1YWxpemF0aW9uL2Jvb3N0Lmg+CisgI2luY2x1ZGUgPHBjbC92aXN1YWxpemF0 aW9uL3Z0ay92dGtSZW5kZXJXaW5kb3dJbnRlcmFjdG9yRml4Lmg+CisrI2luY2x1ZGUgPHBjbC92 aXN1YWxpemF0aW9uL3Z0ay9wY2xfdnRrX2NvbXBhdGliaWxpdHkuaD4KKyAKKyAjaWYgVlRLX1JF TkRFUklOR19CQUNLRU5EX09QRU5HTF9WRVJTSU9OIDwgMgorICNpbmNsdWRlIDxwY2wvdmlzdWFs aXphdGlvbi92dGsvdnRrVmVydGV4QnVmZmVyT2JqZWN0TWFwcGVyLmg+CitAQCAtODIsNyArODMs NiBAQAorICNpbmNsdWRlIDx2dGtBeGVzQWN0b3IuaD4KKyAjaW5jbHVkZSA8dnRrUmVuZGVyV2lu ZG93SW50ZXJhY3Rvci5oPgorICNpbmNsdWRlIDx2dGtBcmVhUGlja2VyLmg+CistI2luY2x1ZGUg PHZ0a1hZUGxvdEFjdG9yLmg+CisgI2luY2x1ZGUgPHZ0a09wZW5HTFJlbmRlcldpbmRvdy5oPgor ICNpbmNsdWRlIDx2dGtKUEVHUmVhZGVyLmg+CisgI2luY2x1ZGUgPHZ0a0JNUFJlYWRlci5oPgor QEAgLTEyMiw2ICsxMjIsNjMgQEAKKyAgICN1bmRlZiBmYXIKKyAjZW5kaWYKKyAKKyt2dGtJZFR5 cGUKKytwY2w6OnZpc3VhbGl6YXRpb246OmRldGFpbHM6OmZpbGxDZWxscyhzdGQ6OnZlY3Rvcjxp bnQ+JiBsb29rdXAsIGNvbnN0IHN0ZDo6dmVjdG9yPHBjbDo6VmVydGljZXM+JiB2ZXJ0aWNlcywg dnRrU21hcnRQb2ludGVyPHZ0a0NlbGxBcnJheT4gY2VsbF9hcnJheSwgaW50IG1heF9zaXplX29m X3BvbHlnb24pCisreworKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgorKyAgcGNsOjp1dGlsczo6 aWdub3JlKG1heF9zaXplX29mX3BvbHlnb24pOworKworKyAgaWYgKCFsb29rdXAuZW1wdHkoKSkK KysgIHsKKysgICAgZm9yIChjb25zdCBhdXRvJiB2ZXJ0aSA6IHZlcnRpY2VzKQorKyAgICB7Cisr ICAgICAgc3RkOjpzaXplX3Qgbl9wb2ludHMgPSB2ZXJ0aS52ZXJ0aWNlcy5zaXplKCk7CisrICAg ICAgY2VsbF9hcnJheS0+SW5zZXJ0TmV4dENlbGwobl9wb2ludHMpOworKyAgICAgIGZvciAoY29u c3QgYXV0byYgdmVydGogOiB2ZXJ0aS52ZXJ0aWNlcykKKysgICAgICAgIGNlbGxfYXJyYXktPklu c2VydENlbGxQb2ludChsb29rdXBbdmVydGpdKTsKKysgICAgfQorKyAgfQorKyAgZWxzZQorKyAg eworKyAgICBmb3IgKGNvbnN0IGF1dG8mIHZlcnRpIDogdmVydGljZXMpCisrICAgIHsKKysgICAg ICBzdGQ6OnNpemVfdCBuX3BvaW50cyA9IHZlcnRpLnZlcnRpY2VzLnNpemUoKTsKKysgICAgICBj ZWxsX2FycmF5LT5JbnNlcnROZXh0Q2VsbChuX3BvaW50cyk7CisrICAgICAgZm9yIChjb25zdCBh dXRvJiB2ZXJ0aiA6IHZlcnRpLnZlcnRpY2VzKQorKyAgICAgICAgY2VsbF9hcnJheS0+SW5zZXJ0 Q2VsbFBvaW50KHZlcnRqKTsKKysgICAgfQorKyAgfQorKyNlbHNlCisrICB2dGtJZFR5cGUqIGNl bGwgPSBjZWxsX2FycmF5LT5Xcml0ZVBvaW50ZXIodmVydGljZXMuc2l6ZSgpLCB2ZXJ0aWNlcy5z aXplKCkgKiAobWF4X3NpemVfb2ZfcG9seWdvbiArIDEpKTsKKysKKysgIGlmICghbG9va3VwLmVt cHR5KCkpCisrICB7CisrICAgIGZvciAoY29uc3QgYXV0byYgdmVydGkgOiB2ZXJ0aWNlcykKKysg ICAgeworKyAgICAgIHN0ZDo6c2l6ZV90IG5fcG9pbnRzID0gdmVydGkudmVydGljZXMuc2l6ZSgp OworKyAgICAgICpjZWxsKysgPSBuX3BvaW50czsKKysgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZl cnRqIDogdmVydGkudmVydGljZXMpCisrICAgICAgICAqY2VsbCsrID0gbG9va3VwW3ZlcnRqXTsK KysgICAgfQorKyAgfQorKyAgZWxzZQorKyAgeworKyAgICBmb3IgKGNvbnN0IGF1dG8mIHZlcnRp IDogdmVydGljZXMpCisrICAgIHsKKysgICAgICBzdGQ6OnNpemVfdCBuX3BvaW50cyA9IHZlcnRp LnZlcnRpY2VzLnNpemUoKTsKKysgICAgICAqY2VsbCsrID0gbl9wb2ludHM7CisrICAgICAgZm9y IChjb25zdCBhdXRvJiB2ZXJ0aiA6IHZlcnRpLnZlcnRpY2VzKQorKyAgICAgICAgKmNlbGwrKyA9 IHZlcnRqOworKyAgICB9CisrICB9CisrI2VuZGlmCisrCisrICBjb25zdCBhdXRvIGlkeCA9IHZl cnRpY2VzLnNpemUoKSArIHN0ZDo6YWNjdW11bGF0ZSh2ZXJ0aWNlcy5iZWdpbigpLCB2ZXJ0aWNl cy5lbmQoKSwgc3RhdGljX2Nhc3Q8dnRrSWRUeXBlPigwKSwKKysgICAgW10oY29uc3QgYXV0byYg c3VtLCBjb25zdCBhdXRvJiB2ZXJ0ZXgpIHsgcmV0dXJuIHN1bSArIHZlcnRleC52ZXJ0aWNlcy5z aXplKCk7IH0pOworKworKyAgcmV0dXJuIGlkeDsKKyt9CisrCisgLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCisgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpQ Q0xWaXN1YWxpemVyIChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgY29uc3QgYm9vbCBjcmVhdGVf aW50ZXJhY3RvcikKKyAgIDogdXBkYXRlX2Zwc18gKHZ0a1NtYXJ0UG9pbnRlcjxGUFNDYWxsYmFj az46Ok5ldyAoKSkKK0BAIC01MjEsMTMgKzU3OCwxNCBAQCB2b2lkCisgcGNsOjp2aXN1YWxpemF0 aW9uOjpQQ0xWaXN1YWxpemVyOjpzcGluT25jZSAoaW50IHRpbWUsIGJvb2wgZm9yY2VfcmVkcmF3 KQorIHsKKyAgIHJlc2V0U3RvcHBlZEZsYWcgKCk7CistICAjaWYgKGRlZmluZWQgKF9fQVBQTEVf XykpCistICAgIGlmICghd2luXy0+SXNEcmF3YWJsZSAoKSkKKy0gICAgeworLSAgICAgIGNsb3Nl ICgpOworLSAgICAgIHJldHVybjsKKy0gICAgfQorLSAgI2VuZGlmCisrCisrI2lmIFZUS19NQUpP Ul9WRVJTSU9OIDwgOSAmJiBkZWZpbmVkIChfX0FQUExFX18pCisrICBpZiAoIXdpbl8tPklzRHJh d2FibGUgKCkpCisrICB7CisrICAgIGNsb3NlICgpOworKyAgICByZXR1cm47CisrICB9CisrI2Vu ZGlmCisgCisgICBpZiAoIWludGVyYWN0b3JfKQorICAgICByZXR1cm47CitAQCAtMTI2Miw3ICsx MzIwLDYgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpjcmVhdAorICAgLy9h Y3Rvci0+U2V0TnVtYmVyT2ZDbG91ZFBvaW50cyAoc3RkOjptYXg8dnRrSWRUeXBlPiAoMSwgZGF0 YS0+R2V0TnVtYmVyT2ZQb2ludHMgKCkgLyAxMCkpOworICAgYWN0b3ItPkdldFByb3BlcnR5ICgp LT5TZXRJbnRlcnBvbGF0aW9uVG9GbGF0ICgpOworIH0KKy0KKyAvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKyB2b2lkCisgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxp emVyOjpjb252ZXJ0UG9pbnRDbG91ZFRvVlRLUG9seURhdGEgKAorQEAgLTEyOTEsMTAgKzEzNDgs MzYgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpjb252ZQorICAgaWYgKCF2 ZXJ0aWNlcykKKyAgICAgdmVydGljZXMgPSB2dGtTbWFydFBvaW50ZXI8dnRrQ2VsbEFycmF5Pjo6 TmV3ICgpOworIAorKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgorKyAgLy8gVE9ETzogUmVtb3Zl IHdoZW4gVlRLIDYsNyw4IGlzIHVuc3VwcG9ydGVkCisrICBwY2w6OnV0aWxzOjppZ25vcmUoaW5p dGNlbGxzKTsKKysKKysgIGF1dG8gbnVtT2ZDZWxscyA9IHZlcnRpY2VzLT5HZXROdW1iZXJPZkNl bGxzKCk7CisrCisrICAvLyBJZiB3ZSBoYXZlIGxlc3MgY2VsbHMgdGhhbiBwb2ludHMsIGFkZCBu ZXcgY2VsbHMuCisrICBpZiAobnVtT2ZDZWxscyA8IG5yX3BvaW50cykKKysgIHsKKysgICAgZm9y IChpbnQgaSA9IG51bU9mQ2VsbHM7IGkgPCBucl9wb2ludHM7IGkrKykKKysgICAgeworKyAgICAg IHZlcnRpY2VzLT5JbnNlcnROZXh0Q2VsbCgxKTsKKysgICAgICB2ZXJ0aWNlcy0+SW5zZXJ0Q2Vs bFBvaW50KGkpOworKyAgICB9CisrICB9CisrICAvLyBpZiB3ZSB0b28gbWFueSBjZWxscyB0aGFu IHBvaW50cywgc2V0IHNpemUgKGRvZXNuJ3QgZnJlZSBleGNlc3NpdmUgbWVtb3J5KQorKyAgZWxz ZSBpZiAobnVtT2ZDZWxscyA+IG5yX3BvaW50cykKKysgIHsKKysgICAgdmVydGljZXMtPlJlc2l6 ZUV4YWN0KG5yX3BvaW50cywgbnJfcG9pbnRzKTsKKysgIH0KKysKKysgIHBvbHlkYXRhLT5TZXRQ b2ludHMocG9pbnRzKTsKKysgIHBvbHlkYXRhLT5TZXRWZXJ0cyh2ZXJ0aWNlcyk7CisrCisrI2Vs c2UKKyAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtJZFR5cGVBcnJheT4gY2VsbHMgPSB2ZXJ0aWNlcy0+ R2V0RGF0YSAoKTsKKyAgIHVwZGF0ZUNlbGxzIChjZWxscywgaW5pdGNlbGxzLCBucl9wb2ludHMp OworICAgLy8gU2V0IHRoZSBjZWxscyBhbmQgdGhlIHZlcnRpY2VzCisgICB2ZXJ0aWNlcy0+U2V0 Q2VsbHMgKG5yX3BvaW50cywgY2VsbHMpOworKyNlbmRpZgorIH0KKyAKKyAvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitAQCAtMzE2MCwyOCArMzI0Myw5IEBAIHBjbDo6dmlz dWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6dXBkYXQKKyAKKyAgIC8vIFVwZGF0ZSB0aGUgY2Vs bHMKKyAgIGNlbGxzID0gdnRrU21hcnRQb2ludGVyPHZ0a0NlbGxBcnJheT46Ok5ldyAoKTsKKy0g IHZ0a0lkVHlwZSAqY2VsbCA9IGNlbGxzLT5Xcml0ZVBvaW50ZXIgKHZlcnRzLnNpemUgKCksIHZl cnRzLnNpemUgKCkgKiAobWF4X3NpemVfb2ZfcG9seWdvbiArIDEpKTsKKy0gIGludCBpZHggPSAw OworLSAgaWYgKCFsb29rdXAuZW1wdHkgKCkpCistICB7CistICAgIGZvciAoc3RkOjpzaXplX3Qg aSA9IDA7IGkgPCB2ZXJ0cy5zaXplICgpOyArK2ksICsraWR4KQorLSAgICB7CistICAgICAgc3Rk OjpzaXplX3Qgbl9wb2ludHMgPSB2ZXJ0c1tpXS52ZXJ0aWNlcy5zaXplICgpOworLSAgICAgICpj ZWxsKysgPSBuX3BvaW50czsKKy0gICAgICBmb3IgKHN0ZDo6c2l6ZV90IGogPSAwOyBqIDwgbl9w b2ludHM7IGorKywgY2VsbCsrLCArK2lkeCkKKy0gICAgICAgICpjZWxsID0gbG9va3VwW3ZlcnRz W2ldLnZlcnRpY2VzW2pdXTsKKy0gICAgfQorLSAgfQorLSAgZWxzZQorLSAgeworLSAgICBmb3Ig KHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgdmVydHMuc2l6ZSAoKTsgKytpLCArK2lkeCkKKy0gICAg eworLSAgICAgIHN0ZDo6c2l6ZV90IG5fcG9pbnRzID0gdmVydHNbaV0udmVydGljZXMuc2l6ZSAo KTsKKy0gICAgICAqY2VsbCsrID0gbl9wb2ludHM7CistICAgICAgZm9yIChzdGQ6OnNpemVfdCBq ID0gMDsgaiA8IG5fcG9pbnRzOyBqKyssIGNlbGwrKywgKytpZHgpCistICAgICAgICAqY2VsbCA9 IHZlcnRzW2ldLnZlcnRpY2VzW2pdOworLSAgICB9CistICB9CisrICAKKysgIGNvbnN0IGF1dG8g aWR4ID0gZGV0YWlsczo6ZmlsbENlbGxzKGxvb2t1cCwgdmVydHMsIGNlbGxzLCBtYXhfc2l6ZV9v Zl9wb2x5Z29uKTsKKysKKyAgIGNlbGxzLT5HZXREYXRhICgpLT5TZXROdW1iZXJPZlZhbHVlcyAo aWR4KTsKKyAgIGNlbGxzLT5TcXVlZXplICgpOworICAgLy8gU2V0IHRoZSB0aGUgdmVydGljZXMK K0BAIC0zNTUyLDcgKzM2MTYsOCBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6 OnJlbmRlCisgCisgICAvL2NlbnRlciBvYmplY3QKKyAgIGRvdWJsZSBDb01bM107CistICB2dGtJ ZFR5cGUgbnB0c19jb20gPSAwLCAqcHRJZHNfY29tID0gbnVsbHB0cjsKKysgIHZ0a0lkVHlwZSBu cHRzX2NvbSA9IDA7CisrICB2dGtDZWxsUHRzUHRyIHB0SWRzX2NvbSA9IG51bGxwdHI7CisgICB2 dGtTbWFydFBvaW50ZXI8dnRrQ2VsbEFycmF5PiBjZWxsc19jb20gPSBwb2x5ZGF0YS0+R2V0UG9s eXMgKCk7CisgCisgICBkb3VibGUgY2VudGVyWzNdLCBwMV9jb21bM10sIHAyX2NvbVszXSwgcDNf Y29tWzNdLCB0b3RhbEFyZWFfY29tID0gMDsKK0BAIC0zNjExLDEwICszNjc2LDExIEBAIHBjbDo6 dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6cmVuZGUKKyAgIC8vICogQ29tcHV0ZSBhcmVh IG9mIHRoZSBtZXNoCisgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgIHZ0a1Nt YXJ0UG9pbnRlcjx2dGtDZWxsQXJyYXk+IGNlbGxzID0gbWFwcGVyLT5HZXRJbnB1dCAoKS0+R2V0 UG9seXMgKCk7CistICB2dGtJZFR5cGUgbnB0cyA9IDAsICpwdElkcyA9IG51bGxwdHI7CisrICB2 dGtJZFR5cGUgbnB0cyA9IDA7CisrICB2dGtDZWxsUHRzUHRyIHB0SWRzID0gbnVsbHB0cjsKKyAK KyAgIGRvdWJsZSBwMVszXSwgcDJbM10sIHAzWzNdLCB0b3RhbEFyZWEgPSAwOworLSAgZm9yIChj ZWxscy0+SW5pdFRyYXZlcnNhbCAoKTsgY2VsbHMtPkdldE5leHRDZWxsIChucHRzLCBwdElkcyk7 KQorKyAgZm9yIChjZWxscy0+SW5pdFRyYXZlcnNhbCAoKTsgY2VsbHMtPkdldE5leHRDZWxsKG5w dHMsIHB0SWRzKTspCisgICB7CisgICAgIHBvbHlkYXRhLT5HZXRQb2ludCAocHRJZHNbMF0sIHAx KTsKKyAgICAgcG9seWRhdGEtPkdldFBvaW50IChwdElkc1sxXSwgcDIpOworQEAgLTM4MzAsNyAr Mzg5Niw4IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6cmVuZGUKKyAgICAg cG9seWRhdGEtPkJ1aWxkQ2VsbHMgKCk7CisgCisgICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtDZWxs QXJyYXk+IGNlbGxzID0gcG9seWRhdGEtPkdldFBvbHlzICgpOworLSAgICB2dGtJZFR5cGUgbnB0 cyA9IDAsICpwdElkcyA9IG51bGxwdHI7CisrICAgIHZ0a0lkVHlwZSBucHRzID0gMDsKKysgICAg dnRrQ2VsbFB0c1B0ciBwdElkcyA9IG51bGxwdHI7CisgCisgICAgIGRvdWJsZSBwMVszXSwgcDJb M10sIHAzWzNdLCBhcmVhLCB0b3RhbEFyZWEgPSAwOworICAgICBmb3IgKGNlbGxzLT5Jbml0VHJh dmVyc2FsICgpOyBjZWxscy0+R2V0TmV4dENlbGwgKG5wdHMsIHB0SWRzKTspCitAQCAtNDA0MCw5 ICs0MTA3LDkgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpmcm9tSAorIAor ICAgdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhPiBwb2x5ZGF0YTsKKyAgIHZ0a1NtYXJ0UG9p bnRlcjx2dGtJZFR5cGVBcnJheT4gaW5pdGNlbGxzOworKworICAgLy8gQ29udmVydCB0aGUgUG9p bnRDbG91ZCB0byBWVEsgUG9seURhdGEKKyAgIGNvbnZlcnRQb2ludENsb3VkVG9WVEtQb2x5RGF0 YSAoZ2VvbWV0cnlfaGFuZGxlciwgcG9seWRhdGEsIGluaXRjZWxscyk7CistICAvLyB1c2UgdGhl IGdpdmVuIGdlb21ldHJ5IGhhbmRsZXIKKyAKKyAgIC8vIEdldCB0aGUgY29sb3JzIGZyb20gdGhl IGhhbmRsZXIKKyAgIGJvb2wgaGFzX2NvbG9ycyA9IGZhbHNlOworZGlmZiAtdXAgLi92aXN1YWxp emF0aW9uL3NyYy9wb2ludF9waWNraW5nX2V2ZW50LmNwcC40MjYyIC4vdmlzdWFsaXphdGlvbi9z cmMvcG9pbnRfcGlja2luZ19ldmVudC5jcHAKKy0tLSAuL3Zpc3VhbGl6YXRpb24vc3JjL3BvaW50 X3BpY2tpbmdfZXZlbnQuY3BwLjQyNjIJMjAyMC0wOC0xNCAwODoyMzowMy4wMDAwMDAwMDAgLTA0 MDAKKysrKyAuL3Zpc3VhbGl6YXRpb24vc3JjL3BvaW50X3BpY2tpbmdfZXZlbnQuY3BwCTIwMjEt MDItMjEgMjE6MzI6NTguMzIzMTc2NzQyIC0wNTAwCitAQCAtNDksNyArNDksNiBAQAorICNpbmNs dWRlIDx2dGtQb2ludERhdGEuaD4KKyAjaW5jbHVkZSA8dnRrVmVydGV4R2x5cGhGaWx0ZXIuaD4K KyAjaW5jbHVkZSA8dnRrUGxhbmVzLmg+CistI2luY2x1ZGUgPHZ0a1hZUGxvdEFjdG9yLmg+Cisg I2luY2x1ZGUgPHZ0a1JlbmRlcmVyLmg+CisgI2luY2x1ZGUgPHZ0a1JlbmRlcldpbmRvdy5oPgor IAoKZGlmZiAtLWdpdCBhL3BjbC5zcGVjIGIvcGNsLnNwZWMKaW5kZXggOWEzODkzMi4uZTgyOTE1 MyAxMDA2NDQKLS0tIGEvcGNsLnNwZWMKKysrIGIvcGNsLnNwZWMKQEAgLTQsOCArNCw4IEBACiAl Z2xvYmFsIGFwaXZlcnNpb24gMS4xMQogCiBOYW1lOiAgICAgICAgICAgcGNsCi1WZXJzaW9uOiAg ICAgICAgMS4xMS4wCi1SZWxlYXNlOiAgICAgICAgNiV7P2Rpc3R9CitWZXJzaW9uOiAgICAgICAg MS4xMS4xCitSZWxlYXNlOiAgICAgICAgMSV7P2Rpc3R9CiBTdW1tYXJ5OiAgICAgICAgTGlicmFy eSBmb3IgcG9pbnQgY2xvdWQgcHJvY2Vzc2luZwogTGljZW5zZTogICAgICAgIEJTRAogVVJMOiAg ICAgICAgICAgIGh0dHA6Ly9wb2ludGNsb3Vkcy5vcmcvCkBAIC0yNyw2ICsyNyw5IEBAIFBhdGNo MzogICAgICAgICAle25hbWV9LTEuMTEuMC1kb3h5Zml4LnBhdGNoCiBQYXRjaDQ6ICAgICAgICAg JXtuYW1lfS0xLjExLjAtb29tLnBhdGNoCiAjIFVzZSBhIGJ1aWx0LWluIHNwaGlueCBkb2N1bWVu dGF0aW9uIHRoZW1lIGFuZCBkaXNhYmxlIGRveHlsaW5rIHBsdWdpbgogUGF0Y2g1OiAgICAgICAg ICV7bmFtZX0tMS4xMS4wLXNwaGlueC5wYXRjaAorIyBBcHBseSB1cHN0cmVhbSBwYXRjaCBmb3Ig VlRLNiBjb21wYXRpYmlsaXR5CisjIGh0dHBzOi8vcGF0Y2gtZGlmZi5naXRodWJ1c2VyY29udGVu dC5jb20vcmF3L1BvaW50Q2xvdWRMaWJyYXJ5L3BjbC9wdWxsLzQyNjIucGF0Y2gKK1BhdGNoNjog ICAgICAgICAgNDI2Mi5wYXRjaAogCiAjIEZvciBwbGFpbiBidWlsZGluZwogQnVpbGRSZXF1aXJl czogIGNtYWtlLCBnY2MtYysrLCBib29zdC1kZXZlbApAQCAtODksNiArOTIsNyBAQCBMaWJyYXJ5 LgogJXBhdGNoMyAtcDAgLWIgLmRveHlmaXgKICVwYXRjaDQgLXAxIC1iIC5vb20KICVwYXRjaDUg LXAxIC1iIC5zcGhpbngKKyVwYXRjaDYgLXAxIC1iIC40MjYyCiAKICMgSnVzdCB0byBtYWtlIGl0 IG9idmlvdXMgd2UncmUgbm90IHVzaW5nIGFueSBvZiB0aGVzZQogcm0gLWZyIHJlY29nbml0aW9u L2luY2x1ZGUvcGNsL3JlY29nbml0aW9uLzNyZHBhcnR5L21ldHNsaWIKQEAgLTE4Nyw2ICsxOTEs MTAgQEAgbXYgJFJQTV9CVUlMRF9ST09UJXtfZGF0YWRpcn0vJXtuYW1lfS0qL01vZHVsZXMgJFJQ TV9CVUlMRF9ST09UJXtfbGliZGlyfS9jbWFrZS8KICVkb2MgJXtfdnBhdGhfYnVpbGRkaXJ9L2Rv Yy9hZHZhbmNlZC9hZHZhbmNlZAogCiAlY2hhbmdlbG9nCisqIE1vbiBGZWIgMjIgMjAyMSBSaWNo IE1hdHRlcyA8cmljaG1hdHRlc0BnbWFpbC5jb20+IC0gMS4xMS4xLTEKKy0gVXBkYXRlIHRvIDEu MTEuMQorLSBCYWNrcG9ydCB1cHN0cmVhbSBwYXRjaCB0byBidWlsZCBhZ2FpbnN0IFZUSyA5LjAg KHJoYnojMTg0MDk3NCkKKwogKiBUdWUgSmFuIDI2IDIwMjEgRmVkb3JhIFJlbGVhc2UgRW5naW5l ZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAxLjExLjAtNgogLSBSZWJ1aWx0IGZv ciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzM0X01hc3NfUmVidWlsZAog CgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggMTIwNzY5Zi4uNTZiNmZjMSAx MDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBACi1TSEE1MTIgKHBj bC0xLjExLjAtZmVkb3JhLnRhci54eikgPSBjZDAzNDMwNmZlMDcwN2RlZjQxMmJjYWZlOGY5OTZm ODg1YjE2NTFmOTJmZDA5MDIxMjQ4YzRkOGZkMDhlMGFiNGI2YWYzNThmYzZiZjc1OWUyZjAxYWJk MDc0ZmExOGRjNWI4NjlhZDhhNzE0ZDAzYTg5MGIyYzlhOWI4MmZmYgorU0hBNTEyIChwY2wtMS4x MS4xLWZlZG9yYS50YXIueHopID0gMGM3NjM3ZGY0NzE4ODU0ZWVkMTk3NzFiY2Q2MjI3ZjAxYjUx NTUyYmQ4NThkOWNjY2M2Mjk2M2EwNjcwN2UxYzNiODBjNWMzMWUxMjg4ZjczMTNkMzRlMTdiOTcy M2U2MDFjOWIyMTMyNGRlOTE2ZmI5YzhiMTlkNDQyMTYwYjgK