[system/kjar] /: 0.3.0 Release
Hadi Chokr <[email protected]> Tue, 4 Aug 2026 19:46:08 +0000 (UTC)
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
R2l0IGNvbW1pdCAzNzgyYjRiMThiMTY4YzFlZTVjYzM5YTc0ODhmOGI4ZmQzMjA2OTdmIGJ5IEhh ZGkgQ2hva3IuCkNvbW1pdHRlZCBvbiAwNC8wOC8yMDI2IGF0IDE5OjQ2LgpQdXNoZWQgYnkgc2ls dmVyaGFkY2ggaW50byBicmFuY2ggJ21hc3RlcicuCgowLjMuMCBSZWxlYXNlCgpCaWcgUmVmYWN0 b3IuIFNpbXBsaWZpZXMgZGVzaWduIGFuZCBmaXhlcyBtZW1vcnkgdW5zYWZlIGNvZGUuCgpTaWdu ZWQtb2ZmLWJ5OiBIYWRpIENob2tyIDxoYWRpY2hva3JAaWNsb3VkLmNvbT4KCk0gICsxNiAgIC0z MyAgIC5mbGF0cGFrLW1hbmlmZXN0Lmpzb24KTSAgKzIgICAgLTAgICAgLmdpdGxhYi1jaS55bWwK TSAgKzQzICAgLTM2ICAgQ01ha2VMaXN0cy50eHQKQSAgKzggICAgLTAgICAgTWVzc2FnZXMuc2gK TSAgKzU0ICAgLTcgICAgUkVBRE1FLm1kCk0gICsxICAgIC02ICAgIFJFVVNFLnRvbWwKQSAgKzgx ICAgLTAgICAgaWNvbnMvb3JnLmtkZS5ramFyLnN2ZwpNICArNyAgICAtNCAgICBvcmcua2RlLmtq YXIuZGVza3RvcApNICArNDEgICAtMTAgICBvcmcua2RlLmtqYXIubWV0YWluZm8ueG1sCkEgICs4 NyAgIC0wICAgIHNyYy9ramFyLmNwcCAgICAgW0xpY2Vuc2U6IEdQTCgzK2VWKSBHUEwodjMuMCkg R1BMKHYyLjApXQpBICArNjIgICAtMCAgICBzcmMva2phci5oICAgICBbTGljZW5zZTogR1BMKDMr ZVYpIEdQTCh2My4wKSBHUEwodjIuMCldCk0gICsxMDkgIC0xMzcgIHNyYy9ramFyYXBwLmNwcApN ICArMTkgICAtMjEgICBzcmMva2phcmFwcC5oCk0gICszNzYgIC0xMjggIHNyYy9tYWluLmNwcApN ICArOCAgICAtNiAgICBzcmMvcW1sL0Vycm9yRGlhbG9nLnFtbApSICArODYgICAtNjEgICBzcmMv cW1sL01haW4ucW1sIFtmcm9tOiBzcmMvcW1sL21haW4ucW1sIC0gMDUyJSBzaW1pbGFyaXR5XQpE ICArMCAgICAtOSAgICBzcmMvcmVzb3VyY2VzLnFyYwpEICArMCAgICAtOTAgICBzcmMvd2F0Y2hl ci9ramFyX3dhdGNoZXIuY3BwCkQgICswICAgIC04ICAgIHNyYy93YXRjaGVyL3dhdGNoZXIucXJj Ck0gICsxMiAgIC02ICAgIHN0cmlwLWptb2RzLnNoCgpodHRwczovL2ludmVudC5rZGUub3JnL3N5 c3RlbS9ramFyLy0vY29tbWl0LzM3ODJiNGIxOGIxNjhjMWVlNWNjMzlhNzQ4OGY4YjhmZDMyMDY5 N2YKCmRpZmYgLS1naXQgYS8uZmxhdHBhay1tYW5pZmVzdC5qc29uIGIvLmZsYXRwYWstbWFuaWZl c3QuanNvbgppbmRleCAwOTYxYWE1Li4xZjFiYzRmIDEwMDY0NAotLS0gYS8uZmxhdHBhay1tYW5p ZmVzdC5qc29uCisrKyBiLy5mbGF0cGFrLW1hbmlmZXN0Lmpzb24KQEAgLTExLDExICsxMSwxMCBA QAogCiAgICJmaW5pc2gtYXJncyI6IFsKICAgICAiLS1zaGFyZT1pcGMiLAorICAgICItLXNoYXJl PW5ldHdvcmsiLAogICAgICItLXNvY2tldD13YXlsYW5kIiwKICAgICAiLS1zb2NrZXQ9eDExIiwK ICAgICAiLS1kZXZpY2U9ZHJpIiwKLSAgICAiLS10YWxrLW5hbWU9b3JnLmZyZWVkZXNrdG9wLkZs YXRwYWsiLAotICAgICItLXRhbGstbmFtZT1vcmcuZnJlZWRlc2t0b3AuTm90aWZpY2F0aW9ucyIs CiAgICAgIi0tZmlsZXN5c3RlbT1ob21lIiwKICAgICAiLS1lbnY9SkFWQV9IT01FPS9hcHAvamRr IiwKICAgICAiLS1lbnY9UEFUSD0vYXBwL2JpbjovYXBwL2pkay9iaW46L3Vzci9iaW4iCkBAIC00 Miw1NCArNDEsMzggQEAKICAgICAgICJidWlsZHN5c3RlbSI6ICJzaW1wbGUiLAogICAgICAgImJ1 aWxkLWNvbW1hbmRzIjogWwogICAgICAgICAiaW5zdGFsbCAtZCAvYXBwL3NoYXJlL2phdmFmeCIs Ci0gICAgICAgICJjcCBsaWIvKi5qYXIgL2FwcC9zaGFyZS9qYXZhZngvIiwKLSAgICAgICAgImNw IGxpYi8qLnNvICAvYXBwL3NoYXJlL2phdmFmeC8iCisgICAgICAgICJpbnN0YWxsIC1tNjQ0IGxp Yi8qLmphciAvYXBwL3NoYXJlL2phdmFmeC8iLAorICAgICAgICAiaW5zdGFsbCAtbTY0NCBsaWIv Ki5zbyAgL2FwcC9zaGFyZS9qYXZhZngvIiwKKyAgICAgICAgImNwIC1yIGxlZ2FsIC9hcHAvc2hh cmUvamF2YWZ4L2xlZ2FsIgogICAgICAgXSwKICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICB7 CiAgICAgICAgICAgInR5cGUiOiAiYXJjaGl2ZSIsCiAgICAgICAgICAgInVybCI6ICJodHRwczov L2Rvd25sb2FkMi5nbHVvbmhxLmNvbS9vcGVuamZ4LzI1L29wZW5qZngtMjVfbGludXgteDY0X2Jp bi1zZGsuemlwIiwKICAgICAgICAgICAic2hhMjU2IjogImE3MjE1NzUwNjc0NmYwM2RlNDkzMTcx MzEzZWM5MzQyNWYxZWMxYjVjYjRiNDQ2ZWVlOWE1NjhmZjQ4NGFmNGUiLAotICAgICAgICAgICJk ZXN0IjogIi4iCisgICAgICAgICAgImRlc3QiOiAiLiIsCisgICAgICAgICAgIngtY2hlY2tlci1k YXRhIjogeworICAgICAgICAgICAgInR5cGUiOiAiaHRtbCIsCisgICAgICAgICAgICAidXJsIjog Imh0dHBzOi8vZ2x1b25ocS5jb20vcHJvZHVjdHMvamF2YWZ4LyIsCisgICAgICAgICAgICAidmVy c2lvbi1wYXR0ZXJuIjogIm9wZW5qZngtKFxcZFtcXGQuXSopX2xpbnV4LXg2NF9iaW4tc2RrXFwu emlwIiwKKyAgICAgICAgICAgICJ1cmwtdGVtcGxhdGUiOiAiaHR0cHM6Ly9kb3dubG9hZDIuZ2x1 b25ocS5jb20vb3BlbmpmeC8ke3ZlcnNpb259L29wZW5qZngtJHt2ZXJzaW9ufV9saW51eC14NjRf YmluLXNkay56aXAiCisgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICBdCiAgICAgfSwKICAg ICB7Ci0gICAgICAibmFtZSI6ICJlbnRyeXBvaW50IiwKLSAgICAgICJidWlsZHN5c3RlbSI6ICJj bWFrZSIsCisgICAgICAibmFtZSI6ICJramFyIiwKKyAgICAgICJidWlsZHN5c3RlbSI6ICJjbWFr ZS1uaW5qYSIsCiAgICAgICAiYnVpbGRkaXIiOiB0cnVlLAorICAgICAgImNvbmZpZy1vcHRzIjog WworICAgICAgICAiLURDTUFLRV9CVUlMRF9UWVBFPVJlbFdpdGhEZWJJbmZvIgorICAgICAgXSwK ICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICB7CiAgICAgICAgICAgInR5cGUiOiAiZGlyIiwK ICAgICAgICAgICAicGF0aCI6ICIuIgogICAgICAgICB9CiAgICAgICBdCi0gICAgfSwKLSAgICB7 Ci0gICAgICAibmFtZSI6ICJkZXNrdG9wLWZpbGUiLAotICAgICAgImJ1aWxkc3lzdGVtIjogInNp bXBsZSIsCi0gICAgICAiYnVpbGQtY29tbWFuZHMiOiBbCi0gICAgICAgICJpbnN0YWxsIC1EbTY0 NCBvcmcua2RlLmtqYXIuZGVza3RvcCAvYXBwL3NoYXJlL2FwcGxpY2F0aW9ucy9vcmcua2RlLmtq YXIuZGVza3RvcCIKLSAgICAgIF0sCi0gICAgICAic291cmNlcyI6IFsKLSAgICAgICAgewotICAg ICAgICAgICJ0eXBlIjogImZpbGUiLAotICAgICAgICAgICJwYXRoIjogIm9yZy5rZGUua2phci5k ZXNrdG9wIgotICAgICAgICB9Ci0gICAgICBdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6 ICJhcHBzdHJlYW0iLAotICAgICAgImJ1aWxkc3lzdGVtIjogInNpbXBsZSIsCi0gICAgICAiYnVp bGQtY29tbWFuZHMiOiBbCi0gICAgICAgICJpbnN0YWxsIC1EbTY0NCBvcmcua2RlLmtqYXIubWV0 YWluZm8ueG1sIC9hcHAvc2hhcmUvbWV0YWluZm8vb3JnLmtkZS5ramFyLm1ldGFpbmZvLnhtbCIK LSAgICAgIF0sCi0gICAgICAic291cmNlcyI6IFsKLSAgICAgICAgewotICAgICAgICAgICJ0eXBl IjogImZpbGUiLAotICAgICAgICAgICJwYXRoIjogIm9yZy5rZGUua2phci5tZXRhaW5mby54bWwi Ci0gICAgICAgIH0KLSAgICAgIF0KICAgICB9CiAgIF0KIH0KZGlmZiAtLWdpdCBhLy5naXRsYWIt Y2kueW1sIGIvLmdpdGxhYi1jaS55bWwKaW5kZXggMDZjYzFmMi4uNmQ5YmNjNiAxMDA2NDQKLS0t IGEvLmdpdGxhYi1jaS55bWwKKysrIGIvLmdpdGxhYi1jaS55bWwKQEAgLTUsNCArNSw2IEBAIGlu Y2x1ZGU6CiAgIC0gcHJvamVjdDogc3lzYWRtaW4vY2ktdXRpbGl0aWVzCiAgICAgZmlsZToKICAg ICAgIC0gL2dpdGxhYi10ZW1wbGF0ZXMvcmV1c2UtbGludC55bWwKKyAgICAgIC0gL2dpdGxhYi10 ZW1wbGF0ZXMveG1sLWxpbnQueW1sCisgICAgICAtIC9naXRsYWItdGVtcGxhdGVzL2pzb24tdmFs aWRhdGlvbi55bWwKICAgICAgIC0gL2dpdGxhYi10ZW1wbGF0ZXMvZmxhdHBhay55bWwKZGlmZiAt LWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggNzQwZWEwZS4uNDNj NTdlNCAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAg LTIsODkgKzIsOTYgQEAKICMgU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyNiBIYWRpIENob2ty IDxoYWRpY2hva3JAaWNsb3VkLmNvbT4KIAogY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9O IDMuMjgpCi1wcm9qZWN0KEtqYXJBcHApCitwcm9qZWN0KGtqYXIgVkVSU0lPTiAwLjMuMCkKIAot c2V0KFFUX01JTl9WRVJTSU9OICI2LjkuMCIpCitzZXQoUVRfTUlOX1ZFUlNJT04gIjYuMTEuMCIp CiBzZXQoS0ZfTUlOX1ZFUlNJT04gIjYuMTIuMCIpCiAKIGZpbmRfcGFja2FnZShFQ00gJHtLRl9N SU5fVkVSU0lPTn0gUkVRVUlSRUQgTk9fTU9EVUxFKQotc2V0KENNQUtFX01PRFVMRV9QQVRIICR7 Q01BS0VfTU9EVUxFX1BBVEh9ICR7RUNNX01PRFVMRV9QQVRIfSkKK2xpc3QoQVBQRU5EIENNQUtF X01PRFVMRV9QQVRIICR7RUNNX01PRFVMRV9QQVRIfSkKIAogaW5jbHVkZShLREVJbnN0YWxsRGly cykKIGluY2x1ZGUoS0RFQ01ha2VTZXR0aW5ncykKIGluY2x1ZGUoS0RFQ29tcGlsZXJTZXR0aW5n cyBOT19QT0xJQ1lfU0NPUEUpCiBpbmNsdWRlKEtERUNsYW5nRm9ybWF0KQogaW5jbHVkZShLREVH aXRDb21taXRIb29rcykKK2luY2x1ZGUoRUNNRGVwcmVjYXRpb25TZXR0aW5ncykKK2luY2x1ZGUo RUNNRmluZFFtbE1vZHVsZSkKK2luY2x1ZGUoRUNNU2V0dXBWZXJzaW9uKQoraW5jbHVkZShGZWF0 dXJlU3VtbWFyeSkKIAogc2V0KENNQUtFX0NYWF9TVEFOREFSRCAyMykKIHNldChDTUFLRV9DWFhf U1RBTkRBUkRfUkVRVUlSRUQgT04pCiAKIGZpbmRfcGFja2FnZShRdDYgJHtRVF9NSU5fVkVSU0lP Tn0gQ09ORklHIFJFUVVJUkVEIENPTVBPTkVOVFMKICAgICBDb3JlCisgICAgR3VpCiAgICAgUW1s CiAgICAgUXVpY2sKICAgICBRdWlja0NvbnRyb2xzMgotICAgIFdpZGdldHMKICkKIAogZmluZF9w YWNrYWdlKEtGNiAke0tGX01JTl9WRVJTSU9OfSBSRVFVSVJFRCBDT01QT05FTlRTCiAgICAgQ29y ZUFkZG9ucwogICAgIEkxOG4KICAgICBLaXJpZ2FtaQotICAgIE5vdGlmaWNhdGlvbnMKICkKIAot cXQ2X2FkZF9yZXNvdXJjZXMoa2phcmFwcF9SRVNPVVJDRVMgc3JjL3Jlc291cmNlcy5xcmMpCitl Y21fZmluZF9xbWxtb2R1bGUob3JnLmtkZS5jb3JlYWRkb25zIFJFUVVJUkVEKQogCi1zZXQoa2ph cmFwcF9TUkNTCi0gICAgc3JjL21haW4uY3BwCi0gICAgc3JjL2tqYXJhcHAuY3BwCi0gICAgJHtr amFyYXBwX1JFU09VUkNFU30KLSkKK3F0X3N0YW5kYXJkX3Byb2plY3Rfc2V0dXAoUkVRVUlSRVMg Ni4xMSkKIAotYWRkX2V4ZWN1dGFibGUoa2phcmFwcCAke2tqYXJhcHBfU1JDU30pCitlY21fc2V0 X2Rpc2FibGVkX2RlcHJlY2F0aW9uX3ZlcnNpb25zKFFUIDYuMTEgS0YgNi4xMikKIAotcXQ2X2Fk ZF9yZXNvdXJjZXMoa2phcl93YXRjaGVyX1JFU09VUkNFUyBzcmMvd2F0Y2hlci93YXRjaGVyLnFy YykKK2VjbV9zZXR1cF92ZXJzaW9uKCR7UFJPSkVDVF9WRVJTSU9OfQorICAgIFZBUklBQkxFX1BS RUZJWCBLSkFSCisgICAgVkVSU0lPTl9IRUFERVIgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElS fS9ramFyLXZlcnNpb24uaCIKKykKIAotc2V0KGtqYXJfd2F0Y2hlcl9TUkNTCi0gICAgc3JjL3dh dGNoZXIva2phcl93YXRjaGVyLmNwcAotICAgICR7a2phcl93YXRjaGVyX1JFU09VUkNFU30KK3F0 X2FkZF9leGVjdXRhYmxlKGtqYXJhcHAKKyAgICBzcmMvbWFpbi5jcHAKKyAgICBzcmMva2phci5j cHAKKyAgICBzcmMva2phci5oCisgICAgc3JjL2tqYXJhcHAuY3BwCisgICAgc3JjL2tqYXJhcHAu aAogKQogCi1hZGRfZXhlY3V0YWJsZShramFyX3dhdGNoZXIgJHtramFyX3dhdGNoZXJfU1JDU30p CitxdF9hZGRfcW1sX21vZHVsZShramFyYXBwCisgICAgVVJJIG9yZy5rZGUua2phcgorICAgIFZF UlNJT04gMS4wCisgICAgUU1MX0ZJTEVTCisgICAgICAgIHNyYy9xbWwvTWFpbi5xbWwKKyAgICAg ICAgc3JjL3FtbC9FcnJvckRpYWxvZy5xbWwKKykKIAotdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGtq YXJhcHAKLSAgICBRdDY6OkNvcmUKLSAgICBRdDY6OlFtbAotICAgIFF0Njo6UXVpY2sKLSAgICBR dDY6OlF1aWNrQ29udHJvbHMyCi0gICAgUXQ2OjpXaWRnZXRzCi0gICAgS0Y2OjpDb3JlQWRkb25z Ci0gICAgS0Y2OjpJMThuCi0gICAgS0Y2OjpLaXJpZ2FtaQordGFyZ2V0X2luY2x1ZGVfZGlyZWN0 b3JpZXMoa2phcmFwcCBQUklWQVRFCisgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Ny YworICAgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfQogKQogCi10YXJnZXRfbGlua19saWJy YXJpZXMoa2phcl93YXRjaGVyCit0YXJnZXRfbGlua19saWJyYXJpZXMoa2phcmFwcCBQUklWQVRF CiAgICAgUXQ2OjpDb3JlCisgICAgUXQ2OjpHdWkKICAgICBRdDY6OlFtbAogICAgIFF0Njo6UXVp Y2sKICAgICBRdDY6OlF1aWNrQ29udHJvbHMyCi0gICAgUXQ2OjpXaWRnZXRzCisgICAgS0Y2OjpD b3JlQWRkb25zCiAgICAgS0Y2OjpJMThuCisgICAgS0Y2OjpJMThuUW1sCiAgICAgS0Y2OjpLaXJp Z2FtaQogKQogCiBraTE4bl9pbnN0YWxsKHBvKQogCi1maWxlKEdMT0JfUkVDVVJTRSBBTExfQ0xB TkdfRk9STUFUX1NPVVJDRV9GSUxFUwotICAgIHNyYy8qLmNwcAotICAgIHNyYy8qLmgKLSAgICBz cmMvKi5ocHAKLSAgICBzcmMvd2F0Y2hlci8qLmNwcAotICAgIHNyYy93YXRjaGVyLyouaAoraW5z dGFsbChUQVJHRVRTIGtqYXJhcHAgJHtLREVfSU5TVEFMTF9UQVJHRVRTX0RFRkFVTFRfQVJHU30p CisKK2luc3RhbGwoRklMRVMgb3JnLmtkZS5ramFyLmRlc2t0b3AgREVTVElOQVRJT04gJHtLREVf SU5TVEFMTF9BUFBESVJ9KQoraW5zdGFsbChGSUxFUyBvcmcua2RlLmtqYXIubWV0YWluZm8ueG1s IERFU1RJTkFUSU9OICR7S0RFX0lOU1RBTExfTUVUQUlORk9ESVJ9KQoraW5zdGFsbChGSUxFUyBp Y29ucy9vcmcua2RlLmtqYXIuc3ZnCisgICAgREVTVElOQVRJT04gJHtLREVfSU5TVEFMTF9JQ09O RElSfS9oaWNvbG9yL3NjYWxhYmxlL2FwcHMKICkKIAorZmlsZShHTE9CX1JFQ1VSU0UgQUxMX0NM QU5HX0ZPUk1BVF9TT1VSQ0VfRklMRVMgc3JjLyouY3BwIHNyYy8qLmgpCiBrZGVfY2xhbmdfZm9y bWF0KCR7QUxMX0NMQU5HX0ZPUk1BVF9TT1VSQ0VfRklMRVN9KQoga2RlX2NvbmZpZ3VyZV9naXRf cHJlX2NvbW1pdF9ob29rKENIRUNLUyBDTEFOR19GT1JNQVQpCi0KLWluc3RhbGwoVEFSR0VUUyBr amFyYXBwIGtqYXJfd2F0Y2hlciAke0tERV9JTlNUQUxMX1RBUkdFVFNfREVGQVVMVF9BUkdTfSkK K2ZlYXR1cmVfc3VtbWFyeShXSEFUIEFMTCBGQVRBTF9PTl9NSVNTSU5HX1JFUVVJUkVEX1BBQ0tB R0VTKQpkaWZmIC0tZ2l0IGEvTWVzc2FnZXMuc2ggYi9NZXNzYWdlcy5zaApuZXcgZmlsZSBtb2Rl IDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZjZmODJhCi0tLSAvZGV2L251bGwKKysrIGIvTWVzc2Fn ZXMuc2gKQEAgLTAsMCArMSw4IEBACisjISAvdXNyL2Jpbi9lbnYgYmFzaAorIyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQ0MwLTEuMAorIyBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiBub25lCisK KyRFWFRSQUNUUkMgJChmaW5kIC4gLW5hbWUgJyoudWknIC1vIC1uYW1lICcqLnJjJykgPj4gcmMu Y3BwIDI+L2Rldi9udWxsCiskWEdFVFRFWFQgJChmaW5kIHNyYyAtbmFtZSAnKi5jcHAnIC1vIC1u YW1lICcqLmgnIC1vIC1uYW1lICcqLnFtbCcpIFwKKyAgICByYy5jcHAgLW8gIiRwb2RpciIvb3Jn LmtkZS5ramFyLnBvdAorcm0gLWYgcmMuY3BwCmRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFE TUUubWQKaW5kZXggODNhMzUxOS4uMmVlZjA1MSAxMDA2NDQKLS0tIGEvUkVBRE1FLm1kCisrKyBi L1JFQURNRS5tZApAQCAtMSwxNCArMSwyNyBAQAogIyBramFyCiAqKksqKm9vbCAqKkoqKmF2YSAq KkEqKnJjaGl2ZSAqKlIqKnVubmVyIChwcm9ub3VuY2VkICpLLWphcnJycmdoKiwgbGlrZSBhIGRy YWdvbiBwaXJhdGUgPjpEKS4KIAotUnVuIEpBUiBmaWxlcyBkaXJlY3RseSB2aWEgYSBidW5kbGVk IE9wZW5KREsgRmxhdHBhayB3aXRoIGEgS2lyaWdhbWkgR1VJLiBBbmQgb3B0aW9uYWx5IGdlbmVy YXRlIHdyYXBwZXIgc2NyaXB0cyBmb3IgZGV2ZWxvcGVycyB3aG8gZ2V0IHRpcmVkIG9mIHR5cGlu ZyBvdXQgYGZsYXRwYWsgcnVuYCBjb21tYW5kcy4KK1J1biBKQVIgZmlsZXMgZGlyZWN0bHkgdmlh IGEgYnVuZGxlZCBPcGVuSkRLIEZsYXRwYWsgd2l0aCBhIEtpcmlnYW1pIEdVSS4gQW5kIG9wdGlv bmFsbHkgZ2VuZXJhdGUgd3JhcHBlciBzY3JpcHRzIGZvciBkZXZlbG9wZXJzIHdobyBnZXQgdGly ZWQgb2YgdHlwaW5nIG91dCBgZmxhdHBhayBydW5gIGNvbW1hbmRzLgorCisjIyBTZWN1cml0eQor CisqKktKYXIgZG9lcyBub3Qgc2FuZGJveCB0aGUgSkFScyBpdCBydW5zLioqCisKK1RoZSBGbGF0 cGFrIGhvbGRzIGAtLWZpbGVzeXN0ZW09aG9tZWAgYW5kIGAtLXNoYXJlPW5ldHdvcmtgLCBhbmQg dGhlIEpWTSBpdAorc3RhcnRzIGluaGVyaXRzIGJvdGguIEEgSkFSIGxhdW5jaGVkIHRocm91Z2gg S0phciBjYW4gdGhlcmVmb3JlIHJlYWQgYW5kIG1vZGlmeQorZXZlcnl0aGluZyBpbiB5b3VyIEhv bWUgZm9sZGVyIGFuZCB0YWxrIHRvIHRoZSBuZXR3b3JrIGV4YWN0bHkgYXMgaXQgY291bGQKK3Vu ZGVyIGEgc3lzdGVtLXdpZGUgSmF2YSBpbnN0YWxsYXRpb24uCisKKyoqT25seSBydW4gSkFSIGZp bGVzIHlvdSB0cnVzdC4qKgogCiAjIyBCdWlsZAorCitOZWVkcyB0aGUgYG9yZy5rZGUuUGxhdGZv cm1gIGFuZCBgb3JnLmtkZS5TZGtgIDYuMTEgcnVudGltZXMgcGx1cyB0aGUKK2BvcmcuZnJlZWRl c2t0b3AuU2RrLkV4dGVuc2lvbi5vcGVuamRrMjVgIGV4dGVuc2lvbiwgZnJvbSB3aGljaGV2ZXIg cmVtb3RlIHlvdQorYWxyZWFkeSBoYXZlIHRoZW0gb24uCisKIGBgYAotZmxhdHBhayByZW1vdGUt YWRkIC0tdXNlciBmbGF0aHViIGh0dHBzOi8vZmxhdGh1Yi5vcmcvcmVwby9mbGF0aHViLmZsYXRw YWtyZXBvCi1gYGAKLWBgYAotZmxhdHBhay1idWlsZGVyIC0taW5zdGFsbCAtLXVzZXIgLS1pbnN0 YWxsLWRlcHMtZnJvbT1mbGF0aHViIC0tZm9yY2UtY2xlYW4gYnVpbGQtZGlyIC5mbGF0cGFrLW1h bmlmZXN0Lmpzb24KK2ZsYXRwYWstYnVpbGRlciAtLWluc3RhbGwgLS11c2VyIC0tZm9yY2UtY2xl YW4gYnVpbGQtZGlyIC5mbGF0cGFrLW1hbmlmZXN0Lmpzb24KIGBgYAogCiAjIyBVc2UKQEAgLTI3 LDcgKzQwLDE1IEBAIEtKYXIgaXMgYWxzbyByZWdpc3RlcmVkIGFzIGEgaGFuZGxlciBmb3IgYC5q YXJgIGZpbGVzIHNvIHlvdSBjYW4gb3BlbiB0aGVtIGRpcmVjCiBmbGF0cGFrIHJ1biBvcmcua2Rl LmtqYXIgL3BhdGgvdG8vYXBwLmphcgogYGBgCiAKLUlmIEphdmEgcmVwb3J0cyBhbiBlcnJvciAo ZS5nLiBtaXNzaW5nIG1haW4gbWFuaWZlc3QgYXR0cmlidXRlKSB0aGUgR1VJIG9wZW5zIGF1dG9t YXRpY2FsbHkgYW5kIGRpc3BsYXlzIGl0LgorVGhlIGNvbW1hbmQgcmV0dXJucyBpbW1lZGlhdGVs eTsgdGhlIEpBUiBrZWVwcyBydW5uaW5nIGluIGEgd2F0Y2hlciBwcm9jZXNzLgorSWYgSmF2YSBy ZXBvcnRzIGFuIGVycm9yIChlLmcuIG1pc3NpbmcgbWFpbiBtYW5pZmVzdCBhdHRyaWJ1dGUpIHRo ZSB3YXRjaGVyCitvcGVucyBhIHdpbmRvdyBhbmQgZGlzcGxheXMgaXQuCisKK0EgSkFSIGNhbiBh bHNvIGZhaWwgd2l0aG91dCBhIG5vbi16ZXJvIGV4aXQgY29kZSwgZm9yIGV4YW1wbGUgd2hlbiBp dCBkaWVzIG9uCit0aGUgQVdUIGV2ZW50IHRocmVhZC4gVGhlIHdhdGNoZXIgdGhlcmVmb3JlIHRy ZWF0cyBhbnl0aGluZyBvbiBzdGRlcnIgYXMgYQorZmFpbHVyZS4gU29tZSBKQVJzIHdyaXRlIHdh cm5pbmdzIHRoZXJlIGFuZCB3b3JrIGZpbmUsIHNvIHRoZSB3aW5kb3cgY2FuIHR1cm4KK3VwIGFm dGVyIGEgcGVyZmVjdGx5IGdvb2QgcnVuOyBpdCBvbmx5IGV2ZXIgYXBwZWFycyBvbmNlIHRoZSBK QVIgaGFzIGV4aXRlZCwgc28KK2Nsb3NpbmcgaXQgY29zdHMgbm90aGluZy4KIAogIyMjIEphdmFG WAogCkBAIC01MSw2ICs3MiwyMSBAQCBmbGF0cGFrIHJ1biBvcmcua2RlLmtqYXIgLS1nZW5lcmF0 ZS13cmFwcGVycwogCiBPciB2aWEgdGhlIEdVSTogKipBZHZhbmNlZCDihpIgR2VuZXJhdGUgV3Jh cHBlcnMqKi4gRXhpc3Rpbmcgbm9uLWtqYXIgYmluYXJpZXMgYXJlIG5ldmVyIG92ZXJ3cml0dGVu LiBgfi8ubG9jYWwvYmluYCBtdXN0IGJlIGluIGBQQVRIYC4KIAorTm90ZSB0aGF0IGEgZ2VuZXJh dGVkIGBqYXZhYCBpbiBgfi8ubG9jYWwvYmluYCBzaGFkb3dzIGEgc3lzdGVtIEpESyB3aGVuZXZl cgorYH4vLmxvY2FsL2JpbmAgY29tZXMgZmlyc3QgaW4gYFBBVEhgLgorCitXcmFwcGVycyBjYW4g b25seSBzZWUgZmlsZXMgaW5zaWRlIHlvdXIgSG9tZSBmb2xkZXIsIHNvIGBqYXZhYyAvdG1wL0Zv by5qYXZhYAord2lsbCBub3Qgd29yayB1bmxlc3MgeW91IGV4dGVuZCB0aGUgcGVybWlzc2lvbiBp biBTeXN0ZW0gU2V0dGluZ3MuCisKKyMjIyBSZW1vdmUgd3JhcHBlcnMKKworRGVsZXRlcyB0aGUg c2NyaXB0cyBramFyIHdyb3RlIGFuZCBub3RoaW5nIGVsc2U6CitgYGAKK2ZsYXRwYWsgcnVuIG9y Zy5rZGUua2phciAtLXJlbW92ZS13cmFwcGVycworYGBgCisKK09yIHZpYSB0aGUgR1VJOiAqKkFk dmFuY2VkIOKGkiBSZW1vdmUgV3JhcHBlcnMqKi4KKwogIyMjIExpc3QgYXZhaWxhYmxlIHRvb2xz CiAKIFZpYSB0aGUgR1VJOiAqKkFkdmFuY2VkIOKGkiBTaG93IEF2YWlsYWJsZSBUb29scyoqLgpA QCAtNjEsNyArOTcsMTggQEAgZmxhdHBhayBydW4gb3JnLmtkZS5ramFyIGphdmEgLXZlcnNpb24K IGZsYXRwYWsgcnVuIG9yZy5rZGUua2phciBqYXZhYyBNeUNsYXNzLmphdmEKIGBgYAogCi1Nb2R1 bGUtYXdhcmUgdG9vbHMgKGBqYXZhYCwgYGphdmFjYCwgYGphdmFkb2NgLCBgamRlcHNgLCBganNo ZWxsYCwgYGpsaW5rYCwgYGpuYXRpdmVzY2FuYCwgYGpwYWNrYWdlYCkgYXV0b21hdGljYWxseSBn ZXQgdGhlIGJ1bmRsZWQgSmF2YUZYIGFuZCBgfi8ubG9jYWwvc2hhcmUva2phci9tb2R1bGVzL2Ag b24gdGhlaXIgbW9kdWxlIHBhdGguCitgamF2YWAsIGBqYXZhY2AsIGBqYXZhZG9jYCwgYGpkZXBz YCwgYGpzaGVsbGAgYW5kIGBqbmF0aXZlc2NhbmAgZ2V0IHRoZSBidW5kbGVkCitKYXZhRlggYW5k IGB+Ly5sb2NhbC9zaGFyZS9ramFyL21vZHVsZXMvYCBhcHBlbmRlZCB0byB0aGVpciBtb2R1bGUg cGF0aC4gT2YKK3Rob3NlLCBgamF2YWAsIGBqYXZhY2AsIGBqYXZhZG9jYCBhbmQgYGpzaGVsbGAg YWxzbyBnZXQKK2AtLWFkZC1tb2R1bGVzIEFMTC1NT0RVTEUtUEFUSGAsIHVubGVzcyB5b3UgcGFz cyB5b3VyIG93biBgLS1hZGQtbW9kdWxlc2AsCitjb21waWxlIGEgYG1vZHVsZS1pbmZvLmphdmFg LCBvciBydW4gYSBtb2R1bGUgd2l0aCBgLW1gLgorCitgamxpbmtgIGFuZCBganBhY2thZ2VgIGFy ZSBsZWZ0IGFsb25lLCBzaW5jZSBhIHdpZGVyIG1vZHVsZSBncmFwaCB3b3VsZCBjaGFuZ2UKK3Ro ZSBpbWFnZSB0aGV5IHByb2R1Y2UuCisKK0ZvciBgamF2YWAsIG9ubHkgdGhlIGFyZ3VtZW50cyBi ZWZvcmUgYC1qYXJgLCBgLW1gIG9yIHRoZSBtYWluIGNsYXNzIGFyZQordHJlYXRlZCBhcyBKVk0g b3B0aW9uczsgYW55dGhpbmcgYWZ0ZXIgdGhhdCBpcyBwYXNzZWQgdG8geW91ciBwcm9ncmFtCit1 bnRvdWNoZWQuCiAKICMjIExpY2Vuc2UKIApkaWZmIC0tZ2l0IGEvUkVVU0UudG9tbCBiL1JFVVNF LnRvbWwKaW5kZXggZmQ0ZTlmNy4uMmJmMzA3NiAxMDA2NDQKLS0tIGEvUkVVU0UudG9tbAorKysg Yi9SRVVTRS50b21sCkBAIC01LDExICs1LDYgQEAgcGF0aCA9ICJvcmcua2RlLmtqYXIuZGVza3Rv cCIKIFNQRFgtRmlsZUNvcHlyaWdodFRleHQgPSAibm9uZSIKIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyID0gIkNDMC0xLjAiCiAKLVtbYW5ub3RhdGlvbnNdXQotcGF0aCA9ICJvcmcua2RlLmtqYXIu bWV0YWluZm8ueG1sIgotU1BEWC1GaWxlQ29weXJpZ2h0VGV4dCA9ICJub25lIgotU1BEWC1MaWNl bnNlLUlkZW50aWZpZXIgPSAiQ0MwLTEuMCIKLQogW1thbm5vdGF0aW9uc11dCiBwYXRoID0gIlJF QURNRS5tZCIKIFNQRFgtRmlsZUNvcHlyaWdodFRleHQgPSAibm9uZSIKQEAgLTE4LDQgKzEzLDQg QEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXIgPSAiQ0MwLTEuMCIKIFtbYW5ub3RhdGlvbnNdXQog cGF0aCA9ICIuZmxhdHBhay1tYW5pZmVzdC5qc29uIgogU1BEWC1GaWxlQ29weXJpZ2h0VGV4dCA9 ICJub25lIgotU1BEWC1MaWNlbnNlLUlkZW50aWZpZXIgPSAiQ0MwLTEuMCIKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCitTUERYLUxpY2Vuc2UtSWRlbnRpZmllciA9ICJDQzAtMS4wIgpkaWZm IC0tZ2l0IGEvaWNvbnMvb3JnLmtkZS5ramFyLnN2ZyBiL2ljb25zL29yZy5rZGUua2phci5zdmcK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2EzNmE4ZQotLS0gL2Rldi9udWxs CisrKyBiL2ljb25zL29yZy5rZGUua2phci5zdmcKQEAgLTAsMCArMSw4MSBAQAorPD94bWwgdmVy c2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cis8IS0tIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBDQzAtMS4wIC0tPgorPCEtLSBTUERYLUZpbGVDb3B5cmlnaHRU ZXh0OiBub25lIC0tPgorPHN2ZworICAgd2lkdGg9IjY0IgorICAgaGVpZ2h0PSI2NCIKKyAgIHZp ZXdCb3g9IjAgMCA2NCA2NCIKKyAgIHZlcnNpb249IjEuMSIKKyAgIGlkPSJzdmc3IgorICAgc29k aXBvZGk6ZG9jbmFtZT0ia2phci1pY29uLXBsYWluLnN2ZyIKKyAgIGlua3NjYXBlOnZlcnNpb249 IjEuNC40IChkY2FmM2U3ZDllLCAyMDI2LTA1LTA1KSIKKyAgIHhtbG5zOmlua3NjYXBlPSJodHRw Oi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgorICAgeG1sbnM6c29kaXBv ZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgor ICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgorICAgeG1sbnM6c3ZnPSJodHRw Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgIDxkZWZzCisgICAgIGlkPSJkZWZzNyIgLz4KKyAg PHNvZGlwb2RpOm5hbWVkdmlldworICAgICBpZD0ibmFtZWR2aWV3NyIKKyAgICAgcGFnZWNvbG9y PSIjZmZmZmZmIgorICAgICBib3JkZXJjb2xvcj0iIzAwMDAwMCIKKyAgICAgYm9yZGVyb3BhY2l0 eT0iMC4yNSIKKyAgICAgaW5rc2NhcGU6c2hvd3BhZ2VzaGFkb3c9IjIiCisgICAgIGlua3NjYXBl OnBhZ2VvcGFjaXR5PSIwLjAiCisgICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCisg ICAgIGlua3NjYXBlOmRlc2tjb2xvcj0iI2QxZDFkMSIKKyAgICAgaW5rc2NhcGU6em9vbT0iMTMu NjA5Mzc1IgorICAgICBpbmtzY2FwZTpjeD0iMzIiCisgICAgIGlua3NjYXBlOmN5PSIzMiIKKyAg ICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgorICAgICBpbmtzY2FwZTp3aW5kb3ctaGVp Z2h0PSIxMTIyIgorICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKKyAgICAgaW5rc2NhcGU6d2lu ZG93LXk9IjAiCisgICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCisgICAgIGlua3Nj YXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzciIC8+CisgIDxnCisgICAgIGZpbGw9Im5vbmUiCisgICAg IHN0cm9rZT0iIzdmYzdlYSIKKyAgICAgc3Ryb2tlLXdpZHRoPSIzIgorICAgICBzdHJva2UtbGlu ZWNhcD0icm91bmQiCisgICAgIGlkPSJnMyIKKyAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEu MTAyMTgxNCwxLjk4MzkyNjUpIj4KKyAgICA8cGF0aAorICAgICAgIGQ9Im0gMjUsMTcgYyAzLC0z IC0zLC01IDAsLTgiCisgICAgICAgaWQ9InBhdGgxIiAvPgorICAgIDxwYXRoCisgICAgICAgZD0i TSAzMywxNSBDIDM2LDEyIDMwLDkgMzMsNiIKKyAgICAgICBpZD0icGF0aDIiIC8+CisgICAgPHBh dGgKKyAgICAgICBkPSJtIDQxLDE3IGMgMywtMyAtMywtNSAwLC04IgorICAgICAgIGlkPSJwYXRo MyIgLz4KKyAgPC9nPgorICA8cGF0aAorICAgICBkPSJtIDQzLjA4OTU1MywzMC4yOTM5MTUgaCAz IGEgOCw4IDAgMCAxIDAsMTUgaCAtNCIKKyAgICAgZmlsbD0ibm9uZSIKKyAgICAgc3Ryb2tlPSIj Mjk4MGI5IgorICAgICBzdHJva2Utd2lkdGg9IjUiCisgICAgIGlkPSJwYXRoNCIgLz4KKyAgPHBh dGgKKyAgICAgZD0iTTE0IDI2aDMybC0zIDIwYTcgNyAwIDAgMS03IDZoLTEyYTcgNyAwIDAgMS03 LTZ6IgorICAgICBmaWxsPSIjM2RhZWU5IgorICAgICBpZD0icGF0aDUiIC8+CisgIDxyZWN0Cisg ICAgIHg9IjEyLjI5MzkxNSIKKyAgICAgeT0iMjQuMzY3MzkzIgorICAgICB3aWR0aD0iMzUuNjMy NjA3IgorICAgICBoZWlnaHQ9IjQuNjMyNjA2IgorICAgICByeD0iMi40NzQ0ODY2IgorICAgICBm aWxsPSIjMjk4MGI5IgorICAgICBpZD0icmVjdDUiCisgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6 MC45NTc2MzU7ZmlsbDojMjk3NmI5O2ZpbGwtb3BhY2l0eToxIiAvPgorICA8cGF0aAorICAgICBk PSJNMTkgMjloNGwyIDIzaC0xYTUgNSAwIDAgMS00LTR6IgorICAgICBmaWxsPSIjNWZiZmVjIgor ICAgICBpZD0icGF0aDYiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gOS42NTUyNjI1LDU0IEggNTQu MDUwODIzIEEgMi44OTUzNjI2LDMgMCAwIDEgNTEuMTU1NDYsNTggSCAxMi41NTA2MjUgQSAyLjg5 NTM2MjYsMyAwIDAgMSA5LjY1NTI2MjUsNTQgWiIKKyAgICAgZmlsbD0iIzI5ODBiOSIKKyAgICAg aWQ9InBhdGg3IgorICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuOTgyNDA2IiAvPgorPC9zdmc+ CmRpZmYgLS1naXQgYS9vcmcua2RlLmtqYXIuZGVza3RvcCBiL29yZy5rZGUua2phci5kZXNrdG9w CmluZGV4IDRjNmU3MDguLjcwZDc5MzYgMTAwNjQ0Ci0tLSBhL29yZy5rZGUua2phci5kZXNrdG9w CisrKyBiL29yZy5rZGUua2phci5kZXNrdG9wCkBAIC0xLDkgKzEsMTIgQEAKIFtEZXNrdG9wIEVu dHJ5XQogTmFtZT1KYXZhIEFyY2hpdmUgUnVubmVyCi1Db21tZW50PVJ1biBKQVIgZmlsZXMKK0dl bmVyaWNOYW1lPUpBUiBSdW5uZXIKK0NvbW1lbnQ9UnVuIEphdmEgYXJjaGl2ZXMgdXNpbmcgYSBi dW5kbGVkIE9wZW5KREsKIEV4ZWM9a2phcmFwcCAlZgotSWNvbj1hcHBsaWNhdGlvbi14LWphdmEt YXJjaGl2ZQorSWNvbj1vcmcua2RlLmtqYXIKIFRlcm1pbmFsPWZhbHNlCiBUeXBlPUFwcGxpY2F0 aW9uCi1NaW1lVHlwZT1hcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmU7Ci1DYXRlZ29yaWVzPURldmVs b3BtZW50OworTWltZVR5cGU9YXBwbGljYXRpb24vamF2YS1hcmNoaXZlO2FwcGxpY2F0aW9uL3gt amF2YS1hcmNoaXZlOworQ2F0ZWdvcmllcz1EZXZlbG9wbWVudDtVdGlsaXR5OworS2V5d29yZHM9 SmF2YTtKQVI7SkRLO0pWTTtPcGVuSkRLOworU3RhcnR1cE5vdGlmeT10cnVlCmRpZmYgLS1naXQg YS9vcmcua2RlLmtqYXIubWV0YWluZm8ueG1sIGIvb3JnLmtkZS5ramFyLm1ldGFpbmZvLnhtbApp bmRleCBkNDM1YzliLi43MTQ4NDVkIDEwMDY0NAotLS0gYS9vcmcua2RlLmtqYXIubWV0YWluZm8u eG1sCisrKyBiL29yZy5rZGUua2phci5tZXRhaW5mby54bWwKQEAgLTEsMjIgKzEsNTMgQEAKIDw/ eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y29tcG9uZW50IHR5cGU9ImFk ZG9uIj4KKzwhLS0gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDMC0xLjAgLS0+Cis8IS0tIFNQ RFgtRmlsZUNvcHlyaWdodFRleHQ6IG5vbmUgLS0+Cis8Y29tcG9uZW50IHR5cGU9ImRlc2t0b3At YXBwbGljYXRpb24iPgogICAgIDxpZD5vcmcua2RlLmtqYXI8L2lkPgotICAgIDxuYW1lPmtqYXI8 L25hbWU+Ci0gICAgPHN1bW1hcnk+S2lyaWdhbWkgbGF1bmNoZXIgZm9yIEpBUiBmaWxlcyB3aXRo IGEgYnVuZGxlZCBGbGF0cGFrLU9wZW5KREs8L3N1bW1hcnk+CisgICAgPG5hbWU+SmF2YSBBcmNo aXZlIFJ1bm5lcjwvbmFtZT4KKyAgICA8c3VtbWFyeT5SdW4gSkFSIGZpbGVzIHdpdGggYSBidW5k bGVkIE9wZW5KREs8L3N1bW1hcnk+CiAKICAgICA8bWV0YWRhdGFfbGljZW5zZT5DQzAtMS4wPC9t ZXRhZGF0YV9saWNlbnNlPgogICAgIDxwcm9qZWN0X2xpY2Vuc2U+R1BMLTIuMC1vbmx5IE9SIEdQ TC0zLjAtb25seSBPUiBMaWNlbnNlUmVmLUtERS1BY2NlcHRlZC1HUEw8L3Byb2plY3RfbGljZW5z ZT4KKyAgICA8cHJvamVjdF9ncm91cD5LREU8L3Byb2plY3RfZ3JvdXA+CisKKyAgICA8bGF1bmNo YWJsZSB0eXBlPSJkZXNrdG9wLWlkIj5vcmcua2RlLmtqYXIuZGVza3RvcDwvbGF1bmNoYWJsZT4K KworICAgIDx0cmFuc2xhdGlvbiB0eXBlPSJnZXR0ZXh0Ij5vcmcua2RlLmtqYXI8L3RyYW5zbGF0 aW9uPgorCisgICAgPHByb3ZpZGVzPgorICAgICAgICA8YmluYXJ5PmtqYXJhcHA8L2JpbmFyeT4K KyAgICA8L3Byb3ZpZGVzPgorCisgICAgPGRldmVsb3BlciBpZD0ib3JnLmtkZSI+CisgICAgICAg IDxuYW1lPktERSBDb21tdW5pdHk8L25hbWU+CisgICAgPC9kZXZlbG9wZXI+CiAKICAgICA8ZGVz Y3JpcHRpb24+CiAgICAgICAgIDxwPgotICAgICAgICAgICAga2phciBwcm92aWRlcyBhbiBPcGVu SkRLIHJ1bnRpbWUgdmlhIEZsYXRwYWsgd2l0aCBhIEtpcmlnYW1pIEdVSSBmb3IgZGVza3RvcCB1 c2UKLSAgICAgICAgICAgIGFuZCBjYW4gZ2VuZXJhdGUgd3JhcHBlciBzY3JpcHRzIHNvIEpESyB0 b29scyBjYW4gYmUgdXNlZCBsaWtlIGEgbm9ybWFsIHN5c3RlbSBKREsuCisgICAgICAgICAgICBr amFyIHJ1bnMgSmF2YSBhcmNoaXZlcyB1c2luZyBhIGJ1bmRsZWQgT3BlbkpESyBydW50aW1lLCB3 aXRoIGEgS2lyaWdhbWkKKyAgICAgICAgICAgIGludGVyZmFjZSBmb3Igb3BlbmluZyBKQVJzIGFu ZCBpbnNwZWN0aW5nIGZhaWx1cmVzLiBKYXZhRlggaXMgaW5jbHVkZWQsIGFuZAorICAgICAgICAg ICAgYWRkaXRpb25hbCBtb2R1bGVzIGNhbiBiZSBkcm9wcGVkIGludG8gYSB1c2VyIGRpcmVjdG9y eS4KKyAgICAgICAgPC9wPgorICAgICAgICA8cD4KKyAgICAgICAgICAgIEl0IGNhbiBhbHNvIGdl bmVyYXRlIHdyYXBwZXIgc2NyaXB0cyBzbyB0aGUgYnVuZGxlZCBKREsgdG9vbHMgYmVoYXZlIGxp a2UgYQorICAgICAgICAgICAgc3lzdGVtIEpESyBvbiB0aGUgY29tbWFuZCBsaW5lLgorICAgICAg ICA8L3A+CisgICAgICAgIDxwPgorICAgICAgICAgICAgUGxlYXNlIG5vdGU6IGtqYXIgYnVuZGxl cyBhIEphdmEgcnVudGltZSwgYnV0IGl0IGRvZXMgbm90IHNhbmRib3ggdGhlCisgICAgICAgICAg ICBwcm9ncmFtcyBpdCBydW5zLiBBIEpBUiBsYXVuY2hlZCB0aHJvdWdoIGtqYXIgaGFzIHJlYWQg YW5kIHdyaXRlIGFjY2VzcyB0bworICAgICAgICAgICAgeW91ciBIb21lIGZvbGRlciBhbmQgYWNj ZXNzIHRvIHRoZSBuZXR3b3JrLCBleGFjdGx5IGFzIGl0IHdvdWxkIHVuZGVyIGEKKyAgICAgICAg ICAgIHN5c3RlbS13aWRlIEphdmEgaW5zdGFsbGF0aW9uLiBPbmx5IHJ1biBKQVIgZmlsZXMgeW91 IHRydXN0LgogICAgICAgICA8L3A+CiAgICAgPC9kZXNjcmlwdGlvbj4KIAotICAgIDxwcm92aWRl cz4KLSAgICAgICAgPGJpbmFyeT5qYXZhPC9iaW5hcnk+Ci0gICAgICAgIDxiaW5hcnk+amF2YWM8 L2JpbmFyeT4KLSAgICAgICAgPGJpbmFyeT5qYXI8L2JpbmFyeT4KLSAgICA8L3Byb3ZpZGVzPgor ICAgIDxjb250ZW50X3JhdGluZyB0eXBlPSJvYXJzLTEuMSIvPgorCisgICAgPHVybCB0eXBlPSJo b21lcGFnZSI+aHR0cHM6Ly9pbnZlbnQua2RlLm9yZy9zeXN0ZW0va2phcjwvdXJsPgorICAgIDx1 cmwgdHlwZT0iYnVndHJhY2tlciI+aHR0cHM6Ly9pbnZlbnQua2RlLm9yZy9zeXN0ZW0va2phci8t L2lzc3VlczwvdXJsPgorICAgIDx1cmwgdHlwZT0idmNzLWJyb3dzZXIiPmh0dHBzOi8vaW52ZW50 LmtkZS5vcmcvc3lzdGVtL2tqYXI8L3VybD4KKyAgICA8dXJsIHR5cGU9ImNvbnRyaWJ1dGUiPmh0 dHBzOi8vaW52ZW50LmtkZS5vcmcvc3lzdGVtL2tqYXIvLS9ibG9iL21hc3Rlci9SRUFETUUubWQ8 L3VybD4KKworICAgIDxyZWxlYXNlcz4KKyAgICAgICAgPHJlbGVhc2UgdmVyc2lvbj0iMC4zLjAi IGRhdGU9IjIwMjYtMDgtMDQiLz4KKyAgICA8L3JlbGVhc2VzPgogPC9jb21wb25lbnQ+CmRpZmYg LS1naXQgYS9zcmMva2phci5jcHAgYi9zcmMva2phci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMjI0NjQzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9ramFyLmNwcApA QCAtMCwwICsxLDg3IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 IE9SIEdQTC0zLjAtb25seSBPUiBMaWNlbnNlUmVmLUtERS1BY2NlcHRlZC1HUEwKKy8vIFNQRFgt RmlsZUNvcHlyaWdodFRleHQ6IDIwMjYgSGFkaSBDaG9rciA8aGFkaWNob2tyQGljbG91ZC5jb20+ CisKKyNpbmNsdWRlICJramFyLmgiCisKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2lu Y2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UUZpbGVJbmZvPgorCisjaW5jbHVkZSA8YWxnb3JpdGht PgorI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CisKK3VzaW5nIG5hbWVzcGFjZSBRdDo6TGl0 ZXJhbHM6OlN0cmluZ0xpdGVyYWxzOworCituYW1lc3BhY2UKK3sKKworYm9vbCBtYXRjaGVzQW55 KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxRTGF0aW4xU3RyaW5nVmlldz4gbmFtZXMsIFFTdHJpbmdW aWV3IG5hbWUpCit7CisgICAgcmV0dXJuIHN0ZDo6cmFuZ2VzOjphbnlfb2YobmFtZXMsIFtuYW1l XShRTGF0aW4xU3RyaW5nVmlldyBjYW5kaWRhdGUpIHsKKyAgICAgICAgcmV0dXJuIG5hbWUgPT0g Y2FuZGlkYXRlOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZQorCitRU3RyaW5nIEtqYXI6 Ompka1Rvb2woUVN0cmluZ1ZpZXcgbmFtZSkKK3sKKyAgICBRU3RyaW5nIHBhdGggPSBRU3RyaW5n Ojpmcm9tTGF0aW4xKEpka0JpbkRpcik7CisgICAgcGF0aCArPSB1Jy8nOworICAgIHBhdGggKz0g bmFtZTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworUVN0cmluZyBLamFyOjpzZWxmUGF0aCgpCit7 CisgICAgY29uc3QgUVN0cmluZyBleGUgPSBRRmlsZUluZm8odSIvcHJvYy9zZWxmL2V4ZSJfcyku Y2Fub25pY2FsRmlsZVBhdGgoKTsKKyAgICByZXR1cm4gZXhlLmlzRW1wdHkoKSA/IFFDb3JlQXBw bGljYXRpb246OmFwcGxpY2F0aW9uRmlsZVBhdGgoKSA6IGV4ZTsKK30KKworUVN0cmluZyBLamFy Ojp1c2VyTW9kdWxlc0RpcigpCit7CisgICAgcmV0dXJuIFFEaXI6OmhvbWVQYXRoKCkgKyB1Ii8u bG9jYWwvc2hhcmUva2phci9tb2R1bGVzIl9zOworfQorCitib29sIEtqYXI6OmVuc3VyZVVzZXJN b2R1bGVzRGlyKCkKK3sKKyAgICByZXR1cm4gUURpcigpLm1rcGF0aCh1c2VyTW9kdWxlc0Rpcigp KTsKK30KKworUVN0cmluZyBLamFyOjp3cmFwcGVyRGlyKCkKK3sKKyAgICByZXR1cm4gUURpcjo6 aG9tZVBhdGgoKSArIHUiLy5sb2NhbC9iaW4iX3M7Cit9CisKK1FTdHJpbmdMaXN0IEtqYXI6Ompk a1Rvb2xzKCkKK3sKKyAgICBRU3RyaW5nTGlzdCB0b29sczsKKyAgICBjb25zdCBRRGlyIGRpcihR U3RyaW5nOjpmcm9tTGF0aW4xKEpka0JpbkRpcikpOworICAgIGNvbnN0IFFGaWxlSW5mb0xpc3Qg ZW50cmllcyA9IGRpci5lbnRyeUluZm9MaXN0KFFEaXI6OkZpbGVzIHwgUURpcjo6RXhlY3V0YWJs ZSwgUURpcjo6TmFtZSk7CisgICAgdG9vbHMucmVzZXJ2ZShlbnRyaWVzLnNpemUoKSk7CisgICAg Zm9yIChjb25zdCBRRmlsZUluZm8gJmZpIDogZW50cmllcykgeworICAgICAgICB0b29scy5hcHBl bmQoZmkuZmlsZU5hbWUoKSk7CisgICAgfQorICAgIHJldHVybiB0b29sczsKK30KKworYm9vbCBL amFyOjppc01vZHVsZVBhdGhUb29sKFFTdHJpbmdWaWV3IG5hbWUpCit7CisgICAgcmV0dXJuIG1h dGNoZXNBbnkoeyJqYXZhIl9MMSwgImphdmFjIl9MMSwgImphdmFkb2MiX0wxLCAiamRlcHMiX0wx LCAianNoZWxsIl9MMSwgImpuYXRpdmVzY2FuIl9MMX0sIG5hbWUpOworfQorCitib29sIEtqYXI6 OnRha2VzQWxsTW9kdWxlUGF0aChRU3RyaW5nVmlldyBuYW1lKQoreworICAgIHJldHVybiBtYXRj aGVzQW55KHsiamF2YSJfTDEsICJqYXZhYyJfTDEsICJqYXZhZG9jIl9MMSwgImpzaGVsbCJfTDF9 LCBuYW1lKTsKK30KKworUVN0cmluZyBLamFyOjptb2R1bGVQYXRoKCkKK3sKKyAgICByZXR1cm4g UVN0cmluZzo6ZnJvbUxhdGluMShKYXZhRnhEaXIpICsgdSc6JyArIHVzZXJNb2R1bGVzRGlyKCk7 Cit9CisKK1FTdHJpbmdMaXN0IEtqYXI6Om1vZHVsZUFyZ3MoKQoreworICAgIGVuc3VyZVVzZXJN b2R1bGVzRGlyKCk7CisgICAgcmV0dXJuIHt1Ii0tbW9kdWxlLXBhdGgiX3MsIG1vZHVsZVBhdGgo KSwgdSItLWFkZC1tb2R1bGVzIl9zLCB1IkFMTC1NT0RVTEUtUEFUSCJfc307Cit9CmRpZmYgLS1n aXQgYS9zcmMva2phci5oIGIvc3JjL2tqYXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4yNWUxNWI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2tqYXIuaApAQCAtMCwwICsx LDYyIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIEdQTC0z LjAtb25seSBPUiBMaWNlbnNlUmVmLUtERS1BY2NlcHRlZC1HUEwKKy8vIFNQRFgtRmlsZUNvcHly aWdodFRleHQ6IDIwMjYgSGFkaSBDaG9rciA8aGFkaWNob2tyQGljbG91ZC5jb20+CisKKyNpZm5k ZWYgS0pBUl9ICisjZGVmaW5lIEtKQVJfSAorCisjaW5jbHVkZSA8UUxhdGluMVN0cmluZ1ZpZXc+ CisjaW5jbHVkZSA8UVN0cmluZz4KKyNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KKworbmFtZXNwYWNl IEtqYXIKK3sKKworaW5saW5lIGNvbnN0ZXhwciBRTGF0aW4xU3RyaW5nVmlldyBBcHBJZCgib3Jn LmtkZS5ramFyIik7CitpbmxpbmUgY29uc3RleHByIFFMYXRpbjFTdHJpbmdWaWV3IEpka0JpbkRp cigiL2FwcC9qZGsvYmluIik7CitpbmxpbmUgY29uc3RleHByIFFMYXRpbjFTdHJpbmdWaWV3IEph dmFGeERpcigiL2FwcC9zaGFyZS9qYXZhZngiKTsKKworLyoqIEFic29sdXRlIHBhdGggb2YgYSB0 b29sIGluIHRoZSBidW5kbGVkIEpESy4gKi8KK1FTdHJpbmcgamRrVG9vbChRU3RyaW5nVmlldyBu YW1lKTsKKworLyoqCisgKiBBYnNvbHV0ZSBwYXRoIG9mIHRoaXMgZXhlY3V0YWJsZS4KKyAqLwor UVN0cmluZyBzZWxmUGF0aCgpOworCisvKioKKyAqIH4vLmxvY2FsL3NoYXJlL2tqYXIvbW9kdWxl cworICoKKyAqIERlbGliZXJhdGVseSAqbm90KiBRU3RhbmRhcmRQYXRoczo6QXBwRGF0YUxvY2F0 aW9uOiB1bmRlciBGbGF0cGFrIFhER19EQVRBX0hPTUUKKyAqIGlzIHJlZGlyZWN0ZWQgdG8gfi8u dmFyL2FwcC9vcmcua2RlLmtqYXIvZGF0YS4KKyAqLworUVN0cmluZyB1c2VyTW9kdWxlc0Rpcigp OworCisvKiogQ3JlYXRlcyB1c2VyTW9kdWxlc0RpcigpIGlmIGl0IGRvZXMgbm90IGV4aXN0IHll dC4gKi8KK2Jvb2wgZW5zdXJlVXNlck1vZHVsZXNEaXIoKTsKKworLyoqIH4vLmxvY2FsL2Jpbiwg aW5zaWRlIC0tZmlsZXN5c3RlbT1ob21lLCB3cml0YWJsZSBkaXJlY3RseSBmcm9tIHRoZSBzYW5k Ym94LiAqLworUVN0cmluZyB3cmFwcGVyRGlyKCk7CisKKy8qKiBFeGVjdXRhYmxlIG5hbWVzIGZv dW5kIGluIC9hcHAvamRrL2JpbiAqLworUVN0cmluZ0xpc3QgamRrVG9vbHMoKTsKKworLyoqIFRv b2xzIHRoYXQgdW5kZXJzdGFuZCAtLW1vZHVsZS1wYXRoLiAqLworYm9vbCBpc01vZHVsZVBhdGhU b29sKFFTdHJpbmdWaWV3IG5hbWUpOworCisvKioKKyAqIFN1YnNldCBvZiBpc01vZHVsZVBhdGhU b29sKCkgdGhhdCBtYXkgYWxzbyBnZXQgLS1hZGQtbW9kdWxlcyBBTEwtTU9EVUxFLVBBVEguCisg KgorICogamxpbmsgYW5kIGpwYWNrYWdlIGFyZSBleGNsdWRlZCBmcm9tIGJvdGg6IHdpZGVuaW5n IHRoZWlyIG1vZHVsZSBncmFwaCBjaGFuZ2VzCisgKiB0aGUgaW1hZ2UgdGhleSBwcm9kdWNlLgor ICovCitib29sIHRha2VzQWxsTW9kdWxlUGF0aChRU3RyaW5nVmlldyBuYW1lKTsKKworLyoqIDxq YXZhZng+Ojx1c2VyIG1vZHVsZXM+LCBhcyBhIHNpbmdsZSAtLW1vZHVsZS1wYXRoIHZhbHVlLiAq LworUVN0cmluZyBtb2R1bGVQYXRoKCk7CisKKy8qKiAtLW1vZHVsZS1wYXRoIDxqYXZhZng+Ojx1 c2VyIG1vZHVsZXM+IC0tYWRkLW1vZHVsZXMgQUxMLU1PRFVMRS1QQVRIICovCitRU3RyaW5nTGlz dCBtb2R1bGVBcmdzKCk7CisKK30gLy8gbmFtZXNwYWNlIEtqYXIKKworI2VuZGlmIC8vIEtKQVJf SApkaWZmIC0tZ2l0IGEvc3JjL2tqYXJhcHAuY3BwIGIvc3JjL2tqYXJhcHAuY3BwCmluZGV4IDYy ZDg5ZmIuLmUxZjhmN2YgMTAwNjQ0Ci0tLSBhL3NyYy9ramFyYXBwLmNwcAorKysgYi9zcmMva2ph cmFwcC5jcHAKQEAgLTMsMTgyICszLDE1NCBAQAogCiAjaW5jbHVkZSAia2phcmFwcC5oIgogCisj aW5jbHVkZSAia2phci5oIgorCisjaW5jbHVkZSA8S0xvY2FsaXplZFN0cmluZz4KKwogI2luY2x1 ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UURlc2t0b3BTZXJ2aWNlcz4KICNpbmNs dWRlIDxRRGlyPgogI2luY2x1ZGUgPFFGaWxlPgogI2luY2x1ZGUgPFFGaWxlSW5mbz4KICNpbmNs dWRlIDxRUHJvY2Vzcz4KLSNpbmNsdWRlIDxRVGhyZWFkPgogI2luY2x1ZGUgPFFVcmw+CiAKLXN0 YXRpYyBjb25zdCBRU3RyaW5nIEFQUF9JRCA9IFFTdHJpbmdMaXRlcmFsKCJvcmcua2RlLmtqYXIi KTsKK3VzaW5nIG5hbWVzcGFjZSBRdDo6TGl0ZXJhbHM6OlN0cmluZ0xpdGVyYWxzOwogCi1RU3Ry aW5nIEtqYXJBcHA6OmRlZmF1bHRNb2R1bGVzRGlyKCkKK25hbWVzcGFjZQogewotICAgIHJldHVy biBRRGlyOjpob21lUGF0aCgpICsgUVN0cmluZ0xpdGVyYWwoIi8ubG9jYWwvc2hhcmUva2phci9t b2R1bGVzIik7Ci19CiAKLVFTdHJpbmdMaXN0IEtqYXJBcHA6OmJ1aWxkSnZtQXJncyhjb25zdCBR U3RyaW5nICZqYXJQYXRoKSBjb25zdAorY29uc3RleHByIFFCeXRlQXJyYXlWaWV3IE1hcmtlcigi Z2VuZXJhdGVkIGJ5IGtqYXIiKTsKKworYm9vbCBpc091cldyYXBwZXIoY29uc3QgUVN0cmluZyAm cGF0aCkKIHsKLSAgICBjb25zdCBRRGlyIHNoYXJlRGlyKFFTdHJpbmdMaXRlcmFsKCIvYXBwL3No YXJlIikpOwotICAgIFFTdHJpbmdMaXN0IG1vZHVsZVBhdGhzOwotICAgIGZvciAoY29uc3QgUUZp bGVJbmZvICZmaSA6IHNoYXJlRGlyLmVudHJ5SW5mb0xpc3QoUURpcjo6RGlycyB8IFFEaXI6Ok5v RG90QW5kRG90RG90KSkgewotICAgICAgICBtb2R1bGVQYXRocyA8PCBmaS5hYnNvbHV0ZUZpbGVQ YXRoKCk7Ci0gICAgfQotICAgIGNvbnN0IFFTdHJpbmcgbW9kdWxlc0RpciA9IGRlZmF1bHRNb2R1 bGVzRGlyKCk7Ci0gICAgUURpcigpLm1rcGF0aChtb2R1bGVzRGlyKTsKLSAgICBtb2R1bGVQYXRo cyA8PCBtb2R1bGVzRGlyOwotCi0gICAgcmV0dXJuIHsKLSAgICAgICAgUVN0cmluZ0xpdGVyYWwo Ii0tbW9kdWxlLXBhdGgiKSwgbW9kdWxlUGF0aHMuam9pbihRTGF0aW4xQ2hhcignOicpKSwKLSAg ICAgICAgUVN0cmluZ0xpdGVyYWwoIi0tYWRkLW1vZHVsZXMiKSwgUVN0cmluZ0xpdGVyYWwoIkFM TC1NT0RVTEUtUEFUSCIpLAotICAgICAgICBRU3RyaW5nTGl0ZXJhbCgiLWphciIpLCBqYXJQYXRo Ci0gICAgfTsKKyAgICBRRmlsZSBmKHBhdGgpOworICAgIHJldHVybiBmLm9wZW4oUUlPRGV2aWNl OjpSZWFkT25seSkgJiYgZi5yZWFkKDI1NikuY29udGFpbnMoTWFya2VyKTsKIH0KIAotS2phckFw cDo6S2phckFwcChRT2JqZWN0ICpwYXJlbnQpCi06IFFPYmplY3QocGFyZW50KQotLCBtX3Rhcmdl dERpcihRRGlyOjpob21lUGF0aCgpICsgUVN0cmluZ0xpdGVyYWwoIi8ubG9jYWwvYmluIikpCi17 fQorfSAvLyBuYW1lc3BhY2UKIAotdm9pZCBLamFyQXBwOjpzZXRCdXN5KGJvb2wgYnVzeSkKK0tq YXJBcHA6OktqYXJBcHAoUU9iamVjdCAqcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQpCiB7 Ci0gICAgaWYgKG1fYnVzeSA9PSBidXN5KSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg bV9idXN5ID0gYnVzeTsKLSAgICBRX0VNSVQgYnVzeUNoYW5nZWQoKTsKIH0KIAogUVN0cmluZ0xp c3QgS2phckFwcDo6YXZhaWxhYmxlVG9vbHMoKSBjb25zdAogewotICAgIHJldHVybiBmaW5kQXZh aWxhYmxlVG9vbHMoKTsKKyAgICByZXR1cm4gS2phcjo6amRrVG9vbHMoKTsKIH0KIAotUVN0cmlu Z0xpc3QgS2phckFwcDo6ZmluZEF2YWlsYWJsZVRvb2xzKCkgY29uc3QKK1FTdHJpbmcgS2phckFw cDo6cnVuSmFyKGNvbnN0IFFVcmwgJnVybCkKIHsKLSAgICBRU3RyaW5nTGlzdCB0b29sczsKLSAg ICBjb25zdCBRU3RyaW5nTGlzdCBzZWFyY2hQYXRocyA9IHsKLSAgICAgICAgUVN0cmluZ0xpdGVy YWwoIi9hcHAvYmluIiksCi0gICAgICAgIFFTdHJpbmdMaXRlcmFsKCIvYXBwL2pkay9iaW4iKQot ICAgIH07Ci0gICAgZm9yIChjb25zdCBRU3RyaW5nICZwYXRoIDogc2VhcmNoUGF0aHMpIHsKLSAg ICAgICAgUURpciBkaXIocGF0aCk7Ci0gICAgICAgIGlmICghZGlyLmV4aXN0cygpKSB7Ci0gICAg ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGNvbnN0IFFGaWxlSW5m byAmZmkgOiBkaXIuZW50cnlJbmZvTGlzdChRRGlyOjpGaWxlcyB8IFFEaXI6OkV4ZWN1dGFibGUp KSB7Ci0gICAgICAgICAgICBpZiAoIWZpLmlzRXhlY3V0YWJsZSgpKSB7Ci0gICAgICAgICAgICAg ICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdCBRU3RyaW5nIG5h bWUgPSBmaS5maWxlTmFtZSgpOwotICAgICAgICAgICAgaWYgKCF0b29scy5jb250YWlucyhuYW1l KSkgewotICAgICAgICAgICAgICAgIHRvb2xzLmFwcGVuZChuYW1lKTsKLSAgICAgICAgICAgIH0K LSAgICAgICAgfQorICAgIGNvbnN0IFFTdHJpbmcgcGF0aCA9IHVybC5pc0xvY2FsRmlsZSgpID8g dXJsLnRvTG9jYWxGaWxlKCkgOiB1cmwudG9TdHJpbmcoKTsKKworICAgIGlmICghUUZpbGU6OmV4 aXN0cyhwYXRoKSkgeworICAgICAgICByZXR1cm4gaTE4bigiJTEgZG9lcyBub3QgZXhpc3Qgb3Ig Y2Fubm90IGJlIGFjY2Vzc2VkLiIsIHBhdGgpOworICAgIH0KKworICAgIC8vIFJlLWV4ZWMgb3Vy c2VsdmVzIGluIHdhdGNoZXIgbW9kZQorICAgIGNvbnN0IFFTdHJpbmdMaXN0IGFyZ3N7dSItLXdh dGNoIl9zLCBwYXRofTsKKyAgICBpZiAoIVFQcm9jZXNzOjpzdGFydERldGFjaGVkKEtqYXI6OnNl bGZQYXRoKCksIGFyZ3MpKSB7CisgICAgICAgIHJldHVybiBpMThuKCJGYWlsZWQgdG8gbGF1bmNo ICUxLiIsIHBhdGgpOwogICAgIH0KLSAgICB0b29scy5zb3J0KCk7Ci0gICAgcmV0dXJuIHRvb2xz OworICAgIHJldHVybiB7fTsKIH0KIAotYm9vbCBLamFyQXBwOjpydW5KYXJGaWxlKGNvbnN0IFFT dHJpbmcgJmZpbGUpCit2b2lkIEtqYXJBcHA6Om9wZW5Nb2R1bGVzRm9sZGVyKCkKIHsKLSAgICBj b25zdCBRU3RyaW5nIHdhdGNoZXJQYXRoID0KLSAgICBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNh dGlvbkRpclBhdGgoKSArIFFTdHJpbmdMaXRlcmFsKCIva2phcl93YXRjaGVyIik7CisgICAgS2ph cjo6ZW5zdXJlVXNlck1vZHVsZXNEaXIoKTsKKyAgICBRRGVza3RvcFNlcnZpY2VzOjpvcGVuVXJs KFFVcmw6OmZyb21Mb2NhbEZpbGUoS2phcjo6dXNlck1vZHVsZXNEaXIoKSkpOworfQogCi0gICAg aWYgKCFRRmlsZTo6ZXhpc3RzKHdhdGNoZXJQYXRoKSkgewotICAgICAgICBRX0VNSVQgZXJyb3JP Y2N1cnJlZChpMThuKCJXYXRjaGVyIGJpbmFyeSBub3QgZm91bmQgYXQgJTEiLCB3YXRjaGVyUGF0 aCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7CitRVmFyaWFudE1hcCBLamFyQXBwOjpnZW5lcmF0 ZVdyYXBwZXJzKCkKK3sKKyAgICBjb25zdCBRU3RyaW5nIGRpciA9IEtqYXI6OndyYXBwZXJEaXIo KTsKKyAgICBpZiAoIVFEaXIoKS5ta3BhdGgoZGlyKSkgeworICAgICAgICByZXR1cm4ge3t1Im9r Il9zLCBmYWxzZX0sIHt1Im1lc3NhZ2UiX3MsIGkxOG4oIkNvdWxkIG5vdCBjcmVhdGUgJTEuIiwg ZGlyKX19OwogICAgIH0KIAotICAgIFFTdHJpbmdMaXN0IHdhdGNoZXJBcmdzOwotICAgIHdhdGNo ZXJBcmdzIDw8IGZpbGU7Ci0gICAgd2F0Y2hlckFyZ3MgPDwgYnVpbGRKdm1BcmdzKGZpbGUpOwor ICAgIGludCB3cml0dGVuID0gMDsKKyAgICBpbnQgc2tpcHBlZCA9IDA7CisKKyAgICBmb3IgKGNv bnN0IFFTdHJpbmcgJnRvb2wgOiBLamFyOjpqZGtUb29scygpKSB7CisgICAgICAgIGNvbnN0IFFT dHJpbmcgcGF0aCA9IGRpciArIHUnLycgKyB0b29sOworCisgICAgICAgIC8vIE5ldmVyIGNsb2Ji ZXIgc29tZXRoaW5nIHdlIGRpZCBub3Qgd3JpdGUuCisgICAgICAgIGlmIChRRmlsZTo6ZXhpc3Rz KHBhdGgpICYmICFpc091cldyYXBwZXIocGF0aCkpIHsKKyAgICAgICAgICAgICsrc2tpcHBlZDsK KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKLSAgICBpZiAoIVFQcm9jZXNzOjpz dGFydERldGFjaGVkKHdhdGNoZXJQYXRoLCB3YXRjaGVyQXJncykpIHsKLSAgICAgICAgUV9FTUlU IGVycm9yT2NjdXJyZWQoaTE4bigiRmFpbGVkIHRvIGxhdW5jaCB3YXRjaGVyIGZvciAlMSIsIGZp bGUpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBRRmlsZSBmKHBhdGgpOworICAg ICAgICBpZiAoIWYub3BlbihRSU9EZXZpY2U6OldyaXRlT25seSB8IFFJT0RldmljZTo6VHJ1bmNh dGUpKSB7CisgICAgICAgICAgICArK3NraXBwZWQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg ICAgICAgfQorCisgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgc2NyaXB0ID0gUVN0cmluZ0xpdGVy YWwoIiMhL3Vzci9iaW4vZW52IHNoXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIiMgJTEgKCUyKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjIGZsYXRwYWsgcnVuICUzICUyIFwiJEBcIlxu IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFyZyhRU3RyaW5nOjpm cm9tTGF0aW4xKE1hcmtlciksIHRvb2wsIFFTdHJpbmc6OmZyb21MYXRpbjEoS2phcjo6QXBwSWQp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9VdGY4KCk7CisKKyAg ICAgICAgLy8gQSBzaG9ydCB3cml0ZSBsZWF2ZXMgYSB0cnVuY2F0ZWQgc2NyaXB0IHRoYXQgc3Rp bGwgY2FycmllcyB0aGUgbWFya2VyLAorICAgICAgICAvLyBzbyB0aGUgbmV4dCBydW4gd291bGQg aGFwcGlseSBvdmVyd3JpdGUgaXQgYW5kIHJlcG9ydCBzdWNjZXNzIGFnYWluLgorICAgICAgICBp ZiAoZi53cml0ZShzY3JpcHQpICE9IHNjcmlwdC5zaXplKCkgfHwgIWYuZmx1c2goKSkgeworICAg ICAgICAgICAgZi5jbG9zZSgpOworICAgICAgICAgICAgZi5yZW1vdmUoKTsKKyAgICAgICAgICAg ICsrc2tpcHBlZDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGYu Y2xvc2UoKTsKKworICAgICAgICBjb25zdGV4cHIgUUZpbGVEZXZpY2U6OlBlcm1pc3Npb25zIE1v ZGUgPSBRRmlsZURldmljZTo6UmVhZE93bmVyIHwgUUZpbGVEZXZpY2U6OldyaXRlT3duZXIgfCBR RmlsZURldmljZTo6RXhlT3duZXIgfCBRRmlsZURldmljZTo6UmVhZEdyb3VwCisgICAgICAgICAg ICB8IFFGaWxlRGV2aWNlOjpFeGVHcm91cCB8IFFGaWxlRGV2aWNlOjpSZWFkT3RoZXIgfCBRRmls ZURldmljZTo6RXhlT3RoZXI7CisgICAgICAgIGlmICghZi5zZXRQZXJtaXNzaW9ucyhNb2RlKSkg eworICAgICAgICAgICAgZi5yZW1vdmUoKTsKKyAgICAgICAgICAgICsrc2tpcHBlZDsKKyAgICAg ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgICsrd3JpdHRlbjsKICAgICB9Ci0g ICAgcmV0dXJuIHRydWU7Ci19CiAKLXZvaWQgS2phckFwcDo6b3Blbk1vZHVsZXNGb2xkZXIoKQot ewotICAgIFFEaXIoKS5ta3BhdGgoZGVmYXVsdE1vZHVsZXNEaXIoKSk7Ci0gICAgUURlc2t0b3BT ZXJ2aWNlczo6b3BlblVybChRVXJsOjpmcm9tTG9jYWxGaWxlKGRlZmF1bHRNb2R1bGVzRGlyKCkp KTsKKyAgICBRU3RyaW5nIG1lc3NhZ2UgPSBpMThucCgiR2VuZXJhdGVkICUxIHdyYXBwZXIgaW4g JTIuIiwgIkdlbmVyYXRlZCAlMSB3cmFwcGVycyBpbiAlMi4iLCB3cml0dGVuLCBkaXIpOworICAg IGlmIChza2lwcGVkID4gMCkgeworICAgICAgICBtZXNzYWdlICs9IHUnICc7CisgICAgICAgIG1l c3NhZ2UgKz0gaTE4bnAoIlNraXBwZWQgJTEgZXhpc3Rpbmcgbm9uLWtqYXIgZmlsZS4iLCAiU2tp cHBlZCAlMSBleGlzdGluZyBub24ta2phciBmaWxlcy4iLCBza2lwcGVkKTsKKyAgICB9CisKKyAg ICByZXR1cm4ge3t1Im9rIl9zLCB3cml0dGVuID4gMH0sIHt1Im1lc3NhZ2UiX3MsIG1lc3NhZ2V9 fTsKIH0KIAotdm9pZCBLamFyQXBwOjpnZW5lcmF0ZVdyYXBwZXJzKCkKK1FWYXJpYW50TWFwIEtq YXJBcHA6OnJlbW92ZVdyYXBwZXJzKCkKIHsKLSAgICBpZiAobV9idXN5KSB7Ci0gICAgICAgIHJl dHVybjsKLSAgICB9Ci0gICAgc2V0QnVzeSh0cnVlKTsKLQotICAgIFFUaHJlYWQgKnRocmVhZCA9 IFFUaHJlYWQ6OmNyZWF0ZShbdGhpc10oKSB7Ci0gICAgICAgIGNvbnN0IFFTdHJpbmdMaXN0IHRv b2xzID0gZmluZEF2YWlsYWJsZVRvb2xzKCk7Ci0gICAgICAgIGludCBnZW5lcmF0ZWQgPSAwOwot ICAgICAgICBpbnQgc2tpcHBlZCA9IDA7Ci0KLSAgICAgICAgUVByb2Nlc3MgbWtkaXJQcm9jOwot ICAgICAgICBta2RpclByb2Muc3RhcnQoUVN0cmluZ0xpdGVyYWwoImZsYXRwYWstc3Bhd24iKSwK LSAgICAgICAgICAgICAgICAgICAgICAgIHsgUVN0cmluZ0xpdGVyYWwoIi0taG9zdCIpLCBRU3Ry aW5nTGl0ZXJhbCgibWtkaXIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5n TGl0ZXJhbCgiLXAiKSwgbV90YXJnZXREaXIgfSk7Ci0gICAgICAgIG1rZGlyUHJvYy53YWl0Rm9y RmluaXNoZWQoKTsKLQotICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcgJnRvb2wgOiB0b29scykg ewotICAgICAgICAgICAgY29uc3QgUVN0cmluZyB3cmFwcGVyUGF0aCA9IG1fdGFyZ2V0RGlyICsg UUxhdGluMUNoYXIoJy8nKSArIHRvb2w7Ci0KLSAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgY2hl Y2tTY3JpcHQgPSBRU3RyaW5nTGl0ZXJhbCgKLSAgICAgICAgICAgICAgICAiaWYgWyAtZiAnJTEn IF0gJiYgISBncmVwIC1xICdnZW5lcmF0ZWQgYnkga2phcicgJyUxJyAyPi9kZXYvbnVsbDsgIgot ICAgICAgICAgICAgICAgICJ0aGVuIGVjaG8gJ3NraXAnOyBlbHNlIGVjaG8gJ29rJzsgZmkiCi0g ICAgICAgICAgICApLmFyZyh3cmFwcGVyUGF0aCk7Ci0KLSAgICAgICAgICAgIFFQcm9jZXNzIGNo ZWNrUHJvY2VzczsKLSAgICAgICAgICAgIGNoZWNrUHJvY2Vzcy5zdGFydChRU3RyaW5nTGl0ZXJh bCgiZmxhdHBhay1zcGF3biIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgUVN0 cmluZ0xpdGVyYWwoIi0taG9zdCIpLCBRU3RyaW5nTGl0ZXJhbCgic2giKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIi1jIiksIGNoZWNrU2NyaXB0 IH0pOwotICAgICAgICAgICAgY2hlY2tQcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgpOwotCi0gICAg ICAgICAgICBpZiAoUVN0cmluZzo6ZnJvbUxvY2FsOEJpdChjaGVja1Byb2Nlc3MucmVhZEFsbFN0 YW5kYXJkT3V0cHV0KCkpLnRyaW1tZWQoKQotICAgICAgICAgICAgICAgID09IFFMYXRpbjFTdHJp bmcoInNraXAiKSkgewotICAgICAgICAgICAgICAgIHNraXBwZWQrKzsKKyAgICBjb25zdCBRU3Ry aW5nIGRpciA9IEtqYXI6OndyYXBwZXJEaXIoKTsKKworICAgIGludCByZW1vdmVkID0gMDsKKyAg ICBpbnQgZmFpbGVkID0gMDsKKworICAgIGNvbnN0IFFGaWxlSW5mb0xpc3QgZW50cmllcyA9IFFE aXIoZGlyKS5lbnRyeUluZm9MaXN0KFFEaXI6OkZpbGVzLCBRRGlyOjpOYW1lKTsKKyAgICBmb3Ig KGNvbnN0IFFGaWxlSW5mbyAmZmkgOiBlbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IFFTdHJpbmcg cGF0aCA9IGZpLmFic29sdXRlRmlsZVBhdGgoKTsKKyAgICAgICAgaWYgKCFpc091cldyYXBwZXIo cGF0aCkpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAg ICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgY3JlYXRlU2NyaXB0ID0gUVN0cmluZ0xpdGVyYWwo Ci0gICAgICAgICAgICAgICAgICAgICJjYXQgPiAnJTEnIDw8J0VPRidcbiIKLSAgICAgICAgICAg ICAgICAgICAgIiMhL3Vzci9iaW4vZW52IHNoXG4iCi0gICAgICAgICAgICAgICAgICAgICIjIGdl bmVyYXRlZCBieSBramFyIGZvciAlMlxuIgotICAgICAgICAgICAgICAgICAgICAiZXhlYyBmbGF0 cGFrIHJ1biAtLWNvbW1hbmQ9JTMgJTIgXCIkQFwiXG4iCi0gICAgICAgICAgICAgICAgICAgICJF T0ZcbiIKLSAgICAgICAgICAgICAgICAgICAgImNobW9kICt4ICclMSciCi0gICAgICAgICAgICAg ICAgKS5hcmcod3JhcHBlclBhdGgsIEFQUF9JRCwgdG9vbCk7Ci0KLSAgICAgICAgICAgICAgICBR UHJvY2VzcyBjcmVhdGVQcm9jZXNzOwotICAgICAgICAgICAgICAgIGNyZWF0ZVByb2Nlc3Muc3Rh cnQoUVN0cmluZ0xpdGVyYWwoImZsYXRwYWstc3Bhd24iKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgUVN0cmluZ0xpdGVyYWwoIi0taG9zdCIpLCBRU3RyaW5nTGl0ZXJh bCgic2giKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5n TGl0ZXJhbCgiLWMiKSwgY3JlYXRlU2NyaXB0IH0pOwotICAgICAgICAgICAgICAgIGNyZWF0ZVBy b2Nlc3Mud2FpdEZvckZpbmlzaGVkKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY3JlYXRlUHJv Y2Vzcy5leGl0Q29kZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkKys7 Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUV9FTUlUIGVy cm9yT2NjdXJyZWQoCi0gICAgICAgICAgICAgICAgICAgICAgICBpMThuKCJGYWlsZWQgdG8gY3Jl YXRlIHdyYXBwZXIgZm9yICUxOiAlMiIsIHRvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoY3JlYXRlUHJvY2Vzcy5yZWFkQWxsU3RhbmRhcmRF cnJvcigpKSkpOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoUUZp bGU6OnJlbW92ZShwYXRoKSkgeworICAgICAgICAgICAgKytyZW1vdmVkOworICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgKytmYWlsZWQ7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAg UV9FTUlUIG9wZXJhdGlvbkNvbXBsZXRlZCgKLSAgICAgICAgICAgIGkxOG4oIkdlbmVyYXRlZCAl MSB3cmFwcGVycyBpbiAlMiAoc2tpcHBlZCAlMyBleGlzdGluZyBub24ta2phciBiaW5hcmllcyki LAotICAgICAgICAgICAgICAgICBRU3RyaW5nOjpudW1iZXIoZ2VuZXJhdGVkKSwgbV90YXJnZXRE aXIsIFFTdHJpbmc6Om51bWJlcihza2lwcGVkKSkpOworICAgIGlmIChyZW1vdmVkID09IDAgJiYg ZmFpbGVkID09IDApIHsKKyAgICAgICAgcmV0dXJuIHt7dSJvayJfcywgdHJ1ZX0sIHt1Im1lc3Nh Z2UiX3MsIGkxOG4oIk5vIGtqYXIgd3JhcHBlcnMgZm91bmQgaW4gJTEuIiwgZGlyKX19OworICAg IH0KIAotICAgICAgICBzZXRCdXN5KGZhbHNlKTsKLSAgICB9KTsKKyAgICBRU3RyaW5nIG1lc3Nh Z2UgPSBpMThucCgiUmVtb3ZlZCAlMSB3cmFwcGVyIGZyb20gJTIuIiwgIlJlbW92ZWQgJTEgd3Jh cHBlcnMgZnJvbSAlMi4iLCByZW1vdmVkLCBkaXIpOworICAgIGlmIChmYWlsZWQgPiAwKSB7Cisg ICAgICAgIG1lc3NhZ2UgKz0gdScgJzsKKyAgICAgICAgbWVzc2FnZSArPSBpMThucCgiQ291bGQg bm90IHJlbW92ZSAlMSBmaWxlLiIsICJDb3VsZCBub3QgcmVtb3ZlICUxIGZpbGVzLiIsIGZhaWxl ZCk7CisgICAgfQogCi0gICAgdGhyZWFkLT5zZXRQYXJlbnQodGhpcyk7Ci0gICAgY29ubmVjdCh0 aHJlYWQsICZRVGhyZWFkOjpmaW5pc2hlZCwgdGhyZWFkLCAmUVRocmVhZDo6ZGVsZXRlTGF0ZXIp OwotICAgIHRocmVhZC0+c3RhcnQoKTsKKyAgICByZXR1cm4ge3t1Im9rIl9zLCBmYWlsZWQgPT0g MH0sIHt1Im1lc3NhZ2UiX3MsIG1lc3NhZ2V9fTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9ramFyYXBw LmggYi9zcmMva2phcmFwcC5oCmluZGV4IGI2M2VjY2MuLjhiNTY4YTkgMTAwNjQ0Ci0tLSBhL3Ny Yy9ramFyYXBwLmgKKysrIGIvc3JjL2tqYXJhcHAuaApAQCAtNSw0MCArNSwzOCBAQAogI2RlZmlu ZSBLSkFSQVBQX0gKIAogI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8UVFtbEVuZ2luZT4K ICNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KLSNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgorI2lu Y2x1ZGUgPFFWYXJpYW50TWFwPgogCitjbGFzcyBRVXJsOworCisvKioKKyAqIEJhY2tlbmQgZXhw b3NlZCB0byBRTUwgYXMgYSBzaW5nbGV0b24uIEV2ZXJ5IG9wZXJhdGlvbiBpcyBzeW5jaHJvbm91 cyBiZWNhdXNlIEkgc3VjayBhdCBhc3luYyBDKysuCisgKi8KIGNsYXNzIEtqYXJBcHAgOiBwdWJs aWMgUU9iamVjdAogewogICAgIFFfT0JKRUNUCi0gICAgUV9QUk9QRVJUWShRU3RyaW5nTGlzdCBh dmFpbGFibGVUb29scyBSRUFEIGF2YWlsYWJsZVRvb2xzIE5PVElGWSB0b29sc0NoYW5nZWQpCi0g ICAgUV9QUk9QRVJUWShib29sIGJ1c3kgUkVBRCBidXN5IE5PVElGWSBidXN5Q2hhbmdlZCkKKyAg ICBRTUxfRUxFTUVOVAorICAgIFFNTF9TSU5HTEVUT04KKworICAgIFFfUFJPUEVSVFkoUVN0cmlu Z0xpc3QgYXZhaWxhYmxlVG9vbHMgUkVBRCBhdmFpbGFibGVUb29scyBDT05TVEFOVCkKIAogcHVi bGljOgogICAgIGV4cGxpY2l0IEtqYXJBcHAoUU9iamVjdCAqcGFyZW50ID0gbnVsbHB0cik7CiAK LSAgICBRX0lOVk9LQUJMRSBib29sIHJ1bkphckZpbGUoY29uc3QgUVN0cmluZyAmZmlsZSk7Ci0g ICAgUV9JTlZPS0FCTEUgdm9pZCBnZW5lcmF0ZVdyYXBwZXJzKCk7Ci0gICAgUV9JTlZPS0FCTEUg dm9pZCBvcGVuTW9kdWxlc0ZvbGRlcigpOwotCiAgICAgUVN0cmluZ0xpc3QgYXZhaWxhYmxlVG9v bHMoKSBjb25zdDsKLSAgICBib29sIGJ1c3koKSBjb25zdCB7IHJldHVybiBtX2J1c3k7IH0KIAot ICAgIHN0YXRpYyBRU3RyaW5nIGRlZmF1bHRNb2R1bGVzRGlyKCk7CisgICAgLyoqIExhdW5jaGVz IHRoZSBKQVIgaW4gYSBkZXRhY2hlZCB3YXRjaGVyIHByb2Nlc3MuIFJldHVybnMgYW4gZXJyb3Ig bWVzc2FnZSwgb3IgYW4gZW1wdHkgc3RyaW5nIG9uIHN1Y2Nlc3MuICovCisgICAgUV9JTlZPS0FC TEUgUVN0cmluZyBydW5KYXIoY29uc3QgUVVybCAmdXJsKTsKIAotUV9TSUdOQUxTOgotICAgIHZv aWQgdG9vbHNDaGFuZ2VkKCk7Ci0gICAgdm9pZCBidXN5Q2hhbmdlZCgpOwotICAgIHZvaWQgb3Bl cmF0aW9uQ29tcGxldGVkKGNvbnN0IFFTdHJpbmcgJm1lc3NhZ2UpOwotICAgIHZvaWQgZXJyb3JP Y2N1cnJlZChjb25zdCBRU3RyaW5nICZlcnJvcik7CisgICAgLyoqIFJldHVybnMgeyJvayI6IGJv b2wsICJtZXNzYWdlIjogUVN0cmluZ30uICovCisgICAgUV9JTlZPS0FCTEUgUVZhcmlhbnRNYXAg Z2VuZXJhdGVXcmFwcGVycygpOwogCi1wcml2YXRlOgotICAgIFFTdHJpbmdMaXN0IGZpbmRBdmFp bGFibGVUb29scygpIGNvbnN0OwotICAgIHZvaWQgc2V0QnVzeShib29sIGJ1c3kpOwotICAgIFFT dHJpbmdMaXN0IGJ1aWxkSnZtQXJncyhjb25zdCBRU3RyaW5nICZqYXJQYXRoKSBjb25zdDsKKyAg ICAvKiogRGVsZXRlcyB0aGUgd3JhcHBlcnMgd2Ugd3JvdGUsIGxlYXZpbmcgZXZlcnl0aGluZyBl bHNlIGFsb25lLiBTYW1lIHJldHVybiBzaGFwZS4gKi8KKyAgICBRX0lOVk9LQUJMRSBRVmFyaWFu dE1hcCByZW1vdmVXcmFwcGVycygpOwogCi0gICAgUVN0cmluZyBtX3RhcmdldERpcjsKLSAgICBi b29sIG1fYnVzeSA9IGZhbHNlOworICAgIFFfSU5WT0tBQkxFIHZvaWQgb3Blbk1vZHVsZXNGb2xk ZXIoKTsKIH07CiAKLSNlbmRpZgorI2VuZGlmIC8vIEtKQVJBUFBfSApkaWZmIC0tZ2l0IGEvc3Jj L21haW4uY3BwIGIvc3JjL21haW4uY3BwCmluZGV4IDYyMDg3NTkuLjhiYWY4YWMgMTAwNjQ0Ci0t LSBhL3NyYy9tYWluLmNwcAorKysgYi9zcmMvbWFpbi5jcHAKQEAgLTEsMTcwICsxLDQxOCBAQAog Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSBPUiBHUEwtMy4wLW9ubHkg T1IgTGljZW5zZVJlZi1LREUtQWNjZXB0ZWQtR1BMCiAvLyBTUERYLUZpbGVDb3B5cmlnaHRUZXh0 OiAyMDI2IEhhZGkgQ2hva3IgPGhhZGljaG9rckBpY2xvdWQuY29tPgogCi0jaW5jbHVkZSA8UUd1 aUFwcGxpY2F0aW9uPgotI2luY2x1ZGUgPFFRbWxBcHBsaWNhdGlvbkVuZ2luZT4KLSNpbmNsdWRl IDxRUW1sQ29udGV4dD4KKyNpbmNsdWRlICJramFyLXZlcnNpb24uaCIKKyNpbmNsdWRlICJramFy LmgiCisjaW5jbHVkZSAia2phcmFwcC5oIgorCisjaW5jbHVkZSA8S0Fib3V0RGF0YT4KKyNpbmNs dWRlIDxLTG9jYWxpemVkUW1sQ29udGV4dD4KICNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgot I2luY2x1ZGUgPEtMb2NhbGl6ZWRDb250ZXh0PgorCisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlv bj4KICNpbmNsdWRlIDxRRmlsZT4KLSNpbmNsdWRlIDxRRGlyPgorI2luY2x1ZGUgPFFGaWxlSW5m bz4KKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UVByb2Nlc3M+CisjaW5j bHVkZSA8UVFtbEFwcGxpY2F0aW9uRW5naW5lPgorI2luY2x1ZGUgPFFRdWlja1N0eWxlPgogI2lu Y2x1ZGUgPFFVcmw+Ci0jaW5jbHVkZSAia2phcmFwcC5oIgogCi1zdGF0aWMgUVN0cmluZyB0b0xv Y2FsUGF0aChjb25zdCBRU3RyaW5nICZpbnB1dCkKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j bHVkZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwor dXNpbmcgbmFtZXNwYWNlIFF0OjpMaXRlcmFsczo6U3RyaW5nTGl0ZXJhbHM7CisKK25hbWVzcGFj ZQogewotICBpZiAoaW5wdXQuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCJmaWxlOi8vIikpKSB7 Ci0gICAgcmV0dXJuIFFVcmwoaW5wdXQpLnRvTG9jYWxGaWxlKCk7Ci0gIH0KLSAgcmV0dXJuIGlu cHV0OworCitjb25zdGV4cHIgcXNpemV0eXBlIE1heFN0ZGVyclRhaWwgPSA2NCAqIDEwMjQ7CisK K3ZvaWQgc2V0dXBBcHBsaWNhdGlvbk1ldGFkYXRhKCkKK3sKKyAgICBLQWJvdXREYXRhIGFib3V0 KFFTdHJpbmc6OmZyb21MYXRpbjEoS2phcjo6QXBwSWQpLAorICAgICAgICAgICAgICAgICAgICAg aTE4bigiSmF2YSBBcmNoaXZlIFJ1bm5lciIpLAorICAgICAgICAgICAgICAgICAgICAgUVN0cmlu Zzo6ZnJvbUxhdGluMShLSkFSX1ZFUlNJT05fU1RSSU5HKSwKKyAgICAgICAgICAgICAgICAgICAg IGkxOG4oIlJ1biBKYXZhIGFyY2hpdmVzIHdpdGggYSBidW5kbGVkIE9wZW5KREsiKSwKKyAgICAg ICAgICAgICAgICAgICAgIEtBYm91dExpY2Vuc2U6OkdQTF9WMiwKKyAgICAgICAgICAgICAgICAg ICAgIGkxOG4oIkNvcHlyaWdodCAyMDI2IEhhZGkgQ2hva3IiKSk7CisgICAgYWJvdXQuYWRkTGlj ZW5zZShLQWJvdXRMaWNlbnNlOjpHUExfVjMpOworICAgIGFib3V0LmFkZEF1dGhvcih1IkhhZGkg Q2hva3IiX3MsIFFTdHJpbmcoKSwgdSJoYWRpY2hva3JAaWNsb3VkLmNvbSJfcyk7CisgICAgYWJv dXQuc2V0SG9tZXBhZ2UodSJodHRwczovL2ludmVudC5rZGUub3JnL3N5c3RlbS9ramFyIl9zKTsK KyAgICBhYm91dC5zZXRCdWdBZGRyZXNzKCJodHRwczovL2ludmVudC5rZGUub3JnL3N5c3RlbS9r amFyLy0vaXNzdWVzIik7CisgICAgYWJvdXQuc2V0RGVza3RvcEZpbGVOYW1lKFFTdHJpbmc6OmZy b21MYXRpbjEoS2phcjo6QXBwSWQpKTsKKworICAgIEtBYm91dERhdGE6OnNldEFwcGxpY2F0aW9u RGF0YShhYm91dCk7CisgICAgUUNvcmVBcHBsaWNhdGlvbjo6c2V0T3JnYW5pemF0aW9uRG9tYWlu KHUia2RlLm9yZyJfcyk7CiB9CiAKLXN0YXRpYyBpbnQgc2hvd0d1aShLamFyQXBwICZramFyQXBw LCBjb25zdCBRU3RyaW5nICZpbml0aWFsRXJyb3IgPSBRU3RyaW5nKCkpIHsKLSAgUVFtbEFwcGxp Y2F0aW9uRW5naW5lIGVuZ2luZTsKLSAgZW5naW5lLnJvb3RDb250ZXh0KCktPnNldENvbnRleHRP YmplY3QobmV3IEtMb2NhbGl6ZWRDb250ZXh0KCZlbmdpbmUpKTsKLSAgZW5naW5lLnJvb3RDb250 ZXh0KCktPnNldENvbnRleHRQcm9wZXJ0eShRU3RyaW5nTGl0ZXJhbCgiYmFja2VuZCIpLCAma2ph ckFwcCk7Ci0gIGlmICghaW5pdGlhbEVycm9yLmlzRW1wdHkoKSkgewotICAgIGVuZ2luZS5yb290 Q29udGV4dCgpLT5zZXRDb250ZXh0UHJvcGVydHkoUVN0cmluZ0xpdGVyYWwoImluaXRpYWxFcnJv ciIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlh bEVycm9yKTsKLSAgfQotICBlbmdpbmUubG9hZChRVXJsKFFTdHJpbmdMaXRlcmFsKCJxcmM6L3Ft bC9tYWluLnFtbCIpKSk7Ci0gIHJldHVybiBxQXBwLT5leGVjKCk7Cit2b2lkIHNldHVwUXVpY2tT dHlsZSgpCit7CisgICAgaWYgKHFFbnZpcm9ubWVudFZhcmlhYmxlSXNFbXB0eSgiUVRfUVVJQ0tf Q09OVFJPTFNfU1RZTEUiKSkgeworICAgICAgICBRUXVpY2tTdHlsZTo6c2V0U3R5bGUodSJvcmcu a2RlLmRlc2t0b3AiX3MpOworICAgIH0KIH0KIAotc3RhdGljIFFTdHJpbmcgYnVpbGRNb2R1bGVQ YXRoKCkKK3ZvaWQgcHJpbnRVc2FnZShGSUxFICpvdXQpCiB7Ci0gIGNvbnN0IFFEaXIgc2hhcmVE aXIoUVN0cmluZ0xpdGVyYWwoIi9hcHAvc2hhcmUiKSk7Ci0gIFFTdHJpbmdMaXN0IHBhdGhzOwot ICBmb3IgKGNvbnN0IFFGaWxlSW5mbyAmZmkgOiBzaGFyZURpci5lbnRyeUluZm9MaXN0KFFEaXI6 OkRpcnMgfCBRRGlyOjpOb0RvdEFuZERvdERvdCkpIHsKLSAgICBwYXRocyA8PCBmaS5hYnNvbHV0 ZUZpbGVQYXRoKCk7Ci0gIH0KLSAgY29uc3QgUVN0cmluZyBtb2R1bGVzRGlyID0gS2phckFwcDo6 ZGVmYXVsdE1vZHVsZXNEaXIoKTsKLSAgUURpcigpLm1rcGF0aChtb2R1bGVzRGlyKTsKLSAgcGF0 aHMgPDwgbW9kdWxlc0RpcjsKLSAgcmV0dXJuIHBhdGhzLmpvaW4oUUxhdGluMUNoYXIoJzonKSk7 CisgICAgZnByaW50ZihvdXQsCisgICAgICAgICAgICAiVXNhZ2U6IGtqYXJhcHAgW29wdGlvbl0g W2ZpbGUuamFyIFthcmdzLi4uXSB8IHRvb2wgW2FyZ3MuLi5dXVxuIgorICAgICAgICAgICAgIlxu IgorICAgICAgICAgICAgIiAgLWgsIC0taGVscCAgICAgICAgICAgICAgIFNob3cgdGhpcyBoZWxw IGFuZCBleGl0XG4iCisgICAgICAgICAgICAiICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgU2hv dyB0aGUgdmVyc2lvbiBhbmQgZXhpdFxuIgorICAgICAgICAgICAgIiAgLWcsIC0tZ2VuZXJhdGUt d3JhcHBlcnMgIFdyaXRlIEpESyB3cmFwcGVyIHNjcmlwdHMgdG8gfi8ubG9jYWwvYmluXG4iCisg ICAgICAgICAgICAiICAtciwgLS1yZW1vdmUtd3JhcHBlcnMgICAgRGVsZXRlIHRoZSB3cmFwcGVy IHNjcmlwdHMga2phciB3cm90ZVxuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgIldp dGggbm8gYXJndW1lbnRzIHRoZSBncmFwaGljYWwgaW50ZXJmYWNlIGlzIHNob3duLiBBIGZpcnN0 IGFyZ3VtZW50XG4iCisgICAgICAgICAgICAidGhhdCBpcyBuZWl0aGVyIGFuIG9wdGlvbiBub3Ig YSAuamFyIGZpbGUgcnVucyB0aGF0IHRvb2wgZnJvbSB0aGVcbiIKKyAgICAgICAgICAgICJidW5k bGVkIEpESywgZm9yIGV4YW1wbGU6IGtqYXJhcHAgamF2YSAtdmVyc2lvblxuIik7CiB9CiAKLXN0 YXRpYyBRU3RyaW5nTGlzdCBidWlsZE1vZHVsZUFyZ3MoYm9vbCBhZGRBbGxNb2R1bGVzKQorLyoq IE9wdGlvbnMgdGhhdCBjb25zdW1lIHRoZSBhcmd1bWVudCBhZnRlciB0aGVtLiAqLworYm9vbCB0 YWtlc1NlcGFyYXRlVmFsdWUoY29uc3QgUVN0cmluZyAmYSkKIHsKLSAgUVN0cmluZ0xpc3QgYXJn cyA9IHsgUVN0cmluZ0xpdGVyYWwoIi0tbW9kdWxlLXBhdGgiKSwgYnVpbGRNb2R1bGVQYXRoKCkg fTsKLSAgaWYgKGFkZEFsbE1vZHVsZXMpIHsKLSAgICBhcmdzIDw8IFFTdHJpbmdMaXRlcmFsKCIt LWFkZC1tb2R1bGVzIikgPDwgUVN0cmluZ0xpdGVyYWwoIkFMTC1NT0RVTEUtUEFUSCIpOwotICB9 Ci0gIHJldHVybiBhcmdzOworICAgIHN0YXRpYyBjb25zdCBRU3RyaW5nTGlzdCBvcHRzeworICAg ICAgICB1Ii1jcCJfcywKKyAgICAgICAgdSItY2xhc3NwYXRoIl9zLAorICAgICAgICB1Ii0tY2xh c3MtcGF0aCJfcywKKyAgICAgICAgdSItcCJfcywKKyAgICAgICAgdSItLW1vZHVsZS1wYXRoIl9z LAorICAgICAgICB1Ii0tdXBncmFkZS1tb2R1bGUtcGF0aCJfcywKKyAgICAgICAgdSItLWFkZC1t b2R1bGVzIl9zLAorICAgICAgICB1Ii0tbGltaXQtbW9kdWxlcyJfcywKKyAgICAgICAgdSItLWFk ZC1leHBvcnRzIl9zLAorICAgICAgICB1Ii0tYWRkLW9wZW5zIl9zLAorICAgICAgICB1Ii0tYWRk LXJlYWRzIl9zLAorICAgICAgICB1Ii0tcGF0Y2gtbW9kdWxlIl9zLAorICAgICAgICB1Ii0tc291 cmNlIl9zLAorICAgIH07CisgICAgcmV0dXJuIG9wdHMuY29udGFpbnMoYSk7CiB9CiAKLXN0YXRp YyBjb25zdCBRU3RyaW5nTGlzdCBtb2R1bGVBd2FyZVRvb2xzID0gewotICBRU3RyaW5nTGl0ZXJh bCgiamF2YSIpLAotICBRU3RyaW5nTGl0ZXJhbCgiamF2YWMiKSwKLSAgUVN0cmluZ0xpdGVyYWwo ImphdmFkb2MiKSwKLSAgUVN0cmluZ0xpdGVyYWwoImpkZXBzIiksCi0gIFFTdHJpbmdMaXRlcmFs KCJqc2hlbGwiKSwKLSAgUVN0cmluZ0xpdGVyYWwoImpsaW5rIiksCi0gIFFTdHJpbmdMaXRlcmFs KCJqbmF0aXZlc2NhbiIpLAotICBRU3RyaW5nTGl0ZXJhbCgianBhY2thZ2UiKQorc3RydWN0IE9w dGlvblJlZ2lvbiB7CisgICAgaW50IGVuZCA9IDA7IC8vIG9wdGlvbnMgbGl2ZSBpbiBhcmdzWzAs IGVuZCkKKyAgICBib29sIG1vZHVsYXJNYWluID0gZmFsc2U7CiB9OwogCi1pbnQgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQorLyoqCisgKiBGb3IgamF2YSwgZXZlcnl0aGluZyBhZnRlciAt amFyLCAtbSBvciB0aGUgbWFpbiBjbGFzcyBiZWxvbmdzIHRvIHRoZSBwcm9ncmFtCisgKiBiZWlu ZyBydW4sIHNvIHdlIG11c3Qgbm90IHRyZWF0IGl0IGFzIEpWTSBvcHRpb25zLiBPdGhlciB0b29s cyB0YWtlIG9wdGlvbnMKKyAqIGFueXdoZXJlIG9uIHRoZSBsaW5lLgorICovCitPcHRpb25SZWdp b24gb3B0aW9uUmVnaW9uKGNvbnN0IFFTdHJpbmcgJnRvb2wsIGNvbnN0IFFTdHJpbmdMaXN0ICZh cmdzKQogewotICBpZiAoYXJnYyA+IDEpIHsKLSAgICBjb25zdCBRU3RyaW5nIGFyZyA9IFFTdHJp bmc6OmZyb21Mb2NhbDhCaXQoYXJndlsxXSk7Ci0KLSAgICBpZiAoIWFyZy5zdGFydHNXaXRoKFFM YXRpbjFDaGFyKCctJykpICYmCi0gICAgICAhYXJnLmVuZHNXaXRoKFFMYXRpbjFTdHJpbmcoIi5q YXIiKSwgUXQ6OkNhc2VJbnNlbnNpdGl2ZSkpIHsKLSAgICAgIGNvbnN0IFFTdHJpbmdMaXN0IGFs bG93ZWRQYXRocyA9IHsKLSAgICAgICAgUVN0cmluZ0xpdGVyYWwoIi9hcHAvYmluIiksCi0gICAg ICAgIFFTdHJpbmdMaXRlcmFsKCIvYXBwL2pkay9iaW4iKQotICAgICAgfTsKLSAgICBRU3RyaW5n IHRvb2xQYXRoOwotICAgIGZvciAoY29uc3QgUVN0cmluZyAmcGF0aCA6IGFsbG93ZWRQYXRocykg ewotICAgICAgY29uc3QgUVN0cmluZyBjYW5kaWRhdGUgPSBwYXRoICsgUUxhdGluMUNoYXIoJy8n KSArIGFyZzsKLSAgICAgIGlmIChRRmlsZTo6ZXhpc3RzKGNhbmRpZGF0ZSkpIHsKLSAgICAgICAg dG9vbFBhdGggPSBjYW5kaWRhdGU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQorICAgIGlmICh0 b29sICE9IHUiamF2YSJfcykgeworICAgICAgICByZXR1cm4ge2ludChhcmdzLnNpemUoKSksIGZh bHNlfTsKICAgICB9CiAKLSAgICBpZiAodG9vbFBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICBmcHJp bnRmKHN0ZGVyciwgImtqYXI6ICclcycgaXMgbm90IGFuIGF2YWlsYWJsZSBKREsgdG9vbC5cbiIs IGFyZ3ZbMV0pOwotICAgICAgcmV0dXJuIDE7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdz LnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFFTdHJpbmcgJmEgPSBhcmdzLmF0KGkpOwor ICAgICAgICBpZiAoYSA9PSB1Ii1qYXIiX3MpIHsKKyAgICAgICAgICAgIHJldHVybiB7aSwgZmFs c2V9OworICAgICAgICB9CisgICAgICAgIGlmIChhID09IHUiLW0iX3MgfHwgYSA9PSB1Ii0tbW9k dWxlIl9zIHx8IGEuc3RhcnRzV2l0aCh1Ii0tbW9kdWxlPSJfcykpIHsKKyAgICAgICAgICAgIHJl dHVybiB7aSwgdHJ1ZX07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFhLnN0YXJ0c1dpdGgodSct JykpIHsKKyAgICAgICAgICAgIHJldHVybiB7aSwgZmFsc2V9OworICAgICAgICB9CisgICAgICAg IGlmICh0YWtlc1NlcGFyYXRlVmFsdWUoYSkpIHsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAg fQogICAgIH0KKyAgICByZXR1cm4ge2ludChhcmdzLnNpemUoKSksIGZhbHNlfTsKK30KIAotICAg IFFTdHJpbmdMaXN0IHByb2NBcmdzOwotICAgIGlmIChtb2R1bGVBd2FyZVRvb2xzLmNvbnRhaW5z KGFyZykpIHsKLSAgICAgIGJvb2wgaGFzTW9kdWxlSW5mbyA9IGZhbHNlOwotICAgICAgZm9yIChp bnQgaSA9IDI7IGkgPCBhcmdjOyArK2kpIHsKLSAgICAgICAgaWYgKFFTdHJpbmc6OmZyb21Mb2Nh bDhCaXQoYXJndltpXSkuZW5kc1dpdGgoUVN0cmluZ0xpdGVyYWwoIm1vZHVsZS1pbmZvLmphdmEi KSkpIHsKLSAgICAgICAgICBoYXNNb2R1bGVJbmZvID0gdHJ1ZTsKLSAgICAgICAgICBicmVhazsK Ky8qKgorICogSW5kZXggb2YgdGhlIGFyZ3VtZW50IHRoYXQgY2FycmllcyBhIG1vZHVsZSBwYXRo LCBvciAtMS4KKyAqLworaW50IGZpbmRNb2R1bGVQYXRoQXJnKGNvbnN0IFFTdHJpbmdMaXN0ICZh cmdzLCBpbnQgZW5kLCBib29sIHNob3J0Rm9ybUlzTW9kdWxlUGF0aCkKK3sKKyAgICBmb3IgKGlu dCBpID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgIGNvbnN0IFFTdHJpbmcgJmEgPSBhcmdz LmF0KGkpOworICAgICAgICBpZiAoYSA9PSB1Ii0tbW9kdWxlLXBhdGgiX3MgfHwgYS5zdGFydHNX aXRoKHUiLS1tb2R1bGUtcGF0aD0iX3MpIHx8IChzaG9ydEZvcm1Jc01vZHVsZVBhdGggJiYgYSA9 PSB1Ii1wIl9zKSkgeworICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KLSAgICAgIH0K LSAgICAgIHByb2NBcmdzID0gYnVpbGRNb2R1bGVBcmdzKCFoYXNNb2R1bGVJbmZvKTsKLSAgICB9 Ci0gICAgZm9yIChpbnQgaSA9IDI7IGkgPCBhcmdjOyArK2kpIHsKLSAgICAgIHByb2NBcmdzIDw8 IFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoYXJndltpXSk7Ci0gICAgfQotCi0gICAgUVByb2Nlc3Mg cHJvYzsKLSAgICBwcm9jLnNldFByb2Nlc3NDaGFubmVsTW9kZShRUHJvY2Vzczo6Rm9yd2FyZGVk Q2hhbm5lbHMpOwotICAgIHByb2Muc3RhcnQodG9vbFBhdGgsIHByb2NBcmdzKTsKLSAgICBwcm9j LndhaXRGb3JGaW5pc2hlZCgtMSk7Ci0gICAgcmV0dXJuIHByb2MuZXhpdENvZGUoKTsKLSAgICAg IH0KLQotICAgICAgaWYgKGFyZyA9PSBRTGF0aW4xU3RyaW5nKCItLWdlbmVyYXRlLXdyYXBwZXJz IikgfHwgYXJnID09IFFMYXRpbjFTdHJpbmcoIi1nIikpIHsKLSAgICAgICAgUUNvcmVBcHBsaWNh dGlvbiBjb3JlQXBwKGFyZ2MsIGFyZ3YpOwotICAgICAgICBLTG9jYWxpemVkU3RyaW5nOjpzZXRB cHBsaWNhdGlvbkRvbWFpbigib3JnLmtkZS5ramFyIik7Ci0gICAgICAgIEtqYXJBcHAga2phckFw cDsKLSAgICAgICAgUUV2ZW50TG9vcCBsb29wOwotICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KCZr amFyQXBwLCAmS2phckFwcDo6b3BlcmF0aW9uQ29tcGxldGVkLCBbJl0oY29uc3QgUVN0cmluZyAm bXNnKSB7Ci0gICAgICAgICAgZnByaW50ZihzdGRvdXQsICIlc1xuIiwgbXNnLnRvTG9jYWw4Qml0 KCkuY29uc3REYXRhKCkpOwotICAgICAgICAgIGxvb3AucXVpdCgpOworICAgIH0KKyAgICByZXR1 cm4gLTE7Cit9CisKKy8qKgorICogUmVwbGFjZSB0aGlzIHByb2Nlc3Mgd2l0aCBhIHRvb2wgZnJv bSB0aGUgYnVuZGxlZCBKREsuCisgKi8KK2ludCBleGVjSmRrVG9vbChjb25zdCBRU3RyaW5nICZ0 b29sLCBjb25zdCBRU3RyaW5nTGlzdCAmcmVzdCkKK3sKKyAgICAvLyByZWplY3QgYW55dGhpbmcg dGhhdCBjb3VsZCBlc2NhcGUgL2FwcC9qZGsvYmluLgorICAgIGlmICh0b29sLmNvbnRhaW5zKHUn LycpIHx8IHRvb2wuc3RhcnRzV2l0aCh1Jy4nKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwg ImtqYXI6IGludmFsaWQgdG9vbCBuYW1lXG4iKTsKKyAgICAgICAgcmV0dXJuIDI7CisgICAgfQor CisgICAgY29uc3QgUUJ5dGVBcnJheSBleGUgPSBRRmlsZTo6ZW5jb2RlTmFtZShLamFyOjpqZGtU b29sKHRvb2wpKTsKKyAgICBpZiAoOjphY2Nlc3MoZXhlLmNvbnN0RGF0YSgpLCBYX09LKSAhPSAw KSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAia2phcjogJyVzJyBpcyBub3QgYW4gYXZhaWxh YmxlIEpESyB0b29sLlxuIiwgcVByaW50YWJsZSh0b29sKSk7CisgICAgICAgIHJldHVybiAxMjc7 CisgICAgfQorCisgICAgUVN0cmluZ0xpc3QgYXJnTGlzdCA9IHJlc3Q7CisgICAgaWYgKEtqYXI6 OmlzTW9kdWxlUGF0aFRvb2wodG9vbCkpIHsKKyAgICAgICAgS2phcjo6ZW5zdXJlVXNlck1vZHVs ZXNEaXIoKTsKKworICAgICAgICBjb25zdCBPcHRpb25SZWdpb24gcmVnaW9uID0gb3B0aW9uUmVn aW9uKHRvb2wsIGFyZ0xpc3QpOworICAgICAgICBjb25zdCBhdXRvIG9wdGlvbnNCZWdpbiA9IGFy Z0xpc3QuY2JlZ2luKCk7CisgICAgICAgIGNvbnN0IGF1dG8gb3B0aW9uc0VuZCA9IGFyZ0xpc3Qu Y2JlZ2luKCkgKyByZWdpb24uZW5kOworCisgICAgICAgIC8vIENvbXBpbGluZyBhIG1vZHVsZSBk ZXNjcmlwdG9yLCBvciBhbiBleHBsaWNpdCAtLWFkZC1tb2R1bGVzLCBtZWFucyB0aGUKKyAgICAg ICAgLy8gY2FsbGVyIGNvbnRyb2xzIHRoZSBtb2R1bGUgZ3JhcGg7IGRvIG5vdCB3aWRlbiBpdCBi ZWhpbmQgdGhlaXIgYmFjay4KKyAgICAgICAgY29uc3QgYm9vbCBoYXNNb2R1bGVJbmZvID0gc3Rk Ojphbnlfb2Yob3B0aW9uc0JlZ2luLCBvcHRpb25zRW5kLCBbXShjb25zdCBRU3RyaW5nICZhKSB7 CisgICAgICAgICAgICByZXR1cm4gUUZpbGVJbmZvKGEpLmZpbGVOYW1lKCkgPT0gIm1vZHVsZS1p bmZvLmphdmEiX0wxOwogICAgICAgICB9KTsKLSAgICAgICAgUU9iamVjdDo6Y29ubmVjdCgma2ph ckFwcCwgJktqYXJBcHA6OmVycm9yT2NjdXJyZWQsIFsmXShjb25zdCBRU3RyaW5nICZlcnIpIHsK LSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBlcnIudG9Mb2NhbDhCaXQoKS5jb25z dERhdGEoKSk7CisgICAgICAgIGNvbnN0IGJvb2wgaGFzQWRkTW9kdWxlcyA9IHN0ZDo6YW55X29m KG9wdGlvbnNCZWdpbiwgb3B0aW9uc0VuZCwgW10oY29uc3QgUVN0cmluZyAmYSkgeworICAgICAg ICAgICAgcmV0dXJuIGEgPT0gdSItLWFkZC1tb2R1bGVzIl9zIHx8IGEuc3RhcnRzV2l0aCh1Ii0t YWRkLW1vZHVsZXM9Il9zKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGtqYXJBcHAuZ2VuZXJhdGVX cmFwcGVycygpOwotICAgICAgICBsb29wLmV4ZWMoKTsKKworICAgICAgICAvLyBNZXJnZSB3aXRo IHRoZSBjYWxsZXIncyBlbnRyaWVzIGZpcnN0IHNvIHRoZWlyIG1vZHVsZXMgd2luIG9uIGEgbmFt ZSBjbGFzaC4KKyAgICAgICAgY29uc3QgaW50IGlkeCA9IGZpbmRNb2R1bGVQYXRoQXJnKGFyZ0xp c3QsIHJlZ2lvbi5lbmQsIHRvb2wgIT0gdSJqZGVwcyJfcyk7CisgICAgICAgIGlmIChpZHggPCAw KSB7CisgICAgICAgICAgICBhcmdMaXN0LnByZXBlbmQoS2phcjo6bW9kdWxlUGF0aCgpKTsKKyAg ICAgICAgICAgIGFyZ0xpc3QucHJlcGVuZCh1Ii0tbW9kdWxlLXBhdGgiX3MpOworICAgICAgICB9 IGVsc2UgaWYgKGFyZ0xpc3QuYXQoaWR4KS5zdGFydHNXaXRoKHUiLS1tb2R1bGUtcGF0aD0iX3Mp KSB7CisgICAgICAgICAgICBhcmdMaXN0W2lkeF0gKz0gdSc6JyArIEtqYXI6Om1vZHVsZVBhdGgo KTsKKyAgICAgICAgfSBlbHNlIGlmIChpZHggKyAxIDwgcmVnaW9uLmVuZCkgeworICAgICAgICAg ICAgYXJnTGlzdFtpZHggKyAxXSArPSB1JzonICsgS2phcjo6bW9kdWxlUGF0aCgpOworICAgICAg ICB9CisgICAgICAgIC8vIEEgdHJhaWxpbmcgLS1tb2R1bGUtcGF0aCB3aXRoIG5vIHZhbHVlIGlz IGxlZnQgYWxvbmU6IHRoZSB0b29sIGl0c2VsZgorICAgICAgICAvLyBnaXZlcyBhIGJldHRlciBk aWFnbm9zdGljIHRoYW4gd2UgY291bGQuCisKKyAgICAgICAgLy8gQUxMLU1PRFVMRS1QQVRIIGlz IG5vdCB2YWxpZCBhcyBhbiBpbml0aWFsIG1vZHVsZSwgc28gLW0gcnVsZXMgaXQgb3V0LgorICAg ICAgICBpZiAoS2phcjo6dGFrZXNBbGxNb2R1bGVQYXRoKHRvb2wpICYmICFyZWdpb24ubW9kdWxh ck1haW4gJiYgIWhhc01vZHVsZUluZm8gJiYgIWhhc0FkZE1vZHVsZXMpIHsKKyAgICAgICAgICAg IGFyZ0xpc3QucHJlcGVuZCh1IkFMTC1NT0RVTEUtUEFUSCJfcyk7CisgICAgICAgICAgICBhcmdM aXN0LnByZXBlbmQodSItLWFkZC1tb2R1bGVzIl9zKTsKKyAgICAgICAgfQorICAgIH0KKworICAg IFFMaXN0PFFCeXRlQXJyYXk+IHN0b3JhZ2U7CisgICAgc3RvcmFnZS5yZXNlcnZlKGFyZ0xpc3Qu c2l6ZSgpKTsKKyAgICBzdGQ6OnZlY3RvcjxjaGFyICo+IGFyZ3Y7CisgICAgYXJndi5yZXNlcnZl KGFyZ0xpc3Quc2l6ZSgpICsgMik7CisgICAgYXJndi5wdXNoX2JhY2soY29uc3RfY2FzdDxjaGFy ICo+KGV4ZS5jb25zdERhdGEoKSkpOworICAgIGZvciAoY29uc3QgUVN0cmluZyAmYXJnIDogc3Rk Ojphc19jb25zdChhcmdMaXN0KSkgeworICAgICAgICBzdG9yYWdlLmFwcGVuZChhcmcudG9Mb2Nh bDhCaXQoKSk7CisgICAgICAgIGFyZ3YucHVzaF9iYWNrKHN0b3JhZ2UubGFzdCgpLmRhdGEoKSk7 CisgICAgfQorICAgIGFyZ3YucHVzaF9iYWNrKG51bGxwdHIpOworCisgICAgOjpleGVjdihleGUu Y29uc3REYXRhKCksIGFyZ3YuZGF0YSgpKTsKKworICAgIGZwcmludGYoc3RkZXJyLCAia2phcjog ZmFpbGVkIHRvIGV4ZWN1dGUgJXNcbiIsIGV4ZS5jb25zdERhdGEoKSk7CisgICAgcmV0dXJuIDEy NjsKK30KKworaW50IHdyYXBwZXJDbGkoaW50ICZhcmdjLCBjaGFyICoqYXJndiwgYm9vbCByZW1v dmUpCit7CisgICAgUUNvcmVBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CisgICAgc2V0dXBB cHBsaWNhdGlvbk1ldGFkYXRhKCk7CisKKyAgICBLamFyQXBwIGtqYXI7CisgICAgY29uc3QgUVZh cmlhbnRNYXAgcmVzdWx0ID0gcmVtb3ZlID8ga2phci5yZW1vdmVXcmFwcGVycygpIDoga2phci5n ZW5lcmF0ZVdyYXBwZXJzKCk7CisgICAgY29uc3QgUVN0cmluZyBtZXNzYWdlID0gcmVzdWx0LnZh bHVlKHUibWVzc2FnZSJfcykudG9TdHJpbmcoKTsKKworICAgIGlmIChyZXN1bHQudmFsdWUodSJv ayJfcykudG9Cb29sKCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRvdXQsICIlc1xuIiwgcVV0ZjhQ cmludGFibGUobWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KKyAgICB9Cisg ICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgcVV0ZjhQcmludGFibGUobWVzc2FnZSkpOworICAg IHJldHVybiAxOworfQogCi0gICAgICBpZiAoYXJnLmVuZHNXaXRoKFFMYXRpbjFTdHJpbmcoIi5q YXIiKSwgUXQ6OkNhc2VJbnNlbnNpdGl2ZSkpIHsKLSAgICAgICAgY29uc3QgUVN0cmluZyBmaWxl UGF0aCA9IHRvTG9jYWxQYXRoKGFyZyk7CitpbnQgc2hvd0Vycm9yRGlhbG9nKFFRbWxBcHBsaWNh dGlvbkVuZ2luZSAmZW5naW5lLCBjb25zdCBRU3RyaW5nICZlcnJvclRleHQpCit7CisgICAgS0xv Y2FsaXphdGlvbjo6c2V0dXBMb2NhbGl6ZWRDb250ZXh0KCZlbmdpbmUpOworICAgIGVuZ2luZS5z ZXRJbml0aWFsUHJvcGVydGllcyh7e3UiZXJyb3JNZXNzYWdlIl9zLCBlcnJvclRleHR9fSk7Cisg ICAgZW5naW5lLmxvYWRGcm9tTW9kdWxlKCJvcmcua2RlLmtqYXIiLCAiRXJyb3JEaWFsb2ciKTsK KyAgICBpZiAoZW5naW5lLnJvb3RPYmplY3RzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAia2phcjogZmFpbGVkIHRvIGxvYWQgdGhlIGVycm9yIGRpYWxvZ1xuJXNcbiIs IHFVdGY4UHJpbnRhYmxlKGVycm9yVGV4dCkpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9Cisg ICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6ZXhlYygpOworfQogCi0gICAgICAgIFFHdWlBcHBs aWNhdGlvbiBhcHAoYXJnYywgYXJndik7Ci0gICAgICAgIGFwcC5zZXRBcHBsaWNhdGlvbk5hbWUo UVN0cmluZ0xpdGVyYWwoIm9yZy5rZGUua2phciIpKTsKLSAgICAgICAgYXBwLnNldERlc2t0b3BG aWxlTmFtZShRU3RyaW5nTGl0ZXJhbCgib3JnLmtkZS5ramFyIikpOwotICAgICAgICBLTG9jYWxp emVkU3RyaW5nOjpzZXRBcHBsaWNhdGlvbkRvbWFpbigib3JnLmtkZS5ramFyIik7CisvKioKKyAq IFJ1bnMgdGhlIEpWTSwgdGVlcyBzdGRlcnIsIGFuZCBzaG93cyBhIGRpYWxvZyBpZiB0aGUgSlZN IGZhaWxlZC4KKyAqCisgKiBGYWlsdXJlIGlzIGEgbm9uLXplcm8gZXhpdCwgYW4gYWJub3JtYWwg ZXhpdCwgb3IgYW55dGhpbmcgYXQgYWxsIG9uIHN0ZGVyci4KKyAqIFRoZSBleGl0IGNvZGUgYWxv bmUgaXMgbm90IGVub3VnaDogYSBKQVIgdGhhdCBkaWVzIG9uIHRoZSBBV1QgZXZlbnQgdGhyZWFk CisgKiB0YWtlcyB0aGUgdGhyZWFkIGRvd24gd2l0aCBpdCBhbmQgdGhlIEpWTSBzdGlsbCBleGl0 cyByZXBvcnRpbmcgc3VjY2Vzcy4KKyAqLworaW50IHJ1bldhdGNoZXIoaW50ICZhcmdjLCBjaGFy ICoqYXJndiwgY29uc3QgUVN0cmluZ0xpc3QgJnJlc3QpCit7CisgICAgaWYgKHJlc3QuaXNFbXB0 eSgpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAia2phcjogLS13YXRjaCByZXF1aXJlcyBh IEpBUiBwYXRoXG4iKTsKKyAgICAgICAgcmV0dXJuIDI7CisgICAgfQorICAgIGNvbnN0IFFTdHJp bmcgamFyUGF0aCA9IHJlc3QuZmlyc3QoKTsKKyAgICBpZiAoIVFGaWxlOjpleGlzdHMoamFyUGF0 aCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJramFyOiAlcyBkb2VzIG5vdCBleGlzdFxu IiwgcVV0ZjhQcmludGFibGUoamFyUGF0aCkpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisK KyAgICBRR3VpQXBwbGljYXRpb24gYXBwKGFyZ2MsIGFyZ3YpOworICAgIHNldHVwQXBwbGljYXRp b25NZXRhZGF0YSgpOworICAgIHNldHVwUXVpY2tTdHlsZSgpOwogCi0gICAgICAgIEtqYXJBcHAg a2phckFwcDsKKyAgICBRU3RyaW5nTGlzdCBqYXZhQXJncyA9IEtqYXI6Om1vZHVsZUFyZ3MoKTsK KyAgICBqYXZhQXJncyA8PCB1Ii1qYXIiX3MgPDwgamFyUGF0aCA8PCByZXN0Lm1pZCgxKTsKIAot ICAgICAgICBpZiAoIVFGaWxlOjpleGlzdHMoZmlsZVBhdGgpKSB7Ci0gICAgICAgICAgY29uc3Qg UVN0cmluZyBlcnJvciA9IGkxOG4oCi0gICAgICAgICAgICAiRmlsZSBkb2VzIG5vdCBleGlzdCBv ciBjYW5ub3QgYmUgYWNjZXNzZWQuXG4iCi0gICAgICAgICAgICAiS0phciBjYW4gb25seSBzZWUg eW91ciBIb21lIGRpcmVjdG9yeSBieSBkZWZhdWx0LlxuIgotICAgICAgICAgICAgIklmIHRoZSBm aWxlIGV4aXN0cyBlbHNld2hlcmUsIG1vdmUgaXQgdG8geW91ciBIb21lIGRpcmVjdG9yeSAiCi0g ICAgICAgICAgICAib3IgZXhwYW5kIEtKYXIncyBwZXJtaXNzaW9ucyBpbiBTeXN0ZW0gU2V0dGlu Z3MuIik7Ci0gICAgICAgICAgcmV0dXJuIHNob3dHdWkoa2phckFwcCwgZXJyb3IpOworICAgIFFQ cm9jZXNzIGphdmE7CisgICAgamF2YS5zZXRQcm9jZXNzQ2hhbm5lbE1vZGUoUVByb2Nlc3M6OkZv cndhcmRlZE91dHB1dENoYW5uZWwpOworICAgIGphdmEuc2V0SW5wdXRDaGFubmVsTW9kZShRUHJv Y2Vzczo6Rm9yd2FyZGVkSW5wdXRDaGFubmVsKTsKKworICAgIFFCeXRlQXJyYXkgc3RkZXJyVGFp bDsKKyAgICBib29sIHRydW5jYXRlZCA9IGZhbHNlOworCisgICAgYXV0byBkcmFpblN0ZGVyciA9 IFsmXSB7CisgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgY2h1bmsgPSBqYXZhLnJlYWRBbGxTdGFu ZGFyZEVycm9yKCk7CisgICAgICAgIGlmIChjaHVuay5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBTdGlsbCB2aXNpYmxlIHRvIGAuLi4gMj4m MSB8IGdyZXBgIHdoaWxlIGJlaW5nIGJ1ZmZlcmVkIGZvciB0aGUgZGlhbG9nLgorICAgICAgICBm d3JpdGUoY2h1bmsuY29uc3REYXRhKCksIDEsIHNpemVfdChjaHVuay5zaXplKCkpLCBzdGRlcnIp OworICAgICAgICBzdGRlcnJUYWlsICs9IGNodW5rOworICAgICAgICBpZiAoc3RkZXJyVGFpbC5z aXplKCkgPiBNYXhTdGRlcnJUYWlsKSB7CisgICAgICAgICAgICBzdGRlcnJUYWlsID0gc3RkZXJy VGFpbC5yaWdodChNYXhTdGRlcnJUYWlsKTsKKyAgICAgICAgICAgIHRydW5jYXRlZCA9IHRydWU7 CiAgICAgICAgIH0KKyAgICB9OworCisgICAgUU9iamVjdDo6Y29ubmVjdCgmamF2YSwgJlFQcm9j ZXNzOjpyZWFkeVJlYWRTdGFuZGFyZEVycm9yLCAmamF2YSwgZHJhaW5TdGRlcnIpOworCisgICAg amF2YS5zdGFydChLamFyOjpqZGtUb29sKHUiamF2YSIpLCBqYXZhQXJncyk7CisgICAgaWYgKCFq YXZhLndhaXRGb3JTdGFydGVkKCkpIHsKKyAgICAgICAgUVFtbEFwcGxpY2F0aW9uRW5naW5lIGVu Z2luZTsKKyAgICAgICAgcmV0dXJuIHNob3dFcnJvckRpYWxvZyhlbmdpbmUsIGkxOG4oIkNvdWxk IG5vdCBzdGFydCB0aGUgYnVuZGxlZCBKYXZhIHJ1bnRpbWUuIikpOworICAgIH0KKyAgICBqYXZh LndhaXRGb3JGaW5pc2hlZCgtMSk7CisgICAgZHJhaW5TdGRlcnIoKTsgLy8gd2hhdGV2ZXIgd2Fz IHN0aWxsIGJ1ZmZlcmVkIHdoZW4gdGhlIHByb2Nlc3MgZW5kZWQKKworICAgIGNvbnN0IGJvb2wg Y3Jhc2hlZCA9IGphdmEuZXhpdFN0YXR1cygpICE9IFFQcm9jZXNzOjpOb3JtYWxFeGl0OworICAg IGlmICghY3Jhc2hlZCAmJiBqYXZhLmV4aXRDb2RlKCkgPT0gMCAmJiBzdGRlcnJUYWlsLmlzRW1w dHkoKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBRU3RyaW5nIGVycm9yVGV4 dCA9IFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoc3RkZXJyVGFpbCkudHJpbW1lZCgpOworICAgIGlm IChlcnJvclRleHQuaXNFbXB0eSgpKSB7CisgICAgICAgIGVycm9yVGV4dCA9IGNyYXNoZWQgPyBp MThuKCJKYXZhIHRlcm1pbmF0ZWQgYWJub3JtYWxseS4iKSA6IGkxOG4oIkphdmEgZXhpdGVkIHdp dGggYW4gZXJyb3IgKGV4aXQgY29kZSAlMSkuIiwgamF2YS5leGl0Q29kZSgpKTsKKyAgICB9IGVs c2UgaWYgKHRydW5jYXRlZCkgeworICAgICAgICBlcnJvclRleHQucHJlcGVuZChpMThuKCIob3V0 cHV0IHRydW5jYXRlZCwgc2hvd2luZyB0aGUgbGFzdCA2NCBLaUIpIikgKyB1IlxuXG4iX3MpOwor ICAgIH0KKworICAgIFFRbWxBcHBsaWNhdGlvbkVuZ2luZSBlbmdpbmU7CisgICAgcmV0dXJuIHNo b3dFcnJvckRpYWxvZyhlbmdpbmUsIGVycm9yVGV4dCk7Cit9CisKK2VudW0gY2xhc3MgU3RhcnR1 cEVycm9yIHsKKyAgICBOb25lLAorICAgIEZpbGVOb3RGb3VuZCwKKyAgICBMYXVuY2hGYWlsZWQs Cit9OworCitpbnQgc2hvd01haW5XaW5kb3coaW50ICZhcmdjLCBjaGFyICoqYXJndiwgU3RhcnR1 cEVycm9yIGVycm9yLCBjb25zdCBRU3RyaW5nICZwYXRoID0gUVN0cmluZygpKQoreworICAgIFFH dWlBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CisgICAgc2V0dXBBcHBsaWNhdGlvbk1ldGFk YXRhKCk7CisgICAgc2V0dXBRdWlja1N0eWxlKCk7CisKKyAgICBRU3RyaW5nIGluaXRpYWxFcnJv cjsKKyAgICBzd2l0Y2ggKGVycm9yKSB7CisgICAgY2FzZSBTdGFydHVwRXJyb3I6Ok5vbmU6Cisg ICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhcnR1cEVycm9yOjpGaWxlTm90Rm91bmQ6CisgICAg ICAgIGluaXRpYWxFcnJvciA9IGkxOG4oIkZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgY2Fubm90IGJl IGFjY2Vzc2VkLlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLSmFyIGNhbiBvbmx5 IHNlZSB5b3VyIEhvbWUgZGlyZWN0b3J5IGJ5IGRlZmF1bHQuXG4iCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIklmIHRoZSBmaWxlIGV4aXN0cyBlbHNld2hlcmUsIG1vdmUgaXQgdG8geW91 ciBIb21lIGRpcmVjdG9yeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGV4cGFu ZCBLSmFyJ3MgcGVybWlzc2lvbnMgaW4gU3lzdGVtIFNldHRpbmdzLiIpOworICAgICAgICBicmVh azsKKyAgICBjYXNlIFN0YXJ0dXBFcnJvcjo6TGF1bmNoRmFpbGVkOgorICAgICAgICBpbml0aWFs RXJyb3IgPSBpMThuKCJGYWlsZWQgdG8gbGF1bmNoICUxLiIsIHBhdGgpOworICAgICAgICBicmVh azsKKyAgICB9CiAKLSAgICAgICAgUVN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgICAgIFFPYmpl Y3Q6OmNvbm5lY3QoJmtqYXJBcHAsICZLamFyQXBwOjplcnJvck9jY3VycmVkLAotICAgICAgICAg ICAgICAgICAgICAgICAgIFsmXShjb25zdCBRU3RyaW5nICZlcnIpIHsgZXJyb3JNZXNzYWdlID0g ZXJyOyB9KTsKKyAgICBRUW1sQXBwbGljYXRpb25FbmdpbmUgZW5naW5lOworICAgIEtMb2NhbGl6 YXRpb246OnNldHVwTG9jYWxpemVkQ29udGV4dCgmZW5naW5lKTsKKyAgICBlbmdpbmUuc2V0SW5p dGlhbFByb3BlcnRpZXMoe3t1ImluaXRpYWxFcnJvciJfcywgaW5pdGlhbEVycm9yfX0pOworICAg IGVuZ2luZS5sb2FkRnJvbU1vZHVsZSgib3JnLmtkZS5ramFyIiwgIk1haW4iKTsKKyAgICBpZiAo ZW5naW5lLnJvb3RPYmplY3RzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJy LCAia2phcjogZmFpbGVkIHRvIGxvYWQgdGhlIHVzZXIgaW50ZXJmYWNlXG4iKTsKKyAgICAgICAg cmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiBhcHAuZXhlYygpOworfQorCit9IC8vIG5hbWVz cGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIEtMb2NhbGl6 ZWRTdHJpbmc6OnNldEFwcGxpY2F0aW9uRG9tYWluKCJvcmcua2RlLmtqYXIiKTsKKworICAgIC8v IENvcHkgdGhlIGFyZ3VtZW50cyBiZWZvcmUgYW55IFFDb3JlQXBwbGljYXRpb24gdG91Y2hlcyBh cmdjL2FyZ3YsIGFuZAorICAgIC8vIGNvbnN0cnVjdCBleGFjdGx5IG9uZSBhcHBsaWNhdGlvbiBv YmplY3QgZnVydGhlciBkb3duLgorICAgIFFTdHJpbmdMaXN0IGFyZ3M7CisgICAgYXJncy5yZXNl cnZlKGFyZ2MpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgKytpKSB7CisgICAgICAg IGFyZ3MgPDwgUVN0cmluZzo6ZnJvbUxvY2FsOEJpdChhcmd2W2ldKTsKKyAgICB9CisKKyAgICBj b25zdCBRU3RyaW5nIGZpcnN0ID0gYXJncy52YWx1ZSgxKTsKKyAgICBjb25zdCBRU3RyaW5nTGlz dCByZXN0ID0gYXJncy5taWQoMik7CisKKyAgICBpZiAoZmlyc3QgPT0gdSItLWhlbHAiX3MgfHwg Zmlyc3QgPT0gdSItaCJfcykgeworICAgICAgICBwcmludFVzYWdlKHN0ZG91dCk7CisgICAgICAg IHJldHVybiAwOworICAgIH0KKworICAgIGlmIChmaXJzdCA9PSB1Ii0tdmVyc2lvbiJfcyB8fCBm aXJzdCA9PSB1Ii12Il9zKSB7CisgICAgICAgIGZwcmludGYoc3Rkb3V0LCAia2phciAlc1xuIiwg S0pBUl9WRVJTSU9OX1NUUklORyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlm IChmaXJzdCA9PSB1Ii0tZ2VuZXJhdGUtd3JhcHBlcnMiX3MgfHwgZmlyc3QgPT0gdSItZyJfcykg eworICAgICAgICByZXR1cm4gd3JhcHBlckNsaShhcmdjLCBhcmd2LCBmYWxzZSk7CisgICAgfQog Ci0gICAgICAgIGlmIChramFyQXBwLnJ1bkphckZpbGUoZmlsZVBhdGgpKSB7Ci0gICAgICAgICAg cmV0dXJuIDA7CisgICAgaWYgKGZpcnN0ID09IHUiLS1yZW1vdmUtd3JhcHBlcnMiX3MgfHwgZmly c3QgPT0gdSItciJfcykgeworICAgICAgICByZXR1cm4gd3JhcHBlckNsaShhcmdjLCBhcmd2LCB0 cnVlKTsKKyAgICB9CisKKyAgICBpZiAoZmlyc3QgPT0gdSItLXdhdGNoIl9zKSB7CisgICAgICAg IHJldHVybiBydW5XYXRjaGVyKGFyZ2MsIGFyZ3YsIHJlc3QpOworICAgIH0KKworICAgIC8vIEFu eXRoaW5nIHRoYXQgaXMgbmVpdGhlciBhbiBvcHRpb24gbm9yIGEgSkFSIGlzIGEgSkRLIHRvb2wg aW52b2NhdGlvbi4KKyAgICBpZiAoIWZpcnN0LmlzRW1wdHkoKSAmJiAhZmlyc3Quc3RhcnRzV2l0 aCh1Jy0nKSAmJiAhZmlyc3QuZW5kc1dpdGgodSIuamFyIl9zLCBRdDo6Q2FzZUluc2Vuc2l0aXZl KSkgeworICAgICAgICByZXR1cm4gZXhlY0pka1Rvb2woZmlyc3QsIHJlc3QpOworICAgIH0KKwor ICAgIGlmIChmaXJzdC5lbmRzV2l0aCh1Ii5qYXIiX3MsIFF0OjpDYXNlSW5zZW5zaXRpdmUpKSB7 CisgICAgICAgIGNvbnN0IFFTdHJpbmcgcGF0aCA9IGZpcnN0LnN0YXJ0c1dpdGgodSJmaWxlOi8v Il9zKSA/IFFVcmwoZmlyc3QpLnRvTG9jYWxGaWxlKCkgOiBmaXJzdDsKKyAgICAgICAgaWYgKCFR RmlsZTo6ZXhpc3RzKHBhdGgpKSB7CisgICAgICAgICAgICByZXR1cm4gc2hvd01haW5XaW5kb3co YXJnYywgYXJndiwgU3RhcnR1cEVycm9yOjpGaWxlTm90Rm91bmQpOwogICAgICAgICB9CiAKLSAg ICAgICAgcmV0dXJuIHNob3dHdWkoa2phckFwcCwgZXJyb3JNZXNzYWdlKTsKLSAgICAgIH0KLSAg fQorICAgICAgICBRU3RyaW5nTGlzdCB3YXRjaGVyQXJnc3t1Ii0td2F0Y2giX3MsIHBhdGh9Owor ICAgICAgICB3YXRjaGVyQXJncyArPSByZXN0OworICAgICAgICBpZiAoUVByb2Nlc3M6OnN0YXJ0 RGV0YWNoZWQoS2phcjo6c2VsZlBhdGgoKSwgd2F0Y2hlckFyZ3MpKSB7CisgICAgICAgICAgICBy ZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2hvd01haW5XaW5kb3coYXJnYywg YXJndiwgU3RhcnR1cEVycm9yOjpMYXVuY2hGYWlsZWQsIHBhdGgpOworICAgIH0KIAotICBRR3Vp QXBwbGljYXRpb24gYXBwKGFyZ2MsIGFyZ3YpOwotICBhcHAuc2V0QXBwbGljYXRpb25OYW1lKFFT dHJpbmdMaXRlcmFsKCJvcmcua2RlLmtqYXIiKSk7Ci0gIGFwcC5zZXREZXNrdG9wRmlsZU5hbWUo UVN0cmluZ0xpdGVyYWwoIm9yZy5rZGUua2phciIpKTsKLSAgS0xvY2FsaXplZFN0cmluZzo6c2V0 QXBwbGljYXRpb25Eb21haW4oIm9yZy5rZGUua2phciIpOworICAgIGlmICghZmlyc3QuaXNFbXB0 eSgpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAia2phcjogdW5rbm93biBvcHRpb24gJyVz J1xuIiwgcVV0ZjhQcmludGFibGUoZmlyc3QpKTsKKyAgICAgICAgcHJpbnRVc2FnZShzdGRlcnIp OworICAgICAgICByZXR1cm4gMjsKKyAgICB9CiAKLSAgS2phckFwcCBramFyQXBwOwotICByZXR1 cm4gc2hvd0d1aShramFyQXBwKTsKKyAgICByZXR1cm4gc2hvd01haW5XaW5kb3coYXJnYywgYXJn diwgU3RhcnR1cEVycm9yOjpOb25lKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9xbWwvRXJyb3JEaWFs b2cucW1sIGIvc3JjL3FtbC9FcnJvckRpYWxvZy5xbWwKaW5kZXggNjNhZTIwZC4uMDE0NmM5ZCAx MDA2NDQKLS0tIGEvc3JjL3FtbC9FcnJvckRpYWxvZy5xbWwKKysrIGIvc3JjL3FtbC9FcnJvckRp YWxvZy5xbWwKQEAgLTIsMTIgKzIsMTUgQEAKIC8vIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIw MjYgSGFkaSBDaG9rciA8aGFkaWNob2tyQGljbG91ZC5jb20+CiAKIGltcG9ydCBRdFF1aWNrCi1p bXBvcnQgUXRRdWljay5Db250cm9scworaW1wb3J0IFF0UXVpY2suQ29udHJvbHMgYXMgQ29udHJv bHMKIGltcG9ydCBRdFF1aWNrLkxheW91dHMKIGltcG9ydCBvcmcua2RlLmtpcmlnYW1pIGFzIEtp cmlnYW1pCiAKIEtpcmlnYW1pLkFwcGxpY2F0aW9uV2luZG93IHsKICAgICBpZDogcm9vdAorCisg ICAgcmVxdWlyZWQgcHJvcGVydHkgc3RyaW5nIGVycm9yTWVzc2FnZQorCiAgICAgdmlzaWJsZTog dHJ1ZQogICAgIHdpZHRoOiA2NDAKICAgICBoZWlnaHQ6IDU2MApAQCAtNDYsMTggKzQ5LDE3IEBA IEtpcmlnYW1pLkFwcGxpY2F0aW9uV2luZG93IHsKICAgICAgICAgICAgICAgICBMYXlvdXQuZmls bFdpZHRoOiB0cnVlCiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFNjcm9sbFZpZXcgewor ICAgICAgICAgICAgQ29udHJvbHMuU2Nyb2xsVmlldyB7CiAgICAgICAgICAgICAgICAgTGF5b3V0 LmZpbGxXaWR0aDogdHJ1ZQogICAgICAgICAgICAgICAgIExheW91dC5maWxsSGVpZ2h0OiB0cnVl CiAgICAgICAgICAgICAgICAgS2lyaWdhbWkuVGhlbWUuaW5oZXJpdDogZmFsc2UKICAgICAgICAg ICAgICAgICBLaXJpZ2FtaS5UaGVtZS5jb2xvclNldDogS2lyaWdhbWkuVGhlbWUuVmlldwogCi0g ICAgICAgICAgICAgICAgVGV4dEFyZWEgewotICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlcnJv ck1lc3NhZ2UKKyAgICAgICAgICAgICAgICBDb250cm9scy5UZXh0QXJlYSB7CisgICAgICAgICAg ICAgICAgICAgIHRleHQ6IHJvb3QuZXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgIHJl YWRPbmx5OiB0cnVlCiAgICAgICAgICAgICAgICAgICAgIHdyYXBNb2RlOiBUZXh0LldyYXBBbnl3 aGVyZQogICAgICAgICAgICAgICAgICAgICBmb250LmZhbWlseTogIm1vbm9zcGFjZSIKLSAgICAg ICAgICAgICAgICAgICAgc2VsZWN0QnlNb3VzZTogdHJ1ZQogICAgICAgICAgICAgICAgICAgICBi YWNrZ3JvdW5kOiBSZWN0YW5nbGUgewogICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEtp cmlnYW1pLlRoZW1lLmJhY2tncm91bmRDb2xvcgogICAgICAgICAgICAgICAgICAgICAgICAgYm9y ZGVyLmNvbG9yOiBLaXJpZ2FtaS5UaGVtZS5kaXNhYmxlZFRleHRDb2xvcgpAQCAtNzQsNyArNzYs NyBAQCBLaXJpZ2FtaS5BcHBsaWNhdGlvbldpbmRvdyB7CiAgICAgICAgICAgICAgICAgdGV4dDog aTE4bigiSWYgdGhpcyBhcHBsaWNhdGlvbiByZXF1aXJlcyBleHRlcm5hbCBtb2R1bGVzIG9yIGxp YnJhcmllcywgcGxhY2UgdGhlbSBpbiA8Yj5+Ly5sb2NhbC9zaGFyZS9ramFyL21vZHVsZXMvPC9i PiBhbmQgdHJ5IGFnYWluLiIpCiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIEJ1dHRvbiB7 CisgICAgICAgICAgICBDb250cm9scy5CdXR0b24gewogICAgICAgICAgICAgICAgIExheW91dC5h bGlnbm1lbnQ6IFF0LkFsaWduSENlbnRlcgogICAgICAgICAgICAgICAgIHRleHQ6IGkxOG4oIkNs b3NlIikKICAgICAgICAgICAgICAgICBpY29uLm5hbWU6ICJkaWFsb2ctY2xvc2UiCmRpZmYgLS1n aXQgYS9zcmMvcW1sL21haW4ucW1sIGIvc3JjL3FtbC9NYWluLnFtbApzaW1pbGFyaXR5IGluZGV4 IDUyJQpyZW5hbWUgZnJvbSBzcmMvcW1sL21haW4ucW1sCnJlbmFtZSB0byBzcmMvcW1sL01haW4u cW1sCmluZGV4IDMxNzA1ZWQuLjRlMGFhZmEgMTAwNjQ0Ci0tLSBhL3NyYy9xbWwvbWFpbi5xbWwK KysrIGIvc3JjL3FtbC9NYWluLnFtbApAQCAtMSwzNSArMSw1MyBAQAogLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSBPUiBHUEwtMy4wLW9ubHkgT1IgTGljZW5zZVJlZi1L REUtQWNjZXB0ZWQtR1BMCiAvLyBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDI2IEhhZGkgQ2hv a3IgPGhhZGljaG9rckBpY2xvdWQuY29tPgogCitpbXBvcnQgUXRDb3JlCiBpbXBvcnQgUXRRdWlj awogaW1wb3J0IFF0UXVpY2suQ29udHJvbHMgYXMgQ29udHJvbHMKK2ltcG9ydCBRdFF1aWNrLkRp YWxvZ3MKIGltcG9ydCBRdFF1aWNrLkxheW91dHMKK2ltcG9ydCBvcmcua2RlLmNvcmVhZGRvbnMg YXMgS0NvcmVBZGRvbnMKIGltcG9ydCBvcmcua2RlLmtpcmlnYW1pIGFzIEtpcmlnYW1pCi1pbXBv cnQgUXQubGFicy5wbGF0Zm9ybQotaW1wb3J0IFF0Q29yZQoraW1wb3J0IG9yZy5rZGUua2phcgog CiBLaXJpZ2FtaS5BcHBsaWNhdGlvbldpbmRvdyB7CiAgICAgaWQ6IHJvb3QKLSAgICB3aWR0aDog NDYwCi0gICAgaGVpZ2h0OiAzNDAKLSAgICBtaW5pbXVtV2lkdGg6IDM4MAotICAgIG1pbmltdW1I ZWlnaHQ6IDI4MAorCisgICAgcmVxdWlyZWQgcHJvcGVydHkgc3RyaW5nIGluaXRpYWxFcnJvcgor CisgICAgd2lkdGg6IDUyMAorICAgIGhlaWdodDogNDEwCisgICAgbWluaW11bVdpZHRoOiA0ODAK KyAgICBtaW5pbXVtSGVpZ2h0OiAzODAKICAgICB2aXNpYmxlOiB0cnVlCi0gICAgdGl0bGU6IGkx OG4oIktKYXIiKQorICAgIHRpdGxlOiBpMThuKCJKYXZhIEFyY2hpdmUgUnVubmVyIikKKworICAg IGZ1bmN0aW9uIHNob3dTdGF0dXMob2s6IGJvb2wsIHRleHQ6IHN0cmluZyk6IHZvaWQgeworICAg ICAgICBzdGF0dXNNZXNzYWdlLnR5cGUgPSBvayA/IEtpcmlnYW1pLk1lc3NhZ2VUeXBlLlBvc2l0 aXZlIDogS2lyaWdhbWkuTWVzc2FnZVR5cGUuRXJyb3I7CisgICAgICAgIHN0YXR1c01lc3NhZ2Uu dGV4dCA9IHRleHQ7CisgICAgICAgIHN0YXR1c01lc3NhZ2UudmlzaWJsZSA9IHRydWU7CisgICAg fQogCiAgICAgQ29tcG9uZW50Lm9uQ29tcGxldGVkOiB7Ci0gICAgICAgIGlmICh0eXBlb2YgaW5p dGlhbEVycm9yICE9PSAidW5kZWZpbmVkIiAmJiBpbml0aWFsRXJyb3IgIT09ICIiKSB7Ci0gICAg ICAgICAgICBzdGF0dXNNZXNzYWdlLnR5cGUgPSBLaXJpZ2FtaS5NZXNzYWdlVHlwZS5FcnJvcgot ICAgICAgICAgICAgc3RhdHVzTWVzc2FnZS50ZXh0ID0gaW5pdGlhbEVycm9yCi0gICAgICAgICAg ICBzdGF0dXNNZXNzYWdlLnZpc2libGUgPSB0cnVlCisgICAgICAgIGlmIChyb290LmluaXRpYWxF cnJvciAhPT0gIiIpIHsKKyAgICAgICAgICAgIHJvb3Quc2hvd1N0YXR1cyhmYWxzZSwgcm9vdC5p bml0aWFsRXJyb3IpOworICAgICAgICB9CisgICAgfQorCisgICAgQ29tcG9uZW50IHsKKyAgICAg ICAgaWQ6IGFib3V0UGFnZQorCisgICAgICAgIEtpcmlnYW1pLkFib3V0UGFnZSB7CisgICAgICAg ICAgICBhYm91dERhdGE6IEtDb3JlQWRkb25zLkFib3V0RGF0YQogICAgICAgICB9CiAgICAgfQog CiAgICAgS2lyaWdhbWkuRGlhbG9nIHsKICAgICAgICAgaWQ6IHRvb2xzRGlhbG9nCisKICAgICAg ICAgdGl0bGU6IGkxOG4oIkF2YWlsYWJsZSBKREsgVG9vbHMiKQotICAgICAgICBwcmVmZXJyZWRX aWR0aDogNDIwCi0gICAgICAgIHByZWZlcnJlZEhlaWdodDogMzYwCisgICAgICAgIHByZWZlcnJl ZFdpZHRoOiA1MDAKKyAgICAgICAgcHJlZmVycmVkSGVpZ2h0OiAzOTAKIAogICAgICAgICBDb250 cm9scy5TY3JvbGxWaWV3IHsKICAgICAgICAgICAgIGNsaXA6IHRydWUKQEAgLTQwLDEyICs1OCwx NCBAQCBLaXJpZ2FtaS5BcHBsaWNhdGlvbldpbmRvdyB7CiAgICAgICAgICAgICAgICAgcGFkZGlu ZzogS2lyaWdhbWkuVW5pdHMubGFyZ2VTcGFjaW5nCiAKICAgICAgICAgICAgICAgICBSZXBlYXRl ciB7Ci0gICAgICAgICAgICAgICAgICAgIG1vZGVsOiBiYWNrZW5kID8gYmFja2VuZC5hdmFpbGFi bGVUb29scyA6IFtdCisgICAgICAgICAgICAgICAgICAgIG1vZGVsOiBLamFyQXBwLmF2YWlsYWJs ZVRvb2xzCisKICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6IENvbnRyb2xzLkxhYmVsIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIHByb3BlcnR5IHN0cmluZyBtb2RlbERh dGEKKwogICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbW9kZWxEYXRhCiAgICAgICAgICAg ICAgICAgICAgICAgICBmb250LmZhbWlseTogIm1vbm9zcGFjZSIKLSAgICAgICAgICAgICAgICAg ICAgICAgIGZvbnQucGl4ZWxTaXplOiAxMQotICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGlu ZzogNAorICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogS2lyaWdhbWkuVW5pdHMuc21h bGxTcGFjaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBSZWN0YW5nbGUg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBLaXJpZ2FtaS5UaGVtZS5hbHRl cm5hdGVCYWNrZ3JvdW5kQ29sb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpdXM6 IDMKQEAgLTU3LDM2ICs3Nyw1MyBAQCBLaXJpZ2FtaS5BcHBsaWNhdGlvbldpbmRvdyB7CiAgICAg fQogCiAgICAgcGFnZVN0YWNrLmluaXRpYWxQYWdlOiBLaXJpZ2FtaS5QYWdlIHsKLSAgICAgICAg dGl0bGU6IGkxOG4oIktKYXIg4oCTIEphdmEgQXJjaGl2ZSBSdW5uZXIiKQorICAgICAgICB0aXRs ZTogaTE4bigiSmF2YSBBcmNoaXZlIFJ1bm5lciIpCiAKICAgICAgICAgYWN0aW9uczogWwogICAg ICAgICAgICAgS2lyaWdhbWkuQWN0aW9uIHsKICAgICAgICAgICAgICAgICBpY29uLm5hbWU6ICJh cHBsaWNhdGlvbi14LWphdmEtYXJjaGl2ZSIKICAgICAgICAgICAgICAgICB0ZXh0OiBpMThuKCJS dW4gSkFSIikKLSAgICAgICAgICAgICAgICBvblRyaWdnZXJlZDogZmlsZURpYWxvZy5vcGVuKCkK ICAgICAgICAgICAgICAgICBkaXNwbGF5SGludDogS2lyaWdhbWkuRGlzcGxheUhpbnQuS2VlcFZp c2libGUKKyAgICAgICAgICAgICAgICBvblRyaWdnZXJlZDogZmlsZURpYWxvZy5vcGVuKCkKICAg ICAgICAgICAgIH0sCiAgICAgICAgICAgICBLaXJpZ2FtaS5BY3Rpb24gewogICAgICAgICAgICAg ICAgIGljb24ubmFtZTogImNvbmZpZ3VyZSIKICAgICAgICAgICAgICAgICB0ZXh0OiBpMThuKCJB ZHZhbmNlZCIpCi0gICAgICAgICAgICAgICAgY2hpbGRyZW46IFsKLSAgICAgICAgICAgICAgICAg ICAgS2lyaWdhbWkuQWN0aW9uIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGkxOG4o IlNob3cgQXZhaWxhYmxlIFRvb2xzIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGljb24ubmFt ZTogInV0aWxpdGllcy10ZXJtaW5hbCIKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJpZ2dl cmVkOiB0b29sc0RpYWxvZy5vcGVuKCkKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg ICAgICAgICAgICAgS2lyaWdhbWkuQWN0aW9uIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRl eHQ6IGkxOG4oIkdlbmVyYXRlIFdyYXBwZXJzIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGlj b24ubmFtZTogImFyY2hpdmUtaW5zZXJ0IgotICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxl ZDogYmFja2VuZCA/ICFiYWNrZW5kLmJ1c3kgOiBmYWxzZQotICAgICAgICAgICAgICAgICAgICAg ICAgb25UcmlnZ2VyZWQ6IGJhY2tlbmQuZ2VuZXJhdGVXcmFwcGVycygpCi0gICAgICAgICAgICAg ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIEtpcmlnYW1pLkFjdGlvbiB7Ci0gICAgICAg ICAgICAgICAgICAgICAgICB0ZXh0OiBpMThuKCJPcGVuIE1vZHVsZXMgRm9sZGVyIikKLSAgICAg ICAgICAgICAgICAgICAgICAgIGljb24ubmFtZTogImZvbGRlciIKLSAgICAgICAgICAgICAgICAg ICAgICAgIG9uVHJpZ2dlcmVkOiBiYWNrZW5kLm9wZW5Nb2R1bGVzRm9sZGVyKCkKKworICAgICAg ICAgICAgICAgIEtpcmlnYW1pLkFjdGlvbiB7CisgICAgICAgICAgICAgICAgICAgIHRleHQ6IGkx OG4oIlNob3cgQXZhaWxhYmxlIFRvb2xzIikKKyAgICAgICAgICAgICAgICAgICAgaWNvbi5uYW1l OiAidXRpbGl0aWVzLXRlcm1pbmFsIgorICAgICAgICAgICAgICAgICAgICBvblRyaWdnZXJlZDog dG9vbHNEaWFsb2cub3BlbigpCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg S2lyaWdhbWkuQWN0aW9uIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dDogaTE4bigiR2VuZXJh dGUgV3JhcHBlcnMiKQorICAgICAgICAgICAgICAgICAgICBpY29uLm5hbWU6ICJhcmNoaXZlLWlu c2VydCIKKyAgICAgICAgICAgICAgICAgICAgb25UcmlnZ2VyZWQ6IHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEtqYXJBcHAuZ2VuZXJhdGVXcmFwcGVycygpOworICAg ICAgICAgICAgICAgICAgICAgICAgcm9vdC5zaG93U3RhdHVzKHJlc3VsdC5vaywgcmVzdWx0Lm1l c3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXQorICAgICAg ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEtpcmlnYW1pLkFjdGlvbiB7CisgICAgICAg ICAgICAgICAgICAgIHRleHQ6IGkxOG4oIlJlbW92ZSBXcmFwcGVycyIpCisgICAgICAgICAgICAg ICAgICAgIGljb24ubmFtZTogImVkaXQtZGVsZXRlIgorICAgICAgICAgICAgICAgICAgICBvblRy aWdnZXJlZDogeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gS2phckFw cC5yZW1vdmVXcmFwcGVycygpOworICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5zaG93U3Rh dHVzKHJlc3VsdC5vaywgcmVzdWx0Lm1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgS2lyaWdhbWkuQWN0aW9uIHsKKyAg ICAgICAgICAgICAgICAgICAgdGV4dDogaTE4bigiT3BlbiBNb2R1bGVzIEZvbGRlciIpCisgICAg ICAgICAgICAgICAgICAgIGljb24ubmFtZTogImZvbGRlciIKKyAgICAgICAgICAgICAgICAgICAg b25UcmlnZ2VyZWQ6IEtqYXJBcHAub3Blbk1vZHVsZXNGb2xkZXIoKQorICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBLaXJpZ2FtaS5BY3Rpb24geworICAgICAg ICAgICAgICAgIGljb24ubmFtZTogImhlbHAtYWJvdXQiCisgICAgICAgICAgICAgICAgdGV4dDog aTE4bigiQWJvdXQiKQorICAgICAgICAgICAgICAgIG9uVHJpZ2dlcmVkOiByb290LnBhZ2VTdGFj ay5sYXllcnMucHVzaChhYm91dFBhZ2UpCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KIApAQCAt OTcsMTkgKzEzNCwxNiBAQCBLaXJpZ2FtaS5BcHBsaWNhdGlvbldpbmRvdyB7CiAKICAgICAgICAg ICAgIEtpcmlnYW1pLklubGluZU1lc3NhZ2UgewogICAgICAgICAgICAgICAgIGlkOiBzdGF0dXNN ZXNzYWdlCisKICAgICAgICAgICAgICAgICBMYXlvdXQuZmlsbFdpZHRoOiB0cnVlCiAgICAgICAg ICAgICAgICAgdmlzaWJsZTogZmFsc2UKICAgICAgICAgICAgICAgICBzaG93Q2xvc2VCdXR0b246 IHRydWUKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgQ29udHJvbHMuQnVzeUluZGljYXRv ciB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0LmFsaWdubWVudDogUXQuQWxpZ25IQ2VudGVyCi0g ICAgICAgICAgICAgICAgcnVubmluZzogYmFja2VuZCA/IGJhY2tlbmQuYnVzeSA6IGZhbHNlCi0g ICAgICAgICAgICAgICAgdmlzaWJsZTogYmFja2VuZCA/IGJhY2tlbmQuYnVzeSA6IGZhbHNlCisg ICAgICAgICAgICBJdGVtIHsKKyAgICAgICAgICAgICAgICBMYXlvdXQuZmlsbEhlaWdodDogdHJ1 ZQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBJdGVtIHsgTGF5b3V0LmZpbGxIZWlnaHQ6 IHRydWUgfQotCiAgICAgICAgICAgICBLaXJpZ2FtaS5JY29uIHsKICAgICAgICAgICAgICAgICBz b3VyY2U6ICJhcHBsaWNhdGlvbi14LWphdmEtYXJjaGl2ZSIKICAgICAgICAgICAgICAgICBMYXlv dXQuYWxpZ25tZW50OiBRdC5BbGlnbkhDZW50ZXIKQEAgLTEyNSw3ICsxNTksNyBAQCBLaXJpZ2Ft aS5BcHBsaWNhdGlvbldpbmRvdyB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIENvbnRy b2xzLkxhYmVsIHsKLSAgICAgICAgICAgICAgICB0ZXh0OiBpMThuKCJTZWxlY3QgYSBKYXZhIEFy Y2hpdmUgKC5qYXIpIGZpbGUgdG8gZXhlY3V0ZSBpdCB1c2luZyB0aGUgYnVuZGxlZCBPcGVuSkRL IHJ1bnRpbWUuIikKKyAgICAgICAgICAgICAgICB0ZXh0OiBpMThuKCJTZWxlY3QgYSBKYXZhIGFy Y2hpdmUgKC5qYXIpIHRvIHJ1biBpdCB3aXRoIHRoZSBidW5kbGVkIE9wZW5KREsgcnVudGltZS4i KQogICAgICAgICAgICAgICAgIHdyYXBNb2RlOiBUZXh0LldvcmRXcmFwCiAgICAgICAgICAgICAg ICAgTGF5b3V0LmZpbGxXaWR0aDogdHJ1ZQogICAgICAgICAgICAgICAgIGhvcml6b250YWxBbGln bm1lbnQ6IFRleHQuQWxpZ25IQ2VudGVyCkBAIC0xMzksMzMgKzE3MywyNCBAQCBLaXJpZ2FtaS5B cHBsaWNhdGlvbldpbmRvdyB7CiAgICAgICAgICAgICAgICAgb25DbGlja2VkOiBmaWxlRGlhbG9n Lm9wZW4oKQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBJdGVtIHsgTGF5b3V0LmZpbGxI ZWlnaHQ6IHRydWUgfQorICAgICAgICAgICAgSXRlbSB7CisgICAgICAgICAgICAgICAgTGF5b3V0 LmZpbGxIZWlnaHQ6IHRydWUKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAg IEZpbGVEaWFsb2cgewogICAgICAgICBpZDogZmlsZURpYWxvZworCiAgICAgICAgIHRpdGxlOiBp MThuKCJTZWxlY3QgSkFSIEZpbGUiKQotICAgICAgICBuYW1lRmlsdGVyczogWyJKQVIgZmlsZXMg KCouamFyKSJdCi0gICAgICAgIGZvbGRlcjogU3RhbmRhcmRQYXRocy53cml0YWJsZUxvY2F0aW9u KFN0YW5kYXJkUGF0aHMuRG93bmxvYWRMb2NhdGlvbikKKyAgICAgICAgbmFtZUZpbHRlcnM6IFtp MThuKCJKYXZhIGFyY2hpdmVzICgqLmphcikiKV0KKyAgICAgICAgY3VycmVudEZvbGRlcjogU3Rh bmRhcmRQYXRocy53cml0YWJsZUxvY2F0aW9uKFN0YW5kYXJkUGF0aHMuRG93bmxvYWRMb2NhdGlv bikKIAogICAgICAgICBvbkFjY2VwdGVkOiB7Ci0gICAgICAgICAgICBsZXQgZmlsZVBhdGggPSBm aWxlLnRvU3RyaW5nKCkucmVwbGFjZSgiZmlsZTovLyIsICIiKQotICAgICAgICAgICAgYmFja2Vu ZC5ydW5KYXJGaWxlKGZpbGVQYXRoKQotICAgICAgICB9Ci0gICAgfQotCi0gICAgQ29ubmVjdGlv bnMgewotICAgICAgICB0YXJnZXQ6IGJhY2tlbmQKLSAgICAgICAgZnVuY3Rpb24gb25FcnJvck9j Y3VycmVkKGVycm9yKSB7Ci0gICAgICAgICAgICBzdGF0dXNNZXNzYWdlLnR5cGUgPSBLaXJpZ2Ft aS5NZXNzYWdlVHlwZS5FcnJvcgotICAgICAgICAgICAgc3RhdHVzTWVzc2FnZS50ZXh0ID0gZXJy b3IKLSAgICAgICAgICAgIHN0YXR1c01lc3NhZ2UudmlzaWJsZSA9IHRydWUKLSAgICAgICAgfQot ICAgICAgICBmdW5jdGlvbiBvbk9wZXJhdGlvbkNvbXBsZXRlZChtZXNzYWdlKSB7Ci0gICAgICAg ICAgICBzdGF0dXNNZXNzYWdlLnR5cGUgPSBLaXJpZ2FtaS5NZXNzYWdlVHlwZS5Qb3NpdGl2ZQot ICAgICAgICAgICAgc3RhdHVzTWVzc2FnZS50ZXh0ID0gbWVzc2FnZQotICAgICAgICAgICAgc3Rh dHVzTWVzc2FnZS52aXNpYmxlID0gdHJ1ZQorICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBLamFy QXBwLnJ1bkphcihzZWxlY3RlZEZpbGUpOworICAgICAgICAgICAgaWYgKGVycm9yICE9PSAiIikg eworICAgICAgICAgICAgICAgIHJvb3Quc2hvd1N0YXR1cyhmYWxzZSwgZXJyb3IpOworICAgICAg ICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvc3JjL3Jlc291cmNlcy5x cmMgYi9zcmMvcmVzb3VyY2VzLnFyYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUy ZjUzOS4uMDAwMDAwMAotLS0gYS9zcmMvcmVzb3VyY2VzLnFyYworKysgL2Rldi9udWxsCkBAIC0x LDkgKzAsMCBAQAotPCEtLSBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9S IEdQTC0zLjAtb25seSBPUiBMaWNlbnNlUmVmLUtERS1BY2NlcHRlZC1HUEwgLS0+Ci08IS0tIFNQ RFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjYgSGFkaSBDaG9rciA8aGFkaWNob2tyQGljbG91ZC5j b20+IC0tPgotCi08IURPQ1RZUEUgUkNDPgotPFJDQyB2ZXJzaW9uPSIxLjAiPgotICAgIDxxcmVz b3VyY2UgcHJlZml4PSIvcW1sIj4KLSAgICAgICAgPGZpbGUgYWxpYXM9Im1haW4ucW1sIj5xbWwv bWFpbi5xbWw8L2ZpbGU+Ci0gICAgPC9xcmVzb3VyY2U+Ci08L1JDQz4KZGlmZiAtLWdpdCBhL3Ny Yy93YXRjaGVyL2tqYXJfd2F0Y2hlci5jcHAgYi9zcmMvd2F0Y2hlci9ramFyX3dhdGNoZXIuY3Bw CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjkzOWRjLi4wMDAwMDAwCi0tLSBhL3Ny Yy93YXRjaGVyL2tqYXJfd2F0Y2hlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBA Ci0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIEdQTC0zLjAtb25s eSBPUiBMaWNlbnNlUmVmLUtERS1BY2NlcHRlZC1HUEwKLS8vIFNQRFgtRmlsZUNvcHlyaWdodFRl eHQ6IDIwMjYgSGFkaSBDaG9rciA8aGFkaWNob2tyQGljbG91ZC5jb20+Ci0KLSNpbmNsdWRlIDxR Q29yZUFwcGxpY2F0aW9uPgotI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KLSNpbmNsdWRlIDxRUW1s QXBwbGljYXRpb25FbmdpbmU+Ci0jaW5jbHVkZSA8UVFtbENvbnRleHQ+Ci0jaW5jbHVkZSA8UVBy b2Nlc3M+Ci0jaW5jbHVkZSA8UUZpbGU+Ci0jaW5jbHVkZSA8UVVybD4KLSNpbmNsdWRlIDxLTG9j YWxpemVkU3RyaW5nPgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotewotICAg IGlmIChhcmdjIDwgMikgewotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBRU3RyaW5n IGphclBhdGggPSBRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KGFyZ3ZbMV0pOwotICAgIGlmIChqYXJQ YXRoLnN0YXJ0c1dpdGgoUVN0cmluZ0xpdGVyYWwoImZpbGU6Ly8iKSkpIHsKLSAgICAgICAgamFy UGF0aCA9IFFVcmwoamFyUGF0aCkudG9Mb2NhbEZpbGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoIVFG aWxlOjpleGlzdHMoamFyUGF0aCkpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAg UVN0cmluZ0xpc3QgamF2YUFyZ3M7Ci0gICAgaWYgKGFyZ2MgPiAyKSB7Ci0gICAgICAgIGZvciAo aW50IGkgPSAyOyBpIDwgYXJnYzsgKytpKSB7Ci0gICAgICAgICAgICBqYXZhQXJncyA8PCBRU3Ry aW5nOjpmcm9tTG9jYWw4Qml0KGFyZ3ZbaV0pOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAg ICAgICAgamF2YUFyZ3MgPDwgUVN0cmluZ0xpdGVyYWwoIi1qYXIiKSA8PCBqYXJQYXRoOwotICAg IH0KLQotICAgIGludCBleGl0Q29kZTsKLSAgICBRU3RyaW5nIGVycm9yVGV4dDsKLQotICAgIHsK LSAgICAgICAgUUNvcmVBcHBsaWNhdGlvbiBjb3JlQXBwKGFyZ2MsIGFyZ3YpOwotICAgICAgICBj b3JlQXBwLnNldEFwcGxpY2F0aW9uTmFtZShRU3RyaW5nTGl0ZXJhbCgib3JnLmtkZS5ramFyIikp OwotCi0gICAgICAgIFFQcm9jZXNzIGphdmE7Ci0gICAgICAgIFFCeXRlQXJyYXkgc3RkZXJyQnVm ZmVyOwotCi0gICAgICAgIGphdmEuc2V0UHJvY2Vzc0NoYW5uZWxNb2RlKFFQcm9jZXNzOjpGb3J3 YXJkZWRPdXRwdXRDaGFubmVsKTsKLQotICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KCZqYXZhLCAm UVByb2Nlc3M6OnJlYWR5UmVhZFN0YW5kYXJkRXJyb3IsIFsmXSgpIHsKLSAgICAgICAgICAgIHN0 ZGVyckJ1ZmZlciArPSBqYXZhLnJlYWRBbGxTdGFuZGFyZEVycm9yKCk7Ci0gICAgICAgIH0pOwot Ci0gICAgICAgIGphdmEuc3RhcnQoUVN0cmluZ0xpdGVyYWwoIi9hcHAvamRrL2Jpbi9qYXZhIiks IGphdmFBcmdzKTsKLQotICAgICAgICBpZiAoIWphdmEud2FpdEZvclN0YXJ0ZWQoKSkgewotICAg ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLQotICAgICAgICBqYXZhLndhaXRGb3JGaW5p c2hlZCgtMSk7Ci0KLSAgICAgICAgZXhpdENvZGUgPSBqYXZhLmV4aXRDb2RlKCk7Ci0gICAgICAg IGVycm9yVGV4dCA9IFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoc3RkZXJyQnVmZmVyKS50cmltbWVk KCk7Ci0gICAgfQotCi0gICAgaWYgKGV4aXRDb2RlID09IDAgJiYgZXJyb3JUZXh0LmlzRW1wdHko KSkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoZXJyb3JUZXh0LmlzRW1w dHkoKSkgewotICAgICAgICBlcnJvclRleHQgPSBpMThuKCJKYXZhIGV4aXRlZCB3aXRoIGFuIGVy cm9yIChleGl0IGNvZGUgJTEpLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZzo6 bnVtYmVyKGV4aXRDb2RlKSk7Ci0gICAgfQotCi0gICAgUUFwcGxpY2F0aW9uIGd1aUFwcChhcmdj LCBhcmd2KTsKLSAgICBndWlBcHAuc2V0QXBwbGljYXRpb25OYW1lKFFTdHJpbmdMaXRlcmFsKCJv cmcua2RlLmtqYXIiKSk7Ci0gICAgZ3VpQXBwLnNldERlc2t0b3BGaWxlTmFtZShRU3RyaW5nTGl0 ZXJhbCgib3JnLmtkZS5ramFyIikpOwotCi0gICAgS0xvY2FsaXplZFN0cmluZzo6c2V0QXBwbGlj YXRpb25Eb21haW4oIm9yZy5rZGUua2phciIpOwotCi0gICAgUVFtbEFwcGxpY2F0aW9uRW5naW5l IGVuZ2luZTsKLSAgICBlbmdpbmUucm9vdENvbnRleHQoKS0+c2V0Q29udGV4dFByb3BlcnR5KFFT dHJpbmdMaXRlcmFsKCJlcnJvck1lc3NhZ2UiKSwgZXJyb3JUZXh0KTsKLSAgICBlbmdpbmUucm9v dENvbnRleHQoKS0+c2V0Q29udGV4dE9iamVjdChuZXcgS0xvY2FsaXplZENvbnRleHQoJmVuZ2lu ZSkpOwotICAgIGVuZ2luZS5sb2FkKFFVcmwoUVN0cmluZ0xpdGVyYWwoInFyYzovd2F0Y2hlci9F cnJvckRpYWxvZy5xbWwiKSkpOwotCi0gICAgaWYgKGVuZ2luZS5yb290T2JqZWN0cygpLmlzRW1w dHkoKSkgewotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZ3VpQXBwLmV4 ZWMoKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy93YXRjaGVyL3dhdGNoZXIucXJjIGIvc3JjL3dhdGNo ZXIvd2F0Y2hlci5xcmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ZGEyMGUuLjAw MDAwMDAKLS0tIGEvc3JjL3dhdGNoZXIvd2F0Y2hlci5xcmMKKysrIC9kZXYvbnVsbApAQCAtMSw4 ICswLDAgQEAKLTwhLS0gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSBPUiBH UEwtMy4wLW9ubHkgT1IgTGljZW5zZVJlZi1LREUtQWNjZXB0ZWQtR1BMIC0tPgotPCEtLSBTUERY LUZpbGVDb3B5cmlnaHRUZXh0OiAyMDI2IEhhZGkgQ2hva3IgPGhhZGljaG9rckBpY2xvdWQuY29t PiAtLT4KLQotPFJDQyB2ZXJzaW9uPSIxLjAiPgotICAgIDxxcmVzb3VyY2UgcHJlZml4PSIvd2F0 Y2hlciI+Ci0gICAgICAgIDxmaWxlIGFsaWFzPSJFcnJvckRpYWxvZy5xbWwiPi4uL3FtbC9FcnJv ckRpYWxvZy5xbWw8L2ZpbGU+Ci0gICAgPC9xcmVzb3VyY2U+Ci08L1JDQz4KZGlmZiAtLWdpdCBh L3N0cmlwLWptb2RzLnNoIGIvc3RyaXAtam1vZHMuc2gKaW5kZXggNTQxYTJhZC4uNjY4YzFjYSAx MDA2NDQKLS0tIGEvc3RyaXAtam1vZHMuc2gKKysrIGIvc3RyaXAtam1vZHMuc2gKQEAgLTUsMTIg KzUsMTYgQEAKICMgRGlzY2FyZCBuYXRpdmUgZGVidWcgc3ltYm9scyBmcm9tIC9hcHAvamRrL2pt b2RzLgogIwogCi1zZXQgLWUKK3NldCAtZXUKIAogSkRLPS9hcHAvamRrCiBKTU9EPSIkSkRLL2Jp bi9qbW9kIgogTU9EVUxFUz0iJHsxOi1qYXZhLmJhc2V9IgogCittYigpIHsKKyAgICBhd2sgLXYg a2I9IiQxIiAnQkVHSU4geyBwcmludGYgIiUuMWYiLCBrYiAvIDEwMjQgfScKK30KKwogY29tbWFu ZCAtdiBvYmpjb3B5ID4vZGV2L251bGwgfHwgeyBlY2hvICJzdHJpcC1qbW9kczogb2JqY29weSBu b3QgZm91bmQiOyBleGl0IDE7IH0KIFsgLWQgIiRKREsvam1vZHMiIF0gfHwgeyBlY2hvICJzdHJp cC1qbW9kczogJEpESy9qbW9kcyBtaXNzaW5nIjsgZXhpdCAxOyB9CiBbIC14ICIkSk1PRCIgXSB8 fCB7IGVjaG8gInN0cmlwLWptb2RzOiAkSk1PRCBtaXNzaW5nIjsgZXhpdCAxOyB9CkBAIC0yMSw2 ICsyNSw3IEBAIHRyYXAgJ3JtIC1yZiAiJFdPUksiJyBFWElUCiBiZWZvcmU9JChkdSAtc2sgIiRK REsvam1vZHMiIHwgY3V0IC1mMSkKIHRvdWNoZWRfbm9uX2Jhc2U9MAogCisjIHNoZWxsY2hlY2sg ZGlzYWJsZT1TQzIwODYKIGZvciBuYW1lIGluICRNT0RVTEVTOyBkbwogICAgIGptPSIkSkRLL2pt b2RzLyRuYW1lLmptb2QiCiAgICAgaWYgWyAhIC1mICIkam0iIF07IHRoZW4KQEAgLTY0LDIxICs2 OSwyMiBAQCBmb3IgbmFtZSBpbiAkTU9EVUxFUzsgZG8KICAgICAgICAgZXhpdCAxCiAgICAgZmkK IAotICAgIHByaW50ZiAnc3RyaXAtam1vZHM6ICAgJS0yMnMgJTVzIE1CIC0+ICU1cyBNQlxuJyAi JG5hbWUiIFwKLSAgICAgICAgIiQoKGtiIC8gMTAyNCkpIiAiJCgoICQoZHUgLWsgIiRqbSIgfCBj dXQgLWYxKSAvIDEwMjQgKSkiCisgICAgcHJpbnRmICdzdHJpcC1qbW9kczogICAlLTIycyAlN3Mg TUIgLT4gJTdzIE1CXG4nICIkbmFtZSIgXAorICAgICAgICAiJChtYiAiJGtiIikiICIkKG1iICIk KGR1IC1rICIkam0iIHwgY3V0IC1mMSkiKSIKIGRvbmUKIAorIyBPbmx5IHJlYWNoYWJsZSB3aGVu IHRoZSBjYWxsZXIgcGFzc2VkIG5vbi1iYXNlIG1vZHVsZXMuCiBpZiBbICIkdG91Y2hlZF9ub25f YmFzZSIgLWVxIDEgXTsgdGhlbgogICAgIGVjaG8gInN0cmlwLWptb2RzOiByZWNvbXB1dGluZyBy ZWNvcmRlZCBtb2R1bGUgaGFzaGVzIgogICAgIGlmICEgIiRKTU9EIiBoYXNoIC0tbW9kdWxlLXBh dGggIiRKREsvam1vZHMiIC0taGFzaC1tb2R1bGVzICcuKic7IHRoZW4KLSAgICAgICAgZWNobyAi c3RyaXAtam1vZHM6IEVSUk9SOiBqbW9kIGhhc2ggZmFpbGVkIC0tIHNlZSB0aGUgbm90ZSBhdCB0 aGUgdG9wIgotICAgICAgICBlY2hvICJzdHJpcC1qbW9kczogICAgICAgIG9mIHRoaXMgc2NyaXB0 OyByZXJ1biB3aXRoIGphdmEuYmFzZSBvbmx5LiIKKyAgICAgICAgZWNobyAic3RyaXAtam1vZHM6 IEVSUk9SOiBqbW9kIGhhc2ggZmFpbGVkOyByZXJ1biB3aXRoIGphdmEuYmFzZSBvbmx5LCIKKyAg ICAgICAgZWNobyAic3RyaXAtam1vZHM6ICAgICAgICB3aGljaCBubyBvdGhlciBtb2R1bGUgcmVj b3JkcyBhIGhhc2ggb2YuIgogICAgICAgICBleGl0IDEKICAgICBmaQogZmkKIAogYWZ0ZXI9JChk dSAtc2sgIiRKREsvam1vZHMiIHwgY3V0IC1mMSkKLWVjaG8gInN0cmlwLWptb2RzOiB0b3RhbCAk KChiZWZvcmUgLyAxMDI0KSkgTUIgLT4gJCgoYWZ0ZXIgLyAxMDI0KSkgTUIiCitlY2hvICJzdHJp cC1qbW9kczogdG90YWwgJChtYiAiJGJlZm9yZSIpIE1CIC0+ICQobWIgIiRhZnRlciIpIE1CIgog CiAjIFNtb2tlIHRlc3QKIGVjaG8gInN0cmlwLWptb2RzOiB2ZXJpZnlpbmcgamxpbmsgYWdhaW5z dCB0aGUgcmV3cml0dGVuIGptb2RzIgo=