From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Richard W.M. Jones To: git-commits@fedoraproject.org Subject: [rpms/coccinelle] rawhide: New version 1.3.3 (RHBZ#2519492) Date: Fri, 04 Sep 2026 10:20:43 GMT Message-ID: <178851724348.1.9452147294358931143.rpms-coccinelle-fdc6f37097ce@fedoraproject.org> List-ID: X-Git-Repo: rpms/coccinelle X-Git-Branch: rawhide X-Git-Rev: fdc6f37097ce284b477965033e55a5cea97edb89 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvY29jY2luZWxsZQogICAgICAgICAgICBCcmFuY2ggOiByYXdoaWRlCiAgICAg ICAgICAgIENvbW1pdCA6IGZkYzZmMzcwOTdjZTI4NGI0Nzc5NjUwMzNlNTVhNWNlYTk3ZWRiODkK ICAgICAgICAgICAgQXV0aG9yIDogUmljaGFyZCBXLk0uIEpvbmVzIDxyam9uZXNAcmVkaGF0LmNv bT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAyNi0wOS0wNFQxMTowNjoyOCswMTowMAogICAgICAg ICAgICBTdGF0cyAgOiArOS8tOTg1OCBpbiAxMiBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6 IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvY29jY2luZWxsZS9jL2ZkYzZmMzcw OTdjZTI4NGI0Nzc5NjUwMzNlNTVhNWNlYTk3ZWRiODk/YnJhbmNoPXJhd2hpZGUKCiAgICAgICAg ICAgIExvZzoKICAgICAgICAgICAgTmV3IHZlcnNpb24gMS4zLjMgKFJIQlojMjUxOTQ5MikKCkRy b3Agb2NhbWwtcGNyZTIsIGVncmVwIHBhdGNoZXMgd2hpY2ggYXJlIG5vdyB1cHN0cmVhbS4KCi0t LQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggMzFlYTM4Ny4uZDZh YmZkNiAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xLDMgKzEs NCBAQAogL2NvY2NpbmVsbGUtKi50Z3oKIC9jb2NjaW5lbGxlLSoudGFyLmd6CiAvY29jY2luZWxs ZS0xLjMuMS50YXIuYnoyCisvY29jY2luZWxsZS0xLjMuMy50YXIuYnoyCgpkaWZmIC0tZ2l0IGEv MDAwMS1yZXBsYWNlLXBjcmUtd2l0aC1wY3JlMi5wYXRjaCBiLzAwMDEtcmVwbGFjZS1wY3JlLXdp dGgtcGNyZTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NmRjZjcuLjAw MDAwMDAKLS0tIGEvMDAwMS1yZXBsYWNlLXBjcmUtd2l0aC1wY3JlMi5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDI3MiArMCwwIEBACi1Gcm9tIDUxZjUxNjJkYTlmNzczYWQ0ZWZlNDU3MmZhNDlj NDMzNGZkMzVhMTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBPbGFmIEhlcmluZyA8 b2xhZkBhZXBmbGUuZGU+Ci1EYXRlOiBXZWQsIDE5IE1hciAyMDI1IDA5OjE0OjM1ICswMTAwCi1T dWJqZWN0OiBbUEFUQ0ggMS85XSByZXBsYWNlIHBjcmUgd2l0aCBwY3JlMgotCi1TaW5jZSBwY3Jl IGlzIHVubWFpbnRhaW5lZCwgdGhlIHVzYWdlIG9mIG9jYW1sLXBjcmUgd2lsbCBiZSByZXBsYWNl ZAotd2l0aCBvY2FtbC1wY3JlMi4gV2hpbGUgb3RoZXIgcmVndWxhciBleHBlc3Npb24gbGlicmFy aWVzIGZvciBPQ2FtbAotZXhpc3RzLCB0aGV5IGFyZSBub3QgYXMgZmVhdHVyZSBjb21wbGV0ZSBh cyBwY3JlMiBpcy4KLQotVGhpcyBpcyB0aGUgbWluaW1hbCBjaGFuZ2UgdG8gdXNlIHRoZSBzeXN0 ZW0gb2NhbWwtcGNyZTIuIFRvIHJlZHVjZSB0aGUKLXNpemUgb2YgdGhpcyBwYXRjaCwgYSBzZXBh cmF0ZSBjb21taXQgbWlnaHQgYmUgcmVxdWlyZWQgdG8gaW1wb3J0Ci1wY3JlMi1vY2FtbC5naXQg aW50byBidW5kbGVzIGFuZCB1c2UgaXQgaW4gdGhlIGJ1aWxkIHN5c3RlbS4KLQotU2lnbmVkLW9m Zi1ieTogT2xhZiBIZXJpbmcgPG9sYWZAYWVwZmxlLmRlPgotKGNoZXJyeSBwaWNrZWQgZnJvbSBj b21taXQgMGFmMzM0MzgzNDI1YjRkZTE4ZjFkOWEwODdlMzg4MzhjNzVjMmM0ZCkKLS0tLQotIE1h a2VmaWxlICAgICAgICAgICAgICAgfCAgNCArKy0tCi0gTWFrZWZpbGUuY29uZmlnLmluICAgICB8 IDE4ICsrKysrKysrKy0tLS0tLS0tLQotIE1ha2VmaWxlLmxpYnMgICAgICAgICAgfCAxOCArKysr KysrKystLS0tLS0tLS0KLSBjb2NjaW5lbGxlLm9wYW0gICAgICAgIHwgIDIgKy0KLSBjb25maWd1 cmUuYWMgICAgICAgICAgIHwgMTYgKysrKysrKystLS0tLS0tLQotIGdsb2JhbHMvcmVnZXhwX3Bj cmUubWwgfCAgNiArKystLS0KLSBzZXR1cC9mYWtlLXN1YnN0LnNoICAgIHwgIDYgKysrLS0tCi0g NyBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDBmNmIyMzEzZi4uNmI2MjRlMzc4 IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMTAxLDcgKzEwMSw3 IEBAIFBSRUZJWF9zcGdlbiA6PSB0b29scy9zcGdlbi9zb3VyY2UvCi0gQ09SRV9MSUJTIDo9IHVu aXggc3RyIG9jYW1sY29tbW9uIFwKLSAJJChTVERDT01QQVRESVIpL3N0ZGNvbXBhdCBcCi0gCSQo cGF0c3Vic3QgJSxieXRlcywkKEJZVEVTRElSKSkgXAotLQkkKHBhdHN1YnN0ICUscGNyZSwkKGZp bHRlciAlL3BjcmUuY21hLCQoTE5LTElCUykpKQotKwkkKHBhdHN1YnN0ICUscGNyZTIsJChmaWx0 ZXIgJS9wY3JlMi5jbWEsJChMTktMSUJTKSkpCi0gCi0gaWZlcSAoJChPQ0FNTEFUTEVBU1Q1MCks bm8pCi0gQ09SRV9MSUJTICs9IGJpZ2FycmF5Ci1AQCAtMjE0LDcgKzIxNCw3IEBAIE1FTkhJUl9M SUIgOj0gXAotIAkkKGFkZHN1ZmZpeCAvbWVuaGlyTGliJChMSUJTVUZGSVgpLCQoZmlsdGVyICUv bWVuaGlyTGliLCQoTUFLRUxJQlMpKSkKLSBQQVJNQVBfTElCIDo9ICQoYWRkc3VmZml4IC9wYXJt YXAkKExJQlNVRkZJWCksJChmaWx0ZXIgJS9wYXJtYXAsJChNQUtFTElCUykpKQotIFBZTUxfTElC IDo9ICQoYWRkc3VmZml4IC9weW1sJChMSUJTVUZGSVgpLCQoZmlsdGVyICUvcHltbCwkKE1BS0VM SUJTKSkpCi0tUENSRV9MSUIgOj0gJChhZGRzdWZmaXggL3BjcmUkKExJQlNVRkZJWCksJChmaWx0 ZXIgJS9wY3JlLCQoTUFLRUxJQlMpKSkKLStQQ1JFX0xJQiA6PSAkKGFkZHN1ZmZpeCAvcGNyZTIk KExJQlNVRkZJWCksJChmaWx0ZXIgJS9wY3JlMiwkKE1BS0VMSUJTKSkpCi0gU1REQ09NUEFUX0xJ QiA6PSAkKFNURENPTVBBVERJUikvc3RkY29tcGF0JChMSUJTVUZGSVgpCi0gCi0gU1REQ09NUEFU X1VTRVJTIDo9IHBhcnNpbmdfYy90eXBlX2Fubm90ZXJfYyBjb2NjaSBwYXJzaW5nX2NvY2NpL2No ZWNrX21ldGEgXAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmNvbmZpZy5pbiBiL01ha2VmaWxlLmNv bmZpZy5pbgotaW5kZXggZGJhZmEzNWE1Li42YmFkMWE3YTYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmls ZS5jb25maWcuaW4KLSsrKyBiL01ha2VmaWxlLmNvbmZpZy5pbgotQEAgLTUsMTggKzUsMTggQEAK LSBWRVJTSU9OPUBQQUNLQUdFX1ZFUlNJT05ACi0gCi0gIyAqIGZvciBlYWNoIGxpYnJhcnkgJDEs IGFkZCBhbm90aGVyIGVudHJ5IGluIHRoZSBzYW1lIG1hbm5lcgotLU1BS0VMSUJTPUBNQUtFX2R5 bmxpbmtAIEBNQUtFX21lbmhpckxpYkAgQE1BS0VfcHltbEAgQE1BS0VfcGNyZUAgXAotK01BS0VM SUJTPUBNQUtFX2R5bmxpbmtAIEBNQUtFX21lbmhpckxpYkAgQE1BS0VfcHltbEAgQE1BS0VfcGNy ZTJAIFwKLSAgIEBNQUtFX3Bhcm1hcEAKLS1MTktMSUJTPUBNT0RVTEVTX2R5bmxpbmtAIEBNT0RV TEVTX21lbmhpckxpYkAgQE1PRFVMRVNfcGNyZUAgQE1PRFVMRVNfcHltbEAgXAotK0xOS0xJQlM9 QE1PRFVMRVNfZHlubGlua0AgQE1PRFVMRVNfbWVuaGlyTGliQCBATU9EVUxFU19wY3JlMkAgQE1P RFVMRVNfcHltbEAgXAotICAgQE1PRFVMRVNfcGFybWFwQAotIE9QVExOS0xJQlM9QE1PRFVMRVNP UFRfZHlubGlua0AgQE1PRFVMRVNPUFRfbWVuaGlyTGliQCBATU9EVUxFU09QVF9weW1sQCBcCi0t ICBATU9EVUxFU09QVF9wY3JlQCBATU9EVUxFU09QVF9wYXJtYXBACi0tSU5DTElCUz1AUEFUSF9k eW5saW5rQCBAUEFUSF9tZW5oaXJMaWJAIEBQQVRIX3B5bWxAIEBQQVRIX3BjcmVAIFwKLSsgIEBN T0RVTEVTT1BUX3BjcmUyQCBATU9EVUxFU09QVF9wYXJtYXBACi0rSU5DTElCUz1AUEFUSF9keW5s aW5rQCBAUEFUSF9tZW5oaXJMaWJAIEBQQVRIX3B5bWxAIEBQQVRIX3BjcmUyQCBcCi0gICBAUEFU SF9wYXJtYXBACi0tRkxBR1NMSUJTPUBGTEFHU19keW5saW5rQCBARkxBR1NfbWVuaGlyTGliQCBA RkxBR1NfcHltbEAgQEZMQUdTX3BjcmVAIFwKLStGTEFHU0xJQlM9QEZMQUdTX2R5bmxpbmtAIEBG TEFHU19tZW5oaXJMaWJAIEBGTEFHU19weW1sQCBARkxBR1NfcGNyZTJAIFwKLSAgIEBGTEFHU19w YXJtYXBACi0gT1BURkxBR1NMSUJTPUBPUFRGTEFHU19keW5saW5rQCBAT1BURkxBR1NfbWVuaGly TGliQCBAT1BURkxBR1NfcHltbEAgXAotLSAgQE9QVEZMQUdTX3BjcmVAIEBPUFRGTEFHU19wYXJt YXBACi0rICBAT1BURkxBR1NfcGNyZTJAIEBPUFRGTEFHU19wYXJtYXBACi0gIyAqIGVuZCBvZiBs aWJyYXJ5IHZhcmlhYmxlcwotIAotICMgc3lzdGVtIHBhY2thZ2VzIGluYyBsaWJzCi1AQCAtMTA2 LDcgKzEwNiw3IEBAIE1FVEFJTkZPX0RJUj1ATUVUQUlORk9fRElSQAotIAotICMgc2VsZWN0ZWQg bGlicmFyaWVzCi0gRkVBVFVSRV9tZW5oaXJMaWI9QEZFQVRVUkVfbWVuaGlyTGliQAotLUZFQVRV UkVfcGNyZT1ARkVBVFVSRV9wY3JlQAotK0ZFQVRVUkVfcGNyZT1ARkVBVFVSRV9wY3JlMkAKLSAK LSAjIEZlYXR1cmVzCi0gRkVBVFVSRV9QWVRIT049QEZFQVRVUkVfUFlUSE9OQAotQEAgLTExNCw3 ICsxMTQsNyBAQCBGRUFUVVJFX09DQU1MPUBGRUFUVVJFX09DQU1MQAotIE5PX09DQU1MRklORD1A U1VCU1RJVFVURURfT0NBTUxGSU5EQAotIAotICMgSW5jbHVkZSBwYXRocwotLVBDUkVESVI9QFBB VEhfcGNyZUAKLStQQ1JFRElSPUBQQVRIX3BjcmUyQAotIFBBUk1BUERJUj1AUEFUSF9wYXJtYXBA Ci0gUFlNTERJUj1AUEFUSF9weW1sQAotIE1FTkhJUkRJUj1AUEFUSF9tZW5oaXJMaWJACi1AQCAt MTI5LDQgKzEyOSw0IEBAIFJFR0VYUF9GSUxFPUBSRUdFWFBfRklMRUAKLSAKLSBNRU5ISVJfRkxB R1M9QERFRkFVTFRfTUVOSElSX0ZMQUdTQAotIAotLU9DQU1MQVRMRUFTVDUwPUBPQ0FNTEFUTEVB U1Q1MEAKLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotK09DQU1MQVRMRUFTVDUwPUBPQ0FN TEFUTEVBU1Q1MEAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5saWJzIGIvTWFrZWZpbGUubGlicwot aW5kZXggOTZlMDVkMjZmLi5lZDZjZTMwMmYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5saWJzCi0r KysgYi9NYWtlZmlsZS5saWJzCi1AQCAtMzYsMTUgKzM2LDE1IEBAIE9QVEZMQUdTX3B5bWwgID0g JChDRkxBR1NfcHltbDolPS1jY29wdCAlKSAtY2NsaWIgLWxweW1sX3N0dWJzCi0gCi0gIyBwY3Jl IGxpYnJhcnkKLSAjIE5vdGU6IHNlZSB0aGUgY29tbWVudCBvZiB0aGUgcHljYW1sIGxpYnJhcnkg YWJvdXQgdGhlIGRvdWJsZSBhcHBlYXJhbmNlIG9mIHRoZSBzdHVicyBsaWJyYXJ5LgotLUxPQ0FM X3BjcmUgICAgID0gJChCWVRFU0RJUjo9L2J5dGVzLmNtYSkgJChQQ1JFRElSKS9wY3JlLmNtYQot LUxPQ0FMT1BUX3BjcmUgID0gJChCWVRFU0RJUjo9L2J5dGVzLmNteGEpICQoUENSRURJUikvcGNy ZS5jbXhhCi0tR0xPQkFMX3BjcmUgICAgPSAkKEJZVEVTRElSOj0vYnl0ZXMuY21hKSAkKFBDUkVE SVIpL3BjcmUuY21hCi0tR0xPQkFMT1BUX3BjcmUgPSAkKEJZVEVTRElSOj0vYnl0ZXMuY214YSkg JChQQ1JFRElSKS9wY3JlLmNteGEKLS1GTEFHU19wY3JlICAgICA9IFwKLS0JJChQQ1JFX0xJQlM6 JT0tY2NvcHQgJSkgLWNjbGliIC1MJChQQ1JFRElSKSAtZGxsaWIgLWxwY3JlX3N0dWJzIFwKLS0J LWNjbGliIC1scGNyZV9zdHVicwotLU9QVEZMQUdTX3BjcmUgID0gXAotLQkkKFBDUkVfTElCUzol PS1jY29wdCAlKSAtY2NsaWIgLUwkKFBDUkVESVIpIC1jY2xpYiAtbHBjcmVfc3R1YnMKLStMT0NB TF9wY3JlMiAgICAgPSAkKEJZVEVTRElSOj0vYnl0ZXMuY21hKSAkKFBDUkVESVIpL3BjcmUyLmNt YQotK0xPQ0FMT1BUX3BjcmUyICA9ICQoQllURVNESVI6PS9ieXRlcy5jbXhhKSAkKFBDUkVESVIp L3BjcmUyLmNteGEKLStHTE9CQUxfcGNyZTIgICAgPSAkKEJZVEVTRElSOj0vYnl0ZXMuY21hKSAk KFBDUkVESVIpL3BjcmUyLmNtYQotK0dMT0JBTE9QVF9wY3JlMiA9ICQoQllURVNESVI6PS9ieXRl cy5jbXhhKSAkKFBDUkVESVIpL3BjcmUyLmNteGEKLStGTEFHU19wY3JlMiAgICAgPSBcCi0rCSQo UENSRV9MSUJTOiU9LWNjb3B0ICUpIC1jY2xpYiAtTCQoUENSRURJUikgLWRsbGliIC1scGNyZTJf c3R1YnMgXAotKwktY2NsaWIgLWxwY3JlMl9zdHVicwotK09QVEZMQUdTX3BjcmUyICA9IFwKLSsJ JChQQ1JFX0xJQlM6JT0tY2NvcHQgJSkgLWNjbGliIC1MJChQQ1JFRElSKSAtY2NsaWIgLWxwY3Jl Ml9zdHVicwotIAotICMgZHlubGluayBsaWJyYXJ5Ci0gTE9DQUxfZHlubGluayAgICAgPQotZGlm ZiAtLWdpdCBhL2NvY2NpbmVsbGUub3BhbSBiL2NvY2NpbmVsbGUub3BhbQotaW5kZXggY2U3NDg1 YzdhLi5jMDdlYmNlMGQgMTAwNjQ0Ci0tLS0gYS9jb2NjaW5lbGxlLm9wYW0KLSsrKyBiL2NvY2Np bmVsbGUub3BhbQotQEAgLTE4LDcgKzE4LDcgQEAgZGVwZW5kczogWwotICAgIm9jYW1sIgotICAg Im1lbmhpciIKLSAgICJvY2FtbGZpbmQiCi0tICAicGNyZSIKLSsgICJwY3JlMiIKLSAgICJzdGRj b21wYXQiCi0gICAicHltbCIgeyA+PSAiMjAxNzExMTciIH0KLSAgICJjb25mLXBrZy1jb25maWci Ci1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5MTA2YmM3 MDQuLmNkOTAwNWE4NyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJl LmFjCi1AQCAtMTQ0LDcgKzE0NCw3IEBAIGRubCAgYWRkIGEgbGluZSBmb3IgZWFjaCBwYWNrYWdl IHRoYXQgaXMKLSBkbmwgIGNvbmZpZ3VyZWQgdmlhIEFDX0NIRUNLX0NPQ0NJX0VYVFBLRwotIGRu bCAgb3IgQUNfUkVRX0NPQ0NJX0VYVFBLRwotIEFDX0NPQ0NJX0lOSVRfUEtHX0VNUFRZKFtkeW5s aW5rXSkKLS1BQ19DT0NDSV9JTklUX1BLR19FTVBUWShbcGNyZV0pCi0rQUNfQ09DQ0lfSU5JVF9Q S0dfRU1QVFkoW3BjcmUyXSkKLSBBQ19DT0NDSV9JTklUX1BLR19FTVBUWShbYnl0ZXNdKSBkbmwg Zm9yIHJlY2VudCB2ZXJzaW9ucyBvZiBwY3JlIG9uIG9sZCBPQ2FtbAotIEFDX0NPQ0NJX0lOSVRf UEtHX0VNUFRZKFtweW1sXSkKLSBBQ19DT0NDSV9JTklUX1BLR19FTVBUWShbc3RkY29tcGF0XSkK LUBAIC0zNjgsMTggKzM2OCwxOCBAQCBkbmwgICAgT0NBTUxfUEtHX3BjcmU6IGlmICJsb2NhbCIg dXNlIHN0ciBwYWNrYWdlCi0gQUNfQVJHX0VOQUJMRShbcGNyZS1zeW50YXhdLCBBU19IRUxQX1NU UklORyhbLS1lbmFibGUtcGNyZS1zeW50YXhdLCBbZW5hYmxlIHBjcmUgcmVndWxhciBleHByZXNz aW9uIHN5bnRheCAoZGVmYXVsdDogYXV0byldKSkKLSBBU19JRihbdGVzdCAieCRlbmFibGVfcGNy ZV9zeW50YXgiICE9ICJ4bm8iXSwKLSBbZG5sCi0tICBQS0dfQ0hFQ0tfTU9EVUxFUyhbUENSRV0s IFtsaWJwY3JlXSxbQUNfU1VCU1QoW0hBVkVfUENSRV0sW3llc10pXSxbQUNfU1VCU1QoW0hBVkVf UENSRV0sW25vXSldKQotKyAgUEtHX0NIRUNLX01PRFVMRVMoW1BDUkVdLCBbbGlicGNyZTItOF0s W0FDX1NVQlNUKFtIQVZFX1BDUkVdLFt5ZXNdKV0sW0FDX1NVQlNUKFtIQVZFX1BDUkVdLFtub10p XSkKLSAgIEFTX0lGKFt0ZXN0IC16ICIkZW5hYmxlX3BjcmVfc3ludGF4IiAtYSAieCRIQVZFX1BD UkUiICE9IHh5ZXNdLAotICAgW2RubAotICAgICBBQ19TVUJTVChbZW5hYmxlX3BjcmVfc3ludGF4 XSwgW25vXSkKLSAgIF0sCi0gICBbZG5sCi0gICAgIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9wY3Jl IiA9ICJ4bm8iXSwgW0FDX1NVQlNUKFtlbmFibGVfcGNyZV0sIFtsb2NhbF0pXSkKLS0gICAgQUNf Q0hFQ0tfQ09DQ0lfRVhUUEtHKFtwY3JlXSkgIGRubCAgd2lsbCBzZXQgJGVuYWJsZV9wY3JlIHRv ICd5ZXMnLCAnbm8nLCBvciAnbG9jYWwnCi0rICAgIEFDX0NIRUNLX0NPQ0NJX0VYVFBLRyhbcGNy ZTJdKSAgZG5sICB3aWxsIHNldCAkZW5hYmxlX3BjcmUgdG8gJ3llcycsICdubycsIG9yICdsb2Nh bCcKLSAgICAgQVNfSUYoW3Rlc3QgIngkZW5hYmxlX3BjcmUiID0gInh5ZXMiXSwKLSAgICAgW2Ru bAotICAgICAgIEFDX01TR19DSEVDS0lORyhbaWYgcGNyZSBkZXBlbmRzIG9uIGJ5dGVzXSkKLS0g ICAgICBBU19JRihbdGVzdCAieGAkT0NBTUxGSU5EIHF1ZXJ5IC1yIC1mb3JtYXQgJyVwJyBwY3Jl IDI+L2Rldi9udWxsIHwgZ3JlcCBieXRlc2AiID0gInhieXRlcyJdLAotKyAgICAgIEFTX0lGKFt0 ZXN0ICJ4YCRPQ0FNTEZJTkQgcXVlcnkgLXIgLWZvcm1hdCAnJXAnIHBjcmUyIDI+L2Rldi9udWxs IHwgZ3JlcCBieXRlc2AiID0gInhieXRlcyJdLAotICAgICAgIFtkbmwKLSAgICAgICAgIEFDX01T R19SRVNVTFQoW3llc10pCi0gICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIGJ5dGVzIGlzIGFu IGFjdHVhbCBtb2R1bGVdKQotQEAgLTQwNiwxNCArNDA2LDE0IEBAIEFTX0lGKFt0ZXN0ICJ4JGVu YWJsZV9wY3JlX3N5bnRheCIgIT0geG5vXSwKLSAgICAgQUNfTVNHX05PVElDRShbc3VwcG9ydCBm b3IgcGNyZSBzeW50YXggaXMgZW5hYmxlZF0pCi0gICBdLAotICAgW2RubAotLSAgICBBQ19NU0df RVJST1IoW3RoZSBwY3JlIGZlYXR1cmUgaXMgZW5hYmxlZCBidXQgdGhlIHBrZy1jb25maWcgbGli cGNyZSBsaWJyYXJ5IGlzIG5vdCBmb3VuZF0pCi0rICAgIEFDX01TR19FUlJPUihbdGhlIHBjcmUg ZmVhdHVyZSBpcyBlbmFibGVkIGJ1dCB0aGUgcGtnLWNvbmZpZyBsaWJwY3JlMi04IGxpYnJhcnkg aXMgbm90IGZvdW5kXSkKLSAgIF0pCi0gCi0gICBBQ19TVUJTVChbUkVHRVhQX01PRFVMRV0sIFtS ZWdleHBfcGNyZV0pCi0gICBBQ19TVUJTVChbUkVHRVhQX0ZJTEVdLCBbcmVnZXhwX3BjcmUubWxd KQotIF0sCi0gW2RubAotLSAgQUNfQ09DQ0lfSU5JVF9QS0dfRU1QVFkoW3BjcmVdKQotKyAgQUNf Q09DQ0lfSU5JVF9QS0dfRU1QVFkoW3BjcmUyXSkKLSAgIEFDX1NVQlNUKFtSRUdFWFBfTU9EVUxF XSwgW1JlZ2V4cF9zdHJdKQotICAgQUNfU1VCU1QoW1JFR0VYUF9GSUxFXSwgW3JlZ2V4cF9zdHIu bWxdKQotIF0pCi1AQCAtNTcwLDcgKzU3MCw3IEBAIEFTX0lGKFt0ZXN0ICIkTUFLRV9zdGRjb21w YXQiXSwKLSBBU19JRihbdGVzdCAiJE1BS0VfcGFybWFwIl0sCi0gICBBQ19DT05GSUdfU1VCRElS UyhidW5kbGVzL3Bhcm1hcCkpCi0gCi0tQVNfSUYoW3Rlc3QgIiRNQUtFX3BjcmUiXSwKLStBU19J RihbdGVzdCAiJE1BS0VfcGNyZTIiXSwKLSAgIFtBU19JRihbdGVzdCAieCRPQ0FNTEFUTEVBU1Q0 MDMwIiA9IHhubyAgXSwKLSAgICAgW0FDX1NVQlNUKFtDQU1Mbm9yZXR1cm5fc3RhcnRdLCBbXSkK LSAgICAgIEFDX1NVQlNUKFtDQU1Mbm9yZXR1cm5fZW5kXSwgW10pXSwKLUBAIC02MzIsNyArNjMy LDcgQEAgcHl0aG9uIHNjcmlwdGluZzogJGVuYWJsZV9weXRob24JKG92ZXJyaWRhYmxlIHdpdGgg LS1lbmFibGUtcHl0aG9uKQotIAotIHBjcmUgcmVnZXhlczogICAgICRlbmFibGVfcGNyZV9zeW50 YXgJKG92ZXJyaWRhYmxlIHdpdGggLS1lbmFibGUtcGNyZS1zeW50YXgpCi0gcGNyZSBtb2R1bGU6 ICAgICAgJGVuYWJsZV9wY3JlCShmb3IgbG9jYWwgcGFja2FnZSB1c2UgLS1kaXNhYmxlLXBjcmUp Ci0tcGNyZSBsaWJyYXJ5OiAgICAgJEhBVkVfUENSRQkocmVxdWlyZXMgdGhlIGxpYnBjcmUtb2Nh bWwtZGV2IHBhY2thZ2UpCi0rcGNyZSBsaWJyYXJ5OiAgICAgJEhBVkVfUENSRQkocmVxdWlyZXMg dGhlIGxpYnBjcmUyLW9jYW1sLWRldiBwYWNrYWdlKQotIAotIG9wdGltaXplZCBzcGF0Y2g6ICRl bmFibGVfb3B0CShvdmVycmlkYWJsZSB3aXRoIC0tZGlzYWJsZS1vcHQpCi0gCi1kaWZmIC0tZ2l0 IGEvZ2xvYmFscy9yZWdleHBfcGNyZS5tbCBiL2dsb2JhbHMvcmVnZXhwX3BjcmUubWwKLWluZGV4 IGQwOWY4NTI4Zi4uOTMwNzM3NThmIDEwMDY0NAotLS0tIGEvZ2xvYmFscy9yZWdleHBfcGNyZS5t bAotKysrIGIvZ2xvYmFscy9yZWdleHBfcGNyZS5tbAotQEAgLTUsNyArNSw3IEBACi0gICopCi0g Ci0gdHlwZSByZWdleHAgPQotLSAgICBQY3JlIG9mIGludCAoKiBQY3JlLnJlZ2V4cCAqKQotKyAg ICBQY3JlIG9mIGludCAoKiBQY3JlMi5yZWdleHAgKikKLSAgIHwgU3RyIG9mIFN0ci5yZWdleHAK LSAKLSAoKiBBIHRhYmxlIGlzIHVzZWQgYmVjYXVzZSBQQ1JFIHJlZ3VsYXIgZXhwcmVzc2lvbnMg YXJlIG5vdCBjb21wYXJhYmxlLgotQEAgLTI2LDcgKzI2LDcgQEAgbGV0IHJlZ2V4cCBzdHJpbmcg PQotICAgICBiZWdpbgotICAgICAgIGxldCBjID0gIXBjcmVfY3RyIGluCi0gICAgICAgcGNyZV9j dHIgOj0gIXBjcmVfY3RyICsgMTsKLS0gICAgICBIYXNodGJsLmFkZCBwY3JlX3RhYmxlIGMgKFBj cmUucmVnZXhwIHN0cmluZyk7Ci0rICAgICAgSGFzaHRibC5hZGQgcGNyZV90YWJsZSBjIChQY3Jl Mi5yZWdleHAgc3RyaW5nKTsKLSAgICAgICBQY3JlIGMKLSAgICAgZW5kCi0gICBlbHNlIFN0ciAo U3RyLnJlZ2V4cCBzdHJpbmcpCi1AQCAtMzUsNyArMzUsNyBAQCBsZXQgc3RyaW5nX21hdGNoIHJl Z2V4cCBzdHJpbmcgPQotICAgbWF0Y2ggcmVnZXhwIHdpdGgKLSAgICAgICBQY3JlIHJlZ2V4cCAt PgotIAlsZXQgcmVnZXhwID0gSGFzaHRibC5maW5kIHBjcmVfdGFibGUgcmVnZXhwIGluCi0tCVBj cmUucG1hdGNoIH5yZXg6cmVnZXhwIHN0cmluZwotKwlQY3JlMi5wbWF0Y2ggfnJleDpyZWdleHAg c3RyaW5nCi0gICAgIHwgU3RyIHJlZ2V4cCAtPgotICAgICAgIHRyeQotIAlpZ25vcmUoU3RyLnNl YXJjaF9mb3J3YXJkIHJlZ2V4cCBzdHJpbmcgMCk7Ci1kaWZmIC0tZ2l0IGEvc2V0dXAvZmFrZS1z dWJzdC5zaCBiL3NldHVwL2Zha2Utc3Vic3Quc2gKLWluZGV4IGViOTk5ZDNlYy4uMmFhMmEyNzAy IDEwMDc1NQotLS0tIGEvc2V0dXAvZmFrZS1zdWJzdC5zaAotKysrIGIvc2V0dXAvZmFrZS1zdWJz dC5zaAotQEAgLTE5LDcgKzE5LDcgQEAgc2V0IC1lCi0gIyB0aGUgbmV4dCBsaW5lcyBpbiB0aGUg ZmlsZS4KLSAKLSAjIHRoZSByZXBsaWVzIGZpbGUgYXNzdW1lcyB0aGF0IHRoZQotLSMgbGlicGNy ZSBhbmQgcHl0aG9uIGxpYnJhcmllcyBhcmUgaW5zdGFsbGVkLCBhbmQKLSsjIGxpYnBjcmUyIGFu ZCBweXRob24gbGlicmFyaWVzIGFyZSBpbnN0YWxsZWQsIGFuZAotICMgdGhhdCBub25lIG9mIHRo ZSBvcHRpb25hbCBvY2FtbCBsaWJyYXJpZXMgYXJlCi0gIyBpbnN0YWxsZWQuCi0gCi1AQCAtMTAy LDkgKzEwMiw5IEBAIHB5dGhvbmxpYnMoKSB7Ci0gICBlY2hvICItTCR7cHJlZml4fS9saWIgLWxw eXRob24ke3ZlcnNpb259IgotIH0KLSAKLS0jIHN1Y2NlZWRzIG9ubHkgaWYgIi91c3IvaW5jbHVk ZS9wY3JlLmgiIGV4aXN0cwotKyMgc3VjY2VlZHMgb25seSBpZiAiL3Vzci9pbmNsdWRlL3BjcmUy LmgiIGV4aXN0cwotIGNoZWNrcGNyZSgpIHsKLS0gIHRlc3QgLWYgL3Vzci9pbmNsdWRlL3BjcmUu aAotKyAgdGVzdCAtZiAvdXNyL2luY2x1ZGUvcGNyZTIuaAotIH0KLSAKLSAjIGl0ZXJhdGUgdGhy b3VnaCBwYXR0ZXJuLXJlc3BvbnNlIHBhaXJzCi0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0IGEv MDAwMi11c2UtcGNyZTItaW5zdGVhZC1vZi1wY3JlLWluLXNvbWUtbW9yZS1wbGFjZXMucGF0Y2gg Yi8wMDAyLXVzZS1wY3JlMi1pbnN0ZWFkLW9mLXBjcmUtaW4tc29tZS1tb3JlLXBsYWNlcy5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQwZDJkYi4uMDAwMDAwMAotLS0gYS8w MDAyLXVzZS1wY3JlMi1pbnN0ZWFkLW9mLXBjcmUtaW4tc29tZS1tb3JlLXBsYWNlcy5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gMzIxZjZjMTMxN2Q1M2MzMjYzYTRl MGYzNWQyYTQzZjJhYjg1ZjU2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZpY3Rv ciBHYW1iaWVyIDx2aWN0b3IuZ2FtYmllckBpbnJpYS5mcj4KLURhdGU6IFdlZCwgMTcgRGVjIDIw MjUgMTM6Mjg6MDYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzldIHVzZSBwY3JlMiBpbnN0ZWFk IG9mIHBjcmUgaW4gc29tZSBtb3JlIHBsYWNlcwotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1p dCBmYTA2MmZiMzY2MGIxMjM3ZDMyZDI3ZmI1MDI3Y2I2OGY0YzVhYWUxKQotLS0tCi0gTWFrZWZp bGUgfCAxMiArKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2 IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXgg NmI2MjRlMzc4Li5jZGRiODFjZTYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZp bGUKLUBAIC0xMjEsNyArMTIxLDcgQEAgTElCUkFSSUVTX3NwYXRjaCA6PSAkKExJQlJBUklFUykK LSAKLSBMSUJSQVJJRVNfc3BnZW4gOj0gJChDT1JFX0xJQlJBUklFUykKLSAKLS1DT1JFX0JVTkRM RVM9c3RkY29tcGF0IG1lbmhpckxpYiBwY3JlCi0rQ09SRV9CVU5ETEVTPXN0ZGNvbXBhdCBtZW5o aXJMaWIgcGNyZTIKLSAKLSBBTExfQlVORExFUz0kKENPUkVfQlVORExFUykgcGFybWFwIHB5bWwK LSAKLUBAIC0zMTksOCArMzE5LDggQEAgaW5zdGFsbC1zcGF0Y2ggOiBzcGF0Y2gkKFRPT0xTX1NV RkZJWCkKLSAJCSQoSU5TVEFMTF9QUk9HUkFNKSBidW5kbGVzL3B5bWwvZGxscHltbF9zdHVicy5z byBcCi0gCQkJJChERVNURElSKSQoTElCRElSKTsgXAotIAlmaQotLQlpZiB0ZXN0IC1mIGJ1bmRs ZXMvcGNyZS9kbGxwY3JlX3N0dWJzLnNvOyB0aGVuIFwKLS0JCSQoSU5TVEFMTF9QUk9HUkFNKSBi dW5kbGVzL3BjcmUvZGxscGNyZV9zdHVicy5zbyBcCi0rCWlmIHRlc3QgLWYgYnVuZGxlcy9wY3Jl Mi9kbGxwY3JlMl9zdHVicy5zbzsgdGhlbiBcCi0rCQkkKElOU1RBTExfUFJPR1JBTSkgYnVuZGxl cy9wY3JlMi9kbGxwY3JlMl9zdHVicy5zbyBcCi0gCQkJJChERVNURElSKSQoTElCRElSKTsgXAot IAlmaQotIAkkKElOU1RBTExfUFJPR1JBTSkgc3BhdGNoJChUT09MU19TVUZGSVgpICQoREVTVERJ UikkKEJJTkRJUikvc3BhdGNoCi1AQCAtNTIxLDExICs1MjEsMTEgQEAgZW5kaWYKLSBpZm5lcSAo JChQQ1JFX0xJQiksKQotIGlmZXEgKCQoTkFUSVZFKSx5ZXMpCi0gJChQQ1JFX0xJQik6ICQoU1RE Q09NUEFUX0xJQikKLS0JJChNQUtFKSAtQyBidW5kbGVzL3BjcmUgYWxsCi0tCSQoTUFLRSkgLUMg YnVuZGxlcy9wY3JlIGFsbC5vcHQKLSsJJChNQUtFKSAtQyBidW5kbGVzL3BjcmUyIGFsbAotKwkk KE1BS0UpIC1DIGJ1bmRsZXMvcGNyZTIgYWxsLm9wdAotIGVsc2UKLSAkKFBDUkVfTElCKTogJChT VERDT01QQVRfTElCKQotLQkkKE1BS0UpIC1DIGJ1bmRsZXMvcGNyZSBhbGwKLSsJJChNQUtFKSAt QyBidW5kbGVzL3BjcmUyIGFsbAotIGVuZGlmCi0gZW5kaWYKLSAKLS0tIAotMi41Mi4wCi0KCmRp ZmYgLS1naXQgYS8wMDAzLXJlcGxhY2UtcGNyZS13aXRoLXBjcmUyLWluLWluc3RhbGwudHh0LWlu c3RydWN0aW9ucy5wYXRjaCBiLzAwMDMtcmVwbGFjZS1wY3JlLXdpdGgtcGNyZTItaW4taW5zdGFs bC50eHQtaW5zdHJ1Y3Rpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3 OGQ0NmM0Li4wMDAwMDAwCi0tLSBhLzAwMDMtcmVwbGFjZS1wY3JlLXdpdGgtcGNyZTItaW4taW5z dGFsbC50eHQtaW5zdHJ1Y3Rpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBA QAotRnJvbSBkMzVmOGIwOGRlODUwZjU5MTQwOGEwZjZjZGQ1ZGUyNWYxNzUxOTQ3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmljdG9yIEdhbWJpZXIgPHZpY3Rvci5nYW1iaWVyQGlu cmlhLmZyPgotRGF0ZTogV2VkLCAxNyBEZWMgMjAyNSAxMTozOToxMiArMDEwMAotU3ViamVjdDog W1BBVENIIDMvOV0gcmVwbGFjZSBwY3JlIHdpdGggcGNyZTIgaW4gaW5zdGFsbC50eHQgaW5zdHJ1 Y3Rpb25zCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDBmYWNkNDAzZjE2OGFhYmUyMWFl MTliMGYwZDk0OTFhMzYyNzFiNGIpCi0tLS0KLSBpbnN0YWxsLnR4dCB8IDIwICsrKysrKysrKyst LS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9u cygtKQotCi1kaWZmIC0tZ2l0IGEvaW5zdGFsbC50eHQgYi9pbnN0YWxsLnR4dAotaW5kZXggMGFl OWEzODg5Li4xM2FlZTlhZTcgMTAwNjQ0Ci0tLS0gYS9pbnN0YWxsLnR4dAotKysrIGIvaW5zdGFs bC50eHQKLUBAIC0zMCwxNCArMzAsMTQgQEAgT24gRGViaWFuL1VidW50dSwgaW5zdGFsbCB0aGUg Zm9sbG93aW5nIHBhY2thZ2VzOgotICAgICBJZiB5b3UgZG8gbm90IGluc3RhbGwgbGlicGFybWFw LW9jYW1sLWRldiwgdGhlbiB5b3Ugd2lsbCBhdXRvbWF0aWNhbGx5IHVzZQotICAgICB0aGUgYnVu ZGxlIGluc3RlYWQuIEhvd2V2ZXIsIGlmIHlvdSB1c2VkIG9wYW0gdG8gc3dpdGNoIHRvIGEgZGlm ZmVyZW50Ci0gICAgIHZlcnNpb24gb2YgT0NhbWwsIHlvdSBtdXN0IHVuaW5zdGFsbCBsaWJwYXJt YXAtb2NhbWwtZGV2IC8gbGlicGFybWFwLW9jYW1sLgotLSAtIGxpYnBjcmUtb2NhbWwtZGV2IChv cHRpb25hbCwgZm9yIFBDUkUgc3VwcG9ydCwgYnVuZGxlZCkKLS0gICAgSWYgeW91IGRvIG5vdCBp bnN0YWxsIGxpYnBjcmUtb2NhbWwtZGV2LCB0aGVuIHlvdSB3aWxsIGF1dG9tYXRpY2FsbHkgdXNl Ci0rIC0gbGlicGNyZTItb2NhbWwtZGV2IChvcHRpb25hbCwgZm9yIFBDUkUgc3VwcG9ydCwgYnVu ZGxlZCkKLSsgICAgSWYgeW91IGRvIG5vdCBpbnN0YWxsIGxpYnBjcmUyLW9jYW1sLWRldiwgdGhl biB5b3Ugd2lsbCBhdXRvbWF0aWNhbGx5IHVzZQotICAgICB0aGUgYnVuZGxlIGluc3RlYWQuIEhv d2V2ZXIsIGluIG9yZGVyIGZvciB0aGUgYnVuZGxlIHRvIHdvcmssIHlvdSBhbHNvCi0gICAgIG5l ZWQ6Ci0tICAtIGxpYnBjcmUzLWRldiAob3B0aW9uYWwsIG5vdCBidW5kbGVkKQotKyAgLSBsaWJw Y3JlMi1kZXYgKG9wdGlvbmFsLCBub3QgYnVuZGxlZCkKLSAgICAgIEFkZGl0aW9uYWxseSwgaWYg eW91IHVzZWQgb3BhbSB0byBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBPQ2FtbAot LSAgICAgYW5kIHdhbnQgUENSRSBzdXBwb3J0LCB0aGVuIG1ha2Ugc3VyZSB5b3UgaGF2ZSBsaWJw Y3JlLW9jYW1sLWRldiAvCi0tICAgICBsaWJwY3JlLW9jYW1sIHVuaW5zdGFsbGVkIGFuZCBsaWJw Y3JlMy1kZXYgaW5zdGFsbGVkLCBvdGhlcndpc2UgQ29jY2luZWxsZQotKyAgICAgYW5kIHdhbnQg UENSRSBzdXBwb3J0LCB0aGVuIG1ha2Ugc3VyZSB5b3UgaGF2ZSBsaWJwY3JlMi1vY2FtbC1kZXYg LwotKyAgICAgbGlicGNyZTItb2NhbWwgdW5pbnN0YWxsZWQgYW5kIGxpYnBjcmUyLWRldiBpbnN0 YWxsZWQsIG90aGVyd2lzZSBDb2NjaW5lbGxlCi0gICAgICB3aWxsIG5vdCBjb21waWxlLgotIAot IE9uIEZlZG9yYSwgaW5zdGFsbCB0aGUgZm9sbG93aW5nIHBhY2thZ2VzOgotQEAgLTQ5LDE2ICs0 OSwxNiBAQCBPbiBGZWRvcmEsIGluc3RhbGwgdGhlIGZvbGxvd2luZyBwYWNrYWdlczoKLSAgLSBv Y2FtbC1maW5kbGliLWRldmVsCi0gIC0gb2NhbWwtb2NhbWxkb2MKLSAgLSBvY2FtbC1tZW5oaXIg KG9wdGlvbmFsLCBidW5kbGVkKQotLSAtIG9jYW1sLXBjcmUtZGV2ZWwgKG9wdGlvbmFsLCBidW5k bGVkKQotKyAtIG9jYW1sLXBjcmUyLWRldmVsIChvcHRpb25hbCwgYnVuZGxlZCkKLSAgICAgTm90 ZTogaWYgeW91IHVzZWQgb3BhbSB0byBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBP Q2FtbCwKLS0gICAgaW5zdGFsbGluZyBvY2FtbC1wY3JlLWRldmVsIHdpbGwgbWFrZSBjb21waWxh dGlvbiBpbXBvc3NpYmxlLiBBZGRpdGlvbmFsbHksCi0rICAgIGluc3RhbGxpbmcgb2NhbWwtcGNy ZTItZGV2ZWwgd2lsbCBtYWtlIGNvbXBpbGF0aW9uIGltcG9zc2libGUuIEFkZGl0aW9uYWxseSwK LSAgICAgUENSRSBzdXBwb3J0IGFuZCBPQ2FtbCBzY3JpcHRpbmcgd2lsbCBiZSBpbXBvc3NpYmxl LgotIElmIHlvdSB3YW50IFB5dGhvbiBzY3JpcHRpbmc6IENvY2NpbmVsbGUgaXMgbm90IGNvbXBh dGlibGUgd2l0aCBQeXRob24gMy4xMywKLSB3aGljaCBpcyB0aGUgZGVmYXVsdCBvbiBGZWRvcmEg YXMgb2YgMjAyNC0xMi0xOS4gQ29uc2lkZXIgc3dpdGNoaW5nIHRvIFB5dGhvbgotIDMuMTIsIGZv ciBleGFtcGxlLgotIAotIE9uIEFyY2ggTGludXgsIGluc3RhbGwgdGhlIGZvbGxvd2luZyBwYWNr YWdlczoKLS0kIHBhY21hbiAtU3l1IHBrZy1jb25maWcgb2NhbWwgb2NhbWwtZmluZGxpYiBhdXRv Y29uZiBhdXRvbWFrZSBwY3JlIG1ha2UKLSskIHBhY21hbiAtU3l1IHBrZy1jb25maWcgb2NhbWwg b2NhbWwtZmluZGxpYiBhdXRvY29uZiBhdXRvbWFrZSBwY3JlMiBtYWtlCi0gYXMgd2VsbCBhcyB0 aGUgQyBjb21waWxlciBvZiB5b3VyIGNob2ljZS4KLSBOb3RlOiBpZiB5b3UgdXNlZCBvcGFtIHRv IHN3aXRjaCB0byBhIGRpZmZlcmVudCB2ZXJzaW9uIG9mIE9DYW1sLCBPQ2FtbAotIHNjcmlwdGlu ZyB3aWxsIGJlIGltcG9zc2libGUuCi1AQCAtNzAsMTIgKzcwLDEyIEBAIGJ1bmRsZXMpOgotICAg ZGV2LWJ1aWxkL2xpYnRvb2wKLSAgIGRldi1sYW5nL29jYW1sCi0gICBkZXYtbGFuZy9weXRob24K LS0gIGRldi1saWJzL2xpYnBjcmUKLSsgIGRldi1saWJzL2xpYnBjcmUyCi0gICBkZXYtbWwvY2Ft bHA0Ci0gICBkZXYtbWwvZmluZGxpYgotICAgZGV2LW1sL21lbmhpcgotICAgZGV2LW1sL3Bhcm1h cAotLSAgZGV2LW1sL3BjcmUtb2NhbWwKLSsgIGRldi1tbC9wY3JlMi1vY2FtbAotICAgZGV2LW1s L3N0ZGNvbXBhdAotIFlvdSBtYXkgYWxzbyBuZWVkOgotICAgZGV2LW1sL3NleHBsaWIKLS0tIAot Mi41Mi4wCi0KCmRpZmYgLS1naXQgYS8wMDA0LXJlcGxhY2UtcGNyZS1idW5kbGUtd2l0aC1wY3Jl Mi1idW5kbGUucGF0Y2ggYi8wMDA0LXJlcGxhY2UtcGNyZS1idW5kbGUtd2l0aC1wY3JlMi1idW5k bGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0OWE1ODcuLjAwMDAwMDAK LS0tIGEvMDAwNC1yZXBsYWNlLXBjcmUtYnVuZGxlLXdpdGgtcGNyZTItYnVuZGxlLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsOTIzNSArMCwwIEBACi1Gcm9tIGJkMWFkYzdmYWY5MDkzOWU3OTZj YTA1M2I5MGY3ZDQ1ZGEyY2JkNWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0 b3IgR2FtYmllciA8dmljdG9yLmdhbWJpZXJAaW5yaWEuZnI+Ci1EYXRlOiBXZWQsIDE0IEphbiAy MDI2IDEyOjAzOjQ4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC85XSByZXBsYWNlIHBjcmUgYnVu ZGxlIHdpdGggcGNyZTIgYnVuZGxlCi0KLVNvdXJjZSBmb3IgcGNyZTIgY29kZToKLWh0dHBzOi8v Z2l0aHViLmNvbS9jYW1scDUvcGNyZTItb2NhbWwvdHJlZS80YzkzMmZjYjRkOWQyN2EwNzdkMDIz NjkxOTZhYjNmMGE1Nzc0MzYyCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGQxYTY3ZWFi N2FhNGExMGU1NGExNWZmNTE1MTczYWFlNzZiM2IzZDcpCi0tLS0KLSBidW5kbGVzL3BjcmUvLmdp dGlnbm9yZSAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0IC0KLSBidW5kbGVzL3BjcmUvYnl0 ZXNfY29tcGF0Lm1sICAgICAgICAgICAgICAgICAgfCAgICA1IC0KLSBidW5kbGVzL3BjcmUvcGNy ZS1vY2FtbC9DSEFOR0VTLm1kICAgICAgICAgICAgfCAgIDI5IC0KLSBidW5kbGVzL3BjcmUvcGNy ZS1vY2FtbC9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEwIC0KLSBidW5kbGVzL3BjcmUvcGNy ZS1vY2FtbC9SRUFETUUubWQgICAgICAgICAgICAgfCAgMTEwIC0tCi0gYnVuZGxlcy9wY3JlL3Bj cmUtb2NhbWwvZHVuZSAgICAgICAgICAgICAgICAgIHwgICAgNCAtCi0gYnVuZGxlcy9wY3JlL3Bj cmUtb2NhbWwvZHVuZS1wcm9qZWN0ICAgICAgICAgIHwgICAgMiAtCi0gYnVuZGxlcy9wY3JlL3Bj cmUtb2NhbWwvZXhhbXBsZXMvTWFrZWZpbGUgICAgIHwgICAgOSAtCi0gYnVuZGxlcy9wY3JlL3Bj cmUtb2NhbWwvZXhhbXBsZXMvUkVBRE1FLm1kICAgIHwgICAyOCAtCi0gYnVuZGxlcy9wY3JlL3Bj cmUtb2NhbWwvZXhhbXBsZXMvZHVuZSAgICAgICAgIHwgICAgNCAtCi0gYnVuZGxlcy9wY3JlL3Bj cmUtb2NhbWwvZXhhbXBsZXMvcGNyZWdyZXAubWwgIHwgIDExMyAtLQotIGJ1bmRsZXMvcGNyZS9w Y3JlLW9jYW1sL2V4YW1wbGVzL3N1YnN0Lm1sICAgICB8ICAgNTQgLQotIGJ1bmRsZXMvcGNyZS9w Y3JlLW9jYW1sL3BjcmUub3BhbSAgICAgICAgICAgICB8ICAgMjcgLQotIC4uLi9wY3JlL3BjcmUt b2NhbWwvcHJlLXY3LjMuMC1DSEFOR0VTLnR4dCAgICB8ICA2OTggLS0tLS0tLS0tLQotIGJ1bmRs ZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy8uZ2l0aWdub3JlICAgICAgICB8ICAgIDEgLQotIGJ1bmRs ZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9NYWtlZmlsZSAgICAgICAgICB8ICAgIDkgLQotIC4uLi9w Y3JlL3BjcmUtb2NhbWwvc3JjL2NvbmZpZy9kaXNjb3Zlci5tbCAgICB8ICAgMTUgLQotIGJ1bmRs ZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9jb25maWcvZHVuZSAgICAgICB8ICAgIDQgLQotIGJ1bmRs ZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9kdW5lICAgICAgICAgICAgICB8ICAgMTYgLQotIGJ1bmRs ZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9wY3JlLm1sLmluICAgICAgICB8IDEwNTUgLS0tLS0tLS0t LS0tLS0KLSBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvcGNyZS5tbGkgICAgICAgICAgfCAg OTMwIC0tLS0tLS0tLS0tLS0KLSBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvcGNyZV9zdHVi cy5jLmluICAgfCAgODYyIC0tLS0tLS0tLS0tLQotIC4uLi9wY3JlMi1vY2FtbH0vLmdpdGlnbm9y ZSAgICAgICAgICAgICAgICAgICB8ICAgIDAKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL0NI QU5HRUxPRy5tZCAgICAgICAgfCAgIDY5ICsKLSAuLi4vcGNyZTItb2NhbWx9L0xJQ0VOU0UubWQg ICAgICAgICAgICAgICAgICAgfCAgICA0ICstCi0gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9N YWtlZmlsZSAgICAgICAgICAgIHwgICAxNSArCi0gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9S RUFETUUubWQgICAgICAgICAgIHwgIDEzOCArKwotIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwv ZHVuZSAgICAgICAgICAgICAgICB8ICAgIDkgKwotIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwv ZHVuZS1wcm9qZWN0ICAgICAgICB8ICAgMzIgKwotIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwv ZXhhbXBsZXMvTWFrZWZpbGUgICB8ICAgIDkgKwotIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwv ZXhhbXBsZXMvUkVBRE1FLm1kICB8ICAgNDggKwotIC4uLi9wY3JlMi1vY2FtbH0vZXhhbXBsZXMv Y2xvYy5tbCAgICAgICAgICAgICB8ICAgIDIgKy0KLSAuLi4vcGNyZTItb2NhbWx9L2V4YW1wbGVz L2NvdW50X2hhc2gubWwgICAgICAgfCAgICA2ICstCi0gLi4uL3BjcmUyL3BjcmUyLW9jYW1sL2V4 YW1wbGVzL2RmYV9yZXN0YXJ0Lm1sIHwgICA0MCArCi0gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2Ft bC9leGFtcGxlcy9kdW5lICAgICAgIHwgICAgNCArCi0gLi4uL3BjcmUyL3BjcmUyLW9jYW1sL2V4 YW1wbGVzL3BjcmUyZ3JlcC5tbCAgIHwgIDEyOCArKwotIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2Nh bWwvZXhhbXBsZXMvc3Vic3QubWwgICB8ICAgNTcgKwotIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2Nh bWwvbGliL01ha2VmaWxlICAgICAgICB8ICAgMTUgKwotIC4uLi9wY3JlMi1vY2FtbC9saWJ9L2Nv bmZpZy9NYWtlZmlsZSAgICAgICAgICB8ICAgIDAKLSAuLi4vcGNyZTIvcGNyZTItb2NhbWwvbGli L2NvbmZpZy9kaXNjb3Zlci5tbCAgfCAgIDE0ICsKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1s L2xpYi9jb25maWcvZHVuZSAgICAgfCAgICA0ICsKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1s L2xpYi9kdW5lICAgICAgICAgICAgfCAgIDE4ICsKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1s L2xpYi9wY3JlMi5tbCAgICAgICAgfCAxMjMxICsrKysrKysrKysrKysrKysrCi0gYnVuZGxlcy9w Y3JlMi9wY3JlMi1vY2FtbC9saWIvcGNyZTIubWxpICAgICAgIHwgMTA2OCArKysrKysrKysrKysr KwotIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL3BjcmUyX3N0dWJzLmMgICB8ICA4MDcg KysrKysrKysrKysKLSAuLi4vcGNyZTIvcGNyZTItb2NhbWwvcGFfcHB4X3Rlc3QvTWFrZWZpbGUg ICAgfCAgIDExICsKLSAuLi4vcGNyZTItb2NhbWwvcGFfcHB4X3Rlc3QvcGNyZTJfdGVzdHMubWwg ICAgfCAgMjQ5ICsrKysKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3BjcmUyLm9wYW0gICAg ICAgICAgfCAgIDM3ICsKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3Rlc3QvZHVuZSAgICAg ICAgICAgfCAgIDE0ICsKLSAuLi4vcGNyZTIvcGNyZTItb2NhbWwvdGVzdC9vbGRfcGNyZTJfdGVz dHMubWwgfCAgIDI0ICsKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3Rlc3QvcGNyZTJfdGVz dHMubWwgfCAgNzQ2ICsrKysrKysrKysKLSA1MSBmaWxlcyBjaGFuZ2VkLCA0Nzk0IGluc2VydGlv bnMoKyksIDM5OTQgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNy ZS8uZ2l0aWdub3JlCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9ieXRlc19jb21w YXQubWwKLSBkZWxldGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvQ0hBTkdF Uy5tZAotIGRlbGV0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9NYWtlZmls ZQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9SRUFETUUubWQK LSBkZWxldGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZHVuZQotIGRlbGV0 ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9kdW5lLXByb2plY3QKLSBkZWxl dGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZXhhbXBsZXMvTWFrZWZpbGUK LSBkZWxldGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZXhhbXBsZXMvUkVB RE1FLm1kCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1w bGVzL2R1bmUKLSBkZWxldGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZXhh bXBsZXMvcGNyZWdyZXAubWwKLSBkZWxldGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlL3BjcmUt b2NhbWwvZXhhbXBsZXMvc3Vic3QubWwKLSBkZWxldGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3Jl L3BjcmUtb2NhbWwvcGNyZS5vcGFtCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9w Y3JlLW9jYW1sL3ByZS12Ny4zLjAtQ0hBTkdFUy50eHQKLSBkZWxldGUgbW9kZSAxMDA2NDQgYnVu ZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjLy5naXRpZ25vcmUKLSBkZWxldGUgbW9kZSAxMDA2NDQg YnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL01ha2VmaWxlCi0gZGVsZXRlIG1vZGUgMTAwNjQ0 IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9jb25maWcvZGlzY292ZXIubWwKLSBkZWxldGUg bW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL2NvbmZpZy9kdW5lCi0gZGVs ZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9kdW5lCi0gZGVsZXRl IG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9wY3JlLm1sLmluCi0gZGVs ZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9wY3JlLm1saQotIGRl bGV0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvcGNyZV9zdHVicy5j LmluCi0gcmVuYW1lIGJ1bmRsZXMve3BjcmUvcGNyZS1vY2FtbCA9PiBwY3JlMi9wY3JlMi1vY2Ft bH0vLmdpdGlnbm9yZSAoMTAwJSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9w Y3JlMi1vY2FtbC9DSEFOR0VMT0cubWQKLSByZW5hbWUgYnVuZGxlcy97cGNyZS9wY3JlLW9jYW1s ID0+IHBjcmUyL3BjcmUyLW9jYW1sfS9MSUNFTlNFLm1kICg5OSUpCi0gY3JlYXRlIG1vZGUgMTAw NjQ0IGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvTWFrZWZpbGUKLSBjcmVhdGUgbW9kZSAxMDA2 NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9SRUFETUUubWQKLSBjcmVhdGUgbW9kZSAxMDA2 NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9kdW5lCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1 bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZHVuZS1wcm9qZWN0Ci0gY3JlYXRlIG1vZGUgMTAwNjQ0 IGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvTWFrZWZpbGUKLSBjcmVhdGUgbW9k ZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9leGFtcGxlcy9SRUFETUUubWQKLSBy ZW5hbWUgYnVuZGxlcy97cGNyZS9wY3JlLW9jYW1sID0+IHBjcmUyL3BjcmUyLW9jYW1sfS9leGFt cGxlcy9jbG9jLm1sICg5NyUpCi0gcmVuYW1lIGJ1bmRsZXMve3BjcmUvcGNyZS1vY2FtbCA9PiBw Y3JlMi9wY3JlMi1vY2FtbH0vZXhhbXBsZXMvY291bnRfaGFzaC5tbCAoNjIlKQotIGNyZWF0ZSBt b2RlIDEwMDY0NCBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVzL2RmYV9yZXN0YXJ0 Lm1sCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBs ZXMvZHVuZQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4 YW1wbGVzL3BjcmUyZ3JlcC5tbAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUyL3Bj cmUyLW9jYW1sL2V4YW1wbGVzL3N1YnN0Lm1sCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMv cGNyZTIvcGNyZTItb2NhbWwvbGliL01ha2VmaWxlCi0gcmVuYW1lIGJ1bmRsZXMve3BjcmUvcGNy ZS1vY2FtbC9zcmMgPT4gcGNyZTIvcGNyZTItb2NhbWwvbGlifS9jb25maWcvTWFrZWZpbGUgKDEw MCUpCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL2Nv bmZpZy9kaXNjb3Zlci5tbAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUyL3BjcmUy LW9jYW1sL2xpYi9jb25maWcvZHVuZQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUy L3BjcmUyLW9jYW1sL2xpYi9kdW5lCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZTIv cGNyZTItb2NhbWwvbGliL3BjcmUyLm1sCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNy ZTIvcGNyZTItb2NhbWwvbGliL3BjcmUyLm1saQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVz L3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9wY3JlMl9zdHVicy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0 IGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvcGFfcHB4X3Rlc3QvTWFrZWZpbGUKLSBjcmVhdGUg bW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9wYV9wcHhfdGVzdC9wY3JlMl90 ZXN0cy5tbAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3Bj cmUyLm9wYW0KLSBjcmVhdGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC90 ZXN0L2R1bmUKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC90 ZXN0L29sZF9wY3JlMl90ZXN0cy5tbAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUy L3BjcmUyLW9jYW1sL3Rlc3QvcGNyZTJfdGVzdHMubWwKLQotZGlmZiAtLWdpdCBhL2J1bmRsZXMv cGNyZS8uZ2l0aWdub3JlIGIvYnVuZGxlcy9wY3JlLy5naXRpZ25vcmUKLWRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMjM4ODkxOWExLi4wMDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNy ZS8uZ2l0aWdub3JlCi0rKysgL2Rldi9udWxsCi1AQCAtMSw0ICswLDAgQEAKLS1NRVRBCi0tbW1v dHRsLXBjcmUtb2NhbWwtMjU4YjcyYwotLS5wcmVwYXJlCi0tcGNyZS1vY2FtbC9zcmMvcGNyZS5t bAotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3Jl L2J5dGVzX2NvbXBhdC5tbCBiL2J1bmRsZXMvcGNyZS9ieXRlc19jb21wYXQubWwKLWRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZmQ3YzJjOGI5Li4wMDAwMDAwMDAKLS0tLSBhL2J1bmRs ZXMvcGNyZS9ieXRlc19jb21wYXQubWwKLSsrKyAvZGV2L251bGwKLUBAIC0xLDUgKzAsMCBAQAot LWluY2x1ZGUgU3RyaW5nCi0tCi0tZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZzogdCAtPiBzdHJp bmcgPSAiJWlkZW50aXR5IgotLQotLWV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmc6IHN0cmluZyAt PiB0ID0gIiVpZGVudGl0eSIKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9D SEFOR0VTLm1kIGIvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvQ0hBTkdFUy5tZAotZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwYjBmNWJhOTIuLjAwMDAwMDAwMAotLS0tIGEvYnVuZGxl cy9wY3JlL3BjcmUtb2NhbWwvQ0hBTkdFUy5tZAotKysrIC9kZXYvbnVsbAotQEAgLTEsMjkgKzAs MCBAQAotLSMjIyA3LjMuNSAoMjAxOC0xMC0yNSkKLS0KLS0gICogU3dpdGNoZWQgdG8gZHVuZSwg ZHVuZS1yZWxlYXNlLCBhbmQgT1BBTSAyLjAKLS0KLS0KLS0jIyMgNy4zLjQgKDIwMTctMTEtMjIp Ci0tCi0tICAqIEltcHJvdmVkIGZpbmFsaXphdGlvbiBvZiByZWd1bGFyIGV4cHJlc3Npb25zIGFu ZCB0YWJsZXMgZm9yIGJldHRlcgotLSAgICBwZXJmb3JtYW5jZQotLQotLQotLSMjIyA3LjMuMyAo MjAxNy0xMC0xNykKLS0KLS0gICogRml4ZWQgZXh0ZXJuYWwgZGVjbGFyYXRpb24gYnVnIGluIGlu dGVybmFsIHJlZ2V4cCBjb21waWxlIGZ1bmN0aW9uCi0tCi0tCi0tIyMjIDcuMy4yICgyMDE3LTEw LTEwKQotLQotLSAgKiBJbXByb3ZlZCBjb21wYXRpYmlsaXR5IHdpdGggTVNWQwotLQotLQotLSMj IyA3LjMuMSAoMjAxNy0xMC0wOCkKLS0KLS0gICogVXNlZCB1bnRhZ2dlZCBpbnRlZ2VycyB3aGVu IGRlY2xhcmluZyBleHRlcm5hbCBmdW5jdGlvbnMKLS0KLS0KLS0jIyMgNy4zLjAgKDIwMTctMDct MjcpCi0tCi0tICAqIFN3aXRjaGVkIHRvIGpidWlsZGVyIGFuZCB0b3BrZwotZGlmZiAtLWdpdCBh L2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL01ha2VmaWxlIGIvYnVuZGxlcy9wY3JlL3BjcmUtb2Nh bWwvTWFrZWZpbGUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggOGE1ZmIwNzNjLi4w MDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL01ha2VmaWxlCi0rKysgL2Rl di9udWxsCi1AQCAtMSwxMCArMCwwIEBACi0tLlBIT05ZOiBhbGwgY2xlYW4gZG9jCi0tCi0tYWxs OgotLQlkdW5lIGJ1aWxkIEBpbnN0YWxsCi0tCi0tY2xlYW46Ci0tCWR1bmUgY2xlYW4KLS0KLS1k b2M6Ci0tCWR1bmUgYnVpbGQgQGRvYwotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9j YW1sL1JFQURNRS5tZCBiL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL1JFQURNRS5tZAotZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBiMTFlMDQxMTYuLjAwMDAwMDAwMAotLS0tIGEvYnVu ZGxlcy9wY3JlL3BjcmUtb2NhbWwvUkVBRE1FLm1kCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxMTAg KzAsMCBAQAotLSMjIFBDUkUtT0NhbWwgLSBQZXJsIENvbXBhdGliaWxpdHkgUmVndWxhciBFeHBy ZXNzaW9ucyBmb3IgT0NhbWwKLS0KLS1UaGlzIFtPQ2FtbF0oaHR0cDovL3d3dy5vY2FtbC5vcmcp LWxpYnJhcnkgaW50ZXJmYWNlcyB0aGUgQy1saWJyYXJ5Ci0tW1BDUkVdKGh0dHA6Ly93d3cucGNy ZS5vcmcpIChQZXJsLWNvbXBhdGliaWxpdHkgUmVndWxhciBFeHByZXNzaW9ucykuICBJdCBjYW4g YmUKLS11c2VkIGZvciBzdHJpbmcgbWF0Y2hpbmcgd2l0aCAiUEVSTCItc3R5bGUgcmVndWxhciBl eHByZXNzaW9ucy4KLS0KLS0jIyMgRmVhdHVyZXMKLS0KLS1QQ1JFLU9DYW1sIG9mZmVycyB0aGUg Zm9sbG93aW5nIGZ1bmN0aW9uYWxpdHkgZm9yIG9wZXJhdGluZyBvbiBzdHJpbmdzOgotLQotLSAg KiBTZWFyY2hpbmcgZm9yIHBhdHRlcm5zCi0tICAqIEV4dHJhY3Rpbmcgc3VicGF0dGVybnMKLS0g ICogU3BsaXR0aW5nIHN0cmluZ3MgYWNjb3JkaW5nIHRvIHBhdHRlcm5zCi0tICAqIFBhdHRlcm4g c3Vic3RpdHV0aW9uCi0tCi0tT3RoZXIgcmVhc29ucyB0byB1c2UgUENSRS1PQ2FtbDoKLS0KLS0g ICogVGhlIFBDUkUtbGlicmFyeSBieSBQaGlsaXAgSGF6ZWwgaGFzIGJlZW4gdW5kZXIgZGV2ZWxv cG1lbnQgZm9yIG1hbnkKLS0gICAgeWVhcnMgYW5kIGlzIGZhaXJseSBhZHZhbmNlZCBhbmQgc3Rh YmxlLiAgSXQgaW1wbGVtZW50cyBqdXN0IGFib3V0IGFsbAotLSAgICBvZiB0aGUgZnVuY3Rpb25h bGl0eSB0aGF0IGNhbiBiZSBmb3VuZCBpbiBQRVJMIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCi0tICAg IFRoZSBoaWdoZXItbGV2ZWwgZnVuY3Rpb25zIHdyaXR0ZW4gaW4gT0NhbWwgKHNwbGl0LCByZXBs YWNlLCBldGMuKSwKLS0gICAgdG9vLCBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZSBjb3JyZXNwb25k aW5nIFBFUkwtZnVuY3Rpb25zIHRvIHRoZSBleHRlbnQKLS0gICAgdGhhdCBPQ2FtbCBhbGxvd3Mu ICBNb3N0IHBlb3BsZSBmaW5kIHRoZSBzeW50YXggb2YgUEVSTC1zdHlsZSByZWd1bGFyCi0tICAg IGV4cHJlc3Npb25zIG1vcmUgc3RyYWlnaHRmb3J3YXJkIGFuZCBwb3dlcmZ1bCB0aGFuIHRoZSBF bWFjcy1zdHlsZSByZWd1bGFyCi0tICAgIGV4cHJlc3Npb25zIHVzZWQgaW4gdGhlIGBTdHJgLW1v ZHVsZSBpbiB0aGUgc3RhbmRhcmQgT0NhbWwgZGlzdHJpYnV0aW9uLgotLQotLSAgKiBQQ1JFLU9D YW1sIGlzIHJlZW50cmFudCBhbmQgdGh1cyB0aHJlYWQtc2FmZSwgd2hpY2ggaXMgbm90IHRoZSBj YXNlCi0tICAgIGZvciB0aGUgYFN0cmAtbW9kdWxlIGluIHRoZSBPQ2FtbCBzdGFuZGFyZCBsaWJy YXJ5LiAgVXNpbmcgcmVlbnRyYW50Ci0tICAgIGxpYnJhcmllcyBhbHNvIG1lYW5zIG1vcmUgY29u dmVuaWVuY2UgZm9yIHByb2dyYW1tZXJzLiAgVGhleSBkbyBub3QKLS0gICAgaGF2ZSB0byByZWFz b24gYWJvdXQgc3RhdGVzIGluIHdoaWNoIHRoZSBsaWJyYXJ5IG1pZ2h0IGJlIGluLgotLQotLSAg KiBUaGUgaGlnaC1sZXZlbCBmdW5jdGlvbnMgZm9yIHJlcGxhY2VtZW50IGFuZCBzdWJzdGl0dXRp b24sIHdoaWNoIGFyZSBhbGwKLS0gICAgaW1wbGVtZW50ZWQgaW4gT0NhbWwsIGFyZSBtdWNoIGZh c3RlciB0aGFuIHRoZSBvbmVzIGluIHRoZSBgU3RyYC1tb2R1bGUuCi0tICAgIEluIGZhY3QsIHdo ZW4gY29tcGlsZWQgdG8gbmF0aXZlIGNvZGUsIHRoZXkgZXZlbiBzZWVtIHRvIGJlIHNpZ25pZmlj YW50bHkKLS0gICAgZmFzdGVyIHRoYW4gdGhvc2UgZm91bmQgaW4gUEVSTCAoUEVSTCBpcyB3cml0 dGVuIGluIEMpLgotLQotLSAgKiBZb3UgY2FuIHJlbHkgb24gdGhlIGRhdGEgcmV0dXJuZWQgYmVp bmcgdW5pcXVlLiAgSW4gb3RoZXIgdGVybXM6IGlmCi0tICAgIHRoZSByZXN1bHQgb2YgYSBmdW5j dGlvbiBpcyBhIHN0cmluZywgeW91IGNhbiBzYWZlbHkgdXNlIGRlc3RydWN0aXZlCi0tICAgIHVw ZGF0ZXMgb24gaXQgd2l0aG91dCBoYXZpbmcgdG8gZmVhciBzaWRlIGVmZmVjdHMuCi0tCi0tICAq IFRoZSBpbnRlcmZhY2UgdG8gdGhlIGxpYnJhcnkgbWFrZXMgdXNlIG9mIGxhYmVscyBhbmQgZGVm YXVsdCBhcmd1bWVudHMKLS0gICAgdG8gZ2l2ZSB5b3UgYSBoaWdoIGRlZ3JlZSBvZiBwcm9ncmFt bWluZyBjb21mb3J0LgotLQotLSMjIyBVc2FnZQotLQotLVBsZWFzZSBjb25zdWx0IHRoZSBbQVBJ XShodHRwczovL21tb3R0bC5naXRodWIuaW8vcGNyZS1vY2FtbC9hcGkvcGNyZSkKLS1mb3IgZGV0 YWlscy4KLS0KLS1BIGdlbmVyYWwgY29uY2VwdCB0aGUgdXNlciBtYXkgbmVlZCB0byB1bmRlcnN0 YW5kIGlzIHRoYXQgbW9zdCBmdW5jdGlvbnMKLS1hbGxvdyBmb3IgdHdvIGRpZmZlcmVudCBraW5k cyBvZiBmbGFnczoKLS0KLS0gIDEuICJDb252ZW5pZW5jZSItZmxhZ3MgdGhhdCBtYWtlIGZvciBy ZWFkYWJsZSBhbmQgY29uY2lzZSBjb2RlLCBidXQgd2hpY2gKLS0gICAgIG5lZWQgdG8gYmUgdHJh bnNsYXRlZCB0byBhbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvbiBlYWNoIGNhbGwuCi0tICAg ICBFeGFtcGxlOgotLQotLSAgICAgYGBgb2NhbWwKLS0gICAgIGxldCByZXggPSBQY3JlLnJlZ2V4 cCB+ZmxhZ3M6W2BBTkNIT1JFRDsgYENBU0VMRVNTXSAic29tZSBwYXR0ZXJuIiBpbgotLSAgICAg KCogLi4uICopCi0tICAgICBgYGAKLS0KLS0gICAgIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBwYXNz IGZsYWdzIG9uIHRoZSBmbHkuICBUaGV5IHdpbGwgYmUgdHJhbnNsYXRlZCB0bwotLSAgICAgdGhl IGludGVybmFsIGZvcm1hdCBhdXRvbWF0aWNhbGx5LiAgSG93ZXZlciwgaWYgdGhpcyBoYXBwZW5z IHRvIGJlIGluIGEKLS0gICAgIGxvb3AsIHRoaXMgdHJhbnNsYXRpb24gd2lsbCBvY2N1ciBvbiBl YWNoIGl0ZXJhdGlvbi4gIElmIHlvdSByZWFsbHkgbmVlZAotLSAgICAgdG8gc2F2ZSBhcyBtdWNo IHBlcmZvcm1hbmNlIGFzIHBvc3NpYmxlLCB5b3Ugc2hvdWxkIHVzZSB0aGUgbmV4dCBhcHByb2Fj aC4KLS0KLS0gIDIuICJJbnRlcm5hbCIgZmxhZ3MgdGhhdCBuZWVkIHRvIGJlIGRlZmluZWQgYW5k IHRyYW5zbGF0ZWQgZnJvbQotLSAgICAgImNvbnZlbmllbmNlIi1mbGFncyBiZWZvcmUgZnVuY3Rp b24gY2FsbHMsIGJ1dCB3aGljaCBhbGxvdyBmb3Igb3B0aW11bQotLSAgICAgcGVyZm9ybWFuY2Ug aW4gbG9vcHMuICBFeGFtcGxlOgotLQotLSAgICAgYGBgb2NhbWwKLS0gICAgIGxldCBpZmxhZ3Mg PSBQY3JlLmNmbGFncyBbYEFOQ0hPUkVEOyBgQ0FTRUxFU1NdIGluCi0tICAgICBmb3IgaSA9IDEg dG8gMTAwMCBkbwotLSAgICAgICBsZXQgcmV4ID0gUGNyZS5yZWdleHAgfmlmbGFncyAic29tZSBw YXR0ZXJuIGNvbnN0cnVjdGVkIGF0IHJ1bnRpbWUiIGluCi0tICAgICAgICgqIC4uLiAqKQotLSAg ICAgZG9uZQotLSAgICAgYGBgCi0tCi0tICAgICAgRmFjdG9yaW5nIG91dCB0aGUgdHJhbnNsYXRp b24gb2YgZmxhZ3MgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbnMgbWF5Ci0tICAgICAgc2F2ZSBzb21l IGN5Y2xlcywgYnV0IGRvbid0IGV4cGVjdCB0b28gbXVjaC4gIFlvdSBjYW4gc2F2ZSBtb3JlIENQ VQotLSAgICAgIHRpbWUgd2hlbiBsaWZ0aW5nIHRoZSBjcmVhdGlvbiBvZiByZWd1bGFyIGV4cHJl c3Npb25zIG91dCBvZiBsb29wcy4KLS0gICAgICBFeGFtcGxlIGZvciB3aGF0IG5vdCB0byBkbzoK LS0KLS0gICAgICBgYGBvY2FtbAotLSAgICAgIGZvciBpID0gMSB0byAxMDAwIGRvCi0tICAgICAg ICBsZXQgY2h1bmtzID0gUGNyZS5zcGxpdCB+cGF0OiJbIFx0XSsiICJmb28gYmFyIiBpbgotLSAg ICAgICAgKCogLi4uICopCi0tICAgICAgZG9uZQotLSAgICAgIGBgYAotLQotLSAgICAgIEJldHRl cjoKLS0KLS0gICAgICBgYGBvY2FtbAotLSAgICAgIGxldCByZXggPSBQY3JlLnJlZ2V4cCAiWyBc dF0rIiBpbgotLSAgICAgIGZvciBpID0gMSB0byAxMDAwIGRvCi0tICAgICAgICBsZXQgY2h1bmtz ID0gUGNyZS5zcGxpdCB+cmV4ICJmb28gYmFyIiBpbgotLSAgICAgICAgKCogLi4uICopCi0tICAg ICAgZG9uZQotLSAgICAgIGBgYAotLQotLVRoZSBwcm92aWRlZCBmdW5jdGlvbnMgdXNlIG9wdGlv bmFsIGFyZ3VtZW50cyB3aXRoIGludHVpdGl2ZSBkZWZhdWx0cy4gIEZvcgotLWV4YW1wbGUsIHRo ZSBgUGNyZS5zcGxpdGAtZnVuY3Rpb24gd2lsbCBhc3N1bWUgd2hpdGVzcGFjZSBhcyBwYXR0ZXJu LiAgVGhlCi0tYGV4YW1wbGVzYC1kaXJlY3RvcnkgY29udGFpbnMgYSBmZXcgZXhhbXBsZSBhcHBs aWNhdGlvbnMgZGVtb25zdHJhdGluZyB0aGUKLS1mdW5jdGlvbmFsaXR5IG9mIFBDUkUtT0NhbWwu Ci0tCi0tIyMjIENvbnRhY3QgSW5mb3JtYXRpb24gYW5kIENvbnRyaWJ1dGluZwotLQotLVBsZWFz ZSBzdWJtaXQgYnVncyByZXBvcnRzLCBmZWF0dXJlIHJlcXVlc3RzLCBjb250cmlidXRpb25zIGFu ZCBzaW1pbGFyIHRvCi0tdGhlIFtHaXRIdWIgaXNzdWUgdHJhY2tlcl0oaHR0cHM6Ly9naXRodWIu Y29tL21tb3R0bC9wY3JlLW9jYW1sL2lzc3VlcykuCi0tCi0tVXAtdG8tZGF0ZSBpbmZvcm1hdGlv biBpcyBhdmFpbGFibGUgYXQ6IDxodHRwczovL21tb3R0bC5naXRodWIuaW8vcGNyZS1vY2FtbD4K LWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9kdW5lIGIvYnVuZGxlcy9wY3Jl L3BjcmUtb2NhbWwvZHVuZQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA2Njk4NGFk N2UuLjAwMDAwMDAwMAotLS0tIGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZHVuZQotKysrIC9k ZXYvbnVsbAotQEAgLTEsNCArMCwwIEBACi0tKGVudgotLSAgKGRldiAoZmxhZ3MgKDpzdGFuZGFy ZCAtdyAtOSAtcHJpbmNpcGFsKSkpCi0tICAocmVsZWFzZSAob2NhbWxvcHRfZmxhZ3MgKDpzdGFu ZGFyZCAtTzMpKSkKLS0pCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZHVu ZS1wcm9qZWN0IGIvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZHVuZS1wcm9qZWN0Ci1kZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGUxNGNlYjBkMS4uMDAwMDAwMDAwCi0tLS0gYS9idW5k bGVzL3BjcmUvcGNyZS1vY2FtbC9kdW5lLXByb2plY3QKLSsrKyAvZGV2L251bGwKLUBAIC0xLDIg KzAsMCBAQAotLShsYW5nIGR1bmUgMS4xKQotLShuYW1lIHBjcmUpCi1kaWZmIC0tZ2l0IGEvYnVu ZGxlcy9wY3JlL3BjcmUtb2NhbWwvZXhhbXBsZXMvTWFrZWZpbGUgYi9idW5kbGVzL3BjcmUvcGNy ZS1vY2FtbC9leGFtcGxlcy9NYWtlZmlsZQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCA1NDBiYzlmOGIuLjAwMDAwMDAwMAotLS0tIGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZXhh bXBsZXMvTWFrZWZpbGUKLSsrKyAvZGV2L251bGwKLUBAIC0xLDkgKzAsMCBAQAotLVRBUkdFVFMg PSAkKGFkZHN1ZmZpeCAuYmMsIGNsb2MgY291bnRfaGFzaCBwY3JlZ3JlcCBzdWJzdCkKLS0KLS0u UEhPTlk6IGFsbCBjbGVhbgotLQotLWFsbDoKLS0JQGR1bmUgYnVpbGQgJChUQVJHRVRTKQotLQot LWNsZWFuOgotLQlAZHVuZSBjbGVhbgotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9j YW1sL2V4YW1wbGVzL1JFQURNRS5tZCBiL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVz L1JFQURNRS5tZAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAxOTE2MzEwYjMuLjAw MDAwMDAwMAotLS0tIGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZXhhbXBsZXMvUkVBRE1FLm1k Ci0rKysgL2Rldi9udWxsCi1AQCAtMSwyOCArMCwwIEBACi0tIyMgRXhhbXBsZXMKLS0KLS0jIyMg Y2xvYwotLQotLVRoaXMgcHJvZ3JhbSByZWFkcyBDLXNvdXJjZXMgZnJvbSBzdGRpbiBhbmQgcHJp bnRzIHRoZW0gdG8gc3Rkb3V0IHdpdGgKLS1jb21tZW50cyBhbmQgZW1wdHkgbGluZXMgcmVtb3Zl ZC4gIFVzZWZ1bCBmb3IgY291bnRpbmcgTE9Dcy4KLS0KLS0jIyMgY291bnRfaGFzaAotLQotLVRo aXMgcHJvZ3JhbSByZWFkcyB0ZXh0IGZyb20gc3RkaW4sIGNvdW50cyBhbGwgZXF1YWwgd29yZHMg dGhhdCBhcmUgc2VwYXJhdGVkIGJ5Ci0td2hpdGVzcGFjZSBhbmQgcHJpbnRzIHRoZSByZXN1bHQg dG8gc3Rkb3V0LgotLQotLSMjIyBwY3JlZ3JlcAotLQotLUEgZ3JlcC1saWtlIHByb2dyYW0gdXNp bmcgUGVybC1jb21wYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMuICBTdGFydCB0aGUKLS1wcm9n cmFtIHdpdGggYXJndW1lbnQgYC1oZWxwYCB0byBzZWUgd2hhdCBpdCBkb2VzIQotLQotLSMjIyBz dWJzdAotLQotLVN1YnN0aXR1dGVzIHRleHQgaW4gZmlsZXMgdXNpbmcgUGVybC1jb21wYXRpYmxl IHJlZ3VsYXIgZXhwcmVzc2lvbnMgYW5kCi0tc3Vic3RpdHV0aW9uIHBhdHRlcm5zLiAgU3RhcnQg dGhlIHByb2dyYW0gd2l0aCBhcmd1bWVudCBgLWhlbHBgIHRvIHNlZSB3aGF0IGl0Ci0tZG9lcyEK LS0KLS1FeGFtcGxlIGludm9jYXRpb246Ci0tCi0tYGBgc2gKLS1zdWJzdCAnKFtUdF0pZXJtY2Fw JyAnJDFlcm1DYXAnIDwgL2V0Yy90ZXJtY2FwCi0tYGBgCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9w Y3JlL3BjcmUtb2NhbWwvZXhhbXBsZXMvZHVuZSBiL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4 YW1wbGVzL2R1bmUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNzI5YzZlNGQxLi4w MDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVzL2R1bmUKLSsr KyAvZGV2L251bGwKLUBAIC0xLDQgKzAsMCBAQAotLShleGVjdXRhYmxlcwotLSAgKG5hbWVzIGNs b2MgY291bnRfaGFzaCBwY3JlZ3JlcCBzdWJzdCkKLS0gIChsaWJyYXJpZXMgcGNyZSkKLS0pCi1k aWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZXhhbXBsZXMvcGNyZWdyZXAubWwg Yi9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9leGFtcGxlcy9wY3JlZ3JlcC5tbAotZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAxYzMxNTI4ZTUuLjAwMDAwMDAwMAotLS0tIGEvYnVuZGxl cy9wY3JlL3BjcmUtb2NhbWwvZXhhbXBsZXMvcGNyZWdyZXAubWwKLSsrKyAvZGV2L251bGwKLUBA IC0xLDExMyArMCwwIEBACi0tb3BlbiBQY3JlCi0tb3BlbiBQcmludGYKLS0KLS1sZXQgZmlsZW5h bWVzICAgICAgPSByZWYgdHJ1ZQotLWFuZCBmaWxlbmFtZXNfb25seSA9IHJlZiBmYWxzZQotLWFu ZCBjb3VudF9vbmx5ICAgICA9IHJlZiBmYWxzZQotLWFuZCBpbnZlcnQgICAgICAgICA9IHJlZiBm YWxzZQotLWFuZCBudW1iZXIgICAgICAgICA9IHJlZiBmYWxzZQotLWFuZCBzaWxlbnQgICAgICAg ICA9IHJlZiBmYWxzZQotLWFuZCB3aG9sZV9saW5lcyAgICA9IHJlZiBmYWxzZQotLQotLWxldCBw YXJzZV9hcmdzICgpID0KLS0gIGxldCBpZ25vcmVfY2FzZSA9IHJlZiBmYWxzZQotLQotLSAgYW5k IHBhdCAgICA9IHJlZiBOb25lCi0tICBhbmQgZmlsZXMgID0gcmVmIFtdIGluCi0tCi0tICBsZXQg YyA9ICItYyIsIEFyZy5TZXQgY291bnRfb25seSwgIkNvdW50IGxpbmVzIG9ubHkuIgotLSAgYW5k IGggPSAiLWgiLCBBcmcuQ2xlYXIgZmlsZW5hbWVzLAotLSAgICAgICAgICAiU3VwcHJlc3MgcHJp bnRpbmcgb2YgZmlsZW5hbWVzIHdoZW4gc2VhcmNoaW5nIG11bHRpcGxlIGZpbGVzLiIKLS0gIGFu ZCBpID0gIi1pIiwgQXJnLlNldCBpZ25vcmVfY2FzZSwgIklnbm9yZSBjYXNlLiIKLS0gIGFuZCBs ID0gIi1sIiwgQXJnLlNldCBmaWxlbmFtZXNfb25seSwKLS0gICAgICAgICAgIk9ubHkgcHJpbnQg bmFtZXMgb2YgZmlsZXMgY29udGFpbmluZyBtYXRjaGluZyBsaW5lcyAob25jZSkuIgotLSAgYW5k IG4gPSAiLW4iLCBBcmcuU2V0IG51bWJlciwKLS0gICAgICAgICAgIlByZWNlZGUgZWFjaCBsaW5l IGJ5IGl0cyBsaW5lIG51bWJlciBpbiB0aGUgZmlsZS4iCi0tICBhbmQgcyA9ICItcyIsIEFyZy5T ZXQgc2lsZW50LAotLSAgICAgICAgICAiRGlzcGxheSBub3RoaW5nIGJ1dCBlcnJvciBtZXNzYWdl cy4gRXhpdCBzdGF0dXMgaW5kaWNhdGVzIG1hdGNoLiIKLS0gIGFuZCB2ID0gIi12IiwgQXJnLlNl dCBpbnZlcnQsCi0tICAgICAgICAgICJJbnZlcnQgc2Vuc2Ugb2YgdGhlIG1hdGNoOiBmaW5kcyBu b25tYXRjaGluZyBsaW5lcy4iCi0tICBhbmQgeCA9ICIteCIsIEFyZy5TZXQgd2hvbGVfbGluZXMs Ci0tICAgICAgICAgICJGb3JjZSB0aGUgcGF0dGVybiB0byBiZSBhbmNob3JlZCBhbmQgdG8gbWF0 Y2ggdGhlIGVudGlyZSBsaW5lLiIKLS0gIGFuZCB1c2FnZSA9Ci0tICAgICJVc2FnZTogcGNyZWdy ZXAgW29wdGlvbnNdIHBhdHRlcm4gW2ZpbGVdIC4uLlxuXG5cCi0tICAgICBTZWFyY2hlcyBmaWxl cyBmb3IgY2hhcmFjdGVyIHBhdHRlcm5zLlxuIgotLSAgYW5kIGFub25fYXJnIGFyZyA9Ci0tICAg IGlmICFwYXQgPSBOb25lIHRoZW4gcGF0IDo9IFNvbWUgYXJnCi0tICAgIGVsc2UgZmlsZXMgOj0g YXJnIDo6ICFmaWxlcyBpbgotLQotLSAgbGV0IGFyZ3MgPSBbYzsgaDsgaTsgbDsgbjsgczsgdjsg eF0gaW4KLS0gIEFyZy5wYXJzZSBhcmdzIGFub25fYXJnIHVzYWdlOwotLQotLSAgbGV0IGZsYWdz ID0KLS0gICAgbGV0IGZsYWdfbGlzdCA9IGlmICFpZ25vcmVfY2FzZSB0aGVuIFtgQ0FTRUxFU1Nd IGVsc2UgW10gaW4KLS0gICAgaWYgIXdob2xlX2xpbmVzIHRoZW4gYEFOQ0hPUkVEIDo6IGZsYWdf bGlzdCBlbHNlIGZsYWdfbGlzdCBpbgotLQotLSAgbGV0IHJleCA9IAotLSAgICBtYXRjaCAhcGF0 IHdpdGgKLS0gICAgfCBTb21lIHBhdCAtPiByZWdleHAgfmZsYWdzIHBhdAotLSAgICB8IE5vbmUg LT4gZXByaW50ZiAiJXM6IG5vdCBlbm91Z2ggYXJndW1lbnRzIVxuIiBTeXMuYXJndi4oMCk7Ci0t ICAgICAgICAgICAgICBBcmcudXNhZ2UgYXJncyB1c2FnZTsgZXhpdCAyIGluCi0tICByZXgsIExp c3QucmV2ICFmaWxlcwotLQotLWxldCBfID0KLS0gIGxldCByZXgsIGZpbGVzID0gcGFyc2VfYXJn cyAoKQotLSAgYW5kIHJmbCA9IHJmbGFncyBbXSBpbgotLQotLSAgbGV0IF8sIG92ZWN0b3IgPSBt YWtlX292ZWN0b3IgcmV4IGluCi0tCi0tICBsZXQgcGNyZWdyZXAgZmlsZSBuYW1lID0KLS0gICAg bGV0IHJldF9jb2RlID0gcmVmIDEKLS0gICAgYW5kIGxpbmVudW1iZXIgPSByZWYgMAotLSAgICBh bmQgY291bnQgPSByZWYgMAotLQotLSAgICBhbmQgc3RkaW5fcHJpbnRfbmFtZSAoKSA9Ci0tICAg ICAgbWF0Y2ggbmFtZSB3aXRoCi0tICAgICAgfCBTb21lIGZpbGVuYW1lIC0+IHByaW50X2VuZGxp bmUgZmlsZW5hbWUKLS0gICAgICB8IE5vbmUgLT4gcHJpbnRfZW5kbGluZSAiPHN0ZGluPiIKLS0K LS0gICAgYW5kIHByaW50X25hbWUgKCkgPQotLSAgICAgIG1hdGNoIG5hbWUgd2l0aCBTb21lIG5h bWUgLT4gcHJpbnRmICIlczoiIG5hbWUgfCBOb25lIC0+ICgpIGluCi0tCi0tICAgIGxldCB0cnlf bWF0Y2ggbGluZSA9Ci0tICAgICAgbGV0IG1hdGNoZWQgPQotLSAgICAgICAgdHJ5Ci0tICAgICAg ICAgIHVuc2FmZV9wY3JlX2V4ZWMgcmZsIHJleCB+cG9zOjAgfnN1Ympfc3RhcnQ6MCB+c3Viajps aW5lIG92ZWN0b3IgTm9uZTsKLS0gICAgICAgICAgaWYgIXdob2xlX2xpbmVzICYmIG92ZWN0b3Iu KDEpIDw+IFN0cmluZy5sZW5ndGggbGluZSB0aGVuIGZhbHNlCi0tICAgICAgICAgIGVsc2UgdHJ1 ZQotLSAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2UgaW4KLS0KLS0gICAgICBpbmNyIGxp bmVudW1iZXI7Ci0tCi0tICAgICAgaWYgbWF0Y2hlZCA8PiAhaW52ZXJ0IHRoZW4gYmVnaW4KLS0g ICAgICAgIGlmICFjb3VudF9vbmx5IHRoZW4gaW5jciBjb3VudAotLSAgICAgICAgZWxzZSBpZiAh ZmlsZW5hbWVzX29ubHkgdGhlbiBiZWdpbiBzdGRpbl9wcmludF9uYW1lICgpOyByYWlzZSBFeGl0 IGVuZAotLSAgICAgICAgZWxzZSBpZiAhc2lsZW50IHRoZW4gcmFpc2UgRXhpdAotLSAgICAgICAg ZWxzZSBiZWdpbgotLSAgICAgICAgICBwcmludF9uYW1lICgpOwotLSAgICAgICAgICBpZiAhbnVt YmVyIHRoZW4gcHJpbnRmICIlZDoiICFsaW5lbnVtYmVyOwotLSAgICAgICAgICBwcmludF9lbmRs aW5lIGxpbmUKLS0gICAgICAgIGVuZDsKLS0gICAgICAgIHJldF9jb2RlIDo9IDAgZW5kIGluCi0t Ci0tICAgIHRyeQotLSAgICAgIGZvcmVhY2hfbGluZSB+aWM6ZmlsZSB0cnlfbWF0Y2g7Ci0tICAg ICAgaWYgIWNvdW50X29ubHkgdGhlbiBiZWdpbgotLSAgICAgICAgcHJpbnRfbmFtZSAoKTsKLS0g ICAgICAgIHByaW50ZiAiJWRcbiIgIWNvdW50IGVuZDsKLS0gICAgICAhcmV0X2NvZGUKLS0gICAg d2l0aCBFeGl0IC0+IDAgaW4KLS0KLS0gIGlmIGZpbGVzID0gW10gdGhlbiBleGl0IChwY3JlZ3Jl cCBzdGRpbiBOb25lKTsKLS0KLS0gIGlmIExpc3QubGVuZ3RoIGZpbGVzID0gMSB0aGVuIGZpbGVu YW1lcyA6PSBmYWxzZTsKLS0gIGlmICFmaWxlbmFtZXNfb25seSB0aGVuIGZpbGVuYW1lcyA6PSB0 cnVlOwotLQotLSAgbGV0IGNvbGxlY3QgcmV0X2NvZGUgZmlsZW5hbWUgPQotLSAgICB0cnkKLS0g ICAgICBsZXQgZmlsZSA9IG9wZW5faW4gZmlsZW5hbWUgaW4KLS0gICAgICBsZXQgZnJjID0gcGNy ZWdyZXAgZmlsZSAoaWYgIWZpbGVuYW1lcyB0aGVuIFNvbWUgZmlsZW5hbWUgZWxzZSBOb25lKSBp bgotLSAgICAgIGNsb3NlX2luIGZpbGU7Ci0tICAgICAgaWYgZnJjID0gMCAmJiByZXRfY29kZSA9 IDEgdGhlbiAwIGVsc2UgcmV0X2NvZGUKLS0gICAgd2l0aCBTeXNfZXJyb3IgbXNnIC0+IHByZXJy X2VuZGxpbmUgbXNnOyAyIGluCi0tICBleGl0IChMaXN0LmZvbGRfbGVmdCBjb2xsZWN0IDEgZmls ZXMpCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZXhhbXBsZXMvc3Vic3Qu bWwgYi9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9leGFtcGxlcy9zdWJzdC5tbAotZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAyNDcwMWRkYTEuLjAwMDAwMDAwMAotLS0tIGEvYnVuZGxl cy9wY3JlL3BjcmUtb2NhbWwvZXhhbXBsZXMvc3Vic3QubWwKLSsrKyAvZGV2L251bGwKLUBAIC0x LDU0ICswLDAgQEAKLS1vcGVuIFBjcmUKLS0KLS1sZXQgcGFyc2VfYXJncyAoKSA9Ci0tICBsZXQg cXVpY2sgICAgICAgPSByZWYgZmFsc2UKLS0gIGFuZCBmaXJzdCAgICAgICA9IHJlZiBmYWxzZQot LSAgYW5kIGlnbm9yZV9jYXNlID0gcmVmIGZhbHNlCi0tICBhbmQgb2Zmc2V0ICAgICAgPSByZWYg MAotLQotLSAgYW5kIHBhdCAgICA9IHJlZiBOb25lCi0tICBhbmQgc3Vic3RyID0gcmVmIE5vbmUg aW4KLS0KLS0gIGxldCBxICAgPSAiLXEiLCBBcmcuU2V0IHF1aWNrLAotLSAgICAgICAgICAgICJR dWljayByZXBsYWNlbWVudC4gSW50ZXJwcmV0ZXMgc3Vic3RpdHV0aW9uIGFzIHBsYWluIHRleHQu IgotLSAgYW5kIGYgICA9ICItZiIsIEFyZy5TZXQgZmlyc3QsICJSZXBsYWNlIGZpcnN0IG9jY3Vy cmVuY2UgaW4gbGluZSBvbmx5LiIKLS0gIGFuZCBpICAgPSAiLWkiLCBBcmcuU2V0IGlnbm9yZV9j YXNlLCAiSWdub3JlIGNhc2UuIgotLSAgYW5kIG9mcyA9ICItb2ZzIiwgQXJnLkludCAoZnVuIG4g LT4gb2Zmc2V0IDo9IG4pLAotLSAgICAgICAgICAgICJTdGFydCBtYXRjaGluZyBhdCBjb2x1bW4g bi4iCi0tCi0tICBhbmQgdXNhZ2UgPQotLSAgICAiVXNhZ2U6IHN1YnN0IFstcV0gWy1mXSBbLWld IFstb2ZzIG9mZnNldF0gcGF0dGVybiBzdWJzdGl0dXRpb25cblxuXAotLSAgICAgUmVhZHMgbGlu ZXMgZnJvbSBzdGFuZGFyZCBpbnB1dCBhbmQgcmVwbGFjZXMgb2NjdXJyZW5jZXMgb2ZcblwKLS0g ICAgIHRoZSBQRVJMLXN0eWxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBcInBhdHRlcm5cIiB3aXRoIFwi c3Vic3RpdHV0aW9uXCIsXG5cCi0tICAgICBwcmludGluZyB0aGUgcmVzdWx0IHRvIHN0YW5kYXJk IG91dHB1dC5cblwKLS0gICAgIEluIGRlZmF1bHQgbW9kZSB0aGUgY29udGVudHMgb2YgXCJzdWJz dGl0dXRpb25cIiB3aWxsIGJlIGludGVycHJldGVkXG5cCi0tICAgICBzaW1pbGFybHkgdG8gaXRz IGVxdWl2YWxlbnQgaW4gUEVSTC5cbiIKLS0KLS0gIGFuZCBhbm9uX2FyZyBhcmcgPQotLSAgICBt YXRjaCAhcGF0LCAhc3Vic3RyIHdpdGgKLS0gICAgfCBOb25lLCBfIC0+IHBhdCA6PSBTb21lIGFy ZwotLSAgICB8IF8sIE5vbmUgLT4gc3Vic3RyIDo9IFNvbWUgYXJnCi0tICAgIHwgXyAgICAgICAt PiByYWlzZSAoQXJnLkJhZCAidG9vIG1hbnkgYXJndW1lbnRzISIpIGluCi0tCi0tICBsZXQgYXJn cyA9IFtxOyBmOyBpOyBvZnNdIGluCi0tICBBcmcucGFyc2UgYXJncyBhbm9uX2FyZyB1c2FnZTsK LS0KLS0gIGxldCBmbGFncyA9IGlmICFpZ25vcmVfY2FzZSB0aGVuIFtgQ0FTRUxFU1NdIGVsc2Ug W10gaW4KLS0KLS0gIGxldCByZXgsIHNzdHIgPQotLSAgICBtYXRjaCAhcGF0LCAhc3Vic3RyIHdp dGgKLS0gICAgICB8IFNvbWUgcmV4LCBTb21lIHNzdHIgLT4gcmVnZXhwIH5mbGFncyByZXgsIHNz dHIKLS0gICAgICB8IF8gLT4gcHJlcnJfZW5kbGluZSAoU3lzLmFyZ3YuKDApIF4gIjogbm90IGVu b3VnaCBhcmd1bWVudHMhIik7Ci0tICAgICAgICAgICAgIEFyZy51c2FnZSBhcmdzIHVzYWdlOyBl eGl0IDEgaW4KLS0KLS0gIG1hdGNoICFxdWljaywgIWZpcnN0IHdpdGgKLS0gIHwgZmFsc2UsIGZh bHNlIC0+IGZ1biBzIC0+IHJlcGxhY2UgfnJleCB+cG9zOiFvZmZzZXQgfnRlbXBsOnNzdHIgcwot LSAgfCB0cnVlLCBmYWxzZSAgLT4gZnVuIHMgLT4gcXJlcGxhY2UgfnJleCB+cG9zOiFvZmZzZXQg fnRlbXBsOnNzdHIgcwotLSAgfCBmYWxzZSwgdHJ1ZSAgLT4gZnVuIHMgLT4gcmVwbGFjZV9maXJz dCB+cmV4IH5wb3M6IW9mZnNldCB+dGVtcGw6c3N0ciBzCi0tICB8IHRydWUsIHRydWUgICAtPiBm dW4gcyAtPiBxcmVwbGFjZV9maXJzdCB+cmV4IH5wb3M6IW9mZnNldCB+dGVtcGw6c3N0ciBzCi0t Ci0tbGV0IF8gPQotLSAgbGV0IHN1YnN0aXR1dGUgPSBwYXJzZV9hcmdzICgpIGluCi0tICBmb3Jl YWNoX2xpbmUgKGZ1biBsaW5lIC0+Ci0tICAgIHRyeSBwcmludF9lbmRsaW5lIChzdWJzdGl0dXRl IGxpbmUpCi0tICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHByaW50X2VuZGxpbmUgbGlu ZSkKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9wY3JlLm9wYW0gYi9idW5k bGVzL3BjcmUvcGNyZS1vY2FtbC9wY3JlLm9wYW0KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggNGVmMWU3N2U5Li4wMDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1s L3BjcmUub3BhbQotKysrIC9kZXYvbnVsbAotQEAgLTEsMjcgKzAsMCBAQAotLW9wYW0tdmVyc2lv bjogIjIuMCIKLS1tYWludGFpbmVyOiAiTWFya3VzIE1vdHRsIDxtYXJrdXMubW90dGxAZ21haWwu Y29tPiIKLS1hdXRob3JzOiBbICJNYXJrdXMgTW90dGwgPG1hcmt1cy5tb3R0bEBnbWFpbC5jb20+ IiBdCi0tbGljZW5zZTogIkxHUEwtMi4xKyB3aXRoIE9DYW1sIGxpbmtpbmcgZXhjZXB0aW9uIgot LWhvbWVwYWdlOiAiaHR0cHM6Ly9tbW90dGwuZ2l0aHViLmlvL3BjcmUtb2NhbWwiCi0tZG9jOiAi aHR0cHM6Ly9tbW90dGwuZ2l0aHViLmlvL3BjcmUtb2NhbWwvYXBpIgotLWRldi1yZXBvOiAiZ2l0 K2h0dHBzOi8vZ2l0aHViLmNvbS9tbW90dGwvcGNyZS1vY2FtbC5naXQiCi0tYnVnLXJlcG9ydHM6 ICJodHRwczovL2dpdGh1Yi5jb20vbW1vdHRsL3BjcmUtb2NhbWwvaXNzdWVzIgotLQotLWJ1aWxk OiBbCi0tICBbImR1bmUiICJzdWJzdCJdIHtwaW5uZWR9Ci0tICBbImR1bmUiICJidWlsZCIgIi1w IiBuYW1lICItaiIgam9ic10KLS1dCi0tCi0tZGVwZW5kczogWwotLSAgIm9jYW1sIiB7Pj0gIjQu MDQifQotLSAgImR1bmUiIHtidWlsZCAmID49ICIxLjQuMCJ9Ci0tICAiY29uZi1saWJwY3JlIiB7 YnVpbGR9Ci0tICAiYmFzZSIge2J1aWxkfQotLSAgImJhc2UtYnl0ZXMiCi0tXQotLQotLXN5bm9w c2lzOiAiQmluZGluZ3MgdG8gdGhlIFBlcmwgQ29tcGF0aWJpbGl0eSBSZWd1bGFyIEV4cHJlc3Np b25zIGxpYnJhcnkiCi0tCi0tZGVzY3JpcHRpb246ICIiIgotLXBjcmUtb2NhbWwgb2ZmZXJzIGxp YnJhcnkgZnVuY3Rpb25zIGZvciBzdHJpbmcgcGF0dGVybiBtYXRjaGluZyBhbmQKLS1zdWJzdGl0 dXRpb24sIHNpbWlsYXIgdG8gdGhlIGZ1bmN0aW9uYWxpdHkgb2ZmZXJlZCBieSB0aGUgUGVybCBs YW5ndWFnZS4iIiIKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9wcmUtdjcu My4wLUNIQU5HRVMudHh0IGIvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvcHJlLXY3LjMuMC1DSEFO R0VTLnR4dAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA5YmM5ODc1ZjAuLjAwMDAw MDAwMAotLS0tIGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvcHJlLXY3LjMuMC1DSEFOR0VTLnR4 dAotKysrIC9kZXYvbnVsbAotQEAgLTEsNjk4ICswLDAgQEAKLS0yMDE2LTAyLTI1OiAgTWlub3Ig dmVyc2lvbiByZWxlYXNlIHY3LjIuMzoKLS0KLS0gICAgICAgICAgICAgICBGaXhlZCBjYWxsb3V0 IGJ1ZyBpbnRyb2R1Y2VkIHdpdGggdjcuMi4wLgotLQotLSAgICAgICAgICAgICBUaGFua3MgdG8g UmFtYW4gVmFyYWJldHMgZm9yIHRoZSBidWcgcmVwb3J0IQotLQotLTIwMTYtMDItMjM6ICBGaXhl ZCBsaW5raW5nIHByb2JsZW0gd2l0aCBvbGQgdmVyc2lvbnMgb2YgUENSRSAoPCA4LjIwKS4KLS0K LS0gICAgICAgICAgICAgRml4ZWQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSB3aXRoIE9D YW1sIDw9IDMuMTIuCi0tCi0tMjAxNi0wMi0yMjogIEZpeGVkIGEgc3ViZ3JvdXAgbWF0Y2hpbmcg YnVnLgotLQotLSAgICAgICAgICAgICBUaGFua3MgdG8gQ2hlbmcgTG91IGZvciB0aGUgYnVnIHJl cG9ydCEKLS0KLS0yMDE1LTA4LTIxOiAgTWFkZSBHQyBsZXNzIGFnZ3Jlc3NpdmUgcmVjbGFpbWlu ZyByZWdleHBzIGFuZCBjaGFydGFibGVzLgotLQotLTIwMTQtMTItMTA6ICBGaXhlZCBhbm90aGVy IGxpbWl0IGhhbmRsaW5nIGJ1ZyBpbiB0aGUgZnVsbF9zcGxpdCBmdW5jdGlvbi4KLS0KLS0yMDE0 LTEyLTAyOiAgRml4ZWQgYSBsaW1pdCBoYW5kbGluZyBidWcgaW4gdGhlIGZ1bGxfc3BsaXQgZnVu Y3Rpb24uCi0tCi0tICAgICAgICAgICAgIFRoYW5rcyB0byBSdWRpIEdyaW5iZXJnIDxydWRpLmdy aW5iZXJnQGdtYWlsLmNvbT4gZm9yIHRoZSByZXBvcnQhCi0tCi0tMjAxNC0xMC0yMzogIEZpeGVk IHN0cmluZyBoYW5kbGluZyBmb3IgbmV3IE9DYW1sIHZlcnNpb24gNC4wMiAoU3RyaW5nL0J5dGVz Ci0tICAgICAgICAgICAgIG1vZHVsZXMpLiAgUmVxdWlyZXMgbmV3IGZpbmRsaWIgdmVyc2lvbiAo Pj0gMS41KS4KLS0KLS0yMDE0LTA3LTA2OiAgTW92ZWQgdG8gR2l0SHViLgotLQotLTIwMTQtMDYt MDQ6ICBNdWx0aXBsZSBidWcgZml4ZXM6Ci0tCi0tICAgICAgICAgICAgICAgKiBBbGxjYXRpb24g YnVnIHdoZW4gcGVyZm9ybWluZyBjYWxsb3V0cwotLSAgICAgICAgICAgICAgICogVW5wcm90ZWN0 ZWQgcm9vdCB3aGVuIHBlcmZvcm1pbmcgY2FsbG91dHMKLS0gICAgICAgICAgICAgICAqIE1vcmUg cG9ydGFibGUgb2Zmc2V0IGNvcHlpbmcgaW4gdGhlIEMtc3R1YnMKLS0gICAgICAgICAgICAgICAq IEZpeGVkIGEgUEVSTC1jb21wYXRpYmlsaXR5IGJ1ZyBpbiB0aGUgc3BsaXR0aW5nIHJvdXRpbmVz Ci0tCi0tICAgICAgICAgICAgVGhlIGJ1ZyBmaXhlcyByZXF1aXJlZCBhIG1pbm9yIEFQSS1jaGFu Z2UgaW4gYW4gdW5zYWZlIGZ1bmN0aW9uLAotLSAgICAgICAgICAgIHdoaWNoIGlzIGFsbW9zdCBz dXJlbHkgbm90IGRpcmVjdGx5IGNhbGxlZCBieSBhbnkgdXNlcnMuCi0tCi0tMjAxMi0wNy0yMDog IERvd25ncmFkZWQgZmluZGxpYiB2ZXJzaW9uIHJlcXVpcmVtZW50IHRvIHN1cHBvcnQgdGhlIERl YmlhbgotLSAgICAgICAgICAgICB0ZXN0aW5nIGJyYW5jaC4KLS0KLS0gICAgICAgICAgICAgQWRk ZWQgLS13aXRoLXBjcmUtY29uZmlnIGZsYWcgdG8gY29uZmlndXJlIGxvY2F0aW9uIG9mIFBDUkUK LS0gICAgICAgICAgICAgY29uZmlndXJhdGlvbiBnZW5lcmF0b3IuCi0tCi0tMjAxMi0wNy0xNTog IE5ldyBtYWpvciByZWxlYXNlIHZlcnNpb24gNy4wLjA6Ci0tCi0tICAgICAgICAgICAgICAgKiBV cGdyYWRlZCB0byBPQ2FtbCA0LjAwCi0tICAgICAgICAgICAgICAgKiBTd2l0Y2hlZCB0byBPYXNp cyBmb3IgcGFja2FnaW5nCi0tICAgICAgICAgICAgICAgKiBTd2l0Y2hlZCB0byBPQ2FtbEJ1aWxk IGZvciB0aGUgYnVpbGQgcHJvY2VzcwotLSAgICAgICAgICAgICAgICogUmV3cm90ZSBSRUFETUUg aW4gTWFya2Rvd24KLS0gICAgICAgICAgICAgICAqIEFkZGVkIHN0cmljdGVyIGNvbXBpbGF0aW9u IGZsYWdzCi0tICAgICAgICAgICAgICAgKiBNaW5vciBidWdmaXhlcwotLQotLTIwMTItMDEtMDQ6 ICBGaXhlZCBuYXRpdmUgY29kZSBkZWJ1ZyBidWlsZCB0YXJnZXQgYnkgdXBkYXRpbmcgT0NhbWxN YWtlZmlsZS4KLS0KLS0gICAgICAgICAgICAgVGhhbmtzIHRvIFN0w6lwaGFuZSBHbG9uZHUgPGds b25kdUBkZWJpYW4ub3JnPiBmb3IgdGhlIHBhdGNoIQotLQotLTIwMTEtMTItMTU6ICAgRml4ZWQg YSBXaW5kb3dzIHBvcnRhYmlsaXR5IGJ1ZyBpbiB0aGUgQy1iaW5kaW5ncy4KLS0KLS0gICAgICAg ICAgICAgVGhhbmtzIHRvIEV2Z2VuaWkgTGVwaWtoaW4gPGpvaG5sZXBpa2hpbkBnbWFpbC5jb20+ IGZvciB0aGUgcGF0Y2ghCi0tCi0tMjAxMS0xMS0wOTogIFVwZGF0ZWQgT0NhbWxNYWtlZmlsZSB0 byBmaXggbGlua2luZyBvcmRlci4KLS0KLS0yMDExLTAxLTE2OiAgQWRkZWQgc3VwcG9ydCBmb3Ig bGltaXQgcmVjdXJzaW9uIGZsYWcuCi0tCi0tICAgICAgICAgICAgIFRoYW5rcyB0byBEZWxwaGlu IExlY3VjcSA8RGVscGhpbi5MRUNVQ1FAM2RzLmNvbT4gZm9yIHRoZSBwYXRjaCEKLS0KLS0yMDEw LTEwLTMxOiAgSW1wcm92ZWQgV2luZG93cyBzdXBwb3J0IHdpdGggTVNWQy4KLS0KLS0gICAgICAg ICAgICAgVGhhbmtzIHRvIFN5bHZhaW4gTGUgR2FsbCA8c3lsdmFpbkBsZS1nYWxsLm5ldD4gZm9y IHRoZSBwYXRjaCEKLS0KLS0yMDEwLTA0LTAxOiAgQWRkZWQgbmV3IGZ1bmN0aW9uOgotLQotLSAg ICAgICAgICAgICAgICogcmVnZXhwX29yCi0tCi0tMjAwOS0wNi0yMDogIEZpeGVkIGJ1ZyBpbiBj b25maWd1cmF0aW9uIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gYSBzZWdmYXVsdC4KLS0K LS0gICAgICAgICAgICAgVGhhbmtzIHRvIEdlcmQgU3RvbHBtYW5uIDxnZXJkQGdlcmQtc3RvbHBt YW5uLmRlPiBmb3IgdGhlIHBhdGNoIQotLQotLTIwMDktMDUtMDc6ICBDaGFuZ2VkIEFQSSB3cnQu IGVycm9yIGhhbmRsaW5nIGFuZCB0aHVzIG1hZGUgYSBtYWpvciByZWxlYXNlLgotLQotLSAgICAg ICAgICAgICBJbXByb3ZlZCBiZWhhdmlvciBpbiB0aGUgcHJlc2VuY2Ugb2YgcmVjdXJzaW9uIGxp bWl0IGVycm9ycy4KLS0gICAgICAgICAgICAgVGhhbmtzIHRvIE1hcnRpbiBKYW1ib24gPG1hcnRp bmpAbXlsaWZlLmNvbT4gZm9yIHRoaXMgcGF0Y2ghCi0tCi0tMjAwOS0wNC0yMzogIEZpeGVkIGJ1 aWxkIHByb2JsZW0gb24gTWluR1cuCi0tCi0tICAgICAgICAgICAgIFRoYW5rcyB0byBHZXJkIFN0 b2xwbWFubiA8Z2VyZEBnZXJkLXN0b2xwbWFubi5kZT4gZm9yIHRoZSBwYXRjaCEKLS0KLS0yMDA5 LTAzLTA4OiAgRml4ZWQgYnVpbGQgcHJvYmxlbSBvbiBNYWMgT1MgWCB3aXRoIG1hY3BvcnRzLgot LQotLSAgICAgICAgICAgICBUaGFua3MgdG8gUmFscGggRG91Z2xhc3MgPHJhbHBoQGdyYXlza2ll cy5uZXQ+IGZvciB0aGUKLS0gICAgICAgICAgICAgaW5pdGlhbCBwYXRjaC4KLS0KLS0gICAgICAg ICAgICAgVXBkYXRlIE9DYW1sTWFrZWZpbGUuCi0tCi0tICAgICAgICAgICAgIEltcHJvdmVkIEdv ZGktZGlzdHJpYnV0aW9uLgotLQotLTIwMDgtMDUtMDY6ICBGaXhlZCBidWlsZCBwcm9ibGVtIHdp dGggbmV3ZXIgdmVyc2lvbnMgb2YgUENSRS4KLS0KLS0yMDA4LTAzLTE0OiAgU3luY2VkIHdpdGgg SmFuZSBTdHJlZXQgdHJlZS4KLS0KLS0yMDA4LTAxLTI1OiAgQWRkZWQgbmV3IGZ1bmN0aW9uOgot LQotLSAgICAgICAgICAgICAgICogbmFtZXMKLS0KLS0gICAgICAgICAgICAgVGhpcyBmdW5jdGlv biByZXR1cm5zIHRoZSBuYW1lcyBvZiBhbGwgbmFtZWQgc3Vic3RyaW5ncyBpbiBhCi0tICAgICAg ICAgICAgIHJlZ3VsYXIgZXhwcmVzc2lvbi4KLS0KLS0gICAgICAgICAgICAgVGhhbmtzIHRvIEJl bmVkaWt0IEdydW5kbWFubiA8YmdydW5kbWFubkBqYW5lc3RyZWV0LmNvbT4KLS0gICAgICAgICAg ICAgZm9yIHRoZSBwYXRjaCEKLS0KLS0yMDA3LTA3LTEyOiAgSW1wcm92ZWQgYnVpbGQgc2NyaXB0 cyBmb3IgV2luZG93cy4KLS0KLS0gICAgICAgICAgICAgVGhhbmtzIHRvIENocmlzdG9waGUgVHJv ZXN0bGVyCi0tICAgICAgICAgICAgIDxDaHJpc3RvcGhlLlRyb2VzdGxlckB1bWguYWMuYmU+IGZv ciB0aGUgcGF0Y2ghCi0tCi0tMjAwNy0wNy0xMjogIEltcHJvdmVkIGRvY3VtZW50YXRpb24gZm9y IFdpbjMyIGJ1aWxkcywgYW5kIGFkZGVkIHNvbWUgYnVpbGQKLS0gICAgICAgICAgICAgc2NyaXB0 cyB1c2FibGUgb24gV2luZG93cy4KLS0KLS0gICAgICAgICAgICAgVGhhbmtzIHRvIENocmlzdG9w aGUgVHJvZXN0bGVyCi0tICAgICAgICAgICAgIDxDaHJpc3RvcGhlLlRyb2VzdGxlckB1bWguYWMu YmU+IGZvciB0aGlzIGNvbnRyaWJ1dGlvbiEKLS0KLS0yMDA3LTA0LTIzOiAgY2FsbGJhY2tfZXhu IC0+IGNhbWxfY2FsbGJhY2tfZXhuLgotLQotLSAgICAgICAgICAgICBVcGRhdGVkIE9DYW1sTWFr ZWZpbGUuCi0tCi0tMjAwNi0xMS0yMjogIFVwZGF0ZWQgT0NhbWxNYWtlZmlsZS4KLS0KLS0yMDA2 LTA2LTExOiAgVXBkYXRlZCB0byBwY3JlLTUuMCEKLS0KLS0gICAgICAgICAgICAgTmV3IHJlcHJl c2VudGF0aW9uIGZvciBjYWxsYmFja3M6IHRoZXkgbm93IHRha2Ugb25seSBvbmUKLS0gICAgICAg ICAgICAgYXJndW1lbnQgKGEgcmVjb3JkIG9mIHRoZSBjYWxsYmFjayBkYXRhKS4KLS0KLS0gICAg ICAgICAgICAgQWRkZWQgcGFydGlhbCBtYXRjaGluZyBhbmQgYXV0byBjYWxsb3V0cy4KLS0KLS0y MDA2LTAxLTE2OiAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLgotLQotLSAgICAgICAgICAgICBSZW1v dmVkIGEgc3VwZXJmbHVvdXMgYmluZGluZy4KLS0KLS0yMDA1LTA4LTE4OiAgRml4ZWQgYSBzbWFs bCBjb21waWxhdGlvbiBwcm9ibGVtIG9uIHJhcmUgcGxhdGZvcm1zIGJ5Ci0tICAgICAgICAgICAg IHVwZ3JhZGluZyBPQ2FtbE1ha2VmaWxlLgotLQotLTIwMDUtMDYtMDg6ICBSZWxheGVkIGxpY2Vu c2UuICBGaXhlZCBjb3B5cmlnaHQgaGVhZGVycy4KLS0KLS0yMDA1LTA1LTMxOiAgRml4ZWQgc29t ZSB1bmNsZWFubGluZXNzIHJlcG9ydGVkIGJ5IFNhZmZpcmUgKEZGSS10eXBlIGNoZWNrZXIpLgot LQotLTIwMDQtMDktMTc6ICBGaXhlZCBhIGJ1ZyBjb25jZXJuaW5nIG51bGwgcGF0dGVybnMgaW4g ZXhlY19hbGwgKGV4dHJhY3RfYWxsCi0tICAgICAgICAgICAgIGFuZCBleHRyYWN0X2FsbF9vcHQg YXJlIGFsc28gYWZmZWN0ZWQpLgotLQotLSAgICAgICAgICAgICBVcGRhdGVkIE9DYW1sTWFrZWZp bGUuCi0tCi0tMjAwNC0wNS0xOTogIFVwZGF0ZWQgTWFrZWZpbGUubWluZ3cuCi0tICAgICAgICAg ICAgIFRoYW5rcyB0byBKZWZmIEhlbnJpa3NvbiA8amVoZW5yaWtAeWFob28uY29tPiBmb3IgdGhl IHBhdGNoIQotLQotLSAgICAgICAgICAgICBVcGRhdGVkIE9DYW1sTWFrZWZpbGUuCi0tCi0tMjAw NC0wNC0yOTogIENoYW5nZWQgYmVoYXZpb3VyIG9mICJnZXRfc3Vic3RyaW5nIiEhIQotLQotLSAg ICAgICAgICAgICBJdCBub3cgZG9lcyBub3QgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgYW55bW9y ZSBpZiBhbgotLSAgICAgICAgICAgICBhY2Nlc3NlZCBzdWJzdHJpbmcgd2FzIG5vdCBjYXB0dXJl ZC4gIEl0IHJhaXNlcyB0aGUgZXhjZXB0aW9uCi0tICAgICAgICAgICAgICJOb3RfZm91bmQiIGlu c3RlYWQuCi0tCi0tICAgICAgICAgICAgIFRocmVlIG5ldyBmdW5jdGlvbnM6Ci0tCi0tICAgICAg ICAgICAgICAgKiBnZXRfb3B0X3N1YnN0cmluZ3MKLS0gICAgICAgICAgICAgICAqIGV4dHJhY3Rf b3B0Ci0tICAgICAgICAgICAgICAgKiBleHRyYWN0X2FsbF9vcHQKLS0KLS0gICAgICAgICAgICAg VGhlc2UgYmVoYXZlIGxpa2UgdGhlIGZ1bmN0aW9ucyB3aXRob3V0ICJvcHQiLCBidXQgcmV0dXJu Ci0tICAgICAgICAgICAgICJTb21lIHN1YnN0cmluZyIgaWYgYSBzdWJzdHJpbmcgd2FzIGNhcHR1 cmVkLCBhbmQgIk5vbmUiCi0tICAgICAgICAgICAgIG90aGVyd2lzZS4KLS0KLS0yMDA0LTA0LTI3 OiAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLgotLQotLTIwMDQtMDQtMjQ6ICBVcGRhdGVkIE9DYW1s TWFrZWZpbGUuCi0tCi0tMjAwNC0wMy0yODogIENoYW5nZWQgaW50ZXJmYWNlIHRvIGJ1aWxkLXRp bWUgY29uZmlndXJhdGlvbiBmdW5jdGlvbnMKLS0gICAgICAgICAgICAgb2YgUENSRS4KLS0KLS0g ICAgICAgICAgICAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLgotLQotLTIwMDQtMDItMjE6ICBBZGRl ZCBDQU1McHJpbSBpbiB0aGUgQy1pbnRlcmZhY2Ugd2hlcmUgYXBwcm9wcmlhdGUuCi0tCi0tMjAw NC0wMi0wODogIEZpeGVkIGEgbWlub3IgYnVnIGNvbmNlcm5pbmcgcmV0dXJuaW5nIHVuaXQgdmFs dWVzIGZyb20gQy4KLS0KLS0yMDA0LTAxLTMxOiAgQWRkZWQgcGNyZV9tYWtlLndpbjMyL01ha2Vm aWxlLm1pbmd3LiBUaGFua3MgdG8gSmVmZnJleQotLSAgICAgICAgICAgICBIZW5yaWtzb24gPEpF RkhFTkBTQUZFQ08uY29tPiBmb3IgdGhpcyBjb250cmlidXRpb24hCi0tCi0tICAgICAgICAgICAg IFVwZGF0ZSBPQ2FtbE1ha2VmaWxlLgotLQotLTIwMDQtMDEtMTM6ICBVcGRhdGVkIHBjcmVfbWFr ZS53aW4zMi9wY3JlLmguCi0tCi0tMjAwMy0xMi0zMDogIEZpeGVkIGRvY3VtZW50YXRpb24uCi0t Ci0tMjAwMy0xMi0yMTogIFVwZGF0ZWQgdG8gcGNyZS00LjUhCi0tCi0tICAgICAgICAgICAgIE5l dyBmdW5jdGlvbjoKLS0KLS0gICAgICAgICAgICAgICAqIGNvbmZpZ19zdGFja3JlY3Vyc2UKLS0K LS0gICAgICAgICAgICAgTmV3IGV4Y2VwdGlvbjoKLS0KLS0gICAgICAgICAgICAgICAqIEJhZFVU RjhPZmZzZXQKLS0KLS0gICAgICAgICAgICAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLgotLQotLTIw MDMtMTItMTk6ICBGaXhlZCBhIHNtYWxsIChidXQgcHJvYmFibHkgdW5ub3RpY2FibGUpIGJ1ZyBj b25jZXJuaW5nCi0tICAgICAgICAgICAgIGFsbG9jYXRpb24gb2Ygb3B0aW9uYWwgdmFsdWVzIGlu IHRoZSBDLXN0dWJzLgotLQotLTIwMDMtMTItMTI6ICBVcGRhdGVkIE9DYW1sTWFrZWZpbGUuIFJl bmFtZWQgc3R1YnMgKGludmlzaWJsZSB0byB1c2VycykuCi0tCi0tMjAwMy0xMS0xNjogIFVwZGF0 ZWQgcGNyZV9tYWtlLndpbjMyL3BjcmUuaCB0byByZWZsZWN0IG5ld2VzdCBQQ1JFLXZlcnNpb24u Ci0tICAgICAgICAgICAgIE1heSBoZWxwIFdpbmRvd3MgdXNlcnMuCi0tCi0tMjAwMy0xMC0wODog IFVwZ3JhZGVkIHRvIHBjcmUtNC40IQotLQotLSAgICAgICAgICAgICBOZXcgZmxhZyBmb3IgY29t cGlsaW5nIHBhdHRlcm5zOiBOT19VVEY4X0NIRUNLCi0tICAgICAgICAgICAgIE5ldyBleGNlcHRp b246IEJhZFVURjgKLS0KLS0gICAgICAgICAgICAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLgotLQot LTIwMDMtMDktMzA6ICBGaXhlZCBhIGJ1ZyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLS0gICAgICAg ICAgICAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLgotLQotLTIwMDMtMDYtMTc6ICBGaXhlZCBhIGJ1 ZyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLS0gICAgICAgICAgICAgVXBkYXRlZCBPQ2FtbE1ha2Vm aWxlLgotLQotLTIwMDMtMDUtMjk6ICBVcGRhdGVkIHRvIHBjcmUtNC4zIQotLQotLSAgICAgICAg ICAgICBNYWpvciBjaGFuZ2U6IGNhbGxvdXRzIGFyZSBub3cgZnVsbHkgc3VwcG9ydGVkISBUaGlz IGFsbG93cwotLSAgICAgICAgICAgICB0aGUgbWF0Y2hpbmcgZW5naW5lIGNhbGwgT0NhbWwtY29k ZSB3aGlsZSBtYXRjaGluZyAtIHF1aXRlCi0tICAgICAgICAgICAgIHBvd2VyZnVsISBQbGVhc2Ug c2VlIHRoZSBpbnRlcmZhY2Ugc3BlY2lmaWNhdGlvbiBmb3IgbW9yZQotLSAgICAgICAgICAgICBp bmZvcm1hdGlvbi4KLS0KLS0gICAgICAgICAgICAgTWFueSBzbWFsbCBjaGFuZ2VzIChpbXByb3Zl bWVudHMpIGluIEMtY29kZS4gVXBkYXRlZAotLSAgICAgICAgICAgICBkb2N1bWVudGF0aW9uLgot LQotLTIwMDMtMDQtMDg6ICBVcGRhdGVkIE9DYW1sTWFrZWZpbGUuIFJlZm9ybWF0dGVkIGRvY3Vt ZW50YXRpb24uCi0tCi0tMjAwMy0wMy0yMDogIEFkZGVkIG5ldyBmdW5jdGlvbiAiZ2V0X3N1Ympl Y3QiLiBQYXRjaGVkIE9DYW1sTWFrZWZpbGUuCi0tCi0tMjAwMy0wMy0xODogIE1ham9yIHVwZGF0 ZTogdXBncmFkZWQgdG8gcGNyZS00LjEhCi0tCi0tICAgICAgICAgICAgIEJldHRlciBVVEY4LXN1 cHBvcnQuCi0tICAgICAgICAgICAgIE5ldyBmbGFnICJOT19BVVRPX0NBUFRVUkUiLgotLQotLSAg ICAgICAgICAgICBOZXcgdmFsdWVzOgotLQotLSAgICAgICAgICAgICAgICogY29uZmlnX3V0ZjgK LS0gICAgICAgICAgICAgICAqIGNvbmZpZ19uZXdsaW5lCi0tICAgICAgICAgICAgICAgKiBjb25m aWdfbGlua19zaXplCi0tICAgICAgICAgICAgICAgKiBjb25maWdfbWF0Y2hfbGltaXQKLS0KLS0g ICAgICAgICAgICAgUmVuYW1lZCBhbGwgb2NjdXJyZW5jZXMgb2YgImZpcnN0Y2hhciIgdG8gImZp cnN0Ynl0ZSIuCi0tCi0tICAgICAgICAgICAgIE5ldyBmdW5jdGlvbnM6Ci0tCi0tICAgICAgICAg ICAgICAgKiBzdHVkeXNpemUKLS0gICAgICAgICAgICAgICAqIG5hbWVjb3VudAotLSAgICAgICAg ICAgICAgICogbmFtZWVudHJ5c2l6ZQotLSAgICAgICAgICAgICAgICogZ2V0X3N0cmluZ251bWJl cgotLQotLSAgICAgICAgICAgICBVcGRhdGVkIE9DYW1sTWFrZWZpbGUuCi0tCi0tMjAwMy0wMS0w NzogIFVwZGF0ZWQgT0NhbWxNYWtlZmlsZSB0byBtYWtlIHVzZSBvZiAiZmluZGxpYiIuCi0tCi0t ICAgICAgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFVURi04IGNoYXJhY3RlciBlbmNvZGluZ3Mu Ci0tCi0tICAgICAgICAgICAgIEJldHRlciBpbnN0YWxsYXRpb24gYW5kIGRvY3VtZW50YXRpb24g Zm9yIFdpbjMyLgotLQotLSAgICAgICAgICAgICBUaGFua3MgdG8gQXJ0ZW0gUHJpc3l6bnVrIDx0 ZW1hQHNpdC5raWV2LnVhPiBmb3IgdGhlIGFib3ZlCi0tICAgICAgICAgICAgIHBhdGNoZXMhCi0t Ci0tMjAwMi0xMi0xNDogIEZpeGVkIGEgYnVnIGNvbmNlcm5pbmcgemVyby1zaXplZCBtYXRjaGVz IGVmZmVjdGluZwotLSAgICAgICAgICAgICAicmVwbGFjZSIsICJxcmVwbGFjZSIsICJzdWJzdGl0 dXRlX3N1YnN0cmluZ3MiIGFuZAotLSAgICAgICAgICAgICAic3Vic3RpdHV0ZSIuCi0tCi0tICAg ICAgICAgICAgIFVwZGF0ZWQgT0NhbWxNYWtlZmlsZS4KLS0KLS0yMDAyLTEyLTA4OiAgSW1wcm92 ZWQgZG9jdW1lbnRhdGlvbiBvZiAicGNyZV9leGVjIi4KLS0KLS0yMDAyLTExLTI0OiAgRml4ZWQg YSBidWcgaW4gImZ1bGxfc3BsaXQiIGNvbmNlcm5pbmcgbWF0Y2hlZCBzdWJncm91cHMuCi0tCi0t MjAwMi0xMS0xMjogIEFkZGVkIGEgbmV3IGZ1bmN0aW9uICJleHRyYWN0X2FsbCIgKHNlZSBpbnRl cmZhY2UKLS0gICAgICAgICAgICAgZG9jdW1lbnRhdGlvbikuCi0tCi0tMjAwMi0wOC0xNjogIEZp eGVkIGEgYnVnIGluIHRoZSAic3BsaXQiLWZ1bmN0aW9uOgotLQotLSAgICAgICAgICAgICBUaGUg UGVybC1zcGxpdHRpbmcgc2VtYW50aWNzIHdhcyBub3QgY29tcGxldGVseSBhZGhlcmVkIHRvOgot LSAgICAgICAgICAgICBsZWFkaW5nIHdoaXRlc3BhY2Ugd2FzIHN0cmlwcGVkIGFmdGVyIHRoZSBt YXRjaGluZyBwcm9jZXNzCi0tICAgICAgICAgICAgIHJhdGhlciB0aGFuIGJlZm9yZSwgd2hpY2gg bGVhZCB0byBpbmNvbXBhdGlibGUgYmVoYXZpb3VyCi0tICAgICAgICAgICAgIHdoZW4gYSBtYXhp bXVtIGJvdW5kIHdhcyB1c2VkLgotLQotLSAgICAgICAgICAgICBUaGFua3MgdG8gWXV0YWthIE9p d2EgPG9pd2FAeWwuaXMucy51LXRva3lvLmFjLmpwPiBmb3IgdGhlCi0tICAgICAgICAgICAgIGJ1 ZyByZXBvcnQhCi0tCi0tICAgICAgICAgICAgIFVwZGF0ZWQgT0NhbWxNYWtlZmlsZS4KLS0KLS0y MDAyLTA3LTMxOiAgRml4ZWQgYSBidWcgaW4gdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6Ci0tCi0t ICAgICAgICAgICAgICAgKiByZXBsYWNlCi0tICAgICAgICAgICAgICAgKiBxcmVwbGFjZQotLSAg ICAgICAgICAgICAgICogc3Vic3RpdHV0ZV9zdWJzdHJpbmdzCi0tCi0tICAgICAgICAgICAgIFRy YW5zZm9ybWVkIG1vc3QgcGFydCBvZiB0aGUgbGlicmFyeSB0byBtYWtlIGl0IHNsaWdodGx5Ci0t ICAgICAgICAgICAgIG1vcmUgZWZmaWNpZW50IGFuZCBzaW1wbGUuIFRoZSBpbnRlcmZhY2UgaXMg c3RpbGwgdGhlIHNhbWUhCi0tCi0tICAgICAgICAgICAgIFVwZGF0ZWQgT0NhbWxNYWtlZmlsZSAr IGRvY3VtZW50YXRpb24uCi0tCi0tMjAwMi0wNy0xNTogIEZpeGVkIGEgbWlzdGFrZSBpbiB0aGUg ZG9jdW1lbnRhdGlvbi4KLS0KLS0yMDAyLTA1LTA1OiAgRml4ZWQgYSBidWcgd2l0aCB0aGUgZ2Vu ZXJhdGlvbiBvZiBieXRlLWNvZGUgbGlicmFyaWVzIHRoYXQKLS0gICAgICAgICAgICAgZHluYW1p Y2FsbHkgbGluayB0aGUgUENSRS4KLS0KLS0yMDAyLTA1LTAxOiAgUmVtb3ZlZCBDLWxpYnJhcnkg ZnJvbSBkaXN0cmlidXRpb24hIFVzZXJzIG11c3QgaW5zdGFsbCBpdAotLSAgICAgICAgICAgICBv biB0aGVpciBvd24gbm93LiBSZW9yZ2FuaXplZCB3aG9sZSBkaXN0cmlidXRpb24gYW5kIHVwZGF0 ZWQKLS0gICAgICAgICAgICAgT0NhbWxNYWtlZmlsZSBhZ2FpbiBmb3IgYmV0dGVyIHN1cHBvcnQg b2YgZHluYW1pYyBhbmQvb3IKLS0gICAgICAgICAgICAgc3RhdGljIGxpYnJhcmllcy4KLS0KLS0y MDAyLTA0LTMwOiAgVXBkYXRlZCBPY2FtbE1ha2VmaWxlOiBpdCBkb2VzIG5vdCBhc2sgZm9yIGNv bmZpcm1hdGlvbgotLSAgICAgICAgICAgICBkdXJpbmcgaW5zdGFsbGF0aW9uIGFueW1vcmUhCi0t Ci0tMjAwMi0wMy0wNjogIFVwZ3JhZGVkIHRvIHBjcmUtMy45LiBUaGlzIHNob3VsZCBub3QgY2hh bmdlIGFueXRoaW5nIGZvcgotLSAgICAgICAgICAgICBPQ2FtbC11c2Vycy4KLS0KLS0yMDAyLTAz LTAxOiAgVXBkYXRlZCBPY2FtbE1ha2VmaWxlLgotLQotLTIwMDItMDItMjQ6ICBTZXBhcmF0ZWQg Y29tcGlsYXRpb24gb2YgbGlicmFyeSBhbmQgZXhhbXBsZXMgdG8gcHJldmVudAotLSAgICAgICAg ICAgICBjb25mdXNpb25zIHdoZW4gdGhlIGxpYnJhcnkgbmVlZHMgdG8gYmUgaW5zdGFsbGVkIGJl Zm9yZQotLSAgICAgICAgICAgICBvbmUgY2FuIGJ1aWxkIHRoZSBleGFtcGxlcy4KLS0KLS0yMDAy LTAyLTE1OiAgRml4ZWQgYSBidWcgaW4gdGhlIHBjcmVfZXhlYy1mdW5jdGlvbiB3aGljaCB3YXMg aW50cm9kdWNlZAotLSAgICAgICAgICAgICB0ZW4gZGF5cyBhZ28gZHVyaW5nIGNvcnJlY3Rpb24g b2YgYW5vdGhlciBidWcgKHRoYW5rcyB0bwotLSAgICAgICAgICAgICBHZXJkIFN0b2xwbWFubiBm b3IgdGhlIHJlcG9ydCEpLgotLQotLTIwMDItMDItMTU6ICBBZGRlZCB0aGUgb3B0aW9uIHRvIGNv bXBpbGUgdGhlIGxpYnJhcnkgc3RhdGljYWxseSBvbmx5LgotLQotLSAgICAgICAgICAgICBVcGRh dGVkIElOU1RBTEwtbm90ZXMgdG8gZXhwbGFpbiBwb3NzaWJsZSBpbnN0YWxsYXRpb24KLS0gICAg ICAgICAgICAgcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoIHN1cHBvcnQgb2YgZHluYW1pYyBsaW5r aW5nLgotLQotLSAgICAgICAgICAgICBBZGRlZCBNRVRBLWZpbGUgZm9yIGZpbmRsaWIuCi0tCi0t MjAwMi0wMi0xMjogIFJld3JvdGUgaW50ZXJmYWNlIGRvY3VtZW50YXRpb24gdG8gc3VwcG9ydCBP Q2FtbGRvYy4KLS0KLS0gICAgICAgICAgICAgRml4ZWQgYSBwb3J0YWJpbGl0eSBidWcgd2l0aCBz aGFyZWQgbGlicmFyaWVzLgotLQotLTIwMDItMDItMTA6ICBSZW1vdmVkIHByb2plY3QgZnJvbSBT b3VyY2Vmb3JnZSBmb3Igc2ltcGxlciBtYWludGFpbmFuY2UuCi0tCi0tMjAwMi0wMi0wNzogIElt cG9ydGFudCBuZXdzOiBsaWJyYXJ5IGlzIGxpbmtlZCBkeW5hbWljYWxseSBub3cgYnkgZGVmYXVs dC4KLS0KLS0yMDAyLTAyLTA2OiAgRml4ZWQgYSBzdHVwaWQgYnVnIGFmZmVjdGluZyB0aGUgZm9s bG93aW5nIGZ1bmN0aW9ucwotLSAgICAgICAgICAgICAodGhhbmtzIHRvIEphY2VrIENocnphc3pj eiBmb3IgdGhlIGJ1ZyByZXBvcnQhKToKLS0KLS0gICAgICAgICAgICAgICAqIG51bV9vZl9zdWJz Ci0tICAgICAgICAgICAgICAgKiBnZXRfc3Vic3RyaW5nCi0tICAgICAgICAgICAgICAgKiBnZXRf c3Vic3RyaW5nX29mcwotLSAgICAgICAgICAgICAgICogZ2V0X3N1YnN0cmluZ3MKLS0gICAgICAg ICAgICAgICAqIGV4dHJhY3QKLS0KLS0gICAgICAgICAgICAgQWxzbyBkb25lOiBjb252ZXJ0ZWQg bGl0ZXJhbCBwYXR0ZXJuIHN0cmluZ3MgaW4gdGhlIGxpYnJhcnkKLS0gICAgICAgICAgICAgYW5k IHRoZSBjbG9jLWV4YW1wbGUgc28gdGhhdCB0aGUgZXNjYXBlIGNoYXIgKGJhY2tzbGFzaCkgZG9l cwotLSAgICAgICAgICAgICBub3QgY2F1c2Ugd2FybmluZ3MgYW55bW9yZSB3aXRoIHRoZSBuZXcg T0NhbWwtcmVsZWFzZS4gVGhlCi0tICAgICAgICAgICAgIGxhdHRlciBpcyBtb3JlIHBhcmFub2lk IGFib3V0IHVua25vd24gZXNjYXBlIGNvbWJpbmF0aW9ucywKLS0gICAgICAgICAgICAgcmVxdWly aW5nIHRoZSB1c2VyIHRvIGFkZCBleHRyYSBiYWNrc2xhc2hlcy4KLS0KLS0yMDAyLTAxLTA3OiAg Rml4ZWQgYSBzdHVwaWQgYnVnOiB0aGUgcG9zaXRpb24gYXJndW1lbnQgKG9mZnNldCkgd2FzCi0t ICAgICAgICAgICAgIG5vdCBjb3JyZWN0bHkgaGFuZGxlZCBpbiByZXBsYWNlbWVudCBhbmQgc3Vi c3RpdHV0aW9uCi0tICAgICAgICAgICAgIGZ1bmN0aW9ucywgbGVhZGluZyB0byB3cm9uZyByZXN1 bHRzLiBBcyBpdCBzZWVtcywgcGVvcGxlCi0tICAgICAgICAgICAgIHNlbGRvbSB1c2UgYXJndW1l bnRzIG90aGVyIHRoYW4gemVyby4uLgotLQotLSAgICAgICAgICAgICBUaGUgInN1YnN0Ii1leGFt cGxlIG5vdyBhc3N1bWVzIHRoYXQgb2Zmc2V0cyBvdGhlciB0aGFuIHplcm8KLS0gICAgICAgICAg ICAgc2hvdWxkIG5vdCBsZWFkIHRvIGFuIGVycm9yIGlmIGl0IGV4Y2VlZHMgdGhlIGxpbmUgbGVu Z3RoLgotLSAgICAgICAgICAgICBUaGUgbGluZSBpcyBqdXN0IGNvcGllZCBpbnN0ZWFkLgotLQot LTIwMDEtMTItMjg6ICBBZGRlZCBSRUFETUUud2luMzIgKGNvdXJ0ZXN5IG9mIEpvaG4gVy4gU21h bGwpLgotLQotLSAgICAgICAgICAgICBVcGRhdGVkIFJFQURNRSBzbyB0aGF0IGl0IGlzIGdlbmVy YXRlZCBieSBIZXZlYS4KLS0KLS0yMDAxLTExLTE5OiAgVXBncmFkZWQgdG8gdGhlIG5ld2VzdCBy ZWxlYXNlIG9mIHRoZSB1bmRlcmx5aW5nIEMtbGlicmFyeQotLSAgICAgICAgICAgICAoUENSRS0z LjcpLgotLQotLSAgICAgICAgICAgICBBZGRlZCBhIHRpbnkgcGF0Y2ggdG8gc2F0aXNmeSB0aGUg VmlzdWFsIEMrKyBjb21waWxlciB1bmRlcgotLSAgICAgICAgICAgICBXMksgKHRoYW5rcyB0byBK b2huIFcuIFNtYWxsISkuCi0tCi0tICAgICAgICAgICAgIFVwZGF0ZWQgY29udGFjdCBhZGRyZXNz LgotLQotLTIwMDEtMTEtMTc6ICBVcGRhdGVkIE9jYW1sTWFrZWZpbGUuCi0tCi0tMjAwMS0wOS0x NTogIFVwZ3JhZGVkIHRvIHRoZSBuZXdlc3QgcmVsZWFzZSBvZiB0aGUgdW5kZXJseWluZyBDLWxp YnJhcnkKLS0gICAgICAgICAgICAgKFBDUkUtMy41KS4KLS0KLS0gICAgICAgICAgICAgQWRkZWQg YSBuZXcgZnVuY3Rpb246IHN1YnN0aXR1dGVfc3Vic3RyaW5ncwotLQotLSAgICAgICAgICAgICBJ dCBpcyBzaW1pbGFyIHRvICJzdWJzdGl0dXRlIiwgYnV0IHRha2VzIHRoZSBmdWxsIHN1YnN0cmlu ZwotLSAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvZiB0aGUgbWF0Y2ggcmF0aGVyIHRoYW4gdGhl IG1hdGNoaW5nIHN0cmluZy4KLS0gICAgICAgICAgICAgVGhhbmtzIHRvIFBhdHJpY2sgTS4gRG9h bmUgZm9yIHByb3Bvc2luZyB0aGlzIG1pc3NpbmcgZmVhdHVyZSEKLS0KLS0yMDAxLTA5LTA3OiAg VXBkYXRlZCBPY2FtbE1ha2VmaWxlCi0tCi0tMjAwMS0wOC0yNzogIEZpeGVkIGEgYnVnIGluIHRo ZSBzcGxpdHRpbmcgZnVuY3Rpb246IGxlYWRpbmcgd2hpdGVzcGFjZSB3YXMKLS0gICAgICAgICAg ICAgYWNjaWRlbnRseSBhbHdheXMgcmVtb3ZlZCB3aGVuIHVzaW5nIGEgcmVndWxhciBleHByZXNz aW9uCi0tICAgICAgICAgICAgIHJhdGhlciB0aGFuIGEgcGF0dGVybi4gVGhpcyBiZWhhdmlvdXIg c2hvdWxkIG9ubHkgaGFwcGVuCi0tICAgICAgICAgICAgIGZvciB0aGUgZGVmYXVsdCB3aGl0ZXNw YWNlIHBhdHRlcm4sIHdoaWNoIGlzIHVzZWQgaWYgeW91Ci0tICAgICAgICAgICAgIGRvIG5vdCBz cGVjaWZ5IGFueSBwYXR0ZXJuIG9yIHJlZ2V4cCBpbiB0aGUgZnVuY3Rpb24gY2FsbC4KLS0KLS0y MDAxLTA2LTMwOiAgUmVtb3ZlZCAiUHJpbnRleGMuY2F0Y2giIGZyb20gZXhhbXBsZXM6IGlzIGdv aW5nIHRvIGJlCi0tICAgICAgICAgICAgIGRlcHJlY2F0ZWQgaW4gdXBjb21pbmcgT0NhbWwtcmVs ZWFzZS4KLS0KLS0yMDAxLTA1LTIyOiAgRml4ZWQgdHlwbyBpbiBkb2N1bWVudGF0aW9uLgotLQot LTIwMDEtMDQtMjU6ICBBZGRlZCBhIG5ldyBmdW5jdGlvbjogYXNwbGl0Ci0tCi0tICAgICAgICAg ICAgIEl0IGlzIGlkZW50aWNhbCB0byAic3BsaXQiIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGl0 Ci0tICAgICAgICAgICAgIHJldHVybnMgYSBzdHJpbmcgYXJyYXkgaW5zdGVhZCBvZiBhIHN0cmlu ZyBsaXN0LiBUaGlzIG1ha2VzCi0tICAgICAgICAgICAgIGl0IGVhc2llciBmb3IgdGhlIHVzZXIg dG8gYWNjZXNzIHN0cmluZ3MgYnkgaW5kZXguCi0tCi0tICAgICAgICAgICAgIEFkZGVkIGEgbmV3 IG9wdGlvbiB0byAiZ2V0X3N1YnN0cmluZ3MiIGFuZCAiZXh0cmFjdCI6IGZ1bGxfbWF0Y2gKLS0K LS0gICAgICAgICAgICAgV2hlbiAiZnVsbF9tYXRjaCIgaXMgdHJ1ZSAoZGVmYXVsdDogeWVzKSwg dGhlbiB0aGUgcmVzdWx0aW5nCi0tICAgICAgICAgICAgIHN0cmluZyBhcnJheSB3aWxsIGNvbnRh aW4gdGhlIGZ1bGwgbWF0Y2ggYXQgaW5kZXggMCwKLS0gICAgICAgICAgICAgb3RoZXJ3aXNlIHRo ZSByZXN1bHQgd2lsbCBvbmx5IGNvbnRhaW4gY2FwdHVyZWQgc3Vic3RyaW5ncy4KLS0KLS0gICAg ICAgICAgICAgUmVtb3ZlZCBzdXBlcmZsdW91cyBjb21tZW50cyBpbiAicGNyZS5tbCI6IHRoZXkg YXJlIGFscmVhZHkKLS0gICAgICAgICAgICAgcHJlc2VudCBpbiB0aGUgaW50ZXJmYWNlIGRvY3Vt ZW50YXRpb24gYW55d2F5LgotLQotLTIwMDEtMDQtMDg6ICBTbWFsbCBwYXRjaCB0aGF0IG1ha2Vz IHRoaXMgbGlicmFyeSBjb21waWxlIG9uIE9wZW5CU0QsIHRvby4KLS0KLS0yMDAxLTAxLTMwOiAg TWFkZSBNYWtlZmlsZSBtb3JlIGdlbmVyYWwgKGFsbG93cyBzaW1wbGVyIGFkZGl0aW9uIG9mCi0t ICAgICAgICAgICAgIGZ1cnRoZXIgZXhhbXBsZXMpLgotLQotLTIwMDEtMDEtMjQ6ICBVcGRhdGVk IE9jYW1sTWFrZWZpbGU6IG1hZGUgZGVmYXVsdCBkZWZpbml0aW9uIG9mCi0tICAgICAgICAgICAg ICJPQ0FNTExJQlBBVEgiIGJhY2t3YXJkcyBjb21wYXRpYmxlIGFnYWluOiBzb21lIHBlb3BsZQot LSAgICAgICAgICAgICBkbyBub3QgdXNlIHRoZSBDVlMtdmVyc2lvbiBvZiBPQ2FtbCwgd2hpY2gg c3VwcG9ydHMgdGhlCi0tICAgICAgICAgICAgICItd2hlcmUiLW9wdGlvbi4gIFBlb3BsZSB3aXRo IHRoZSBuZXcgY29tcGlsZXIgd2lsbCBub3QKLS0gICAgICAgICAgICAgbm90aWNlIGFueSBlZmZl Y3QuCi0tCi0tMjAwMS0wMS0wNjogIEFkZGVkIGEgbmV3IGZ1bmN0aW9uOiBleGVjX2FsbAotLQot LSAgICAgICAgICAgICBJdCBhbGxvd3MgeW91IHRvIGV4ZWN1dGUgcGF0dGVybiBtYXRjaGluZyBv dmVyIGEgd2hvbGUKLS0gICAgICAgICAgICAgc3RyaW5nIHVudGlsIG5vIG1vcmUgbWF0Y2hlcyBj YW4gYmUgZm91bmQ6IHRoZW4gaXQgcmV0dXJucwotLSAgICAgICAgICAgICB0aGUgYXJyYXkgb2Yg YWxsIG1hdGNoaW5nICJzdWJzdHJpbmdzIi4gWW91IGNhbiBleHRyYWN0Ci0tICAgICAgICAgICAg IHN1YnBhdHRlcm5zIG9mIGVhY2ggb2YgdGhvc2UgbWF0Y2hpbmcgc3Vic3RyaW5ncyBhZ2FpbiB3 aXRoCi0tICAgICAgICAgICAgIHRoZSB1c3VhbCBmdW5jdGlvbnMuCi0tCi0tICAgICAgICAgICAg IEZpeGVkIGEgbWlub3IgaW5jb25zaXN0ZW5jeSBpbiAibmV4dF9tYXRjaCIuCi0tCi0tMjAwMC0x Mi0yMzogIFVwZGF0ZWQgT2NhbWxNYWtlZmlsZTogbWFrZXMgdXNlIG9mIHRoZSBuZXcgIi13aGVy ZSIta2V5d29yZAotLSAgICAgICAgICAgICB0byBmaW5kIHRoZSBwYXRoIHRvIHRoZSBzdGFuZGFy ZCBsaWJyYXJ5IGlmIGl0IGlzIG5vdAotLSAgICAgICAgICAgICBkZWZpbmVkLgotLQotLTIwMDAt MTItMTQ6ICBQZWRhbnRyeSBpbiB0aGUgQy1pbnRlcmZhY2U6IGFkZGVkICJjb25zdCIgcXVhbGlm aWVycy4KLS0KLS0yMDAwLTEyLTA5OiAgTWFkZSBzb21lIGZ1bmN0aW9ucyB0YWlsLXJlY3Vyc2l2 ZSAodmVyeSB1bmxpa2VseSB0byBjYXVzZQotLSAgICAgICAgICAgICBhbnkgbm90aWNhYmxlIGVm ZmVjdCBmb3IgbW9zdCBwZW9wbGUpLgotLQotLTIwMDAtMTItMDI6ICBDbGVhbmVkIHVwIHRoZSBj b2RlIGEgYml0IGZvciBkaXN0cmlidXRpb24gb24gU291cmNlRm9yZ2UuCi0tICAgICAgICAgICAg IFNwZWVkIG9mIHNvbWUgb3BlcmF0aW9ucyBzaG91bGQgYmUgdmVyeSBzbGlnaHRseSBpbXByb3Zl ZCwgdG9vLgotLQotLTIwMDAtMTEtMTY6ICBGaXhlZCBhIHN0dXBpZCBidWcgdGhhdCBjb3VsZCBj cmFzaCB5b3VyIHByb2dyYW1zIHVuZGVyIHJhcmUKLS0gICAgICAgICAgICAgY2lyY3Vtc3RhbmNl cyAod2hlbiB5b3UgdXNlIGZhdWx0eSByZWd1bGFyIGV4cHJlc3Npb25zKS4KLS0KLS0gICAgICAg ICAgICAgQWRkZWQgYW4gaW50ZXJuYWxseSB1c2VkIGV4Y2VwdGlvbiAoSW50ZXJuYWxFcnJvcikg dG8gdGhlCi0tICAgICAgICAgICAgIGludGVyZmFjZSBvZiB0aGUgbGlicmFyeS4gIFRoaXMgYWxs b3dzIHRoZSB1c2VyIHRvIGhhbmRsZQotLSAgICAgICAgICAgICB0aGUgY2FzZSB3aGVuIHRoZSBD LWVuZ2luZSBleGhpYml0cyB1bmRlZmluZWQgYmVoYXZpb3VyCi0tICAgICAgICAgICAgIChzaG91 bGQgbmV2ZXIgaGFwcGVuLCBhbnl3YXkpLgotLQotLTIwMDAtMDktMjc6ICBVcGdyYWRlZCB0byB0 aGUgbmV3ZXN0IHJlbGVhc2Ugb2YgdGhlIHVuZGVybHlpbmcgQy1saWJyYXJ5Ci0tICAgICAgICAg ICAgIChQQ1JFLTMuNCkuCi0tCi0tICAgICAgICAgICAgIFNlZSAicGNyZS1DL0NoYW5nZUxvZyIg Zm9yIG1vcmUgaW5mb3JtYXRpb24gKG1vc3RseSBtaW5vcgotLSAgICAgICAgICAgICBidWdmaXhl cykuCi0tCi0tICAgICAgICAgICAgIFJlbmFtZWQgInBncmVwIiB0byAicGNyZWdyZXAiIHRvIHBy ZXZlbnQgbmFtZSBoaWRpbmcgb24KLS0gICAgICAgICAgICAgU29sYXJpcyAoY2hhbmdlIGFzIHN1 Z2dlc3RlZCBpbiB0aGUgQy1saWJyYXJ5IGRpc3RyaWJ1dGlvbikuCi0tCi0tMjAwMC0wNi0yNDog IFVwZGF0ZWQgT2NhbWxNYWtlZmlsZQotLQotLTIwMDAtMDYtMTM6ICBVcGRhdGVkIE9jYW1sTWFr ZWZpbGUKLS0KLS0yMDAwLTA2LTEyOiAgTWluaS1vcHRpbWlzYXRpb246IGxpZnRlZCBhIHB1cmUg dmFsdWUgb3V0IG9mIGEgZnVuY3Rpb24gYm9keS4KLS0KLS0yMDAwLTA2LTExOiAgVXBkYXRlZCBP Y2FtbE1ha2VmaWxlCi0tCi0tMjAwMC0wNi0wODogIEFkZGVkIGluc3RhbGxhdGlvbiByb3V0aW5l ICsgdXBkYXRlZCBPY2FtbE1ha2VmaWxlIGFnYWluOgotLQotLSAgICAgICAgICAgICBUaGlzIHVw Z3JhZGUgbWFrZXMgaW5zdGFsbGF0aW9uIG11Y2ggZWFzaWVyISBSZWFkIHRoZQotLSAgICAgICAg ICAgICB1cGRhdGVkIElOU1RBTEwtZmlsZSEKLS0KLS0yMDAwLTA2LTA3OiAgVXBkYXRlZCB0byBu ZXcgT2NhbWxNYWtlZmlsZQotLQotLTIwMDAtMDYtMDU6ICBBZGRlZCBhIG5ldyBmdW5jdGlvbjoK LS0KLS0gICAgICAgICAgICAgICBnZXRfc3Vic3RyaW5nX29mcyBzdWJzdHJpbmdzIG4KLS0KLS0g ICAgICAgICAgICAgVGhpcyBhbGxvd3MgeW91IHRvIGdldCB0aGUgb2Zmc2V0IHBvc2l0aW9ucyBv ZiB0aGUgbWF0Y2hpbmcKLS0gICAgICAgICAgICAgcGF0dGVybiBhbmQgdGhlIHN1YnN0cmluZ3Mg ZGlyZWN0bHkgZnJvbSBhIHZhbHVlIG9mIHR5cGUKLS0gICAgICAgICAgICAgInN1YnN0cmluZyIu IFNlZSB0aGUgaW50ZXJmYWNlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCi0tCi0tMjAwMC0w NS0xNTogIFVwZ3JhZGVkIHRvIHRoZSBuZXdlc3QgcmVsZWFzZSBvZiB0aGUgdW5kZXJseWluZyBD LWxpYnJhcnkKLS0gICAgICAgICAgICAgKFBDUkUtMy4yKS4KLS0KLS0gICAgICAgICAgICAgVGhp cyBkb2VzIG5vdCBhZGQgbmV3IGZlYXR1cmVzLCBidXQgaXMgc2FpZCB0byBmaXggc29tZQotLSAg ICAgICAgICAgICBQRVJMLWNvbXBhdGliaWxpdHkgYnVncyBhbmQgaW1wcm92ZXMgcG9ydGFiaWxp dHkuCi0tCi0tMjAwMC0wNS0wNDogIE1pbm9yIHVwZGF0ZSBvZiBDLWludGVyZmFjZToKLS0KLS0g ICAgICAgICAgICAgVXNlIHRoZSBuZXcgImhhc2hfdmFyaWFudCItZnVuY3Rpb24gdG8gY29tcHV0 ZSB0aGUgaGFzaCB2YWx1ZSBvZgotLSAgICAgICAgICAgICB2YXJpYW50cyAodXNlZCBDYWxsYmFj ay5yZWdpc3RlciBiZWZvcmUgLSBhIGJpdCBjbHVtc3kpLgotLQotLTIwMDAtMDQtMjQ6ICBOZXcg cmVsZWFzZTogY29tcGlsZXMgd2l0aCBPQ2FtbC0zLjAwLgotLQotLSAgICAgICAgICAgICBMb3Rz IG9mIGNoYW5nZXMgaW4gaW50ZXJmYWNlISBPQ2FtbC0zLjAwIGludHJvZHVjZWQgc29tZSBzeW50 YXgKLS0gICAgICAgICAgICAgY2hhbmdlcyBmb3IgbGFiZWxzLiBBZGRpdGlvbmFsbHksIG5vIGtl eXdvcmRzIGFyZSBhbGxvd2VkIGZvcgotLSAgICAgICAgICAgICB0aGVtLiAgQWxsIHRoaXMgcmVx dWlyZWQgcXVpdGUgc29tZSByZW5hbWluZ3MuIEkgdHJpZWQgdG8gc3RpY2sgdG8KLS0gICAgICAg ICAgICAgdGhlIG5ldyBsYWJlbHMgb2YgdGhlICJzdHIiLWxpYnJhcnkgYXMgY2xvc2UgYXMgbWFr ZXMgc2Vuc2UuCi0tICAgICAgICAgICAgIFNvcnJ5IGZvciB0aGlzIGluY29udmVuaWVuY2UsIGJ1 dCBJIHRoaW5rIHRoYXQgYWRoZXJpbmcgdG8gc29tZQotLSAgICAgICAgICAgICAic3RhbmRhcmQi IGlzIGEgR29vZCBUaGluZy4uLgotLQotLSAgICAgICAgICAgICBGb3IgZnVydGhlciBpbmZvcm1h dGlvbiBvbiB0aGUgY2hhbmdlcywgbG9vayBhdCB0aGUgZG9jdW1lbnRhdGlvbgotLSAgICAgICAg ICAgICBvZiB0aGUgaW50ZXJmYWNlIGZpbGUuCi0tCi0tMjAwMC0wNC0yMzogIE1pbm9yIGNsZWFu dXAgb2YgQy1pbnRlcmZhY2U6Ci0tCi0tICAgICAgICAgICAgIE1hZGUgbG9jYWwgZnVuY3Rpb25z ICsgdmFyaWFibGVzIHN0YXRpYyBhbmQgbW92ZWQgYSBjaGVjayBmb3IKLS0gICAgICAgICAgICAg ZXJyb3IgY29kZXMgKGxpbnQgc2hvdWxkIGJlIGhhcHBpZXIgbm93KS4KLS0KLS0yMDAwLTA0LTAx OiAgQ2hhbmdlZCBsaW5raW5nIG9mIHRoZSBsaWJyYXJ5IGFnYWluIChtYXJnaW5hbGx5KToKLS0K LS0gICAgICAgICAgICAgVGhlIG5ldyBsaW5raW5nIHNlbWFudGljcyBmb3IgYnl0ZSBjb2RlIGxp YnJhcmllcyBhbGxvd3MgcGFzc2luZwotLSAgICAgICAgICAgICBvZiBmbGFncyB0aGF0IGFyZSBy ZW1lbWJlcmVkLiBUaGlzIHRoZW4gb25seSByZXF1aXJlcyBsaW5raW5nCi0tICAgICAgICAgICAg IGV4ZWN1dGFibGVzIGFnYWluc3QgInBjcmUuY21hIiAtIHRoZSBDLWxpYnJhcnkgKCJsaWJwY3Jl LmEiKSB3aWxsCi0tICAgICAgICAgICAgIGJlIGxpbmtlZCBpbiBhdXRvbWF0aWNhbGx5LgotLQot LTIwMDAtMDMtMzA6ICBDbGVhbmVkIHVwIHRoZSBDLWludGVyZmFjZToKLS0KLS0gICAgICAgICAg ICAgUmVtb3ZlZCBhIHBvc3NpYmxlIGJ1ZyBpbiB0aGUgYWxsb2NhdGlvbiBvZiBmaXJzdGNoYXIg dmFsdWVzLgotLQotLSAgICAgICAgICAgICBTYW5lciBoYW5kbGluZyBvZiBwb2x5bW9ycGhpYyB2 YXJpYW50cyAobm90IGhhcmQtd2lyZWQKLS0gICAgICAgICAgICAgaW50ZWdlcnMgYW55bW9yZSAt IHJlZ2lzdGVyZWQgdmlhIGNhbGxiYWNrcykuCi0tCi0tICAgICAgICAgICAgIEJldHRlciBHQy1z ZXR0aW5nczogbXVjaCBuaWNlciB0byB0aGUgR0Mgbm93IChmZXdlciBmdWxsCi0tICAgICAgICAg ICAgIGN5Y2xlcyAtIGhhcmRseSBtb3JlIG1lbW9yeSBjb25zdW1wdGlvbikuIFNob3VsZCBtYWtl Ci0tICAgICAgICAgICAgIHByb2dyYW1zIHJ1biBzbGlnaHRseSBmYXN0ZXIgd2hlbiByZWd1bGFy IGV4cHJlc3Npb25zIGFyZQotLSAgICAgICAgICAgICBvZnRlbiBhbGxvY2F0ZWQuCi0tCi0tICAg ICAgICAgICAgIENoYW5nZWQgbGlua2luZyBvZiB0aGUgbGlicmFyeSB0byBzdWl0IHRoZSBzZW1h bnRpY3Mgb2YKLS0gICAgICAgICAgICAgdGhlIHVwY29taW5nIE9DYW1sLW1ham9yIHJlbGVhc2Ug KGJhY2t3YXJkIGNvbXBhdGlibGUpLgotLQotLTIwMDAtMDItMDc6ICBDaGFuZ2VkIGludGVyZmFj ZSBvZiBmdW5jdGlvbiAiZm9yZWFjaF9maWxlIjoKLS0KLS0gICAgICAgICAgICAgTm8gaWRlYSB3 aHkgSSBpbXBsZW1lbnRlZCBhIHR1cGxlIGluIHRoZSBpbnRlcmZhY2UgaW5zdGVhZCBvZiBhCi0t ICAgICAgICAgICAgIGN1cnJpZWQgZnVuY3Rpb24uIE11c3QgaGF2ZSBiZWVuIHRoZSBkcnVncy4u LiA7LSkKLS0KLS0gICAgICAgICAgICAgRm9ybWVyIGludGVyZmFjZToKLS0KLS0gICAgICAgICAg ICAgICB2YWwgZm9yZWFjaF9maWxlIDoKLS0gICAgICAgICAgICAgICAgIHN0cmluZyBsaXN0IC0+ IChzdHJpbmcgKiBpbl9jaGFubmVsIC0+IHVuaXQpIC0+IHVuaXQKLS0KLS0gICAgICAgICAgICAg Q3VycmVudCBpbnRlcmZhY2U6Ci0tCi0tICAgICAgICAgICAgICAgdmFsIGZvcmVhY2hfZmlsZSA6 Ci0tICAgICAgICAgICAgICAgICBzdHJpbmcgbGlzdCAtPiAoc3RyaW5nIC0+IGluX2NoYW5uZWwg LT4gdW5pdCkgLT4gdW5pdAotLQotLSAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoaXMgZnVu Y3Rpb24gbm93IGFsc28gY2xvc2VzIHRoZSBmaWxlIGNoYW5uZWwKLS0gICAgICAgICAgICAgaW4g Y2FzZSBvZiBhbiBleGNlcHRpb24uIFRoZSBleGNlcHRpb24gZ2V0cyByZXJhaXNlZCwKLS0gICAg ICAgICAgICAgb2YgY291cnNlLgotLQotLTIwMDAtMDItMDU6ICBFbGltaW5hdGVkIGEgUEVSTC1p bmNvbXBhdGliaWxpdHkgb2YgdGhlICJzcGxpdCItZnVuY3Rpb246Ci0tCi0tICAgICAgICAgICAg IFdoZW4gbmVpdGhlciB0aGUgcGF0dGVybiBub3IgdGhlIGNvbXBpbGVkIHJlZ3VsYXIKLS0gICAg ICAgICAgICAgZXhwcmVzc2lvbiBhcmUgc3BlY2lmaWVkLCAic3BsaXQiIGRlZmF1bHRzIHRvIGEg d2hpdGVzcGFjZQotLSAgICAgICAgICAgICBwYXR0ZXJuLiBIb3dldmVyLCBQRVJMIGFkZGl0aW9u YWxseSBzdHJpcHMgbGVhZGluZwotLSAgICAgICAgICAgICB3aGl0ZXNwYWNlLCBidXQgKm9ubHkq IHdoZW4gaW4gImRlZmF1bHQiIG1vZGUuCi0tCi0tICAgICAgICAgICAgIFRoaXMgbGFzdCAiZmVh dHVyZSIgKD8pIHdhcyBvdmVyc2VlbiBkdXJpbmcgdGhlIGludHJvZHVjdGlvbgotLSAgICAgICAg ICAgICBvZiBsYWJlbHMgYW5kIGRlZmF1bHQgYXJndW1lbnRzLgotLQotLTIwMDAtMDItMDU6ICBV cGRhdGVkIHRoZSBDLWxpYnJhcnkgdG8gdGhlIG5ld2VzdCByZWxlYXNlIChwY3JlLTMuMCkuCi0t Ci0tICAgICAgICAgICAgIFRoaXMgaXMgYSBtYWpvciByZWxlYXNlLCBidXQgdGhlIGNoYW5nZXMg dG8gdGhlIE9DYW1sLXBhcnQKLS0gICAgICAgICAgICAgYXJlIHJhdGhlciBzbWFsbDoganVzdCB0 aGUgZnVuY3Rpb25hbGl0eSBjb25jZXJuaW5nCi0tICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9u IGNvbXBpbGVkIHBhdHRlcm5zIGhhcyBjaGFuZ2VkLgotLQotLSAgICAgICAgICAgICBJbnN0ZWFk IG9mIHRoZSBmb3JtZXIgImluZm8iLWZ1bmN0aW9uLCBzZXZlcmFsIG9uZXMgYXJlCi0tICAgICAg ICAgICAgIHByb3ZpZGVkLiBJIHRoaW5rIHRoaXMgaXMgdGhlIG1vc3QgY29udmVuaWVudCB3YXkg dG8gaGFuZGxlCi0tICAgICAgICAgICAgIHRoaXMsIGJlY2F1c2UgaXQgZG9lcyBub3QgZm9yY2Ug dGhlIHVzZXIgdG8gZG8gZXhwbGljaXQKLS0gICAgICAgICAgICAgcGF0dGVybiBtYXRjaGluZyBv biByZXN1bHRzOiBkdWUgdG8gdGhlIG51bWJlciBvZiBuZXcKLS0gICAgICAgICAgICAgaW5mby1v cHRpb25zIHRoaXMgd291bGQgaGF2ZSBiZWVuIHJhdGhlciBjb25mdXNpbmcuCi0tCi0tICAgICAg ICAgICAgIEJlY2F1c2UgdGhlIG9sZCBQQ1JFLWZ1bmN0aW9uICJwY3JlX2luZm8iIGlzIG9ic29s ZXRlLAotLSAgICAgICAgICAgICBJIGNob3NlIHRvIGRyb3AgaXRzIE9DYW1sLWludGVyZmFjZSBj b21wbGV0ZWx5LiBJIGRvIG5vdAotLSAgICAgICAgICAgICB0aGluayB0aGF0IGl0IGlzIGFuIG9m dGVuIHVzZWQgcGFydCwgYW55d2F5LgotLQotLSAgICAgICAgICAgICBTZWUgdGhlIGludGVyZmFj ZSBmaWxlIGFuZCB0aGUgQ2hhbmdlTG9nICsgZG9jdW1lbnRhdGlvbgotLSAgICAgICAgICAgICBv ZiB0aGUgQy1saWJyYXJ5IHRvIHNlZSwgd2hhdCBoYXMgY2hhbmdlZCBpbiBkZXRhaWwuCi0tCi0t ICAgICAgICAgICAgIFRoZSBvdGhlciBmZXcgY2hhbmdlcyBqdXN0IG1hcmdpbmFsbHkgZWZmZWN0 IGVmZmljaWVuY3kuIE9uZQotLSAgICAgICAgICAgICBidWcgd2FzIHByZXNlbnQgaW4gdGhlIGxh c3QgcmVsZWFzZSBpbiB0aGUgImluZm8iLXBhcnQKLS0gICAgICAgICAgICAgKHBvbHltb3JwaGlj IHZhcmlhbnRzIHdlcmUgbm90IGNvcnJlY3RseSByZXByZXNlbnRlZCkuCi0tICAgICAgICAgICAg IFRoaXMgaGFzIGNoYW5nZWQgYW55d2F5IGFuZCBzaG91bGQgd29yayBmaW5lIG5vdy4KLS0KLS0y MDAwLTAxLTEwOiAgImZvcmVhY2hfbGluZSIgdXNlcyBzdGRpbiBhcyBsYWJlbGVkIChsYWJlbDog J2luJykgZGVmYXVsdAotLSAgICAgICAgICAgICBhcmd1bWVudCBub3cuCi0tCi0tMTk5OS0xMi0y OTogIExvdHMgb2YgY2hhbmdlczoKLS0KLS0gICAgICAgICAgICAgKiBVc2VzIHRoZSBuZXcgZmVh dHVyZXMgb2YgT0NhbWwgMi45OToKLS0KLS0gICAgICAgICAgICAgICBMYWJlbGVkIHBhcmFtZXRl cnMgYW5kIGRlZmF1bHQgYXJndW1lbnRzIGZvciBtdWNoIG1vcmUKLS0gICAgICAgICAgICAgICBj b252ZW5pZW5jZS4gRS5nLiB3cml0ZQotLQotLSAgICAgICAgICAgICAgICAgc3BsaXQgcG9zOjEg ImZvbyBiYXIiCi0tCi0tICAgICAgICAgICAgICAgdG8gZ2V0IHRoZSBsaXN0IFsib28iOyAiYmFy Il0uCi0tCi0tICAgICAgICAgICAgICAgUG9seW1vcnBoaWMgdmFyaWFudHMgZm9yIHBhc3Npbmcg b3B0aW9uczogdGhpcyBjaGFuZ2UgYWxsb3dzLAotLSAgICAgICAgICAgICAgIGZvciBleGFtcGxl LCB1c2luZyB0aGUgZGF0YSBjb25zdHJ1Y3RvciAiQU5DSE9SRUQiIGZvciBib3RoCi0tICAgICAg ICAgICAgICAgY29tcGlsaW5nIGZsYWdzIGFuZCBhdCBtYXRjaGluZyB0aW1lIGluc3RlYWQgb2Yg IkNfQU5DSE9SRUQiCi0tICAgICAgICAgICAgICAgYW5kICJSX0FOQ0hPUkVEIi4KLS0KLS0gICAg ICAgICAgICAgKiBHb3QgcmlkIG9mIGFsbCB0aGUgc3VwZXJmbHVvdXMgc2hvcnRjdXRzLCBsaWtl ICJib3VuZGVkX3BzcGxpdCIKLS0gICAgICAgICAgICAgICBhbmQgdGhlIGxpa2UuIExhYmVsZWQg cGFyYW1ldGVycyBhcmUgbXVjaCBtb3JlIHJlYWRhYmxlIGFuZAotLSAgICAgICAgICAgICAgIGNv bnZlbmllbnQuCi0tCi0tICAgICAgICAgICAgICogUmVtb3ZlZCB0aGUgZnVuY3Rpb25zIGNvbXBh dGlibGUgdG8gdGhlICJTdHIiLW1vZHVsZS4gSXQncwotLSAgICAgICAgICAgICAgIHByb2JhYmx5 IHJhdGhlciBjb25mdXNpbmcgZm9yIHBlb3BsZSB0byBzZWUgdHdvIGRpZmZlcmVudCBraW5kcwot LSAgICAgICAgICAgICAgIG9mIGltcGxlbWVudGF0aW9ucy4KLS0KLS0gICAgICAgICAgICAgKiBS ZW5hbWVkIGZ1bmN0aW9ucyBkdWUgdG8gdGhlIHVzZSBvZiBsYWJlbHMgYW5kIHRoZSByZW1vdmlu ZyBvZgotLSAgICAgICAgICAgICAgIHRoZSBvYnNvbGV0ZSBjb21wYXRpYmlsaXR5IGZ1bmN0aW9u cy4KLS0KLS0gICAgICAgICAgICAgKiBVcGRhdGVkIGRvY3VtZW50YXRpb24gd2l0aCBtb3JlIGRl dGFpbHMgb24gdXNpbmcgdGhlIGxpYnJhcnkuCi0tCi0tMTk5OS0xMi0yMTogIFNtYWxsIGNoYW5n ZSAoMiBjaGFycy4uLikgdG8gbWFrZSB0aGUgQy1pbnRlcmZhY2UgY29tcGlsZSB3aXRoCi0tICAg ICAgICAgICAgIHRoZSBuZXdlc3QgcmVsZWFzZSAoT0NhbWwgMi45OSkuCi0tCi0tMTk5OS0wOS0y NzogIEZpeGVkIGEgYnVnIHdoaWNoIG9jY3Vycywgd2hlbiByZXBsYWNlbWVudHMgb3Igc3Vic3Rp dHV0aW9ucwotLSAgICAgICAgICAgICBpbiBzdHJpbmdzIGFyZSBsb25nZXIgdGhhbiB0aGUgc3Vi amVjdCBzdHJpbmcgaXRzZWxmLgotLSAgICAgICAgICAgICBUaGlzIGNvbmNlcm5zIGZ1bmN0aW9u cyAicmVwbGFjZV9hbGwiLCAicXJlcGxhY2VfYWxsIiBhbmQKLS0gICAgICAgICAgICAgInN1YnN0 aXR1dGVfYWxsIiArIHRoZWlyIHZhcmlhbnRzLgotLQotLSAgICAgICAgICAgICBUSEFOS1MgdG8g R0VSRCBTVE9MUE1BTk4gKEdlcmQuU3RvbHBtYW5uQGRhcm1zdGFkdC5uZXRzdXJmLmRlKQotLSAg ICAgICAgICAgICBmb3IgZmluZGluZyBhbm90aGVyIGJ1ZyEKLS0KLS0xOTk5LTA5LTIxOiAgRml4 ZWQgc29tZSBidWdzIGluICJwY3JlX2ludGYuYyI6Ci0tCi0tICAgICAgICAgICAgICJTdG9yZV9m aWVsZCIgd2FzIHVzZWQgaW5hcHByb3ByaWF0ZWx5IHRocm91Z2hvdXQgdGhlIGZpbGUsCi0tICAg ICAgICAgICAgIHdoaWNoIGNvdWxkIGxlYWQgdG8gc2VnZmF1bHRzIGluIHRoZSBnYXJiYWdlIGNv bGxlY3Rvci4gVGhpcwotLSAgICAgICAgICAgICB3YXMgY29ycmVjdGVkIGJ5IHVzaW5nIHRoZSAi RmllbGQiLW1hY3JvIHdoZXJlIGFwcHJvcHJpYXRlLgotLQotLSAgICAgICAgICAgICBQcm90ZWN0 ZWQgYW4gaW5wdXQgcGFyYW1ldGVyIGZyb20gYmVpbmcgcmVjbGFpbWVkIHRvbyBlYXJseS4KLS0K LS0gICAgICAgICAgICAgSW5pdGlhbGl6ZWQgYSBmaWVsZCBiZWZvcmUgdGhyb3dpbmcgYW4gZXhj ZXB0aW9uIHRvIHBsZWFzZQotLSAgICAgICAgICAgICB0aGUgR0MuCi0tCi0tICAgICAgICAgICAg IFRoZSBHQyBzaG91bGQgYmUgaGFwcHkgbm93Li4uCi0tCi0tICAgICAgICAgICAgIFRIQU5LUyB0 byBHRVJEIFNUT0xQTUFOTiAoR2VyZC5TdG9scG1hbm5AZGFybXN0YWR0Lm5ldHN1cmYuZGUpCi0t ICAgICAgICAgICAgIGZvciB0aGUgcGF0Y2ghCi0tCi0tMTk5OS0wOC0zMTogIFVwZGF0ZWQgdG8g cGNyZS0yLjA4IC0gdGhpcyBzaG91bGQgZml4IHNvbWUgYnVncy4gU2VlCi0tICAgICAgICAgICAg ICJwY3JlLUMvQ2hhbmdlTG9nIiBmb3IgZGV0YWlscy4KLS0KLS0gICAgICAgICAgICAgUmVuYW1l ZCBkaXJlY3RvcnkgInBjcmUtQy0yLjA3IiB0byAicGNyZS1DIiB0byBhbGxvdyBmb3IKLS0gICAg ICAgICAgICAgZWFzaWVyIHVwZ3JhZGluZy4KLS0KLS0gICAgICAgICAgICAgQWRkZWQgQ1ZTLWlu Zm8gdG8gc291cmNlcy4KLS0KLS0xOTk5LTA4LTI0OiAgVXBkYXRlZCB0byBwY3JlLTIuMDcuIFNw bGl0dGluZyBpcyAxMDAlIFBFUkwtY29tcGF0aWJsZSBub3cuCi0tICAgICAgICAgICAgIE5ldyBy dW50aW1lIG9wdGlvbjogTk9URU1QVFkgKHNlZSBpbnRlcmZhY2UgZm9yIGRldGFpbHMpLgotLQot LSAgICAgICAgICAgICBUd28gYWRkaXRpb25hbCBleGFtcGxlczogY2xvYyBhbmQgY291bnRfaGFz aC4KLS0KLS0gICAgICAgICAgICAgTmV3IGZ1bmN0aW9uczogc3JlZ2V4cG8sIHNyZWdleHAsIHNy ZWdleHBfY2FzZV9mb2xkLgotLQotLTE5OTktMDgtMDI6ICBFeGNlcHRpb24gaGFuZGxpbmcgbW9y ZSByZWd1bGFyIG5vdzoKLS0KLS0gICAgICAgICAgICAgUmFpc2VzIFtJbnZhbGlkX2FyZ3VtZW50 XSBpbnN0ZWFkIG9mIFtGYWlsdXJlXSB3aGVyZQotLSAgICAgICAgICAgICBhcHByb3ByaWF0ZS4K LS0gICAgICAgICAgICAgUmFpc2VzIFtJbnRlcm5hbEVycm9yXSBpZiBDLWxpYnJhcnkgZXhoaWJp dHMgdW5kZWZpbmVkCi0tICAgICAgICAgICAgIGJlaGF2aW91ciAoaGFzIG5ldmVyIGhhcHBlbmVk IHNvIGZhcikuCi0tCi0tICAgICAgICAgICAgIFVwZGF0ZWQgY29tbWVudHMuCi0tCi0tMTk5OS0w Ny0zMDogIEJ1Z2ZpeCBpbiAicGNyZV9pbnRmLmMiOgotLQotLSAgICAgICAgICAgICAicGNyZV9v Y2FtbCIgc2hvdWxkIHdvcmsgbm93IG9uIDY0LWJpdCBhcmNoaXRlY3R1cmVzLi4uCi0tCi0tMTk5 OS0wNy0yOTogIFNtYWxsIGZpeCBpbiAicGNyZV9pbnRmLmMiOgotLQotLSAgICAgICAgICAgICBz dHJpY3QgY29tcGlsZXJzIChnY2MgaXMgbm90IHZlcnkgc3RyaWN0KSBvdGhlcndpc2UgY29tcGxh aW4KLS0gICAgICAgICAgICAgYWJvdXQgdW5kZWZpbmVkIGJlaGF2aW91ciBpbiBhIGNlcnRhaW4g bGluZS4KLS0KLS0gICAgICAgICAgICAgRXhwbGljaXRlbHkgbWVudGlvbiBhbGwgaW5jbHVkZSBm aWxlcy4KLS0gICAgICAgICAgICAgUmVtb3ZlZCB1bnVzZWQgdmFyaWFibGUuCi0tCi0tICAgICAg ICAgICAgIEFsc28gbW92ZWQgYSBsaW5lIGZvciBlZmZpY2llbmN5Li4uCi0tCi0tMTk5OS0wNy0y ODogIEZpcnN0IHJlbGVhc2UuCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwv c3JjLy5naXRpZ25vcmUgYi9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvLmdpdGlnbm9yZQot ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA3ZGE3Y2IyZDAuLjAwMDAwMDAwMAotLS0t IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjLy5naXRpZ25vcmUKLSsrKyAvZGV2L251bGwK LUBAIC0xICswLDAgQEAKLS1wY3JlX3N0dWJzLmMKLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9NYWtlZmlsZSBiL2J1 bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9NYWtlZmlsZQotZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCA3MjQ2NTM2MTUuLjAwMDAwMDAwMAotLS0tIGEvYnVuZGxlcy9wY3JlL3BjcmUt b2NhbWwvc3JjL01ha2VmaWxlCi0rKysgL2Rldi9udWxsCi1AQCAtMSw5ICswLDAgQEAKLS1UQVJH RVRTID0gcGNyZS5jbWEgbGlicGNyZV9zdHVicy5hCi0tCi0tLlBIT05ZOiBhbGwgY2xlYW4KLS0K LS1hbGw6Ci0tCUBkdW5lIGJ1aWxkICQoVEFSR0VUUykKLS0KLS1jbGVhbjoKLS0JQGR1bmUgY2xl YW4KLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvY29uZmlnL2Rpc2Nv dmVyLm1sIGIvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL2NvbmZpZy9kaXNjb3Zlci5tbAot ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMWZiZmFiMGEuLjAwMDAwMDAwMAotLS0t IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL2NvbmZpZy9kaXNjb3Zlci5tbAotKysrIC9k ZXYvbnVsbAotQEAgLTEsMTUgKzAsMCBAQAotLW9wZW4gQmFzZQotLQotLWxldCAoKSA9Ci0tICBs ZXQgbW9kdWxlIEMgPSBDb25maWd1cmF0b3IuVjEgaW4KLS0gIEMubWFpbiB+bmFtZToicGNyZSIg KGZ1biBjIC0+Ci0tICAgIGxldCBkZWZhdWx0IDogQy5Qa2dfY29uZmlnLnBhY2thZ2VfY29uZiA9 IHsKLS0gICAgICBsaWJzID0gWyItbHBjcmUiXTsKLS0gICAgICBjZmxhZ3MgPSBbXQotLSAgICB9 IGluCi0tICAgIGxldCBjb25mID0KLS0gICAgICBPcHRpb24udmFsdWVfbWFwIChDLlBrZ19jb25m aWcuZ2V0IGMpIH5kZWZhdWx0IH5mOihmdW4gcGMgLT4KLS0gICAgICAgIE9wdGlvbi52YWx1ZSAo Qy5Qa2dfY29uZmlnLnF1ZXJ5IHBjIH5wYWNrYWdlOiJsaWJwY3JlIikgfmRlZmF1bHQpCi0tICAg IGluCi0tICAgIEMuRmxhZ3Mud3JpdGVfc2V4cCAiY19mbGFncy5zZXhwIiBjb25mLmNmbGFnczsK LS0gICAgQy5GbGFncy53cml0ZV9zZXhwICJjX2xpYnJhcnlfZmxhZ3Muc2V4cCIgY29uZi5saWJz KQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9jb25maWcvZHVuZSBi L2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9jb25maWcvZHVuZQotZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCBkYmVhOGZmOTEuLjAwMDAwMDAwMAotLS0tIGEvYnVuZGxlcy9wY3Jl L3BjcmUtb2NhbWwvc3JjL2NvbmZpZy9kdW5lCi0rKysgL2Rldi9udWxsCi1AQCAtMSw0ICswLDAg QEAKLS0oZXhlY3V0YWJsZXMKLS0gIChuYW1lcyBkaXNjb3ZlcikKLS0gIChsaWJyYXJpZXMgYmFz ZSBkdW5lLmNvbmZpZ3VyYXRvcikKLS0pCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUt b2NhbWwvc3JjL2R1bmUgYi9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvZHVuZQotZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBhMGJkNjM2ZDcuLjAwMDAwMDAwMAotLS0tIGEvYnVu ZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL2R1bmUKLSsrKyAvZGV2L251bGwKLUBAIC0xLDE2ICsw LDAgQEAKLS0obGlicmFyeQotLSAgKHB1YmxpY19uYW1lIHBjcmUpCi0tICAoY19uYW1lcyBwY3Jl X3N0dWJzKQotLSAgKGNfZmxhZ3MgKAotLSAgICAoOmluY2x1ZGUgY19mbGFncy5zZXhwKSAtZyAt TzIgLWZQSUMgLURQSUMKLS0gICAgOyBOT1RFOiBmb3IgZGVidWdnaW5nIGJlZm9yZSByZWxlYXNl cwotLSAgICA7IC1XYWxsIC1wZWRhbnRpYyAtV2V4dHJhIC1XdW51c2VkIC1Xbm8tbG9uZy1sb25n IC1Xbm8ta2V5d29yZC1tYWNybwotLSAgKSkKLS0gIChjX2xpYnJhcnlfZmxhZ3MgKDppbmNsdWRl IGNfbGlicmFyeV9mbGFncy5zZXhwKSkKLS0pCi0tCi0tKHJ1bGUKLS0gICh0YXJnZXRzIGNfZmxh Z3Muc2V4cCBjX2xpYnJhcnlfZmxhZ3Muc2V4cCkKLS0gIChkZXBzICg6ZGlzY292ZXIgY29uZmln L2Rpc2NvdmVyLmV4ZSkpCi0tICAoYWN0aW9uIChydW4gJXtkaXNjb3Zlcn0pKQotLSkKLWRpZmYg LS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvcGNyZS5tbC5pbiBiL2J1bmRsZXMv cGNyZS9wY3JlLW9jYW1sL3NyYy9wY3JlLm1sLmluCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDU3MzQ2MGU0ZS4uMDAwMDAwMDAwCi0tLS0gYS9idW5kbGVzL3BjcmUvcGNyZS1vY2Ft bC9zcmMvcGNyZS5tbC5pbgotKysrIC9kZXYvbnVsbAotQEAgLTEsMTA1NSArMCwwIEBACi0tKCoK LS0gICBQQ1JFLU9DQU1MIC0gUGVybCBDb21wYXRpYmlsaXR5IFJlZ3VsYXIgRXhwcmVzc2lvbnMg Zm9yIE9DYW1sCi0tCi0tICAgQ29weXJpZ2h0IChDKSAxOTk5LSAgTWFya3VzIE1vdHRsCi0tICAg ZW1haWw6IG1hcmt1cy5tb3R0bEBnbWFpbC5jb20KLS0gICBXV1c6ICAgaHR0cDovL3d3dy5vY2Ft bC5pbmZvCi0tCi0tICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgotLSAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLS0gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLS0gICB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0g ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0tICAgTGljZW5z ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQotLSAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotLSopCi0tCi0tb3BlbiBTdGRjb21wYXQK LS0KLS0oKiBQdWJsaWMgZXhjZXB0aW9ucyBhbmQgdGhlaXIgcmVnaXN0cmF0aW9uIHdpdGggdGhl IEMgcnVudGltZSAqKQotLQotLXR5cGUgZXJyb3IgPQotLSAgfCBQYXJ0aWFsCi0tICB8IEJhZFBh cnRpYWwKLS0gIHwgQmFkUGF0dGVybiBvZiBzdHJpbmcgKiBpbnQKLS0gIHwgQmFkVVRGOAotLSAg fCBCYWRVVEY4T2Zmc2V0Ci0tICB8IE1hdGNoTGltaXQKLS0gIHwgUmVjdXJzaW9uTGltaXQKLS0g IHwgSW50ZXJuYWxFcnJvciBvZiBzdHJpbmcKLS0KLS1leGNlcHRpb24gRXJyb3Igb2YgZXJyb3IK LS1leGNlcHRpb24gQmFja3RyYWNrCi0tZXhjZXB0aW9uIFJlZ2V4cF9vciBvZiBzdHJpbmcgKiBl cnJvcgotLQotLSgqIFB1dHMgZXhjZXB0aW9ucyBpbnRvIGdsb2JhbCBDLXZhcmlhYmxlcyBmb3Ig ZmFzdCByZXRyaWV2YWwgKikKLS1leHRlcm5hbCBwY3JlX29jYW1sX2luaXQgOiB1bml0IC0+IHVu aXQgPSAicGNyZV9vY2FtbF9pbml0IgotLQotLSgqIFJlZ2lzdGVycyBleGNlcHRpb25zIHdpdGgg dGhlIEMgcnVudGltZSBhbmQgY2FjaGVzIHBvbHltb3JwaGljIHZhcmlhbnRzICopCi0tbGV0ICgp ID0KLS0gIENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiAiUGNyZS5FcnJvciIgKEVycm9yIChJ bnRlcm5hbEVycm9yICIiKSk7Ci0tICBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gIlBjcmUu QmFja3RyYWNrIiBCYWNrdHJhY2s7Ci0tICBwY3JlX29jYW1sX2luaXQgKCkKLS0KLS0KLS0oKiBD b21waWxhdGlvbiBhbmQgcnVudGltZSBmbGFncyBhbmQgdGhlaXIgY29udmVyc2lvbiBmdW5jdGlv bnMgKikKLS0KLS10eXBlIGljZmxhZyA9IGludAotLXR5cGUgaXJmbGFnID0gaW50Ci0tCi0tKCog Q29tcGlsYXRpb24gZmxhZ3MgKikKLS0KLS10eXBlIGNmbGFnID0KLS0gIFsKLS0gIHwgYENBU0VM RVNTCi0tICB8IGBNVUxUSUxJTkUKLS0gIHwgYERPVEFMTAotLSAgfCBgRVhURU5ERUQKLS0gIHwg YEFOQ0hPUkVECi0tICB8IGBET0xMQVJfRU5ET05MWQotLSAgfCBgRVhUUkEKLS0gIHwgYFVOR1JF RURZCi0tICB8IGBVVEY4Ci0tICB8IGBOT19VVEY4X0NIRUNLCi0tICB8IGBOT19BVVRPX0NBUFRV UkUKLS0gIHwgYEFVVE9fQ0FMTE9VVAotLSAgfCBgRklSU1RMSU5FCi0tICBdCi0tCi0tbGV0IGlu dF9vZl9jZmxhZyA9IGZ1bmN0aW9uCi0tICB8IGBDQVNFTEVTUyAtPiAweDAwMDEKLS0gIHwgYE1V TFRJTElORSAtPiAweDAwMDIKLS0gIHwgYERPVEFMTCAtPiAweDAwMDQKLS0gIHwgYEVYVEVOREVE IC0+IDB4MDAwOAotLSAgfCBgQU5DSE9SRUQgLT4gMHgwMDEwCi0tICB8IGBET0xMQVJfRU5ET05M WSAtPiAweDAwMjAKLS0gIHwgYEVYVFJBIC0+IDB4MDA0MAotLSAgfCBgVU5HUkVFRFkgLT4gMHgw MjAwCi0tICB8IGBVVEY4IC0+IDB4MDgwMAotLSAgfCBgTk9fQVVUT19DQVBUVVJFIC0+IDB4MTAw MAotLSAgfCBgTk9fVVRGOF9DSEVDSyAtPiAweDIwMDAKLS0gIHwgYEFVVE9fQ0FMTE9VVCAtPiAw eDQwMDAKLS0gIHwgYEZJUlNUTElORSAtPiAweDQwMDAwCi0tCi0tbGV0IGNvbGxfaWNmbGFnIGlj ZmxhZyBmbGFnID0gaW50X29mX2NmbGFnIGZsYWcgbG9yIGljZmxhZwotLWxldCBjZmxhZ3MgZmxh Z3MgPSBMaXN0LmZvbGRfbGVmdCBjb2xsX2ljZmxhZyAwIGZsYWdzCi0tCi0tbGV0IGNmbGFnX29m X2ludCA9IGZ1bmN0aW9uCi0tICB8IDB4MDAwMSAtPiBgQ0FTRUxFU1MKLS0gIHwgMHgwMDAyIC0+ IGBNVUxUSUxJTkUKLS0gIHwgMHgwMDA0IC0+IGBET1RBTEwKLS0gIHwgMHgwMDA4IC0+IGBFWFRF TkRFRAotLSAgfCAweDAwMTAgLT4gYEFOQ0hPUkVECi0tICB8IDB4MDAyMCAtPiBgRE9MTEFSX0VO RE9OTFkKLS0gIHwgMHgwMDQwIC0+IGBFWFRSQQotLSAgfCAweDAyMDAgLT4gYFVOR1JFRURZCi0t ICB8IDB4MDgwMCAtPiBgVVRGOAotLSAgfCAweDEwMDAgLT4gYE5PX0FVVE9fQ0FQVFVSRQotLSAg fCAweDIwMDAgLT4gYE5PX1VURjhfQ0hFQ0sKLS0gIHwgMHg0MDAwIC0+IGBBVVRPX0NBTExPVVQK LS0gIHwgMHg0MDAwMCAtPiBgRklSU1RMSU5FCi0tICB8IF8gLT4gZmFpbHdpdGggIlBjcmUuY2Zs YWdfbGlzdDogdW5rbm93biBjb21waWxhdGlvbiBmbGFnIgotLQotLWxldCBhbGxfY2ZsYWdzID0K LS0gIFsKLS0gICAgMHgwMDAxOyAweDAwMDI7IDB4MDAwNDsgMHgwMDA4OyAweDAwMTA7IDB4MDAy MDsKLS0gICAgMHgwMDQwOyAweDAyMDA7IDB4MDgwMDsgMHgxMDAwOyAweDIwMDA7IDB4NDAwMDsg MHg0MDAwMDsKLS0gIF0KLS0KLS1sZXQgY2ZsYWdfbGlzdCBpY2ZsYWdzID0KLS0gIGxldCBjb2xs IGZsYWdfbGlzdCBmbGFnID0KLS0gICAgaWYgaWNmbGFncyBsYW5kIGZsYWcgPD4gMCB0aGVuIGNm bGFnX29mX2ludCBmbGFnIDo6IGZsYWdfbGlzdAotLSAgICBlbHNlIGZsYWdfbGlzdCBpbgotLSAg TGlzdC5mb2xkX2xlZnQgY29sbCBbXSBhbGxfY2ZsYWdzCi0tCi0tCi0tKCogUnVudGltZSBmbGFn cyAqKQotLQotLXR5cGUgcmZsYWcgPQotLSAgWwotLSAgfCBgQU5DSE9SRUQKLS0gIHwgYE5PVEJP TAotLSAgfCBgTk9URU9MCi0tICB8IGBOT1RFTVBUWQotLSAgfCBgUEFSVElBTAotLSAgXQotLQot LWxldCBpbnRfb2ZfcmZsYWcgPSBmdW5jdGlvbgotLSAgfCBgQU5DSE9SRUQgLT4gMHgwMDEwCi0t ICB8IGBOT1RCT0wgLT4gMHgwMDgwCi0tICB8IGBOT1RFT0wgLT4gMHgwMTAwCi0tICB8IGBOT1RF TVBUWSAtPiAweDA0MDAKLS0gIHwgYFBBUlRJQUwgLT4gMHg4MDAwCi0tCi0tbGV0IGNvbGxfaXJm bGFnIGlyZmxhZyBmbGFnID0gaW50X29mX3JmbGFnIGZsYWcgbG9yIGlyZmxhZwotLWxldCByZmxh Z3MgZmxhZ3MgPSBMaXN0LmZvbGRfbGVmdCBjb2xsX2lyZmxhZyAwIGZsYWdzCi0tCi0tbGV0IHJm bGFnX29mX2ludCA9IGZ1bmN0aW9uCi0tICB8IDB4MDAxMCAtPiBgQU5DSE9SRUQKLS0gIHwgMHgw MDgwIC0+IGBOT1RCT0wKLS0gIHwgMHgwMTAwIC0+IGBOT1RFT0wKLS0gIHwgMHgwNDAwIC0+IGBO T1RFTVBUWQotLSAgfCAweDgwMDAgLT4gYFBBUlRJQUwKLS0gIHwgXyAtPiBmYWlsd2l0aCAiUGNy ZS5yZmxhZ19saXN0OiB1bmtub3duIHJ1bnRpbWUgZmxhZyIKLS0KLS1sZXQgYWxsX3JmbGFncyA9 IFsweDAwMTA7IDB4MDA4MDsgMHgwMTAwOyAweDA0MDA7IDB4ODAwMF0KLS0KLS1sZXQgcmZsYWdf bGlzdCBpcmZsYWdzID0KLS0gIGxldCBjb2xsIGZsYWdfbGlzdCBmbGFnID0KLS0gICAgaWYgaXJm bGFncyBsYW5kIGZsYWcgPD4gMCB0aGVuIHJmbGFnX29mX2ludCBmbGFnIDo6IGZsYWdfbGlzdAot LSAgICBlbHNlIGZsYWdfbGlzdCBpbgotLSAgTGlzdC5mb2xkX2xlZnQgY29sbCBbXSBhbGxfcmZs YWdzCi0tCi0tCi0tKCogSW5mb3JtYXRpb24gb24gdGhlIFBDUkUtY29uZmlndXJhdGlvbiAoYnVp bGQtdGltZSBvcHRpb25zKSAqKQotLQotLWV4dGVybmFsIHBjcmVfdmVyc2lvbiA6IHVuaXQgLT4g c3RyaW5nID0gInBjcmVfdmVyc2lvbl9zdHViIgotLQotLWV4dGVybmFsIHBjcmVfY29uZmlnX3V0 ZjggOiB1bml0IC0+IGJvb2wgPSAicGNyZV9jb25maWdfdXRmOF9zdHViIiBAbm9hbGxvY0AKLS0K LS1leHRlcm5hbCBwY3JlX2NvbmZpZ19uZXdsaW5lIDoKLS0gIHVuaXQgLT4gY2hhciA9ICJwY3Jl X2NvbmZpZ19uZXdsaW5lX3N0dWIiIEBub2FsbG9jQAotLQotLWV4dGVybmFsIHBjcmVfY29uZmln X2xpbmtfc2l6ZSA6IHVuaXQgLT4gKGludCBAdW50YWdnZWRAKQotLSAgPSAicGNyZV9jb25maWdf bGlua19zaXplX3N0dWJfYmMiICJwY3JlX2NvbmZpZ19saW5rX3NpemVfc3R1YiIgQG5vYWxsb2NA Ci0tCi0tZXh0ZXJuYWwgcGNyZV9jb25maWdfbWF0Y2hfbGltaXQgOgotLSAgdW5pdCAtPiAoaW50 IEB1bnRhZ2dlZEApCi0tICA9ICJwY3JlX2NvbmZpZ19tYXRjaF9saW1pdF9zdHViX2JjIiAicGNy ZV9jb25maWdfbWF0Y2hfbGltaXRfc3R1YiIgQG5vYWxsb2NACi0tCi0tZXh0ZXJuYWwgcGNyZV9j b25maWdfbWF0Y2hfbGltaXRfcmVjdXJzaW9uIDogdW5pdCAtPiAoaW50IEB1bnRhZ2dlZEApCi0t ICA9Ci0tICAicGNyZV9jb25maWdfbWF0Y2hfbGltaXRfcmVjdXJzaW9uX3N0dWJfYmMiCi0tICAi cGNyZV9jb25maWdfbWF0Y2hfbGltaXRfcmVjdXJzaW9uX3N0dWIiCi0tICBAbm9hbGxvY0AKLS0K LS1leHRlcm5hbCBwY3JlX2NvbmZpZ19zdGFja3JlY3Vyc2UgOgotLSAgdW5pdCAtPiBib29sID0g InBjcmVfY29uZmlnX3N0YWNrcmVjdXJzZV9zdHViIiBAbm9hbGxvY0AKLS0KLS1sZXQgdmVyc2lv biA9IHBjcmVfdmVyc2lvbiAoKQotLWxldCBjb25maWdfdXRmOCA9IHBjcmVfY29uZmlnX3V0Zjgg KCkKLS1sZXQgY29uZmlnX25ld2xpbmUgPSBwY3JlX2NvbmZpZ19uZXdsaW5lICgpCi0tbGV0IGNv bmZpZ19saW5rX3NpemUgPSBwY3JlX2NvbmZpZ19saW5rX3NpemUgKCkKLS1sZXQgY29uZmlnX21h dGNoX2xpbWl0ID0gcGNyZV9jb25maWdfbWF0Y2hfbGltaXQgKCkKLS1sZXQgY29uZmlnX21hdGNo X2xpbWl0X3JlY3Vyc2lvbiA9IHBjcmVfY29uZmlnX21hdGNoX2xpbWl0X3JlY3Vyc2lvbiAoKQot LWxldCBjb25maWdfc3RhY2tyZWN1cnNlID0gcGNyZV9jb25maWdfc3RhY2tyZWN1cnNlICgpCi0t Ci0tCi0tKCogSW5mb3JtYXRpb24gb24gcGF0dGVybnMgKikKLS0KLS10eXBlIGZpcnN0Ynl0ZV9p bmZvID0KLS0gIFsgYENoYXIgb2YgY2hhcgotLSAgfCBgU3RhcnRfb25seQotLSAgfCBgQU5DSE9S RUQgXQotLQotLXR5cGUgc3R1ZHlfc3RhdCA9Ci0tICBbIGBOb3Rfc3R1ZGllZAotLSAgfCBgU3R1 ZGllZAotLSAgfCBgT3B0aW1hbCBdCi0tCi0tdHlwZSByZWdleHAKLS0KLS1leHRlcm5hbCBvcHRp b25zIDogcmVnZXhwIC0+IChpY2ZsYWcgQHVudGFnZ2VkQCkKLS0gID0gInBjcmVfb3B0aW9uc19z dHViX2JjIiAicGNyZV9vcHRpb25zX3N0dWIiCi0tCi0tZXh0ZXJuYWwgc2l6ZSA6IHJlZ2V4cCAt PiAoaW50IEB1bnRhZ2dlZEApCi0tICA9ICJwY3JlX3NpemVfc3R1Yl9iYyIgInBjcmVfc2l6ZV9z dHViIgotLQotLWV4dGVybmFsIHN0dWR5c2l6ZSA6IHJlZ2V4cCAtPiAoaW50IEB1bnRhZ2dlZEAp Ci0tICA9ICJwY3JlX3N0dWR5c2l6ZV9zdHViX2JjIiAicGNyZV9zdHVkeXNpemVfc3R1YiIKLS0K LS1leHRlcm5hbCBjYXB0dXJlY291bnQgOiByZWdleHAgLT4gKGludCBAdW50YWdnZWRAKQotLSAg PSAicGNyZV9jYXB0dXJlY291bnRfc3R1Yl9iYyIgInBjcmVfY2FwdHVyZWNvdW50X3N0dWIiCi0t Ci0tZXh0ZXJuYWwgYmFja3JlZm1heCA6IHJlZ2V4cCAtPiAoaW50IEB1bnRhZ2dlZEApCi0tICA9 ICJwY3JlX2JhY2tyZWZtYXhfc3R1Yl9iYyIgInBjcmVfYmFja3JlZm1heF9zdHViIgotLQotLWV4 dGVybmFsIG5hbWVjb3VudCA6IHJlZ2V4cCAtPiAoaW50IEB1bnRhZ2dlZEApCi0tICA9ICJwY3Jl X25hbWVjb3VudF9zdHViX2JjIiAicGNyZV9uYW1lY291bnRfc3R1YiIKLS0KLS1leHRlcm5hbCBu YW1lZW50cnlzaXplIDogcmVnZXhwIC0+IChpbnQgQHVudGFnZ2VkQCkKLS0gID0gInBjcmVfbmFt ZWVudHJ5c2l6ZV9zdHViX2JjIiAicGNyZV9uYW1lZW50cnlzaXplX3N0dWIiCi0tCi0tZXh0ZXJu YWwgbmFtZXMgOiByZWdleHAgLT4gc3RyaW5nIGFycmF5ID0gInBjcmVfbmFtZXNfc3R1YiIKLS1l eHRlcm5hbCBmaXJzdGJ5dGUgOiByZWdleHAgLT4gZmlyc3RieXRlX2luZm8gPSAicGNyZV9maXJz dGJ5dGVfc3R1YiIKLS1leHRlcm5hbCBmaXJzdHRhYmxlIDogcmVnZXhwIC0+IHN0cmluZyBvcHRp b24gPSAicGNyZV9maXJzdHRhYmxlX3N0dWIiCi0tZXh0ZXJuYWwgbGFzdGxpdGVyYWwgOiByZWdl eHAgLT4gY2hhciBvcHRpb24gPSAicGNyZV9sYXN0bGl0ZXJhbF9zdHViIgotLWV4dGVybmFsIHN0 dWR5X3N0YXQgOiByZWdleHAgLT4gc3R1ZHlfc3RhdCA9ICJwY3JlX3N0dWR5X3N0YXRfc3R1YiIg QG5vYWxsb2NACi0tCi0tCi0tKCogQ29tcGlsYXRpb24gb2YgcGF0dGVybnMgKikKLS0KLS10eXBl IGNodGFibGVzCi0tCi0tZXh0ZXJuYWwgbWFrZXRhYmxlcyA6IHVuaXQgLT4gY2h0YWJsZXMgPSAi cGNyZV9tYWtldGFibGVzX3N0dWIiCi0tCi0tKCogIEludGVybmFsIHVzZSBvbmx5ISAqKQotLWV4 dGVybmFsIHBjcmVfc3R1ZHkgOiByZWdleHAgLT4gdW5pdCA9ICJwY3JlX3N0dWR5X3N0dWIiCi0t Ci0tZXh0ZXJuYWwgY29tcGlsZSA6IChpY2ZsYWcgIEB1bnRhZ2dlZEApIC0+IGNodGFibGVzIG9w dGlvbiAtPiBzdHJpbmcgLT4gcmVnZXhwCi0tICA9ICJwY3JlX2NvbXBpbGVfc3R1Yl9iYyIgInBj cmVfY29tcGlsZV9zdHViIgotLQotLWV4dGVybmFsIGdldF9tYXRjaF9saW1pdCA6IHJlZ2V4cCAt PiBpbnQgb3B0aW9uID0gInBjcmVfZ2V0X21hdGNoX2xpbWl0X3N0dWIiCi0tCi0tZXh0ZXJuYWwg Z2V0X21hdGNoX2xpbWl0X3JlY3Vyc2lvbiA6IHJlZ2V4cCAtPiBpbnQgb3B0aW9uCi0tICA9ICJw Y3JlX2dldF9tYXRjaF9saW1pdF9yZWN1cnNpb25fc3R1YiIKLS0KLS0oKiBJbnRlcm5hbCB1c2Ug b25seSEgKikKLS1leHRlcm5hbCBzZXRfaW1wX21hdGNoX2xpbWl0IDogcmVnZXhwIC0+IChpbnQg QHVudGFnZ2VkQCkgLT4gcmVnZXhwCi0tICA9ICJwY3JlX3NldF9pbXBfbWF0Y2hfbGltaXRfc3R1 Yl9iYyIgInBjcmVfc2V0X2ltcF9tYXRjaF9saW1pdF9zdHViIgotLSAgQG5vYWxsb2NACi0tCi0t KCogSW50ZXJuYWwgdXNlIG9ubHkhICopCi0tZXh0ZXJuYWwgc2V0X2ltcF9tYXRjaF9saW1pdF9y ZWN1cnNpb24gOiByZWdleHAgLT4gKGludCBAdW50YWdnZWRAKSAtPiByZWdleHAKLS0gID0KLS0g ICJwY3JlX3NldF9pbXBfbWF0Y2hfbGltaXRfcmVjdXJzaW9uX3N0dWJfYmMiCi0tICAicGNyZV9z ZXRfaW1wX21hdGNoX2xpbWl0X3JlY3Vyc2lvbl9zdHViIgotLSAgQG5vYWxsb2NACi0tCi0tbGV0 IHJlZ2V4cAotLSAgICAgID8oc3R1ZHkgPSB0cnVlKSA/bGltaXQgP2xpbWl0X3JlY3Vyc2lvbgot LSAgICAgID8oaWZsYWdzID0gMCkgP2ZsYWdzID9jaHRhYmxlcyBwYXQgPQotLSAgbGV0IHJleCA9 Ci0tICAgIG1hdGNoIGZsYWdzIHdpdGgKLS0gICAgfCBTb21lIGZsYWdfbGlzdCAtPiBjb21waWxl IChjZmxhZ3MgZmxhZ19saXN0KSBjaHRhYmxlcyBwYXQKLS0gICAgfCBfIC0+IGNvbXBpbGUgaWZs YWdzIGNodGFibGVzIHBhdAotLSAgaW4KLS0gIGlmIHN0dWR5IHRoZW4gcGNyZV9zdHVkeSByZXg7 Ci0tICBsZXQgcmV4ID0KLS0gICAgbWF0Y2ggbGltaXQgd2l0aAotLSAgICB8IE5vbmUgLT4gcmV4 Ci0tICAgIHwgU29tZSBsaW0gLT4gc2V0X2ltcF9tYXRjaF9saW1pdCByZXggbGltCi0tICBpbgot LSAgbWF0Y2ggbGltaXRfcmVjdXJzaW9uIHdpdGgKLS0gIHwgTm9uZSAtPiByZXgKLS0gIHwgU29t ZSBsaW0gLT4gc2V0X2ltcF9tYXRjaF9saW1pdF9yZWN1cnNpb24gcmV4IGxpbQotLQotLWxldCBy ZWdleHBfb3IKLS0gICAgICA/c3R1ZHkgP2xpbWl0ID9saW1pdF9yZWN1cnNpb24gPyhpZmxhZ3Mg PSAwKSA/ZmxhZ3MgP2NodGFibGVzIHBhdHMgPQotLSAgbGV0IGNoZWNrIHBhdCA9Ci0tICAgIHRy eSBpZ25vcmUgKHJlZ2V4cCB+c3R1ZHk6ZmFsc2UgfmlmbGFncyA/ZmxhZ3MgP2NodGFibGVzIHBh dCkKLS0gICAgd2l0aCBFcnJvciBlcnJvciAtPiByYWlzZSAoUmVnZXhwX29yIChwYXQsIGVycm9y KSkKLS0gIGluCi0tICBMaXN0Lml0ZXIgY2hlY2sgcGF0czsKLS0gIGxldCBiaWdfcGF0ID0KLS0g ICAgbGV0IGNudiBwYXQgPSAiKD86IiBeIHBhdCBeICIpIiBpbgotLSAgICBTdHJpbmcuY29uY2F0 ICJ8IiAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBjbnYgcGF0cykpCi0tICBpbgotLSAgcmVnZXhw ID9zdHVkeSA/bGltaXQgP2xpbWl0X3JlY3Vyc2lvbiB+aWZsYWdzID9mbGFncyA/Y2h0YWJsZXMg YmlnX3BhdAotLQotLWxldCBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgc3RyIHN0cl9vZnMgYnRz IGJ0c19vZnMgbGVuID0KLS0gIGxldCBzdHJfYnRzID0gQnl0ZXMudW5zYWZlX29mX3N0cmluZyBz dHIgaW4KLS0gIEJ5dGVzLnVuc2FmZV9ibGl0IHN0cl9idHMgc3RyX29mcyBidHMgYnRzX29mcyBs ZW4KLS0KLS1sZXQgc3RyaW5nX3Vuc2FmZV9zdWIgc3RyIG9mcyBsZW4gPQotLSAgbGV0IHJlcyA9 IEJ5dGVzLmNyZWF0ZSBsZW4gaW4KLS0gIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBzdHIgb2Zz IHJlcyAwIGxlbjsKLS0gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzCi0tCi0tbGV0IHF1b3Rl IHMgPQotLSAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpbgotLSAgbGV0IGJ1ZiA9IEJ5dGVz LmNyZWF0ZSAobGVuIGxzbCAxKSBpbgotLSAgbGV0IHBvcyA9IHJlZiAwIGluCi0tICBmb3IgaSA9 IDAgdG8gbGVuIC0gMSBkbwotLSAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aAot LSAgICB8ICdcXCcgfCAnXicgfCAnJCcgfCAnLicgfCAnWycgfCAnfCcKLS0gICAgfCAnKCcgIHwg JyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snIGFzIGMgLT4KLS0gICAgICBCeXRlcy51bnNhZmVf c2V0IGJ1ZiAhcG9zICdcXCc7Ci0tICAgICAgaW5jciBwb3M7Ci0tICAgICAgQnl0ZXMudW5zYWZl X3NldCBidWYgIXBvcyBjOwotLSAgICAgIGluY3IgcG9zCi0tICAgIHwgYyAtPiBCeXRlcy51bnNh ZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zCi0tICBkb25lOwotLSAgc3RyaW5nX3Vuc2FmZV9z dWIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSAwICFwb3MKLS0KLS0KLS0oKiBNYXRjaGlu ZyBvZiBwYXR0ZXJucyBhbmQgc3VicGF0dGVybiBleHRyYWN0aW9uICopCi0tCi0tKCogRGVmYXVs dCByZWd1bGFyIGV4cHJlc3Npb24gd2hlbiBub25lIGlzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyICop Ci0tbGV0IGRlZl9yZXggPSByZWdleHAgIlxccysiCi0tCi0tdHlwZSBzdWJzdHJpbmdzID0gc3Ry aW5nICogaW50IGFycmF5Ci0tCi0tdHlwZSBjYWxsb3V0X2RhdGEgPQotLSAgewotLSAgICBjYWxs b3V0X251bWJlciA6IGludDsKLS0gICAgc3Vic3RyaW5ncyA6IHN1YnN0cmluZ3M7Ci0tICAgIHN0 YXJ0X21hdGNoIDogaW50OwotLSAgICBjdXJyZW50X3Bvc2l0aW9uIDogaW50OwotLSAgICBjYXB0 dXJlX3RvcCA6IGludDsKLS0gICAgY2FwdHVyZV9sYXN0IDogaW50OwotLSAgICBwYXR0ZXJuX3Bv c2l0aW9uIDogaW50OwotLSAgICBuZXh0X2l0ZW1fbGVuZ3RoIDogaW50OwotLSAgfQotLQotLXR5 cGUgY2FsbG91dCA9IGNhbGxvdXRfZGF0YSAtPiB1bml0Ci0tCi0tbGV0IGdldF9zdWJqZWN0IChz dWJqLCBfKSA9IHN1YmoKLS0KLS1sZXQgbnVtX29mX3N1YnMgKF8sIG92ZWN0b3IpID0gQXJyYXku bGVuZ3RoIG92ZWN0b3IgLyAzCi0tCi0tbGV0IGdldF9vZmZzZXRfc3RhcnQgb3ZlY3RvciBzdHJf bnVtID0KLS0gIGlmIHN0cl9udW0gPCAwIHx8IHN0cl9udW0gPj0gQXJyYXkubGVuZ3RoIG92ZWN0 b3IgLyAzIHRoZW4KLS0gICAgaW52YWxpZF9hcmcgIlBjcmUuZ2V0X29mZnNldF9zdGFydDogaWxs ZWdhbCBvZmZzZXQiOwotLSAgbGV0IG9mZnNldCA9IHN0cl9udW0gbHNsIDEgaW4KLS0gIG9mZnNl dCwgQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIG9mZnNldAotLQotLWxldCBnZXRfc3Vic3RyaW5n X2F1eCAoc3Viaiwgb3ZlY3Rvcikgb2Zmc2V0IHN0YXJ0ID0KLS0gIGlmIHN0YXJ0IDwgMCB0aGVu IHJhaXNlIE5vdF9mb3VuZAotLSAgZWxzZQotLSAgICBzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIHN0 YXJ0IChBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgKG9mZnNldCArIDEpIC0gc3RhcnQpCi0tCi0t bGV0IGdldF9zdWJzdHJpbmcgKF8sIG92ZWN0b3IgYXMgc3Vic3RyaW5ncykgc3RyX251bSA9Ci0t ICBsZXQgb2Zmc2V0LCBzdGFydCA9IGdldF9vZmZzZXRfc3RhcnQgb3ZlY3RvciBzdHJfbnVtIGlu Ci0tICBnZXRfc3Vic3RyaW5nX2F1eCBzdWJzdHJpbmdzIG9mZnNldCBzdGFydAotLQotLWxldCBn ZXRfc3Vic3RyaW5nX29mcyAoX3N1YmosIG92ZWN0b3IpIHN0cl9udW0gPQotLSAgbGV0IG9mZnNl dCwgc3RhcnQgPSBnZXRfb2Zmc2V0X3N0YXJ0IG92ZWN0b3Igc3RyX251bSBpbgotLSAgaWYgc3Rh cnQgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kCi0tICBlbHNlIHN0YXJ0LCBBcnJheS51bnNhZmVf Z2V0IG92ZWN0b3IgKG9mZnNldCArIDEpCi0tCi0tbGV0IHVuc2FmZV9nZXRfc3Vic3RyaW5nIChf LCBvdmVjdG9yIGFzIHN1YnN0cmluZ3MpIHN0cl9udW0gPQotLSAgbGV0IG9mZnNldCA9IHN0cl9u dW0gbHNsIDEgaW4KLS0gIHRyeSBnZXRfc3Vic3RyaW5nX2F1eCBzdWJzdHJpbmdzIG9mZnNldCAo QXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIG9mZnNldCkKLS0gIHdpdGggTm90X2ZvdW5kIC0+ICIi Ci0tCi0tbGV0IGdldF9zdWJzdHJpbmdzID8oZnVsbF9tYXRjaCA9IHRydWUpIChfLCBvdmVjdG9y IGFzIHN1YnN0cmluZ3MpID0KLS0gIGlmIGZ1bGxfbWF0Y2ggdGhlbgotLSAgICBBcnJheS5pbml0 IChBcnJheS5sZW5ndGggb3ZlY3RvciAvIDMpICh1bnNhZmVfZ2V0X3N1YnN0cmluZyBzdWJzdHJp bmdzKQotLSAgZWxzZQotLSAgICBsZXQgbGVuID0gKEFycmF5Lmxlbmd0aCBvdmVjdG9yIC8gMykg LSAxIGluCi0tICAgIEFycmF5LmluaXQgbGVuIChmdW4gbiAtPiB1bnNhZmVfZ2V0X3N1YnN0cmlu ZyBzdWJzdHJpbmdzIChuICsgMSkpCi0tCi0tbGV0IHVuc2FmZV9nZXRfb3B0X3N1YnN0cmluZyAo Xywgb3ZlY3RvciBhcyBzdWJzdHJpbmdzKSBzdHJfbnVtID0KLS0gIGxldCBvZmZzZXQgPSBzdHJf bnVtIGxzbCAxIGluCi0tICB0cnkKLS0gICAgbGV0IHN0YXJ0ID0gQXJyYXkudW5zYWZlX2dldCBv dmVjdG9yIG9mZnNldCBpbgotLSAgICBsZXQgc3RyID0gZ2V0X3N1YnN0cmluZ19hdXggc3Vic3Ry aW5ncyBvZmZzZXQgc3RhcnQgaW4KLS0gICAgU29tZSBzdHIKLS0gIHdpdGggTm90X2ZvdW5kIC0+ IE5vbmUKLS0KLS1sZXQgZ2V0X29wdF9zdWJzdHJpbmdzID8oZnVsbF9tYXRjaCA9IHRydWUpIChf LCBvdmVjdG9yIGFzIHN1YnN0cmluZ3MpID0KLS0gIGlmIGZ1bGxfbWF0Y2ggdGhlbgotLSAgICBB cnJheS5pbml0IChBcnJheS5sZW5ndGggb3ZlY3RvciAvIDMpICh1bnNhZmVfZ2V0X29wdF9zdWJz dHJpbmcgc3Vic3RyaW5ncykKLS0gIGVsc2UKLS0gICAgbGV0IGxlbiA9IChBcnJheS5sZW5ndGgg b3ZlY3RvciAvIDMpIC0gMSBpbgotLSAgICBBcnJheS5pbml0IGxlbiAoZnVuIG4gLT4gdW5zYWZl X2dldF9vcHRfc3Vic3RyaW5nIHN1YnN0cmluZ3MgKG4gKyAxKSkKLS0KLS1leHRlcm5hbCBnZXRf c3RyaW5nbnVtYmVyIDogcmVnZXhwIC0+IHN0cmluZyAtPiAoaW50IEB1bnRhZ2dlZEApCi0tICA9 ICJwY3JlX2dldF9zdHJpbmdudW1iZXJfc3R1Yl9iYyIgInBjcmVfZ2V0X3N0cmluZ251bWJlcl9z dHViIgotLQotLWxldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHN1YnN0cmluZ3MgPQot LSAgZ2V0X3N1YnN0cmluZyBzdWJzdHJpbmdzIChnZXRfc3RyaW5nbnVtYmVyIHJleCBuYW1lKQot LQotLWxldCBnZXRfbmFtZWRfc3Vic3RyaW5nX29mcyByZXggbmFtZSBzdWJzdHJpbmdzID0KLS0g IGdldF9zdWJzdHJpbmdfb2ZzIHN1YnN0cmluZ3MgKGdldF9zdHJpbmdudW1iZXIgcmV4IG5hbWUp Ci0tCi0tZXh0ZXJuYWwgdW5zYWZlX3BjcmVfZXhlYyA6Ci0tICAoaXJmbGFnIEB1bnRhZ2dlZEAp IC0+Ci0tICByZWdleHAgLT4KLS0gIHBvcyA6IChpbnQgQHVudGFnZ2VkQCkgLT4KLS0gIHN1Ympf c3RhcnQgOiAoaW50IEB1bnRhZ2dlZEApIC0+Ci0tICBzdWJqIDogc3RyaW5nIC0+Ci0tICBpbnQg YXJyYXkgLT4KLS0gIGNhbGxvdXQgb3B0aW9uIC0+Ci0tICB1bml0ID0gInBjcmVfZXhlY19zdHVi X2JjIiAicGNyZV9leGVjX3N0dWIiCi0tCi0tbGV0IG1ha2Vfb3ZlY3RvciByZXggPQotLSAgbGV0 IHN1Ymdyb3VwczEgPSBjYXB0dXJlY291bnQgcmV4ICsgMSBpbgotLSAgbGV0IHN1Ymdyb3VwczIg PSBzdWJncm91cHMxIGxzbCAxIGluCi0tICBzdWJncm91cHMyLCBBcnJheS5tYWtlIChzdWJncm91 cHMxICsgc3ViZ3JvdXBzMikgMAotLQotLWxldCBwY3JlX2V4ZWMgPyhpZmxhZ3MgPSAwKSA/Zmxh Z3MgPyhyZXggPSBkZWZfcmV4KSA/cGF0ID8ocG9zID0gMCkKLS0gICAgICAgICAgICAgID9jYWxs b3V0IHN1YmogPQotLSAgbGV0IHJleCA9IG1hdGNoIHBhdCB3aXRoIFNvbWUgc3RyIC0+IHJlZ2V4 cCBzdHIgfCBfIC0+IHJleCBpbgotLSAgbGV0IGlmbGFncyA9IG1hdGNoIGZsYWdzIHdpdGggU29t ZSBmbGFncyAtPiByZmxhZ3MgZmxhZ3MgfCBfIC0+IGlmbGFncyBpbgotLSAgbGV0IF8sIG92ZWN0 b3IgPSBtYWtlX292ZWN0b3IgcmV4IGluCi0tICB1bnNhZmVfcGNyZV9leGVjIGlmbGFncyByZXgg fnBvcyB+c3Vial9zdGFydDowIH5zdWJqIG92ZWN0b3IgY2FsbG91dDsKLS0gIG92ZWN0b3IKLS0K LS1sZXQgZXhlYyA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJqID0K LS0gIHN1YmosIHBjcmVfZXhlYyA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91 dCBzdWJqCi0tCi0tbGV0IG5leHRfbWF0Y2ggP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID8ocG9z ID0gMCkgP2NhbGxvdXQgKHN1YmosIG92ZWN0b3IpID0KLS0gIGxldCBwb3MgPSBBcnJheS51bnNh ZmVfZ2V0IG92ZWN0b3IgMSArIHBvcyBpbgotLSAgbGV0IHN1YmpfbGVuID0gU3RyaW5nLmxlbmd0 aCBzdWJqIGluCi0tICBpZiBwb3MgPCAwIHx8IHBvcyA+IHN1YmpfbGVuIHRoZW4KLS0gICAgaW52 YWxpZF9hcmcgIlBjcmUubmV4dF9tYXRjaDogaWxsZWdhbCBvZmZzZXQiOwotLSAgc3ViaiwgcGNy ZV9leGVjID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCB+cG9zID9jYWxsb3V0IHN1YmoKLS0KLS1s ZXQgcmVjIGNvcHlfbHN0IGFyIG4gPSBmdW5jdGlvbgotLSAgfCBbXSAtPiBhcgotLSAgfCBoIDo6 IHQgLT4gQXJyYXkudW5zYWZlX3NldCBhciBuIGg7IGNvcHlfbHN0IGFyIChuIC0gMSkgdAotLQot LWxldCBleGVjX2FsbCA/KGlmbGFncyA9IDApID9mbGFncyA/KHJleCA9IGRlZl9yZXgpID9wYXQg P3BvcyA/Y2FsbG91dCBzdWJqID0KLS0gIGxldCByZXggPSBtYXRjaCBwYXQgd2l0aCBTb21lIHN0 ciAtPiByZWdleHAgc3RyIHwgXyAtPiByZXggaW4KLS0gIGxldCBpZmxhZ3MgPSBtYXRjaCBmbGFn cyB3aXRoIFNvbWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxhZ3MgaW4KLS0gIGxl dCAoXywgb3ZlY3RvciBhcyBzc3RycykgPSBleGVjIH5pZmxhZ3MgfnJleCA/cG9zID9jYWxsb3V0 IHN1YmogaW4KLS0gIGxldCBudWxsX2ZsYWdzID0gaWZsYWdzIGxvciAweDA0MDAgaW4KLS0gIGxl dCBzdWJqX2xlbiA9IFN0cmluZy5sZW5ndGggc3ViaiBpbgotLSAgbGV0IHJlYyBsb29wIHBvcyAo c3Viaiwgb3ZlY3RvciBhcyBzc3RycykgbiBsc3QgPQotLSAgICBsZXQgbWF5YmVfb3ZlY3RvciA9 Ci0tICAgICAgdHJ5Ci0tICAgICAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0 b3IgMCBpbgotLSAgICAgICAgaWYgZmlyc3QgPSBwb3MgJiYgQXJyYXkudW5zYWZlX2dldCBvdmVj dG9yIDEgPSBwb3MgdGhlbgotLSAgICAgICAgICBpZiBwb3MgPSBzdWJqX2xlbiB0aGVuIE5vbmUK LS0gICAgICAgICAgZWxzZSBTb21lIChwY3JlX2V4ZWMgfmlmbGFnczpudWxsX2ZsYWdzIH5yZXgg fnBvcyA/Y2FsbG91dCBzdWJqKQotLSAgICAgICAgZWxzZSBTb21lIChwY3JlX2V4ZWMgfmlmbGFn cyB+cmV4IH5wb3MgP2NhbGxvdXQgc3ViaikKLS0gICAgICB3aXRoIE5vdF9mb3VuZCAtPiBOb25l IGluCi0tICAgIG1hdGNoIG1heWJlX292ZWN0b3Igd2l0aAotLSAgICB8IFNvbWUgb3ZlY3RvciAt PgotLSAgICAgICAgbGV0IG5ld19wb3MgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSBpbgot LSAgICAgICAgbG9vcCBuZXdfcG9zIChzdWJqLCBvdmVjdG9yKSAobiArIDEpIChzc3RycyA6OiBs c3QpCi0tICAgIHwgTm9uZSAtPiBjb3B5X2xzdCAoQXJyYXkubWFrZSAobiArIDEpIHNzdHJzKSAo biAtIDEpIGxzdCBpbgotLSAgbG9vcCAoQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEpIHNzdHJz IDAgW10KLS0KLS1sZXQgZXh0cmFjdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/ZnVs bF9tYXRjaCA/Y2FsbG91dCBzdWJqID0KLS0gIGdldF9zdWJzdHJpbmdzID9mdWxsX21hdGNoIChl eGVjID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IHN1YmopCi0tCi0tbGV0 IGV4dHJhY3Rfb3B0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9mdWxsX21hdGNoID9j YWxsb3V0IHN1YmogPQotLSAgZ2V0X29wdF9zdWJzdHJpbmdzCi0tICAgID9mdWxsX21hdGNoIChl eGVjID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IHN1YmopCi0tCi0tbGV0 IGV4dHJhY3RfYWxsID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9mdWxsX21hdGNoID9j YWxsb3V0IHN1YmogPQotLSAgbGV0IG1hbnlfc3N0cnMgPSBleGVjX2FsbCA/aWZsYWdzID9mbGFn cyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJqIGluCi0tICBBcnJheS5tYXAgKGdldF9zdWJz dHJpbmdzID9mdWxsX21hdGNoKSBtYW55X3NzdHJzCi0tCi0tbGV0IGV4dHJhY3RfYWxsX29wdCA/ aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/ZnVsbF9tYXRjaCA/Y2FsbG91dCBzdWJqID0K LS0gIGxldCBtYW55X3NzdHJzID0gZXhlY19hbGwgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9w b3MgP2NhbGxvdXQgc3ViaiBpbgotLSAgQXJyYXkubWFwIChnZXRfb3B0X3N1YnN0cmluZ3MgP2Z1 bGxfbWF0Y2gpIG1hbnlfc3N0cnMKLS0KLS1sZXQgcG1hdGNoID9pZmxhZ3MgP2ZsYWdzID9yZXgg P3BhdCA/cG9zID9jYWxsb3V0IHN1YmogPQotLSAgdHJ5IGlnbm9yZSAocGNyZV9leGVjID9pZmxh Z3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IHN1YmopOyB0cnVlCi0tICB3aXRoIE5v dF9mb3VuZCAtPiBmYWxzZQotLQotLQotLSgqIFN0cmluZyBzdWJzdGl0dXRpb24gKikKLS0KLS0o KiBFbGVtZW50cyBvZiBhIHN1YnN0aXR1dGlvbiBwYXR0ZXJuICopCi0tdHlwZSBzdWJzdCA9Ci0t ICB8IFN1YnN0U3RyaW5nIG9mIGludCAqIGludCAoKiBEZW5vdGVzIGEgc3Vic3RyaW5nIGluIHRo ZSBzdWJzdGl0dXRpb24gKikKLS0gIHwgQmFja3JlZiBvZiBpbnQgICAgICAgICAgICgqIG50aCBi YWNrcmVmZXJlbmNlICgkMCBpcyBwcm9ncmFtIG5hbWUhKSAqKQotLSAgfCBNYXRjaCAgICAgICAg ICAgICAgICAgICAgKCogVGhlIHdob2xlIG1hdGNoZWQgc3RyaW5nICopCi0tICB8IFByZU1hdGNo ICAgICAgICAgICAgICAgICAoKiBUaGUgc3RyaW5nIGJlZm9yZSB0aGUgbWF0Y2ggKikKLS0gIHwg UG9zdE1hdGNoICAgICAgICAgICAgICAgICgqIFRoZSBzdHJpbmcgYWZ0ZXIgdGhlIG1hdGNoICop Ci0tICB8IExhc3RQYXJlbk1hdGNoICAgICAgICAgICAoKiBUaGUgbGFzdCBtYXRjaGVkIGdyb3Vw ICopCi0tCi0tKCogSW5mb3JtYXRpb24gb24gc3Vic3RpdHV0aW9uIHBhdHRlcm5zICopCi0tdHlw ZSBzdWJzdGl0dXRpb24gPSBzdHJpbmcgICAgICgqIFRoZSBzdWJzdGl0dXRpb24gc3RyaW5nICop Ci0tICAgICAgICAgICAgICAgICAgKiBpbnQgICAgICAgICgqIEhpZ2hlc3QgZ3JvdXAgbnVtYmVy IG9mIGJhY2tyZWZlcmVuY2VzICopCi0tICAgICAgICAgICAgICAgICAgKiBib29sICAgICAgICgq IE1ha2VzIHVzZSBvZiAiTGFzdFBhcmVuTWF0Y2giICopCi0tICAgICAgICAgICAgICAgICAgKiBz dWJzdCBsaXN0ICgqIFRoZSBsaXN0IG9mIHN1YnN0aXR1dGlvbiBlbGVtZW50cyAqKQotLQotLSgq IE9ubHkgdXNlZCBpbnRlcm5hbGx5IGluICJzdWJzdCIgKikKLS1leGNlcHRpb24gRm91bmRBdCBv ZiBpbnQKLS0KLS1sZXQgemVybyA9IENoYXIuY29kZSAnMCcKLS0KLS1sZXQgc3Vic3Qgc3RyID0K LS0gIGxldCBtYXhfYnIgPSByZWYgMCBpbgotLSAgbGV0IHdpdGhfbHAgPSByZWYgZmFsc2UgaW4K LS0gIGxldCBsaXggPSBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgaW4KLS0gIGxldCByZWMgbG9vcCBh Y2MgbiA9Ci0tICAgIGlmIGxpeCA8IG4gdGhlbiBhY2MKLS0gICAgZWxzZQotLSAgICAgIHRyeQot LSAgICAgICAgZm9yIGkgPSBuIHRvIGxpeCBkbwotLSAgICAgICAgICBpZiBTdHJpbmcudW5zYWZl X2dldCBzdHIgaSA9ICckJyB0aGVuIHJhaXNlIChGb3VuZEF0IGkpCi0tICAgICAgICBkb25lOwot LSAgICAgICAgU3Vic3RTdHJpbmcgKG4sIGxpeCAtIG4gKyAxKSA6OiBhY2MKLS0gICAgICB3aXRo IEZvdW5kQXQgaSAtPgotLSAgICAgICAgaWYgaSA9IGxpeCB0aGVuIFN1YnN0U3RyaW5nIChuLCBs aXggLSBuICsgMSkgOjogYWNjCi0tICAgICAgICBlbHNlCi0tICAgICAgICAgIGxldCBpMSA9IGkg KyAxIGluCi0tICAgICAgICAgIGxldCBhY2MgPSBpZiBuID0gaSB0aGVuIGFjYyBlbHNlIFN1YnN0 U3RyaW5nIChuLCBpIC0gbikgOjogYWNjIGluCi0tICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNh ZmVfZ2V0IHN0ciBpMSB3aXRoCi0tICAgICAgICAgIHwgJzAnLi4nOScgYXMgYyAtPgotLSAgICAg ICAgICAgICAgbGV0IHN1YnBhdF9uciA9IHJlZiAoQ2hhci5jb2RlIGMgLSB6ZXJvKSBpbgotLSAg ICAgICAgICAgICAgKHRyeQotLSAgICAgICAgICAgICAgICBmb3IgaiA9IGkxICsgMSB0byBsaXgg ZG8KLS0gICAgICAgICAgICAgICAgICBsZXQgYyA9IFN0cmluZy51bnNhZmVfZ2V0IHN0ciBqIGlu Ci0tICAgICAgICAgICAgICAgICAgaWYgYyA+PSAnMCcgJiYgYyA8PSAnOScgdGhlbgotLSAgICAg ICAgICAgICAgICAgICAgc3VicGF0X25yIDo9IDEwICogIXN1YnBhdF9uciArIENoYXIuY29kZSBj IC0gemVybwotLSAgICAgICAgICAgICAgICAgIGVsc2UgcmFpc2UgKEZvdW5kQXQgaikKLS0gICAg ICAgICAgICAgICAgZG9uZTsKLS0gICAgICAgICAgICAgICAgbWF4X2JyIDo9IG1heCAhc3VicGF0 X25yICFtYXhfYnI7Ci0tICAgICAgICAgICAgICAgIEJhY2tyZWYgIXN1YnBhdF9uciA6OiBhY2MK LS0gICAgICAgICAgICAgIHdpdGggRm91bmRBdCBqIC0+Ci0tICAgICAgICAgICAgICAgIG1heF9i ciA6PSBtYXggIXN1YnBhdF9uciAhbWF4X2JyOwotLSAgICAgICAgICAgICAgICBsb29wIChCYWNr cmVmICFzdWJwYXRfbnIgOjogYWNjKSBqKQotLSAgICAgICAgICB8ICchJyAgLT4gbG9vcCBhY2Mg KGkxICsgMSkKLS0gICAgICAgICAgfCAnJCcgIC0+IGxvb3AgKFN1YnN0U3RyaW5nIChpMSwgMSkg OjogYWNjKSAoaTEgKyAxKQotLSAgICAgICAgICB8ICcmJyAgLT4gbG9vcCAoTWF0Y2ggOjogYWNj KSAoaTEgKyAxKQotLSAgICAgICAgICB8ICdgJyAgLT4gbG9vcCAoUHJlTWF0Y2ggOjogYWNjKSAo aTEgKyAxKQotLSAgICAgICAgICB8ICdcJycgLT4gbG9vcCAoUG9zdE1hdGNoIDo6IGFjYykgKGkx ICsgMSkKLS0gICAgICAgICAgfCAnKycgIC0+Ci0tICAgICAgICAgICAgICB3aXRoX2xwIDo9IHRy dWU7Ci0tICAgICAgICAgICAgICBsb29wIChMYXN0UGFyZW5NYXRjaCA6OiBhY2MpIChpMSArIDEp Ci0tICAgICAgICAgIHwgXyAgICAtPiBsb29wIGFjYyBpMSBpbgotLSAgbGV0IHN1YnN0X2xzdCA9 IGxvb3AgW10gMCBpbgotLSAgc3RyLCAhbWF4X2JyLCAhd2l0aF9scCwgc3Vic3RfbHN0Ci0tCi0t bGV0IGRlZl9zdWJzdCA9IHN1YnN0ICIiCi0tCi0tKCogQ2FsY3VsYXRlcyBhIGxpc3Qgb2YgdHVw bGVzIChzdHIsIG9mZnNldCwgbGVuKSB3aGljaCBjb250YWluCi0tICAgc3Vic3RyaW5ncyB0byBi ZSBjb3BpZWQgb24gc3Vic3RpdHV0aW9ucy4gSW50ZXJuYWwgdXNlIG9ubHkhICopCi0tbGV0IGNh bGNfdHJhbnNfbHN0IHN1Ymdyb3VwczIgb3ZlY3RvciBzdWJqIHRlbXBsIHN1YnN0X2xzdCA9Ci0t ICBsZXQgcHJlZml4X2xlbiA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGluCi0tICBsZXQg bGFzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGluCi0tICBsZXQgY29sbCAocmVzX2xl biwgdHJhbnNfbHN0IGFzIGFjY3UpID0KLS0gICAgbGV0IHJldHVybl9sc3QgKF9zdHIsIF9peCwg bGVuIGFzIGVsKSA9Ci0tICAgICAgaWYgbGVuID0gMCB0aGVuIGFjY3UgZWxzZSByZXNfbGVuICsg bGVuLCBlbCA6OiB0cmFuc19sc3QgaW4KLS0gICAgZnVuY3Rpb24KLS0gICAgfCBTdWJzdFN0cmlu ZyAoaXgsIGxlbikgLT4gcmV0dXJuX2xzdCAodGVtcGwsIGl4LCBsZW4pCi0tICAgIHwgQmFja3Jl ZiAwIC0+Ci0tICAgICAgICBsZXQgcHJvZ19uYW1lID0gU3lzLmFyZ3YuKDApIGluCi0tICAgICAg ICByZXR1cm5fbHN0IChwcm9nX25hbWUsIDAsIFN0cmluZy5sZW5ndGggcHJvZ19uYW1lKQotLSAg ICB8IEJhY2tyZWYgbiAtPgotLSAgICAgICAgbGV0IG9mZnNldCA9IG4gbHNsIDEgaW4KLS0gICAg ICAgIGxldCBzdGFydCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciBvZmZzZXQgaW4KLS0gICAg ICAgIGxldCBsZW4gPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgKG9mZnNldCArIDEpIC0gc3Rh cnQgaW4KLS0gICAgICAgIHJldHVybl9sc3QgKHN1YmosIHN0YXJ0LCBsZW4pCi0tICAgIHwgTWF0 Y2ggLT4gcmV0dXJuX2xzdCAoc3ViaiwgcHJlZml4X2xlbiwgbGFzdCAtIHByZWZpeF9sZW4pCi0t ICAgIHwgUHJlTWF0Y2ggLT4gcmV0dXJuX2xzdCAoc3ViaiwgMCwgcHJlZml4X2xlbikKLS0gICAg fCBQb3N0TWF0Y2ggLT4gcmV0dXJuX2xzdCAoc3ViaiwgbGFzdCwgU3RyaW5nLmxlbmd0aCBzdWJq IC0gbGFzdCkKLS0gICAgfCBMYXN0UGFyZW5NYXRjaCAtPgotLSAgICAgICAgbGV0IHN1Ymdyb3Vw czJfMiA9IHN1Ymdyb3VwczIgLSAyIGluCi0tICAgICAgICBsZXQgcG9zID0gcmVmIHN1Ymdyb3Vw czJfMiBpbgotLSAgICAgICAgbGV0IGl4ID0gcmVmIChBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3Ig c3ViZ3JvdXBzMl8yKSBpbgotLSAgICAgICAgd2hpbGUgIWl4IDwgMCBkbwotLSAgICAgICAgICBs ZXQgcG9zXzIgPSAhcG9zIC0gMiBpbgotLSAgICAgICAgICBwb3MgOj0gcG9zXzI7Ci0tICAgICAg ICAgIGl4IDo9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciBwb3NfMgotLSAgICAgICAgZG9uZTsK LS0gICAgICAgIHJldHVybl9sc3QgKHN1YmosICFpeCwgQXJyYXkudW5zYWZlX2dldCBvdmVjdG9y ICghcG9zICsgMSkgLSAhaXgpIGluCi0tICBMaXN0LmZvbGRfbGVmdCBjb2xsICgwLCBbXSkgc3Vi c3RfbHN0Ci0tCi0tbGV0IHJlcGxhY2UgPyhpZmxhZ3MgPSAwKSA/ZmxhZ3MgPyhyZXggPSBkZWZf cmV4KSA/cGF0Ci0tICAgICAgICAgICAgPyhwb3MgPSAwKSA/KGl0ZW1wbCA9IGRlZl9zdWJzdCkg P3RlbXBsID9jYWxsb3V0IHN1YmogPQotLSAgbGV0IHJleCA9IG1hdGNoIHBhdCB3aXRoIFNvbWUg c3RyIC0+IHJlZ2V4cCBzdHIgfCBfIC0+IHJleCBpbgotLSAgbGV0IGlmbGFncyA9IG1hdGNoIGZs YWdzIHdpdGggU29tZSBmbGFncyAtPiByZmxhZ3MgZmxhZ3MgfCBfIC0+IGlmbGFncyBpbgotLSAg bGV0IHRlbXBsLCBtYXhfYnIsIHdpdGhfbHAsIHN1YnN0X2xzdCA9Ci0tICAgIG1hdGNoIHRlbXBs IHdpdGgKLS0gICAgfCBTb21lIHN0ciAtPiBzdWJzdCBzdHIKLS0gICAgfCBfIC0+IGl0ZW1wbCBp bgotLSAgbGV0IHN1YmpfbGVuID0gU3RyaW5nLmxlbmd0aCBzdWJqIGluCi0tICBpZiBwb3MgPCAw IHx8IHBvcyA+IHN1YmpfbGVuIHRoZW4gaW52YWxpZF9hcmcgIlBjcmUucmVwbGFjZTogaWxsZWdh bCBvZmZzZXQiOwotLSAgbGV0IHN1Ymdyb3VwczIsIG92ZWN0b3IgPSBtYWtlX292ZWN0b3IgcmV4 IGluCi0tICBsZXQgbnN1YnMgPSAoc3ViZ3JvdXBzMiBsc3IgMSkgLSAxIGluCi0tICBpZiBtYXhf YnIgPiBuc3VicyB0aGVuCi0tICAgIGZhaWx3aXRoICJQY3JlLnJlcGxhY2U6IGJhY2tyZWZlcmVu Y2UgZGVub3RlcyBub25leGlzdGVudCBzdWJwYXR0ZXJuIjsKLS0gIGlmIHdpdGhfbHAgJiYgbnN1 YnMgPSAwIHRoZW4gZmFpbHdpdGggIlBjcmUucmVwbGFjZTogbm8gYmFja3JlZmVyZW5jZXMiOwot LSAgbGV0IHJlYyBsb29wIGZ1bGxfbGVuIHRyYW5zX2xzdHMgY3VyX3BvcyA9Ci0tICAgIGlmCi0t ICAgICAgY3VyX3BvcyA+IHN1YmpfbGVuIHx8Ci0tICAgICAgdHJ5Ci0tICAgICAgICB1bnNhZmVf cGNyZV9leGVjCi0tICAgICAgICAgIGlmbGFncyByZXggfnBvczpjdXJfcG9zIH5zdWJqX3N0YXJ0 OjAgfnN1YmoKLS0gICAgICAgICAgb3ZlY3RvciBjYWxsb3V0OwotLSAgICAgICAgZmFsc2UKLS0g ICAgICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlCi0tICAgIHRoZW4KLS0gICAgICBsZXQgcG9zdGZp eF9sZW4gPSBtYXggKHN1YmpfbGVuIC0gY3VyX3BvcykgMCBpbgotLSAgICAgIGxldCBsZWZ0ID0g cG9zICsgZnVsbF9sZW4gaW4KLS0gICAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChsZWZ0ICsg cG9zdGZpeF9sZW4pIGluCi0tICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1YmogMCBy ZXMgMCBwb3M7Ci0tICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1YmogY3VyX3BvcyBy ZXMgbGVmdCBwb3N0Zml4X2xlbjsKLS0gICAgICBsZXQgaW5uZXJfY29sbCBvZnMgKHRlbXBsLCBp eCwgbGVuKSA9Ci0tICAgICAgICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgdGVtcGwgaXggcmVz IG9mcyBsZW47IG9mcyArIGxlbiBpbgotLSAgICAgIGxldCBjb2xsIG9mcyAocmVzX2xlbiwgdHJh bnNfbHN0KSA9Ci0tICAgICAgICBsZXQgbmV3X29mcyA9IG9mcyAtIHJlc19sZW4gaW4KLS0gICAg ICAgIGxldCBfID0gTGlzdC5mb2xkX2xlZnQgaW5uZXJfY29sbCBuZXdfb2ZzIHRyYW5zX2xzdCBp bgotLSAgICAgICAgbmV3X29mcyBpbgotLSAgICAgIGxldCBfID0gTGlzdC5mb2xkX2xlZnQgY29s bCBsZWZ0IHRyYW5zX2xzdHMgaW4KLS0gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcwot LSAgICBlbHNlCi0tICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDAg aW4KLS0gICAgICBsZXQgbGVuID0gZmlyc3QgLSBjdXJfcG9zIGluCi0tICAgICAgbGV0IHJlc19s ZW4sIF8gYXMgdHJhbnNfbHN0X2VsID0KLS0gICAgICAgIGNhbGNfdHJhbnNfbHN0IHN1Ymdyb3Vw czIgb3ZlY3RvciBzdWJqIHRlbXBsIHN1YnN0X2xzdCBpbgotLSAgICAgIGxldCB0cmFuc19sc3Rz ID0KLS0gICAgICAgIGlmIGxlbiA+IDAgdGhlbgotLSAgICAgICAgICB0cmFuc19sc3RfZWwgOjog KGxlbiwgWyhzdWJqLCBjdXJfcG9zLCBsZW4pXSkgOjogdHJhbnNfbHN0cwotLSAgICAgICAgZWxz ZSB0cmFuc19sc3RfZWwgOjogdHJhbnNfbHN0cyBpbgotLSAgICAgIGxldCBmdWxsX2xlbiA9IGZ1 bGxfbGVuICsgbGVuICsgcmVzX2xlbiBpbgotLSAgICAgIGxldCBuZXh0ID0gZmlyc3QgKyAxIGlu Ci0tICAgICAgbGV0IGxhc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSBpbgotLSAgICAg IGlmIGxhc3QgPCBuZXh0IHRoZW4KLS0gICAgICAgIGlmIGZpcnN0IDwgc3Vial9sZW4gdGhlbgot LSAgICAgICAgICBsZXQgbmV3X3RyYW5zX2xzdHMgPSAoMSwgWyhzdWJqLCBjdXJfcG9zICsgbGVu LCAxKV0pIDo6IHRyYW5zX2xzdHMgaW4KLS0gICAgICAgICAgbG9vcCAoZnVsbF9sZW4gKyAxKSBu ZXdfdHJhbnNfbHN0cyBuZXh0Ci0tICAgICAgICBlbHNlIGxvb3AgZnVsbF9sZW4gdHJhbnNfbHN0 cyBuZXh0Ci0tICAgICAgZWxzZSBsb29wIGZ1bGxfbGVuIHRyYW5zX2xzdHMgbGFzdCBpbgotLSAg bG9vcCAwIFtdIHBvcwotLQotLWxldCBxcmVwbGFjZSA/KGlmbGFncyA9IDApID9mbGFncyA/KHJl eCA9IGRlZl9yZXgpID9wYXQKLS0gICAgICAgICAgICAgPyhwb3MgPSAwKSA/KHRlbXBsID0gIiIp ID9jYWxsb3V0IHN1YmogPQotLSAgbGV0IHJleCA9IG1hdGNoIHBhdCB3aXRoIFNvbWUgc3RyIC0+ IHJlZ2V4cCBzdHIgfCBfIC0+IHJleCBpbgotLSAgbGV0IGlmbGFncyA9IG1hdGNoIGZsYWdzIHdp dGggU29tZSBmbGFncyAtPiByZmxhZ3MgZmxhZ3MgfCBfIC0+IGlmbGFncyBpbgotLSAgbGV0IHN1 YmpfbGVuID0gU3RyaW5nLmxlbmd0aCBzdWJqIGluCi0tICBpZiBwb3MgPCAwIHx8IHBvcyA+IHN1 YmpfbGVuIHRoZW4gaW52YWxpZF9hcmcgIlBjcmUucXJlcGxhY2U6IGlsbGVnYWwgb2Zmc2V0IjsK LS0gIGxldCB0ZW1wbF9sZW4gPSBTdHJpbmcubGVuZ3RoIHRlbXBsIGluCi0tICBsZXQgXywgb3Zl Y3RvciA9IG1ha2Vfb3ZlY3RvciByZXggaW4KLS0gIGxldCByZWMgbG9vcCBmdWxsX2xlbiBzdWJz dF9sc3QgY3VyX3BvcyA9Ci0tICAgIGlmCi0tICAgICAgY3VyX3BvcyA+IHN1YmpfbGVuIHx8Ci0t ICAgICAgdHJ5Ci0tICAgICAgICB1bnNhZmVfcGNyZV9leGVjCi0tICAgICAgICAgIGlmbGFncyBy ZXggfnBvczpjdXJfcG9zIH5zdWJqX3N0YXJ0OjAgfnN1Ymogb3ZlY3RvciBjYWxsb3V0OwotLSAg ICAgICAgZmFsc2UKLS0gICAgICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlCi0tICAgIHRoZW4KLS0g ICAgICBsZXQgcG9zdGZpeF9sZW4gPSBtYXggKHN1YmpfbGVuIC0gY3VyX3BvcykgMCBpbgotLSAg ICAgIGxldCBsZWZ0ID0gcG9zICsgZnVsbF9sZW4gaW4KLS0gICAgICBsZXQgcmVzID0gQnl0ZXMu Y3JlYXRlIChsZWZ0ICsgcG9zdGZpeF9sZW4pIGluCi0tICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRf c3RyaW5nIHN1YmogMCByZXMgMCBwb3M7Ci0tICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5n IHN1YmogY3VyX3BvcyByZXMgbGVmdCBwb3N0Zml4X2xlbjsKLS0gICAgICBsZXQgY29sbCBvZnMg PSBmdW5jdGlvbgotLSAgICAgICAgfCBTb21lIChzdWJzdHIsIGl4LCBsZW4pIC0+Ci0tICAgICAg ICAgICAgbGV0IG5ld19vZnMgPSBvZnMgLSBsZW4gaW4KLS0gICAgICAgICAgICBieXRlc191bnNh ZmVfYmxpdF9zdHJpbmcgc3Vic3RyIGl4IHJlcyBuZXdfb2ZzIGxlbjsKLS0gICAgICAgICAgICBu ZXdfb2ZzCi0tICAgICAgICB8IE5vbmUgLT4KLS0gICAgICAgICAgICBsZXQgbmV3X29mcyA9IG9m cyAtIHRlbXBsX2xlbiBpbgotLSAgICAgICAgICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyB0 ZW1wbCAwIHJlcyBuZXdfb2ZzIHRlbXBsX2xlbjsKLS0gICAgICAgICAgICBuZXdfb2ZzIGluCi0t ICAgICAgbGV0IF8gPSBMaXN0LmZvbGRfbGVmdCBjb2xsIGxlZnQgc3Vic3RfbHN0IGluCi0tICAg ICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXMKLS0gICAgZWxzZQotLSAgICAgIGxldCBmaXJz dCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGluCi0tICAgICAgbGV0IGxlbiA9IGZpcnN0 IC0gY3VyX3BvcyBpbgotLSAgICAgIGxldCBzdWJzdF9sc3QgPQotLSAgICAgICAgaWYgbGVuID4g MCB0aGVuIE5vbmUgOjogU29tZSAoc3ViaiwgY3VyX3BvcywgbGVuKSA6OiBzdWJzdF9sc3QKLS0g ICAgICAgIGVsc2UgTm9uZSA6OiBzdWJzdF9sc3QgaW4KLS0gICAgICBsZXQgbGFzdCA9IEFycmF5 LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGluCi0tICAgICAgbGV0IGZ1bGxfbGVuID0gZnVsbF9sZW4g KyBsZW4gKyB0ZW1wbF9sZW4gaW4KLS0gICAgICBsZXQgbmV4dCA9IGZpcnN0ICsgMSBpbgotLSAg ICAgIGlmIGxhc3QgPCBuZXh0IHRoZW4KLS0gICAgICAgIGlmIGZpcnN0IDwgc3Vial9sZW4gdGhl bgotLSAgICAgICAgICBsb29wIChmdWxsX2xlbiArIDEpIChTb21lIChzdWJqLCBjdXJfcG9zICsg bGVuLCAxKSA6OiBzdWJzdF9sc3QpIG5leHQKLS0gICAgICAgIGVsc2UgbG9vcCBmdWxsX2xlbiBz dWJzdF9sc3QgbmV4dAotLSAgICAgIGVsc2UgbG9vcCBmdWxsX2xlbiBzdWJzdF9sc3QgbGFzdCBp bgotLSAgbG9vcCAwIFtdIHBvcwotLQotLWxldCBzdWJzdGl0dXRlX3N1YnN0cmluZ3MgPyhpZmxh Z3MgPSAwKSA/ZmxhZ3MgPyhyZXggPSBkZWZfcmV4KSA/cGF0Ci0tICAgICAgICAgICAgICAgICAg ICAgICAgICA/KHBvcyA9IDApID9jYWxsb3V0IH5zdWJzdCBzdWJqID0KLS0gIGxldCByZXggPSBt YXRjaCBwYXQgd2l0aCBTb21lIHN0ciAtPiByZWdleHAgc3RyIHwgXyAtPiByZXggaW4KLS0gIGxl dCBpZmxhZ3MgPSBtYXRjaCBmbGFncyB3aXRoIFNvbWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwg XyAtPiBpZmxhZ3MgaW4KLS0gIGxldCBzdWJqX2xlbiA9IFN0cmluZy5sZW5ndGggc3ViaiBpbgot LSAgaWYgcG9zIDwgMCB8fCBwb3MgPiBzdWJqX2xlbiB0aGVuIGludmFsaWRfYXJnICJQY3JlLnN1 YnN0aXR1dGU6IGlsbGVnYWwgb2Zmc2V0IjsKLS0gIGxldCBfLCBvdmVjdG9yID0gbWFrZV9vdmVj dG9yIHJleCBpbgotLSAgbGV0IHJlYyBsb29wIGZ1bGxfbGVuIHN1YnN0X2xzdCBjdXJfcG9zID0K LS0gICAgaWYKLS0gICAgICBjdXJfcG9zID4gc3Vial9sZW4gfHwKLS0gICAgICB0cnkKLS0gICAg ICAgIHVuc2FmZV9wY3JlX2V4ZWMKLS0gICAgICAgICAgaWZsYWdzIHJleCB+cG9zOmN1cl9wb3Mg fnN1Ympfc3RhcnQ6MCB+c3ViaiBvdmVjdG9yIGNhbGxvdXQ7Ci0tICAgICAgICBmYWxzZQotLSAg ICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWUKLS0gICAgdGhlbgotLSAgICAgIGxldCBwb3N0Zml4 X2xlbiA9IG1heCAoc3Vial9sZW4gLSBjdXJfcG9zKSAwIGluCi0tICAgICAgbGV0IGxlZnQgPSBw b3MgKyBmdWxsX2xlbiBpbgotLSAgICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKGxlZnQgKyBw b3N0Zml4X2xlbikgaW4KLS0gICAgICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgc3ViaiAwIHJl cyAwIHBvczsKLS0gICAgICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgc3ViaiBjdXJfcG9zIHJl cyBsZWZ0IHBvc3RmaXhfbGVuOwotLSAgICAgIGxldCBjb2xsIG9mcyAodGVtcGwsIGl4LCBsZW4p ID0KLS0gICAgICAgIGxldCBuZXdfb2ZzID0gb2ZzIC0gbGVuIGluCi0tICAgICAgICBieXRlc191 bnNhZmVfYmxpdF9zdHJpbmcgdGVtcGwgaXggcmVzIG5ld19vZnMgbGVuOwotLSAgICAgICAgbmV3 X29mcyBpbgotLSAgICAgIGxldCBfID0gTGlzdC5mb2xkX2xlZnQgY29sbCBsZWZ0IHN1YnN0X2xz dCBpbgotLSAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzCi0tICAgIGVsc2UKLS0gICAg ICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMCBpbgotLSAgICAgIGxldCBs ZW4gPSBmaXJzdCAtIGN1cl9wb3MgaW4KLS0gICAgICBsZXQgdGVtcGwgPSBzdWJzdCAoc3Viaiwg b3ZlY3RvcikgaW4KLS0gICAgICBsZXQgdGVtcGxfbGVuID0gU3RyaW5nLmxlbmd0aCB0ZW1wbCBp bgotLSAgICAgIGxldCBzdWJzdF9sc3QgPQotLSAgICAgICAgaWYgbGVuID4gMCB0aGVuCi0tICAg ICAgICAgICh0ZW1wbCwgMCwgdGVtcGxfbGVuKSA6OiAoc3ViaiwgY3VyX3BvcywgbGVuKSA6OiBz dWJzdF9sc3QKLS0gICAgICAgIGVsc2UgKHRlbXBsLCAwLCB0ZW1wbF9sZW4pIDo6IHN1YnN0X2xz dCBpbgotLSAgICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4KLS0g ICAgICBsZXQgZnVsbF9sZW4gPSBmdWxsX2xlbiArIGxlbiArIHRlbXBsX2xlbiBpbgotLSAgICAg IGxldCBuZXh0ID0gZmlyc3QgKyAxIGluCi0tICAgICAgaWYgbGFzdCA8IG5leHQgdGhlbgotLSAg ICAgICAgaWYgZmlyc3QgPCBzdWJqX2xlbiB0aGVuCi0tICAgICAgICAgIGxvb3AgKGZ1bGxfbGVu ICsgMSkgKChzdWJqLCBjdXJfcG9zICsgbGVuLCAxKSA6OiBzdWJzdF9sc3QpIG5leHQKLS0gICAg ICAgIGVsc2UgbG9vcCBmdWxsX2xlbiBzdWJzdF9sc3QgbmV4dAotLSAgICAgIGVsc2UgbG9vcCBm dWxsX2xlbiBzdWJzdF9sc3QgbGFzdCBpbgotLSAgbG9vcCAwIFtdIHBvcwotLQotLWxldCBzdWJz dGl0dXRlID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IH5zdWJzdDpzdHJf c3Vic3Qgc3ViaiA9Ci0tICBsZXQgc3Vic3QgKHN1YmosIG92ZWN0b3IpID0KLS0gICAgbGV0IGZp cnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDAgaW4KLS0gICAgbGV0IGxhc3QgPSBBcnJh eS51bnNhZmVfZ2V0IG92ZWN0b3IgMSBpbgotLSAgICBzdHJfc3Vic3QgKHN0cmluZ191bnNhZmVf c3ViIHN1YmogZmlyc3QgKGxhc3QgLSBmaXJzdCkpIGluCi0tICBzdWJzdGl0dXRlX3N1YnN0cmlu Z3MgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgfnN1YnN0IHN1YmoKLS0K LS1sZXQgcmVwbGFjZV9maXJzdCA/KGlmbGFncyA9IDApID9mbGFncyA/KHJleCA9IGRlZl9yZXgp ID9wYXQgPyhwb3MgPSAwKQotLSAgICAgICAgICAgICAgICAgID8oaXRlbXBsID0gZGVmX3N1YnN0 KSA/dGVtcGwgP2NhbGxvdXQgc3ViaiA9Ci0tICBsZXQgcmV4ID0gbWF0Y2ggcGF0IHdpdGggU29t ZSBzdHIgLT4gcmVnZXhwIHN0ciB8IF8gLT4gcmV4IGluCi0tICBsZXQgaWZsYWdzID0gbWF0Y2gg ZmxhZ3Mgd2l0aCBTb21lIGZsYWdzIC0+IHJmbGFncyBmbGFncyB8IF8gLT4gaWZsYWdzIGluCi0t ICBsZXQgdGVtcGwsIG1heF9iciwgd2l0aF9scCwgc3Vic3RfbHN0ID0KLS0gICAgbWF0Y2ggdGVt cGwgd2l0aAotLSAgICB8IFNvbWUgc3RyIC0+IHN1YnN0IHN0cgotLSAgICB8IF8gLT4gaXRlbXBs IGluCi0tICBsZXQgc3ViZ3JvdXBzMiwgb3ZlY3RvciA9IG1ha2Vfb3ZlY3RvciByZXggaW4KLS0g IGxldCBuc3VicyA9IChzdWJncm91cHMyIGxzciAxKSAtIDEgaW4KLS0gIGlmIG1heF9iciA+IG5z dWJzIHRoZW4KLS0gICAgZmFpbHdpdGggIlBjcmUucmVwbGFjZV9maXJzdDogYmFja3JlZmVyZW5j ZSBkZW5vdGVzIG5vbmV4aXN0ZW50IHN1YnBhdHRlcm4iOwotLSAgaWYgd2l0aF9scCAmJiBuc3Vi cyA9IDAgdGhlbiBmYWlsd2l0aCAiUGNyZS5yZXBsYWNlX2ZpcnN0OiBubyBiYWNrcmVmZXJlbmNl cyI7Ci0tICB0cnkKLS0gICAgdW5zYWZlX3BjcmVfZXhlYyBpZmxhZ3MgcmV4IH5wb3MgfnN1Ympf c3RhcnQ6MCB+c3ViaiBvdmVjdG9yIGNhbGxvdXQ7Ci0tICAgIGxldCByZXNfbGVuLCB0cmFuc19s c3QgPQotLSAgICAgIGNhbGNfdHJhbnNfbHN0IHN1Ymdyb3VwczIgb3ZlY3RvciBzdWJqIHRlbXBs IHN1YnN0X2xzdCBpbgotLSAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3Ig MCBpbgotLSAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGluCi0tICAg IGxldCByZXN0ID0gU3RyaW5nLmxlbmd0aCBzdWJqIC0gbGFzdCBpbgotLSAgICBsZXQgcmVzID0g Qnl0ZXMuY3JlYXRlIChmaXJzdCArIHJlc19sZW4gKyByZXN0KSBpbgotLSAgICBieXRlc191bnNh ZmVfYmxpdF9zdHJpbmcgc3ViaiAwIHJlcyAwIGZpcnN0OwotLSAgICBsZXQgY29sbCBvZnMgKHRl bXBsLCBpeCwgbGVuKSA9Ci0tICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHRlbXBsIGl4 IHJlcyBvZnMgbGVuOyBvZnMgKyBsZW4gaW4KLS0gICAgbGV0IG9mcyA9IExpc3QuZm9sZF9sZWZ0 IGNvbGwgZmlyc3QgdHJhbnNfbHN0IGluCi0tICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBz dWJqIGxhc3QgcmVzIG9mcyByZXN0OwotLSAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcwot LSAgd2l0aCBOb3RfZm91bmQgLT4gc3ViagotLQotLWxldCBxcmVwbGFjZV9maXJzdCA/KGlmbGFn cyA9IDApID9mbGFncyA/KHJleCA9IGRlZl9yZXgpID9wYXQKLS0gICAgICAgICAgICAgICAgICAg Pyhwb3MgPSAwKSA/KHRlbXBsID0gIiIpID9jYWxsb3V0IHN1YmogPQotLSAgbGV0IHJleCA9IG1h dGNoIHBhdCB3aXRoIFNvbWUgc3RyIC0+IHJlZ2V4cCBzdHIgfCBfIC0+IHJleCBpbgotLSAgbGV0 IGlmbGFncyA9IG1hdGNoIGZsYWdzIHdpdGggU29tZSBmbGFncyAtPiByZmxhZ3MgZmxhZ3MgfCBf IC0+IGlmbGFncyBpbgotLSAgbGV0IF8sIG92ZWN0b3IgPSBtYWtlX292ZWN0b3IgcmV4IGluCi0t ICB0cnkKLS0gICAgdW5zYWZlX3BjcmVfZXhlYyBpZmxhZ3MgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6 MCB+c3ViaiBvdmVjdG9yIGNhbGxvdXQ7Ci0tICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9n ZXQgb3ZlY3RvciAwIGluCi0tICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9y IDEgaW4KLS0gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggdGVtcGwgaW4KLS0gICAgbGV0IHJl c3QgPSBTdHJpbmcubGVuZ3RoIHN1YmogLSBsYXN0IGluCi0tICAgIGxldCBwb3N0Zml4X3N0YXJ0 ID0gZmlyc3QgKyBsZW4gaW4KLS0gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAocG9zdGZpeF9z dGFydCArIHJlc3QpIGluCi0tICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBzdWJqIDAgcmVz IDAgZmlyc3Q7Ci0tICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyB0ZW1wbCAwIHJlcyBmaXJz dCBsZW47Ci0tICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBzdWJqIGxhc3QgcmVzIHBvc3Rm aXhfc3RhcnQgcmVzdDsKLS0gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXMKLS0gIHdpdGgg Tm90X2ZvdW5kIC0+IHN1YmoKLS0KLS1sZXQgc3Vic3RpdHV0ZV9zdWJzdHJpbmdzX2ZpcnN0ID8o aWZsYWdzID0gMCkgP2ZsYWdzID8ocmV4ID0gZGVmX3JleCkgP3BhdAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPyhwb3MgPSAwKSA/Y2FsbG91dCB+c3Vic3Qgc3ViaiA9Ci0tICBs ZXQgcmV4ID0gbWF0Y2ggcGF0IHdpdGggU29tZSBzdHIgLT4gcmVnZXhwIHN0ciB8IF8gLT4gcmV4 IGluCi0tICBsZXQgaWZsYWdzID0gbWF0Y2ggZmxhZ3Mgd2l0aCBTb21lIGZsYWdzIC0+IHJmbGFn cyBmbGFncyB8IF8gLT4gaWZsYWdzIGluCi0tICBsZXQgXywgb3ZlY3RvciA9IG1ha2Vfb3ZlY3Rv ciByZXggaW4KLS0gIHRyeQotLSAgICB1bnNhZmVfcGNyZV9leGVjIGlmbGFncyByZXggfnBvcyB+ c3Vial9zdGFydDowIH5zdWJqIG92ZWN0b3IgY2FsbG91dDsKLS0gICAgbGV0IHN1YmpfbGVuID0g U3RyaW5nLmxlbmd0aCBzdWJqIGluCi0tICAgIGxldCBwcmVmaXhfbGVuID0gQXJyYXkudW5zYWZl X2dldCBvdmVjdG9yIDAgaW4KLS0gICAgbGV0IGxhc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0 b3IgMSBpbgotLSAgICBsZXQgdGVtcGwgPSBzdWJzdCAoc3Viaiwgb3ZlY3RvcikgaW4KLS0gICAg bGV0IHBvc3RmaXhfbGVuID0gc3Vial9sZW4gLSBsYXN0IGluCi0tICAgIGxldCB0ZW1wbF9sZW4g PSBTdHJpbmcubGVuZ3RoIHRlbXBsIGluCi0tICAgIGxldCBwb3N0Zml4X3N0YXJ0ID0gcHJlZml4 X2xlbiArIHRlbXBsX2xlbiBpbgotLSAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChwb3N0Zml4 X3N0YXJ0ICsgcG9zdGZpeF9sZW4pIGluCi0tICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBz dWJqIDAgcmVzIDAgcHJlZml4X2xlbjsKLS0gICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHRl bXBsIDAgcmVzIHByZWZpeF9sZW4gdGVtcGxfbGVuOwotLSAgICBieXRlc191bnNhZmVfYmxpdF9z dHJpbmcgc3ViaiBsYXN0IHJlcyBwb3N0Zml4X3N0YXJ0IHBvc3RmaXhfbGVuOwotLSAgICBCeXRl cy51bnNhZmVfdG9fc3RyaW5nIHJlcwotLSAgd2l0aCBOb3RfZm91bmQgLT4gc3ViagotLQotLWxl dCBzdWJzdGl0dXRlX2ZpcnN0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zCi0tICAgICAg ICAgICAgICAgICAgICAgP2NhbGxvdXQgfnN1YnN0OnN0cl9zdWJzdCBzdWJqID0KLS0gIGxldCBz dWJzdCAoc3Viaiwgb3ZlY3RvcikgPQotLSAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0 IG92ZWN0b3IgMCBpbgotLSAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAx IGluCi0tICAgIHN0cl9zdWJzdCAoc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBmaXJzdCAobGFzdCAt IGZpcnN0KSkgaW4KLS0gIHN1YnN0aXR1dGVfc3Vic3RyaW5nc19maXJzdAotLSAgICA/aWZsYWdz ID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCB+c3Vic3Qgc3ViagotLQotLQotLSgqIFNw bGl0dGluZyAqKQotLQotLWxldCBpbnRlcm5hbF9wc3BsaXQgZmxhZ3MgcmV4IG1heCBwb3MgY2Fs bG91dCBzdWJqID0KLS0gIGxldCBzdWJqX2xlbiA9IFN0cmluZy5sZW5ndGggc3ViaiBpbgotLSAg aWYgc3Vial9sZW4gPSAwIHRoZW4gW10KLS0gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtzdWJqXQot LSAgZWxzZQotLSAgICBsZXQgc3ViZ3JvdXBzMiwgb3ZlY3RvciA9IG1ha2Vfb3ZlY3RvciByZXgg aW4KLS0KLS0gICAgKCogQWRkcyBjb250ZW50cyBvZiBzdWJncm91cHMgdG8gdGhlIHN0cmluZyBh Y2N1bXVsYXRvciAqKQotLSAgICBsZXQgaGFuZGxlX3N1Ymdyb3VwcyBzdHJzID0KLS0gICAgICBs ZXQgc3RycyA9IHJlZiBzdHJzIGluCi0tICAgICAgbGV0IGkgPSByZWYgMiBpbgotLSAgICAgIHdo aWxlICFpIDwgc3ViZ3JvdXBzMiBkbwotLSAgICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZl X2dldCBvdmVjdG9yICFpIGluCi0tICAgICAgICBpbmNyIGk7Ci0tICAgICAgICBsZXQgbGFzdCA9 IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAhaSBpbgotLSAgICAgICAgbGV0IHN0ciA9Ci0tICAg ICAgICAgIGlmIGZpcnN0IDwgMCB0aGVuICIiCi0tICAgICAgICAgIGVsc2Ugc3RyaW5nX3Vuc2Fm ZV9zdWIgc3ViaiBmaXJzdCAobGFzdCAtIGZpcnN0KSBpbgotLSAgICAgICAgc3RycyA6PSBzdHIg OjogIXN0cnM7IGluY3IgaQotLSAgICAgIGRvbmU7Ci0tICAgICAgIXN0cnMgaW4KLS0KLS0gICAg KCogUGVyZm9ybXMgdGhlIHJlY3Vyc2l2ZSBzcGxpdCAqKQotLSAgICBsZXQgcmVjIGxvb3Agc3Ry cyBjbnQgcG9zIHByZW1hdGNoID0KLS0gICAgICBsZXQgbGVuID0gc3Vial9sZW4gLSBwb3MgaW4K LS0gICAgICBpZiBsZW4gPCAwIHRoZW4gc3RycwotLSAgICAgIGVsc2UKLS0gICAgICAgICgqIENo ZWNrcyB0ZXJtaW5hdGlvbiBkdWUgdG8gbWF4IHJlc3RyaWN0aW9uICopCi0tICAgICAgICBpZiBj bnQgPSAwIHRoZW4KLS0gICAgICAgICAgaWYgcHJlbWF0Y2ggJiYKLS0gICAgICAgICAgICB0cnkK LS0gICAgICAgICAgICAgIHVuc2FmZV9wY3JlX2V4ZWMKLS0gICAgICAgICAgICAgICAgZmxhZ3Mg cmV4IH5wb3MgfnN1Ympfc3RhcnQ6cG9zIH5zdWJqIG92ZWN0b3IgY2FsbG91dDsKLS0gICAgICAg ICAgICAgIHRydWUKLS0gICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZQotLSAgICAg ICAgICB0aGVuCi0tICAgICAgICAgICAgbGV0IGxhc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0 b3IgMSBpbgotLSAgICAgICAgICAgIGxldCBzdHJzID0gaGFuZGxlX3N1Ymdyb3VwcyBzdHJzIGlu Ci0tICAgICAgICAgICAgc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBsYXN0IChzdWJqX2xlbiAtIGxh c3QpIDo6IHN0cnMKLS0gICAgICAgICAgZWxzZSBzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIHBvcyBs ZW4gOjogc3RycwotLQotLSAgICAgICAgKCogQ2FsY3VsYXRlcyBuZXh0IGFjY3VtdWxhdG9yIHN0 YXRlIGZvciBzcGxpdHRpbmcgKikKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgaWYKLS0gICAg ICAgICAgICB0cnkKLS0gICAgICAgICAgICAgIHVuc2FmZV9wY3JlX2V4ZWMKLS0gICAgICAgICAg ICAgICAgZmxhZ3MgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6cG9zIH5zdWJqIG92ZWN0b3IgY2FsbG91 dDsKLS0gICAgICAgICAgICAgIGZhbHNlCi0tICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4g dHJ1ZQotLSAgICAgICAgICB0aGVuIHN0cmluZ191bnNhZmVfc3ViIHN1YmogcG9zIGxlbiA6OiBz dHJzCi0tICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNh ZmVfZ2V0IG92ZWN0b3IgMCBpbgotLSAgICAgICAgICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZl X2dldCBvdmVjdG9yIDEgaW4KLS0gICAgICAgICAgICBpZiBmaXJzdCA9IHBvcyB0aGVuCi0tICAg ICAgICAgICAgICBpZiBsYXN0ID0gcG9zIHRoZW4KLS0gICAgICAgICAgICAgICAgbGV0IHN0cnMg PSBpZiBwcmVtYXRjaCB0aGVuIGhhbmRsZV9zdWJncm91cHMgc3RycyBlbHNlIHN0cnMgaW4KLS0g ICAgICAgICAgICAgICAgaWYgbGVuID0gMCB0aGVuICIiIDo6IHN0cnMKLS0gICAgICAgICAgICAg ICAgZWxzZSBpZgotLSAgICAgICAgICAgICAgICAgIHRyeQotLSAgICAgICAgICAgICAgICAgICAg dW5zYWZlX3BjcmVfZXhlYwotLSAgICAgICAgICAgICAgICAgICAgICAoZmxhZ3MgbG9yIDB4MDQx MCkgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6cG9zIH5zdWJqCi0tICAgICAgICAgICAgICAgICAgICAg IG92ZWN0b3IgY2FsbG91dDsKLS0gICAgICAgICAgICAgICAgICAgIHRydWUKLS0gICAgICAgICAg ICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZQotLSAgICAgICAgICAgICAgICB0aGVuCi0t ICAgICAgICAgICAgICAgICAgbGV0IG5ld19zdHJzID0gaGFuZGxlX3N1Ymdyb3VwcyAoIiIgOjog c3RycykgaW4KLS0gICAgICAgICAgICAgICAgICBsb29wIG5ld19zdHJzIChjbnQgLSAxKSAoQXJy YXkudW5zYWZlX2dldCBvdmVjdG9yIDEpIGZhbHNlCi0tICAgICAgICAgICAgICAgIGVsc2UKLS0g ICAgICAgICAgICAgICAgICBsZXQgbmV3X3N0cnMgPSBzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIHBv cyAxIDo6IHN0cnMgaW4KLS0gICAgICAgICAgICAgICAgICBsb29wIG5ld19zdHJzIChjbnQgLSAx KSAocG9zICsgMSkgdHJ1ZQotLSAgICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICBp ZiBwcmVtYXRjaCB0aGVuIGxvb3AgKGhhbmRsZV9zdWJncm91cHMgc3RycykgY250IGxhc3QgZmFs c2UKLS0gICAgICAgICAgICAgICAgZWxzZSBsb29wIChoYW5kbGVfc3ViZ3JvdXBzICgiIiA6OiBz dHJzKSkgKGNudCAtIDEpIGxhc3QgZmFsc2UKLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAg ICAgICBsZXQgbmV3X3N0cnMgPSBzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIHBvcyAoZmlyc3QgLSBw b3MpIDo6IHN0cnMgaW4KLS0gICAgICAgICAgICAgIGxvb3AgKGhhbmRsZV9zdWJncm91cHMgbmV3 X3N0cnMpIChjbnQgLSAxKSBsYXN0IGZhbHNlIGluCi0tICAgIGxvb3AgW10gKG1heCAtIDEpIHBv cyBmYWxzZQotLQotLWxldCByZWMgc3RyaXBfYWxsX2VtcHR5ID0gZnVuY3Rpb24gIiIgOjogdCAt PiBzdHJpcF9hbGxfZW1wdHkgdCB8IGwgLT4gbAotLQotLWV4dGVybmFsIGlzc3BhY2UgOiBjaGFy IC0+IGJvb2wgPSAicGNyZV9pc3NwYWNlX3N0dWIiIEBub2FsbG9jQAotLQotLWxldCByZWMgZmlu ZF9ub19zcGFjZSBpeCBsZW4gc3RyID0KLS0gIGlmIGl4ID0gbGVuIHx8IG5vdCAoaXNzcGFjZSAo U3RyaW5nLnVuc2FmZV9nZXQgc3RyIGl4KSkgdGhlbiBpeAotLSAgZWxzZSBmaW5kX25vX3NwYWNl IChpeCArIDEpIGxlbiBzdHIKLS0KLS1sZXQgc3BsaXQgPyhpZmxhZ3MgPSAwKSA/ZmxhZ3MgP3Jl eCA/cGF0ID8ocG9zID0gMCkgPyhtYXggPSAwKSA/Y2FsbG91dCBzdWJqID0KLS0gIGxldCBpZmxh Z3MgPSBtYXRjaCBmbGFncyB3aXRoIFNvbWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBp ZmxhZ3MgaW4KLS0gIGxldCByZXMgPQotLSAgICBtYXRjaCBwYXQsIHJleCB3aXRoCi0tICAgIHwg U29tZSBzdHIsIF8gLT4gaW50ZXJuYWxfcHNwbGl0IGlmbGFncyAocmVnZXhwIHN0cikgbWF4IHBv cyBjYWxsb3V0IHN1YmoKLS0gICAgfCBfLCBTb21lIHJleCAtPiBpbnRlcm5hbF9wc3BsaXQgaWZs YWdzIHJleCBtYXggcG9zIGNhbGxvdXQgc3ViagotLSAgICB8IF8gLT4KLS0gICAgICAgICgqIHNw ZWNpYWwgY2FzZSBmb3IgUGVybC1zcGxpdHRpbmcgc2VtYW50aWNzICopCi0tICAgICAgICBsZXQg bGVuID0gU3RyaW5nLmxlbmd0aCBzdWJqIGluCi0tICAgICAgICBpZiBwb3MgPiBsZW4gfHwgcG9z IDwgMCB0aGVuIGZhaWx3aXRoICJQY3JlLnNwbGl0OiBpbGxlZ2FsIG9mZnNldCI7Ci0tICAgICAg ICBsZXQgbmV3X3BvcyA9IGZpbmRfbm9fc3BhY2UgcG9zIGxlbiBzdWJqIGluCi0tICAgICAgICBp bnRlcm5hbF9wc3BsaXQgaWZsYWdzIGRlZl9yZXggbWF4IG5ld19wb3MgY2FsbG91dCBzdWJqIGlu Ci0tICBMaXN0LnJldiAoaWYgbWF4ID0gMCB0aGVuIHN0cmlwX2FsbF9lbXB0eSByZXMgZWxzZSBy ZXMpCi0tCi0tbGV0IGFzcGxpdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/bWF4ID9j YWxsb3V0IHN1YmogPQotLSAgQXJyYXkub2ZfbGlzdCAoc3BsaXQgP2lmbGFncyA/ZmxhZ3MgP3Jl eCA/cGF0ID9wb3MgP21heCA/Y2FsbG91dCBzdWJqKQotLQotLQotLSgqIEZ1bGwgc3BsaXR0aW5n ICopCi0tCi0tdHlwZSBzcGxpdF9yZXN1bHQgPSBUZXh0IG9mIHN0cmluZwotLSAgICAgICAgICAg ICAgICAgIHwgRGVsaW0gb2Ygc3RyaW5nCi0tICAgICAgICAgICAgICAgICAgfCBHcm91cCBvZiBp bnQgKiBzdHJpbmcKLS0gICAgICAgICAgICAgICAgICB8IE5vR3JvdXAKLS0KLS1sZXQgcmVjIHN0 cmlwX2FsbF9lbXB0eV9mdWxsID0gZnVuY3Rpb24KLS0gIHwgRGVsaW0gXyA6OiByZXN0IC0+IHN0 cmlwX2FsbF9lbXB0eV9mdWxsIHJlc3QKLS0gIHwgbCAtPiBsCi0tCi0tbGV0IGZ1bGxfc3BsaXQg PyhpZmxhZ3MgPSAwKSA/ZmxhZ3MgPyhyZXggPSBkZWZfcmV4KSA/cGF0Ci0tICAgICAgICAgICAg ICAgPyhwb3MgPSAwKSA/KG1heCA9IDApID9jYWxsb3V0IHN1YmogPQotLSAgbGV0IHJleCA9IG1h dGNoIHBhdCB3aXRoIFNvbWUgc3RyIC0+IHJlZ2V4cCBzdHIgfCBfIC0+IHJleCBpbgotLSAgbGV0 IGlmbGFncyA9IG1hdGNoIGZsYWdzIHdpdGggU29tZSBmbGFncyAtPiByZmxhZ3MgZmxhZ3MgfCBf IC0+IGlmbGFncyBpbgotLSAgbGV0IHN1YmpfbGVuID0gU3RyaW5nLmxlbmd0aCBzdWJqIGluCi0t ICBpZiBzdWJqX2xlbiA9IDAgdGhlbiBbXQotLSAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW1RleHQg KHN1YmopXQotLSAgZWxzZQotLSAgICBsZXQgc3ViZ3JvdXBzMiwgb3ZlY3RvciA9IG1ha2Vfb3Zl Y3RvciByZXggaW4KLS0KLS0gICAgKCogQWRkcyBjb250ZW50cyBvZiBzdWJncm91cHMgdG8gdGhl IHN0cmluZyBhY2N1bXVsYXRvciAqKQotLSAgICBsZXQgaGFuZGxlX3N1Ymdyb3VwcyBzdHJzID0K LS0gICAgICBsZXQgc3RycyA9IHJlZiBzdHJzIGluCi0tICAgICAgbGV0IGkgPSByZWYgMiBpbgot LSAgICAgIHdoaWxlICFpIDwgc3ViZ3JvdXBzMiBkbwotLSAgICAgICAgbGV0IGdyb3VwX25yID0g IWkgbHNyIDEgaW4KLS0gICAgICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3Rv ciAhaSBpbgotLSAgICAgICAgaW5jciBpOwotLSAgICAgICAgbGV0IGxhc3QgPSBBcnJheS51bnNh ZmVfZ2V0IG92ZWN0b3IgIWkgaW4KLS0gICAgICAgIGxldCBzdHIgPQotLSAgICAgICAgICBpZiBm aXJzdCA8IDAgdGhlbiBOb0dyb3VwCi0tICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICBsZXQg Z3JvdXBfc3RyID0gc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBmaXJzdCAobGFzdCAtIGZpcnN0KSBp bgotLSAgICAgICAgICAgIEdyb3VwIChncm91cF9uciwgZ3JvdXBfc3RyKSBpbgotLSAgICAgICAg c3RycyA6PSBzdHIgOjogIXN0cnM7IGluY3IgaQotLSAgICAgIGRvbmU7Ci0tICAgICAgIXN0cnMg aW4KLS0KLS0gICAgKCogUGVyZm9ybXMgdGhlIHJlY3Vyc2l2ZSBzcGxpdCAqKQotLSAgICBsZXQg cmVjIGxvb3Agc3RycyBjbnQgcG9zIHByZW1hdGNoID0KLS0gICAgICBsZXQgbGVuID0gc3Vial9s ZW4gLSBwb3MgaW4KLS0gICAgICBpZiBsZW4gPCAwIHRoZW4gc3RycwotLSAgICAgIGVsc2UKLS0g ICAgICAgICgqIENoZWNrcyB0ZXJtaW5hdGlvbiBkdWUgdG8gbWF4IHJlc3RyaWN0aW9uICopCi0t ICAgICAgICBpZiBjbnQgPSAwIHRoZW4KLS0gICAgICAgICAgaWYgcHJlbWF0Y2ggJiYKLS0gICAg ICAgICAgICB0cnkKLS0gICAgICAgICAgICAgIHVuc2FmZV9wY3JlX2V4ZWMKLS0gICAgICAgICAg ICAgICAgaWZsYWdzIHJleCB+cG9zIH5zdWJqX3N0YXJ0OnBvcyB+c3ViaiBvdmVjdG9yIGNhbGxv dXQ7Ci0tICAgICAgICAgICAgICAgdHJ1ZQotLSAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+ IGZhbHNlCi0tICAgICAgICAgIHRoZW4KLS0gICAgICAgICAgICBsZXQgZmlyc3QgPSBBcnJheS51 bnNhZmVfZ2V0IG92ZWN0b3IgMCBpbgotLSAgICAgICAgICAgIGxldCBsYXN0ID0gQXJyYXkudW5z YWZlX2dldCBvdmVjdG9yIDEgaW4KLS0gICAgICAgICAgICBsZXQgZGVsaW0gPSBEZWxpbSAoc3Ry aW5nX3Vuc2FmZV9zdWIgc3ViaiBmaXJzdCAobGFzdCAtIGZpcnN0KSkgaW4KLS0gICAgICAgICAg ICBUZXh0IChzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIGxhc3QgKHN1YmpfbGVuIC0gbGFzdCkpCi0t ICAgICAgICAgICAgICA6OiBoYW5kbGVfc3ViZ3JvdXBzIChkZWxpbSA6OiBzdHJzKQotLSAgICAg ICAgICBlbHNlCi0tICAgICAgICAgICAgaWYgbGVuID0gMCB0aGVuIHN0cnMKLS0gICAgICAgICAg ICBlbHNlIFRleHQgKHN0cmluZ191bnNhZmVfc3ViIHN1YmogcG9zIGxlbikgOjogc3RycwotLQot LSAgICAgICAgKCogQ2FsY3VsYXRlcyBuZXh0IGFjY3VtdWxhdG9yIHN0YXRlIGZvciBzcGxpdHRp bmcgKikKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgaWYKLS0gICAgICAgICAgICB0cnkKLS0g ICAgICAgICAgICAgIHVuc2FmZV9wY3JlX2V4ZWMKLS0gICAgICAgICAgICAgICAgaWZsYWdzIHJl eCB+cG9zIH5zdWJqX3N0YXJ0OnBvcyB+c3ViaiBvdmVjdG9yIGNhbGxvdXQ7Ci0tICAgICAgICAg ICAgICBmYWxzZQotLSAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWUKLS0gICAgICAg ICAgdGhlbgotLSAgICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBzdHJzCi0tICAgICAgICAgICAg ZWxzZSBUZXh0IChzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIHBvcyBsZW4pIDo6IHN0cnMKLS0gICAg ICAgICAgZWxzZQotLSAgICAgICAgICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3Zl Y3RvciAwIGluCi0tICAgICAgICAgICAgbGV0IGxhc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0 b3IgMSBpbgotLSAgICAgICAgICAgIGlmIGZpcnN0ID0gcG9zIHRoZW4KLS0gICAgICAgICAgICAg IGlmIGxhc3QgPSBwb3MgdGhlbgotLSAgICAgICAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gaGFu ZGxlX3N1Ymdyb3VwcyAoRGVsaW0gIiIgOjogc3RycykKLS0gICAgICAgICAgICAgICAgZWxzZQot LSAgICAgICAgICAgICAgICAgIGxldCBlbXB0eV9ncm91cHMgPSBoYW5kbGVfc3ViZ3JvdXBzIFtd IGluCi0tICAgICAgICAgICAgICAgICAgaWYKLS0gICAgICAgICAgICAgICAgICAgIHRyeQotLSAg ICAgICAgICAgICAgICAgICAgICB1bnNhZmVfcGNyZV9leGVjCi0tICAgICAgICAgICAgICAgICAg ICAgICAgKGlmbGFncyBsb3IgMHgwNDEwKSByZXggfnBvcyB+c3Vial9zdGFydDpwb3MgfnN1YmoK LS0gICAgICAgICAgICAgICAgICAgICAgICBvdmVjdG9yIGNhbGxvdXQ7Ci0tICAgICAgICAgICAg ICAgICAgICAgIHRydWUKLS0gICAgICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGZh bHNlCi0tICAgICAgICAgICAgICAgICAgdGhlbgotLSAgICAgICAgICAgICAgICAgICAgbGV0IGZp cnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDAgaW4KLS0gICAgICAgICAgICAgICAgICAg IGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4KLS0gICAgICAgICAgICAg ICAgICAgIGxldCBkZWxpbSA9Ci0tICAgICAgICAgICAgICAgICAgICAgIERlbGltIChzdHJpbmdf dW5zYWZlX3N1YiBzdWJqIGZpcnN0IChsYXN0IC0gZmlyc3QpKSBpbgotLSAgICAgICAgICAgICAg ICAgICAgbGV0IG5ld19zdHJzID0KLS0gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX3N1Ymdy b3VwcyAoCi0tICAgICAgICAgICAgICAgICAgICAgICAgZGVsaW0gOjogKGlmIHByZW1hdGNoIHRo ZW4gc3RycwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGVtcHR5X2dy b3VwcyBAIChEZWxpbSAiIiA6OiBzdHJzKSkpIGluCi0tICAgICAgICAgICAgICAgICAgICBsb29w IG5ld19zdHJzIChjbnQgLSAxKSBsYXN0IGZhbHNlCi0tICAgICAgICAgICAgICAgICAgZWxzZQot LSAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19zdHJzID0KLS0gICAgICAgICAgICAgICAgICAg ICAgVGV4dCAoc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBwb3MgMSkKLS0gICAgICAgICAgICAgICAg ICAgICAgICA6OiBlbXB0eV9ncm91cHMgQCBEZWxpbSAiIiA6OiBzdHJzIGluCi0tICAgICAgICAg ICAgICAgICAgICBsb29wIG5ld19zdHJzIChjbnQgLSAxKSAocG9zICsgMSkgdHJ1ZQotLSAgICAg ICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAgIGxldCBkZWxpbSA9Ci0tICAgICAgICAg ICAgICAgICAgICBEZWxpbSAoc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBmaXJzdCAobGFzdCAtIGZp cnN0KSkgaW4KLS0gICAgICAgICAgICAgICAgICBsb29wIChoYW5kbGVfc3ViZ3JvdXBzIChkZWxp bSA6OiBzdHJzKSkgY250IGxhc3QgZmFsc2UKLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAg ICAgICBsZXQgZGVsaW0gPSBEZWxpbSAoc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBmaXJzdCAobGFz dCAtIGZpcnN0KSkgaW4KLS0gICAgICAgICAgICAgIGxldCBwcmVfc3RycyA9Ci0tICAgICAgICAg ICAgICAgIFRleHQgKHN0cmluZ191bnNhZmVfc3ViIHN1YmogcG9zIChmaXJzdCAtIHBvcykpIDo6 IHN0cnMgaW4KLS0gICAgICAgICAgICAgIGxvb3AKLS0gICAgICAgICAgICAgICAgKGhhbmRsZV9z dWJncm91cHMgKGRlbGltIDo6IHByZV9zdHJzKSkgKGNudCAtIDEpIGxhc3QgZmFsc2UgaW4KLS0g ICAgbGV0IHJlcyA9IGxvb3AgW10gKG1heCAtIDEpIHBvcyB0cnVlIGluCi0tICAgIExpc3QucmV2 IChpZiBtYXggPSAwIHRoZW4gc3RyaXBfYWxsX2VtcHR5X2Z1bGwgcmVzIGVsc2UgcmVzKQotLQot LQotLSgqIEFkZGl0aW9uYWwgY29udmVuaWVuY2UgZnVuY3Rpb25zIHVzZWZ1bCBpbiBjb21iaW5h dGlvbiB3aXRoIHRoaXMgbGlicmFyeSAqKQotLQotLWxldCBmb3JlYWNoX2xpbmUgPyhpYyA9IHN0 ZGluKSBmID0KLS0gIHRyeSB3aGlsZSB0cnVlIGRvIGYgKGlucHV0X2xpbmUgaWMpIGRvbmUgd2l0 aCBFbmRfb2ZfZmlsZSAtPiAoKQotLQotLWxldCBmb3JlYWNoX2ZpbGUgZmlsZW5hbWVzIGYgPQot LSAgbGV0IGRvX3dpdGhfZmlsZSBmaWxlbmFtZSA9Ci0tICAgIGxldCBmaWxlID0gb3Blbl9pbiBm aWxlbmFtZSBpbgotLSAgICB0cnkgZiBmaWxlbmFtZSBmaWxlOyBjbG9zZV9pbiBmaWxlCi0tICAg IHdpdGggZXhuIC0+IGNsb3NlX2luIGZpbGU7IHJhaXNlIGV4biBpbgotLSAgTGlzdC5pdGVyIGRv X3dpdGhfZmlsZSBmaWxlbmFtZXMKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2Ft bC9zcmMvcGNyZS5tbGkgYi9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvcGNyZS5tbGkKLWRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNTA0N2JiODY1Li4wMDAwMDAwMDAKLS0tLSBh L2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9wY3JlLm1saQotKysrIC9kZXYvbnVsbAotQEAg LTEsOTMwICswLDAgQEAKLS0oKgotLSAgIFBDUkUtT0NBTUwgLSBQZXJsIENvbXBhdGliaWxpdHkg UmVndWxhciBFeHByZXNzaW9ucyBmb3IgT0NhbWwKLS0KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTkt ICBNYXJrdXMgTW90dGwKLS0gICBlbWFpbDogbWFya3VzLm1vdHRsQGdtYWlsLmNvbQotLSAgIFdX VzogICBodHRwOi8vd3d3Lm9jYW1sLmluZm8KLS0KLS0gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0tICAgbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotLSAgIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot LSAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0g ICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKLS0gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0tKikK LS0KLS0oKiogUGVybCBDb21wYXRpYmlsaXR5IFJlZ3VsYXIgRXhwcmVzc2lvbnMgZm9yIE9DYW1s Ci0tCi0tICAgIHtlICUlVkVSU0lPTiUlIC0ge3s6JSVQS0dfSE9NRVBBR0UlJX1ob21lcGFnZX19 Ci0tKikKLS0KLS0KLS0oKiogezYgRXhjZXB0aW9uc30gKikKLS0KLS10eXBlIGVycm9yID0KLS0g IHwgUGFydGlhbCAgKCoqIFN0cmluZyBvbmx5IG1hdGNoZWQgdGhlIHBhdHRlcm4gcGFydGlhbGx5 ICopCi0tICB8IEJhZFBhcnRpYWwgICgqKiBQYXR0ZXJuIGNvbnRhaW5zIGl0ZW1zIHRoYXQgY2Fu bm90IGJlIHVzZWQgdG9nZXRoZXIKLS0gICAgICAgICAgICAgICAgICAgIHdpdGggcGFydGlhbCBt YXRjaGluZy4gKikKLS0gIHwgQmFkUGF0dGVybiBvZiBzdHJpbmcgKiBpbnQgICgqKiBbQmFkUGF0 dGVybiAobXNnLCBwb3MpXSByZWd1bGFyCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXhwcmVzc2lvbiBpcyBtYWxmb3JtZWQuICBUaGUgcmVhc29uCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW4gW21zZ10sIHRoZSBwb3NpdGlvbiBvZiB0aGUK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBpbiB0aGUgcGF0dGVy biBpbiBbcG9zXS4gKikKLS0gIHwgQmFkVVRGOCAgKCoqIFVURjggc3RyaW5nIGJlaW5nIG1hdGNo ZWQgaXMgaW52YWxpZCAqKQotLSAgfCBCYWRVVEY4T2Zmc2V0ICAoKiogR2V0cyByYWlzZWQgd2hl biBhIFVURjggc3RyaW5nIGJlaW5nIG1hdGNoZWQgd2l0aAotLSAgICAgICAgICAgICAgICAgICAg ICAgb2Zmc2V0IGlzIGludmFsaWQuICopCi0tICB8IE1hdGNoTGltaXQgICgqKiBNYXhpbXVtIGFs bG93ZWQgbnVtYmVyIG9mIG1hdGNoIGF0dGVtcHRzIHdpdGgKLS0gICAgICAgICAgICAgICAgICAg IGJhY2t0cmFja2luZyBvciByZWN1cnNpb24gaXMgcmVhY2hlZCBkdXJpbmcgbWF0Y2hpbmcuCi0t ICAgICAgICAgICAgICAgICAgICBBTEwgRlVOQ1RJT05TIENBTExJTkcgVEhFIE1BVENISU5HIEVO R0lORSBNQVkgUkFJU0UKLS0gICAgICAgICAgICAgICAgICAgIElUISEhICopCi0tICB8IFJlY3Vy c2lvbkxpbWl0Ci0tICB8IEludGVybmFsRXJyb3Igb2Ygc3RyaW5nCi0tICAgICAgKCoqIFtJbnRl cm5hbEVycm9yIG1zZ10gQy1saWJyYXJ5IGV4aGliaXRzIHVua25vd24vdW5kZWZpbmVkCi0tICAg ICAgICAgIGJlaGF2aW91ci4gIFRoZSByZWFzb24gaXMgaW4gW21zZ10uICopCi0tCi0tKCoqIEV4 Y2VwdGlvbiBpbmRpY2F0aW5nIFBDUkUgZXJyb3JzLiAqKQotLWV4Y2VwdGlvbiBFcnJvciBvZiBl cnJvcgotLQotLSgqKiBbQmFja3RyYWNrXSB1c2VkIGluIGNhbGxvdXQgZnVuY3Rpb25zIHRvIGZv cmNlIGJhY2t0cmFja2luZy4gKikKLS1leGNlcHRpb24gQmFja3RyYWNrCi0tCi0tKCoqIFtSZWdl eHBfb3IgKHBhdCwgZXJyb3IpXSBnZXRzIHJhaXNlZCBmb3Igc3ViLXBhdHRlcm4gW3BhdF0gYnkg W3JlZ2V4cF9vcl0KLS0gICAgaWYgaXQgZmFpbGVkIHRvIGNvbXBpbGUuICopCi0tZXhjZXB0aW9u IFJlZ2V4cF9vciBvZiBzdHJpbmcgKiBlcnJvcgotLQotLSgqKiB7NiBDb21waWxhdGlvbiBhbmQg cnVudGltZSBmbGFncyBhbmQgdGhlaXIgY29udmVyc2lvbiBmdW5jdGlvbnN9ICopCi0tCi0tKCoq IEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGNvbXBpbGF0aW9uIGZsYWdzICopCi0tdHlwZSBp Y2ZsYWcKLS0KLS0oKiogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgcnVudGltZSBmbGFncyAq KQotLWFuZCAgaXJmbGFnCi0tCi0tKCoqIENvbXBpbGF0aW9uIGZsYWdzICopCi0tYW5kIGNmbGFn ID0KLS0gIFsgYENBU0VMRVNTICAgICAgICAoKiogQ2FzZSBpbnNlbnNpdGl2ZSBtYXRjaGluZyAq KQotLSAgfCBgTVVMVElMSU5FICAgICAgICgqKiAnXicgYW5kICckJyBtYXRjaCBiZWZvcmUvYWZ0 ZXIgbmV3bGluZXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBqdXN0IGF0IHRoZSBi ZWdpbm5pbmcvZW5kIG9mIGEgc3RyaW5nICopCi0tICB8IGBET1RBTEwgICAgICAgICAgKCoqICcu JyBtYXRjaGVzIGFsbCBjaGFyYWN0ZXJzIChuZXdsaW5lcywgdG9vKSAqKQotLSAgfCBgRVhURU5E RUQgICAgICAgICgqKiBJZ25vcmVzIHdoaXRlc3BhY2UgYW5kIFBFUkwtY29tbWVudHMuIEJlaGF2 ZXMKLS0gICAgICAgICAgICAgICAgICAgICAgICAgbGlrZSB0aGUgJy94Jy1vcHRpb24gaW4gUEVS TCAqKQotLSAgfCBgQU5DSE9SRUQgICAgICAgICgqKiBQYXR0ZXJuIG1hdGNoZXMgb25seSBhdCBz dGFydCBvZiBzdHJpbmcgKikKLS0gIHwgYERPTExBUl9FTkRPTkxZICAoKiogJyQnIGluIHBhdHRl cm4gbWF0Y2hlcyBvbmx5IGF0IGVuZCBvZiBzdHJpbmcgKikKLS0gIHwgYEVYVFJBICAgICAgICAg ICAoKiogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zIG9mIFBDUkUgKikKLS0gIHwgYFVO R1JFRURZICAgICAgICAoKiogUXVhbnRpZmllcnMgbm90IGdyZWVkeSBhbnltb3JlLCBvbmx5Ci0t ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZvbGxvd2VkIGJ5ICc/JyAqKQotLSAgfCBgVVRG OCAgICAgICAgICAgICgqKiBUcmVhdHMgcGF0dGVybnMgYW5kIHN0cmluZ3MgYXMgVVRGOCBjaGFy YWN0ZXJzLiAqKQotLSAgfCBgTk9fVVRGOF9DSEVDSyAgICgqKiBUdXJucyBvZmYgdmFsaWRpdHkg Y2hlY2tzIG9uIFVURjggc3RyaW5ncyBmb3IKLS0gICAgICAgICAgICAgICAgICAgICAgICAgZWZm aWNpZW5jeSByZWFzb25zLiBXQVJOSU5HOiBpbnZhbGlkIFVURjgKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgc3RyaW5ncyBtYXkgY2F1c2UgYSBjcmFzaCB0aGVuISAqKQotLSAgfCBgTk9fQVVU T19DQVBUVVJFICgqKiBEaXNhYmxlcyB0aGUgdXNlIG9mIG51bWJlcmVkIGNhcHR1cmluZyBwYXJl bnRoZXNlcyAqKQotLSAgfCBgQVVUT19DQUxMT1VUICAgICgqKiBBdXRvbWF0aWNhbGx5IGluc2Vy dHMgY2FsbG91dHMgd2l0aCBpZCAyNTUKLS0gICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3Jl IGVhY2ggcGF0dGVybiBpdGVtICopCi0tICB8IGBGSVJTVExJTkUgICAgICAgKCoqIFVuYW5jaG9y ZWQgcGF0dGVybnMgbXVzdCBtYXRjaCBiZWZvcmUvYXQgZmlyc3QgTkwgKikKLS0gIF0KLS0KLS12 YWwgY2ZsYWdzIDogY2ZsYWcgbGlzdCAtPiBpY2ZsYWcKLS0oKiogW2NmbGFncyBjZmxhZ19saXN0 XSBjb252ZXJ0cyBhIGxpc3Qgb2YgY29tcGlsYXRpb24gZmxhZ3MgdG8KLS0gICAgdGhlaXIgaW50 ZXJuYWwgcmVwcmVzZW50YXRpb24uICopCi0tCi0tdmFsIGNmbGFnX2xpc3QgOiBpY2ZsYWcgLT4g Y2ZsYWcgbGlzdAotLSgqKiBbY2ZsYWdfbGlzdCBjZmxhZ3NdIGNvbnZlcnRzIGludGVybmFsIHJl cHJlc2VudGF0aW9uIG9mCi0tICAgIGNvbXBpbGF0aW9uIGZsYWdzIHRvIGEgbGlzdC4gKikKLS0K LS0oKiogUnVudGltZSBmbGFncyAqKQotLXR5cGUgcmZsYWcgPQotLSAgWyBgQU5DSE9SRUQgICgq KiBUcmVhdHMgcGF0dGVybiBhcyBpZiBpdCB3ZXJlIGFuY2hvcmVkICopCi0tICB8IGBOT1RCT0wg ICAgKCoqIEJlZ2lubmluZyBvZiBzdHJpbmcgaXMgbm90IHRyZWF0ZWQgYXMgYmVnaW5uaW5nIG9m IGxpbmUgKikKLS0gIHwgYE5PVEVPTCAgICAoKiogRW5kIG9mIHN0cmluZyBpcyBub3QgdHJlYXRl ZCBhcyBlbmQgb2YgbGluZSAqKQotLSAgfCBgTk9URU1QVFkgICgqKiBFbXB0eSBzdHJpbmdzIGFy ZSBub3QgY29uc2lkZXJlZCB0byBiZSBhIHZhbGlkIG1hdGNoICopCi0tICB8IGBQQVJUSUFMICAg KCoqIFR1cm5zIG9uIHBhcnRpYWwgbWF0Y2hpbmcgKikKLS0gIF0KLS0KLS12YWwgcmZsYWdzIDog cmZsYWcgbGlzdCAtPiBpcmZsYWcKLS0oKiogW3JmbGFncyByZmxhZ19saXN0XSBjb252ZXJ0cyBh IGxpc3Qgb2YgcnVudGltZSBmbGFncyB0bwotLSAgICB0aGVpciBpbnRlcm5hbCByZXByZXNlbnRh dGlvbi4gKikKLS0KLS12YWwgcmZsYWdfbGlzdCA6IGlyZmxhZyAtPiByZmxhZyBsaXN0Ci0tKCoq IFtyZmxhZ19saXN0IHJmbGFnc10gY29udmVydHMgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YK LS0gICAgcnVudGltZSBmbGFncyB0byBhIGxpc3QuICopCi0tCi0tCi0tKCoqIHs2IEluZm9ybWF0 aW9uIG9uIHRoZSBQQ1JFLWNvbmZpZ3VyYXRpb24gKGJ1aWxkLXRpbWUgb3B0aW9ucyl9ICopCi0t Ci0tKCoqIFZlcnNpb24gaW5mb3JtYXRpb24gKikKLS12YWwgdmVyc2lvbiA6IHN0cmluZyAgKCoq IFZlcnNpb24gb2YgdGhlIFBDUkUtQy1saWJyYXJ5ICopCi0tCi0tKCoqIEluZGljYXRlcyB3aGV0 aGVyIFVURjgtc3VwcG9ydCBpcyBlbmFibGVkICopCi0tdmFsIGNvbmZpZ191dGY4IDogYm9vbAot LQotLSgqKiBDaGFyYWN0ZXIgdXNlZCBhcyBuZXdsaW5lICopCi0tdmFsIGNvbmZpZ19uZXdsaW5l IDogY2hhcgotLQotLSgqKiBOdW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3IgaW50ZXJuYWwgbGlua2Fn ZSBvZiByZWd1bGFyIGV4cHJlc3Npb25zICopCi0tdmFsIGNvbmZpZ19saW5rX3NpemUgOiBpbnQK LS0KLS0oKiogRGVmYXVsdCBsaW1pdCBmb3IgY2FsbHMgdG8gaW50ZXJuYWwgbWF0Y2hpbmcgZnVu Y3Rpb24gKikKLS12YWwgY29uZmlnX21hdGNoX2xpbWl0IDogaW50Ci0tCi0tKCoqIERlZmF1bHQg bGltaXQgcmVjdXJzaW9uIGZvciBjYWxscyB0byBpbnRlcm5hbCBtYXRjaGluZyBmdW5jdGlvbiAq KQotLXZhbCBjb25maWdfbWF0Y2hfbGltaXRfcmVjdXJzaW9uIDogaW50Ci0tCi0tKCoqIEluZGlj YXRlcyB1c2Ugb2Ygc3RhY2sgcmVjdXJzaW9uIGluIG1hdGNoaW5nIGZ1bmN0aW9uICopCi0tdmFs IGNvbmZpZ19zdGFja3JlY3Vyc2UgOiBib29sCi0tCi0tCi0tKCoqIHs2IEluZm9ybWF0aW9uIG9u IHBhdHRlcm5zfSAqKQotLQotLSgqKiBJbmZvcm1hdGlvbiBvbiBtYXRjaGluZyBvZiAiZmlyc3Qg Y2hhcnMiIGluIHBhdHRlcm5zICopCi0tdHlwZSBmaXJzdGJ5dGVfaW5mbyA9Ci0tICBbIGBDaGFy IG9mIGNoYXIgICgqKiBGaXhlZCBmaXJzdCBjaGFyYWN0ZXIgKikKLS0gIHwgYFN0YXJ0X29ubHkg ICAgKCoqIFBhdHRlcm4gbWF0Y2hlcyBhdCBiZWdpbm5pbmcgYW5kIGVuZCBvZiBuZXdsaW5lcyAq KQotLSAgfCBgQU5DSE9SRUQgICAgICAoKiogUGF0dGVybiBpcyBhbmNob3JlZCAqKQotLSAgXQot LQotLSgqKiBJbmZvcm1hdGlvbiBvbiB0aGUgc3R1ZHkgc3RhdHVzIG9mIHBhdHRlcm5zICopCi0t dHlwZSBzdHVkeV9zdGF0ID0KLS0gIFsgYE5vdF9zdHVkaWVkICgqKiBQYXR0ZXJuIGhhcyBub3Qg eWV0IGJlZW4gc3R1ZGllZCAqKQotLSAgfCBgU3R1ZGllZCAgICAgKCoqIFBhdHRlcm4gaGFzIGJl ZW4gc3R1ZGllZCBzdWNjZXNzZnVsbHkgKikKLS0gIHwgYE9wdGltYWwgICAgICgqKiBQYXR0ZXJu IGNvdWxkIG5vdCBiZSBpbXByb3ZlZCBieSBzdHVkeWluZyAqKQotLSAgXQotLQotLXR5cGUgcmVn ZXhwICgqKiBDb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb25zICopCi0tCi0tKCoqIFtvcHRpb25z IHJlZ2V4cF0gQHJldHVybiBjb21waWxhdGlvbiBmbGFncyBvZiBbcmVnZXhwXS4gKikKLS12YWwg b3B0aW9ucyA6IHJlZ2V4cCAtPiBpY2ZsYWcKLS0KLS0oKiogW3NpemUgcmVnZXhwXSBAcmV0dXJu IG1lbW9yeSBzaXplIG9mIFtyZWdleHBdLiAqKQotLXZhbCBzaXplIDogcmVnZXhwIC0+IGludAot LQotLSgqKiBbc3R1ZHlzaXplIHJlZ2V4cF0gQHJldHVybiBtZW1vcnkgc2l6ZSBvZiBzdHVkeSBp bmZvcm1hdGlvbiBvZiBbcmVnZXhwXS4gKikKLS12YWwgc3R1ZHlzaXplIDogcmVnZXhwIC0+IGlu dAotLQotLSgqKiBbY2FwdHVyZWNvdW50IHJlZ2V4cF0gQHJldHVybiBudW1iZXIgb2YgY2FwdHVy aW5nIHN1YnBhdHRlcm5zIGluCi0tICAgIFtyZWdleHBdLiAqKQotLXZhbCBjYXB0dXJlY291bnQg OiByZWdleHAgLT4gaW50Ci0tCi0tKCoqIFtiYWNrcmVmbWF4IHJlZ2V4cF0gQHJldHVybiBudW1i ZXIgb2YgaGlnaGVzdCBiYWNrcmVmZXJlbmNlIGluIFtyZWdleHBdLiAqKQotLXZhbCBiYWNrcmVm bWF4IDogcmVnZXhwIC0+IGludAotLQotLSgqKiBbbmFtZWNvdW50IHJlZ2V4cF0gQHJldHVybiBu dW1iZXIgb2YgbmFtZWQgc3VicGF0dGVybnMgaW4gW3JlZ2V4cF0uICopCi0tdmFsIG5hbWVjb3Vu dCA6IHJlZ2V4cCAtPiBpbnQKLS0KLS0oKiogW25hbWVlbnRyeXNpemUgcmVnZXhwXSBAcmV0dXJu IHNpemUgb2YgbG9uZ2VzdCBuYW1lIG9mIG5hbWVkCi0tICAgIHN1YnBhdHRlcm5zIGluIFtyZWdl eHBdICsgMy4gKikKLS12YWwgbmFtZWVudHJ5c2l6ZSA6IHJlZ2V4cCAtPiBpbnQKLS0KLS0oKiog W25hbWVzIHJlZ2V4XSBAcmV0dXJuIGFycmF5IG9mIG5hbWVzIG9mIG5hbWVkIHN1YnN0cmluZ3Mg aW4gW3JlZ2V4cF0uICopCi0tdmFsIG5hbWVzIDogcmVnZXhwIC0+IHN0cmluZyBhcnJheQotLQot LSgqKiBbZmlyc3RieXRlIHJlZ2V4cF0gQHJldHVybiBmaXJzdGJ5dGUgaW5mbyBvbiBbcmVnZXhw XS4gKikKLS12YWwgZmlyc3RieXRlIDogcmVnZXhwIC0+IGZpcnN0Ynl0ZV9pbmZvCi0tCi0tKCoq IFtmaXJzdHRhYmxlIHJlZ2V4cF0gQHJldHVybiBzb21lIDI1Ni1iaXQgKDMyLWJ5dGUpIGZpeGVk IHNldCB0YWJsZSBpbgotLSAgICBmb3JtIG9mIGEgc3RyaW5nIGZvciBbcmVnZXhwXSBpZiBhdmFp bGFibGUsIFtOb25lXSBvdGhlcndpc2UuICopCi0tdmFsIGZpcnN0dGFibGUgOiByZWdleHAgLT4g c3RyaW5nIG9wdGlvbgotLQotLSgqKiBbbGFzdGxpdGVyYWwgcmVnZXhwXSBAcmV0dXJuIHNvbWUg bGFzdCBtYXRjaGluZyBjaGFyYWN0ZXIgb2YgW3JlZ2V4cF0KLS0gICAgaWYgYXZhaWxhYmxlLCBb Tm9uZV0gb3RoZXJ3aXNlLiAqKQotLXZhbCBsYXN0bGl0ZXJhbCA6IHJlZ2V4cCAtPiBjaGFyIG9w dGlvbgotLQotLSgqKiBbc3R1ZHlfc3RhdCByZWdleHBdIEByZXR1cm4gc3R1ZHkgc3RhdHVzIG9m IFtyZWdleHBdLiAqKQotLXZhbCBzdHVkeV9zdGF0IDogcmVnZXhwIC0+IHN0dWR5X3N0YXQKLS0K LS12YWwgZ2V0X3N0cmluZ251bWJlciA6IHJlZ2V4cCAtPiBzdHJpbmcgLT4gaW50Ci0tKCoqIFtn ZXRfc3RyaW5nbnVtYmVyIHJleCBuYW1lXSBAcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgbmFtZWQg c3Vic3RyaW5nCi0tICAgIFtuYW1lXSBpbiByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0uIFRoaXMg aW5kZXggY2FuIHRoZW4gYmUgdXNlZCB3aXRoCi0tICAgIFtnZXRfc3Vic3RyaW5nXS4KLS0KLS0g ICAgQHJhaXNlIEludmFsaWRfYXJnIGlmIHRoZXJlIGlzIG5vIHN1Y2ggbmFtZWQgc3Vic3RyaW5n LiAqKQotLQotLXZhbCBnZXRfbWF0Y2hfbGltaXQgOiByZWdleHAgLT4gaW50IG9wdGlvbgotLSgq KiBbZ2V0X21hdGNoX2xpbWl0IHJleF0gQHJldHVybiBzb21lIG1hdGNoIGxpbWl0IG9mIHJlZ3Vs YXIgZXhwcmVzc2lvbgotLSAgICBbcmV4XSBvciBbTm9uZV0uICopCi0tCi0tdmFsIGdldF9tYXRj aF9saW1pdF9yZWN1cnNpb24gOiByZWdleHAgLT4gaW50IG9wdGlvbgotLSgqKiBbZ2V0X21hdGNo X2xpbWl0X3JlY3Vyc2lvbiByZXhdIEByZXR1cm4gc29tZSByZWN1cnNpb24gbWF0Y2ggbGltaXQK LS0gICAgb2YgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG9yIFtOb25lXS4gKikKLS0KLS0KLS0o KiogezYgQ29tcGlsYXRpb24gb2YgcGF0dGVybnN9ICopCi0tCi0tdHlwZSBjaHRhYmxlcyAoKiog QWx0ZXJuYXRpdmUgc2V0IG9mIGNoYXIgdGFibGVzIGZvciBwYXR0ZXJuIG1hdGNoaW5nICopCi0t Ci0tdmFsIG1ha2V0YWJsZXMgOiB1bml0IC0+IGNodGFibGVzCi0tKCoqIEdlbmVyYXRlcyBuZXcg c2V0IG9mIGNoYXIgdGFibGVzIGZvciB0aGUgY3VycmVudCBsb2NhbGUuICopCi0tCi0tdmFsIHJl Z2V4cCA6Ci0tICA/c3R1ZHkgOiBib29sIC0+Ci0tICA/bGltaXQgOiBpbnQgLT4KLS0gID9saW1p dF9yZWN1cnNpb24gOiBpbnQgLT4KLS0gID9pZmxhZ3MgOiBpY2ZsYWcgLT4KLS0gID9mbGFncyA6 IGNmbGFnIGxpc3QgLT4KLS0gID9jaHRhYmxlcyA6IGNodGFibGVzIC0+Ci0tICBzdHJpbmcgLT4g cmVnZXhwCi0tKCoqIFtyZWdleHAgP3N0dWR5ID9saW1pdCA/bGltaXRfcmVjdXJzaW9uID9pZmxh Z3MgP2ZsYWdzID9jaHRhYmxlcyBwYXR0ZXJuXQotLSAgICBjb21waWxlcyBbcGF0dGVybl0gd2l0 aCBbZmxhZ3NdIHdoZW4gZ2l2ZW4sIHdpdGggW2lmbGFnc10gb3RoZXJ3aXNlLCBhbmQKLS0gICAg d2l0aCBjaGFyIHRhYmxlcyBbY2h0YWJsZXNdLiBJZiBbc3R1ZHldIGlzIHRydWUsIHRoZW4gdGhl IHJlc3VsdGluZyByZWd1bGFyCi0tICAgIGV4cHJlc3Npb24gd2lsbCBiZSBzdHVkaWVkLiBJZiBb bGltaXRdIGlzIHNwZWNpZmllZCwgdGhpcyBzZXRzIGEgbGltaXQgdG8KLS0gICAgdGhlIGFtb3Vu dCBvZiByZWN1cnNpb24gYW5kIGJhY2t0cmFja2luZyAob25seSBsb3dlciB0aGFuIHRoZSBidWls dGluCi0tICAgIGRlZmF1bHQhKS4gSWYgdGhpcyBsaW1pdCBpcyBleGNlZWRlZCwgW01hdGNoTGlt aXRdIHdpbGwgYmUgcmFpc2VkIGR1cmluZwotLSAgICBtYXRjaGluZy4KLS0KLS0gICAgQHBhcmFt IHN0dWR5IGRlZmF1bHQgPSB0cnVlCi0tICAgIEBwYXJhbSBsaW1pdCBkZWZhdWx0ID0gbm8gZXh0 cmEgbGltaXQgb3RoZXIgdGhhbiBkZWZhdWx0Ci0tICAgIEBwYXJhbSBsaW1pdF9yZWN1cnNpb24g ZGVmYXVsdCA9IG5vIGV4dHJhIGxpbWl0X3JlY3Vyc2lvbiBvdGhlciB0aGFuIGRlZmF1bHQKLS0g ICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBhcmFtIGZs YWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBjaHRhYmxlcyBkZWZhdWx0ID0gYnVp bHRpbiBjaGFyIHRhYmxlcwotLQotLSAgICBAcmV0dXJuIHRoZSByZWd1bGFyIGV4cHJlc3Npb24u Ci0tCi0tICAgIEZvciBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9uIGhvdyB5b3UgY2FuIHNwZWNp ZnkgUEVSTC1zdHlsZSByZWd1bGFyCi0tICAgIGV4cHJlc3Npb25zICg9IHBhdHRlcm5zKSwgcGxl YXNlIGNvbnN1bHQgdGhlIFBDUkUtZG9jdW1lbnRhdGlvbgotLSAgICAoIm1hbiBwY3JlcGF0dGVy biIpIG9yIFBFUkwtbWFudWFscy4KLS0gICAgQHNlZSA8aHR0cDovL3d3dy5wZXJsLmNvbT4gd3d3 LnBlcmwuY29tICopCi0tCi0tdmFsIHJlZ2V4cF9vciA6Ci0tICA/c3R1ZHkgOiBib29sIC0+Ci0t ICA/bGltaXQgOiBpbnQgLT4KLS0gID9saW1pdF9yZWN1cnNpb24gOiBpbnQgLT4KLS0gID9pZmxh Z3MgOiBpY2ZsYWcgLT4KLS0gID9mbGFncyA6IGNmbGFnIGxpc3QgLT4KLS0gID9jaHRhYmxlcyA6 IGNodGFibGVzIC0+Ci0tICBzdHJpbmcgbGlzdCAtPiByZWdleHAKLS0oKiogW3JlZ2V4cF9vciA/ c3R1ZHkgP2xpbWl0ID9saW1pdF9yZWN1cnNpb24gP2lmbGFncyA/ZmxhZ3MgP2NodGFibGVzIHBh dHRlcm5zXQotLSAgICBsaWtlIHshcmVnZXhwfSwgYnV0IGNvbWJpbmVzIFtwYXR0ZXJuc10gYXMg YWx0ZXJuYXRpdmVzIChvci1wYXR0ZXJucykgaW50bwotLSAgICBvbmUgcmVndWxhciBleHByZXNz aW9uLiAqKQotLQotLXZhbCBxdW90ZSA6IHN0cmluZyAtPiBzdHJpbmcKLS0oKiogW3F1b3RlIHN0 cl0gQHJldHVybiB0aGUgcXVvdGVkIHN0cmluZyBvZiBbc3RyXS4gKikKLS0KLS0KLS0oKiogezYg U3VicGF0dGVybiBleHRyYWN0aW9ufSAqKQotLQotLXR5cGUgc3Vic3RyaW5ncyAoKiogSW5mb3Jt YXRpb24gb24gc3Vic3RyaW5ncyBhZnRlciBwYXR0ZXJuIG1hdGNoaW5nICopCi0tCi0tdmFsIGdl dF9zdWJqZWN0IDogc3Vic3RyaW5ncyAtPiBzdHJpbmcKLS0oKiogW2dldF9zdWJqZWN0IHN1YnN0 cmluZ3NdIEByZXR1cm4gdGhlIHN1YmplY3Qgc3RyaW5nIG9mIFtzdWJzdHJpbmdzXS4gKikKLS0K LS12YWwgbnVtX29mX3N1YnMgOiBzdWJzdHJpbmdzIC0+IGludAotLSgqKiBbbnVtX29mX3N1YnMg c3Vic3RyaW5nc10gQHJldHVybiBudW1iZXIgb2Ygc3RyaW5ncyBpbiBbc3Vic3RyaW5nc10KLS0g ICAgKHdob2xlIG1hdGNoIGluY2x1c2l2ZSkuICopCi0tCi0tdmFsIGdldF9zdWJzdHJpbmcgOiBz dWJzdHJpbmdzIC0+IGludCAtPiBzdHJpbmcKLS0oKiogW2dldF9zdWJzdHJpbmcgc3Vic3RyaW5n cyBuXSBAcmV0dXJuIHRoZSBbbl10aCBzdWJzdHJpbmcKLS0gICAgKDAgaXMgd2hvbGUgbWF0Y2gp IG9mIFtzdWJzdHJpbmdzXS4KLS0KLS0gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW25d IGlzIG5vdCBpbiB0aGUgcmFuZ2Ugb2YgdGhlIG51bWJlciBvZgotLSAgICBzdWJzdHJpbmdzLgot LSAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIHRoZSBjb3JyZXNwb25kaW5nIHN1YnBhdHRlcm4gZGlk IG5vdCBjYXB0dXJlCi0tICAgICAgICAgICBhIHN1YnN0cmluZy4gKikKLS0KLS12YWwgZ2V0X3N1 YnN0cmluZ19vZnMgOiBzdWJzdHJpbmdzIC0+IGludCAtPiBpbnQgKiBpbnQKLS0oKiogW2dldF9z dWJzdHJpbmdfb2ZzIHN1YnN0cmluZ3Mgbl0gQHJldHVybiB0aGUgb2Zmc2V0IHR1cGxlIG9mIHRo ZQotLSAgICBbbl10aCBzdWJzdHJpbmcgb2YgW3N1YnN0cmluZ3NdICgwIGlzIHdob2xlIG1hdGNo KS4KLS0KLS0gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW25dIGlzIG5vdCBpbiB0aGUg cmFuZ2Ugb2YgdGhlIG51bWJlcgotLSAgICAgICAgICAgb2Ygc3Vic3RyaW5ncy4KLS0gICAgQHJh aXNlIE5vdF9mb3VuZCBpZiB0aGUgY29ycmVzcG9uZGluZyBzdWJwYXR0ZXJuIGRpZCBub3QgY2Fw dHVyZQotLSAgICAgICAgICAgYSBzdWJzdHJpbmcuICopCi0tCi0tdmFsIGdldF9zdWJzdHJpbmdz IDoKLS0gID9mdWxsX21hdGNoIDogYm9vbCAtPgotLSAgc3Vic3RyaW5ncyAtPiBzdHJpbmcgYXJy YXkKLS0oKiogW2dldF9zdWJzdHJpbmdzID9mdWxsX21hdGNoIHN1YnN0cmluZ3NdIEByZXR1cm4g dGhlIGFycmF5IG9mCi0tICAgIHN1YnN0cmluZ3MgaW4gW3N1YnN0cmluZ3NdLiBJdCBpbmNsdWRl cyB0aGUgZnVsbCBtYXRjaCBhdCBpbmRleCAwCi0tICAgIHdoZW4gW2Z1bGxfbWF0Y2hdIGlzIFt0 cnVlXSwgdGhlIGNhcHR1cmVkIHN1YnN0cmluZ3Mgb25seSB3aGVuIGl0Ci0tICAgIGlzIFtmYWxz ZV0uIElmIGEgc3VicGF0dGVybiBkaWQgbm90IGNhcHR1cmUgYSBzdWJzdHJpbmcsIHRoZSBlbXB0 eQotLSAgICBzdHJpbmcgaXMgcmV0dXJuZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpb24g aW5zdGVhZC4KLS0KLS0gICAgQHBhcmFtIGZ1bGxfbWF0Y2ggZGVmYXVsdCA9IHRydWUgKikKLS0K LS12YWwgZ2V0X29wdF9zdWJzdHJpbmdzIDoKLS0gID9mdWxsX21hdGNoIDogYm9vbCAtPgotLSAg c3Vic3RyaW5ncyAtPiBzdHJpbmcgb3B0aW9uIGFycmF5Ci0tKCoqIFtnZXRfb3B0X3N1YnN0cmlu Z3MgP2Z1bGxfbWF0Y2ggc3Vic3RyaW5nc10gQHJldHVybiB0aGUgYXJyYXkgb2YKLS0gICAgb3B0 aW9uYWwgc3Vic3RyaW5ncyBpbiBbc3Vic3RyaW5nc10uIEl0IGluY2x1ZGVzIFtTb21lIGZ1bGxf bWF0Y2hfc3RyXQotLSAgICBhdCBpbmRleCAwIHdoZW4gW2Z1bGxfbWF0Y2hdIGlzIFt0cnVlXSwg W1NvbWUgY2FwdHVyZWRfc3Vic3RyaW5nc10KLS0gICAgb25seSB3aGVuIGl0IGlzIFtmYWxzZV0u IElmIGEgc3VicGF0dGVybiBkaWQgbm90IGNhcHR1cmUgYSBzdWJzdHJpbmcsCi0tICAgIFtOb25l XSBpcyByZXR1cm5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGlvbiBpbnN0ZWFkLgotLQot LSAgICBAcGFyYW0gZnVsbF9tYXRjaCBkZWZhdWx0ID0gdHJ1ZSAqKQotLQotLXZhbCBnZXRfbmFt ZWRfc3Vic3RyaW5nIDogcmVnZXhwIC0+IHN0cmluZyAtPiBzdWJzdHJpbmdzIC0+IHN0cmluZwot LSgqKiBbZ2V0X25hbWVkX3N1YnN0cmluZyByZXggbmFtZSBzdWJzdHJpbmdzXSBAcmV0dXJuIHRo ZSBuYW1lZCBzdWJzdHJpbmcKLS0gICAgW25hbWVdIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4 XSBhbmQgW3N1YnN0cmluZ3NdLgotLQotLSAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0 aGVyZSBpcyBubyBzdWNoIG5hbWVkIHN1YnN0cmluZy4KLS0gICAgQHJhaXNlIE5vdF9mb3VuZCBp ZiB0aGUgY29ycmVzcG9uZGluZyBzdWJwYXR0ZXJuIGRpZCBub3QgY2FwdHVyZQotLSAgICAgICAg ICAgYSBzdWJzdHJpbmcuICopCi0tCi0tdmFsIGdldF9uYW1lZF9zdWJzdHJpbmdfb2ZzIDogcmVn ZXhwIC0+IHN0cmluZyAtPiBzdWJzdHJpbmdzIC0+IGludCAqIGludAotLSgqKiBbZ2V0X25hbWVk X3N1YnN0cmluZ19vZnMgcmV4IG5hbWUgc3Vic3RyaW5nc10gQHJldHVybiB0aGUgb2Zmc2V0Ci0t ICAgIHR1cGxlIG9mIHRoZSBuYW1lZCBzdWJzdHJpbmcgW25hbWVdIGluIHJlZ3VsYXIgZXhwcmVz c2lvbiBbcmV4XSBhbmQKLS0gICAgW3N1YnN0cmluZ3NdLgotLQotLSAgICBAcmFpc2UgSW52YWxp ZF9hcmd1bWVudCBpZiB0aGVyZSBpcyBubyBzdWNoIG5hbWVkIHN1YnN0cmluZy4KLS0gICAgQHJh aXNlIE5vdF9mb3VuZCBpZiB0aGUgY29ycmVzcG9uZGluZyBzdWJwYXR0ZXJuIGRpZCBub3QgY2Fw dHVyZQotLSAgICAgICAgICAgYSBzdWJzdHJpbmcuICopCi0tCi0tCi0tKCoqIHs2IENhbGxvdXRz fSAqKQotLQotLXR5cGUgY2FsbG91dF9kYXRhID0KLS0gIHsKLS0gICAgY2FsbG91dF9udW1iZXIg OiBpbnQ7ICgqKiBDYWxsb3V0IG51bWJlciAqKQotLSAgICBzdWJzdHJpbmdzIDogc3Vic3RyaW5n czsgKCoqIFN1YnN0cmluZ3MgbWF0Y2hlZCBzbyBmYXIgKikKLS0gICAgc3RhcnRfbWF0Y2ggOiBp bnQ7ICAoKiogU3ViamVjdCBzdGFydCBvZmZzZXQgb2YgY3VycmVudCBtYXRjaCBhdHRlbXB0ICop Ci0tICAgIGN1cnJlbnRfcG9zaXRpb24gOiBpbnQ7ICAoKiogU3ViamVjdCBvZmZzZXQgb2YgY3Vy cmVudCBtYXRjaCBwb2ludGVyICopCi0tICAgIGNhcHR1cmVfdG9wIDogaW50OyAgKCoqIE51bWJl ciBvZiB0aGUgaGlnaGVzdCBjYXB0dXJlZCBzdWJzdHJpbmcgc28gZmFyICopCi0tICAgIGNhcHR1 cmVfbGFzdCA6IGludDsgICgqKiBOdW1iZXIgb2YgdGhlIG1vc3QgcmVjZW50bHkgY2FwdHVyZWQg c3Vic3RyaW5nICopCi0tICAgIHBhdHRlcm5fcG9zaXRpb24gOiBpbnQ7ICAoKiogT2Zmc2V0IG9m IG5leHQgbWF0Y2ggaXRlbSBpbiBwYXR0ZXJuIHN0cmluZyAqKQotLSAgICBuZXh0X2l0ZW1fbGVu Z3RoIDogaW50OyAgKCoqIExlbmd0aCBvZiBuZXh0IG1hdGNoIGl0ZW0gaW4gcGF0dGVybiBzdHJp bmcgKikKLS0gIH0KLS0KLS0oKiogVHlwZSBvZiBjYWxsb3V0IGZ1bmN0aW9ucyAqKQotLXR5cGUg Y2FsbG91dCA9IGNhbGxvdXRfZGF0YSAtPiB1bml0Ci0tKCoqIENhbGxvdXRzIGFyZSByZWZlcnJl ZCB0byBpbiBwYXR0ZXJucyBhcyAiKD9DbikiIHdoZXJlICJuIiBpcyBhCi0tICAgIFtjYWxsb3V0 X251bWJlcl0gcmFuZ2luZyBmcm9tIDAgdG8gMjU1LiAgU3Vic3RyaW5ncyBjYXB0dXJlZCBzbyBm YXIKLS0gICAgYXJlIGFjY2Vzc2libGUgYXMgdXN1YWwgdmlhIFtzdWJzdHJpbmdzXS4gIFlvdSB3 aWxsIGhhdmUgdG8gY29uc2lkZXIKLS0gICAgW2NhcHR1cmVfdG9wXSBhbmQgW2NhcHR1cmVfbGFz dF0gdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZgotLSAgICB2YWxpZCBzdWJzdHJp bmdzLgotLQotLSAgICBCeSByYWlzaW5nIGV4Y2VwdGlvbiBbQmFja3RyYWNrXSB3aXRoaW4gYSBj YWxsb3V0IGZ1bmN0aW9uLCB0aGUgdXNlcgotLSAgICBjYW4gZm9yY2UgdGhlIHBhdHRlcm4gbWF0 Y2hpbmcgZW5naW5lIHRvIGJhY2t0cmFjayB0byBvdGhlciBwb3NzaWJsZQotLSAgICBzb2x1dGlv bnMuICBPdGhlciBleGNlcHRpb25zIHdpbGwgdGVybWluYXRlIG1hdGNoaW5nIGltbWVkaWF0ZWx5 Ci0tICAgIGFuZCByZXR1cm4gY29udHJvbCB0byBPQ2FtbC4KLS0qKQotLQotLQotLSgqKiB7NiBN YXRjaGluZyBvZiBwYXR0ZXJucyBhbmQgc3VicGF0dGVybiBleHRyYWN0aW9ufSAqKQotLQotLXZh bCBwY3JlX2V4ZWMgOgotLSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcg bGlzdCAtPgotLSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3Bv cyA6IGludCAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBzdHJpbmcgLT4gaW50IGFy cmF5Ci0tKCoqIFtwY3JlX2V4ZWMgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxv dXQgc3Vial0gQHJldHVybiBhbgotLSAgICBhcnJheSBvZiBvZmZzZXRzIHRoYXQgZGVzY3JpYmUg dGhlIHBvc2l0aW9uIG9mIG1hdGNoZWQgc3VicGF0dGVybnMgaW4KLS0gICAgdGhlIHN0cmluZyBb c3Vial0gc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10gd2l0aCBwYXR0ZXJuIFtwYXRdIHdoZW4K LS0gICAgZ2l2ZW4sIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UuIFRoZSBhcnJh eSBhbHNvIGNvbnRhaW5zCi0tICAgIGFkZGl0aW9uYWwgd29ya3NwYWNlIG5lZWRlZCBieSB0aGUg bWF0Y2ggZW5naW5lLiBVc2VzIFtmbGFnc10gd2hlbgotLSAgICBnaXZlbiwgdGhlIHByZWNvbXBp bGVkIFtpZmxhZ3NdIG90aGVyd2lzZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkKLS0gICAgW2Nh bGxvdXRdLgotLQotLSAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwot LSAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHJleCBkZWZh dWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0tICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9y ZWQKLS0gICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotLSAgICBAcGFyYW0gY2FsbG91dCBkZWZh dWx0ID0gaWdub3JlIGNhbGxvdXRzCi0tCi0tICAgIEByYWlzZSBOb3RfZm91bmQgaWYgcGF0dGVy biBkb2VzIG5vdCBtYXRjaC4gKikKLS0KLS12YWwgZXhlYyA6Ci0tICA/aWZsYWdzIDogaXJmbGFn IC0+Ci0tICA/ZmxhZ3MgOiByZmxhZyBsaXN0IC0+Ci0tICA/cmV4IDogcmVnZXhwIC0+Ci0tICA/ cGF0IDogc3RyaW5nIC0+Ci0tICA/cG9zIDogaW50IC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQg LT4KLS0gIHN0cmluZyAtPiBzdWJzdHJpbmdzCi0tKCoqIFtleGVjID9pZmxhZ3MgP2ZsYWdzID9y ZXggP3BhdCA/cG9zID9jYWxsb3V0IHN1YmpdIEByZXR1cm4gc3Vic3RyaW5nCi0tICAgIGluZm9y bWF0aW9uIG9uIHN0cmluZyBbc3Vial0gc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10gd2l0aCBw YXR0ZXJuCi0tICAgIFtwYXRdIHdoZW4gZ2l2ZW4sIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBv dGhlcndpc2UuIFVzZXMgW2ZsYWdzXQotLSAgICB3aGVuIGdpdmVuLCB0aGUgcHJlY29tcGlsZWQg W2lmbGFnc10gb3RoZXJ3aXNlLiBDYWxsb3V0cyBhcmUgaGFuZGxlZAotLSAgICBieSBbY2FsbG91 dF0uCi0tCi0tICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0tICAg IEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcmV4IGRlZmF1bHQg PSBtYXRjaGVzIHdoaXRlc3BhY2UKLS0gICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAot LSAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAwCi0tICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQg PSBpZ25vcmUgY2FsbG91dHMKLS0KLS0gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBwYXR0ZXJuIGRv ZXMgbm90IG1hdGNoLiAqKQotLQotLXZhbCBleGVjX2FsbCA6Ci0tICA/aWZsYWdzIDogaXJmbGFn IC0+Ci0tICA/ZmxhZ3MgOiByZmxhZyBsaXN0IC0+Ci0tICA/cmV4IDogcmVnZXhwIC0+Ci0tICA/ cGF0IDogc3RyaW5nIC0+Ci0tICA/cG9zIDogaW50IC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQg LT4KLS0gIHN0cmluZyAtPiBzdWJzdHJpbmdzIGFycmF5Ci0tKCoqIFtleGVjX2FsbCA/aWZsYWdz ID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJqXSBAcmV0dXJuCi0tICAgIGFuIGFy cmF5IG9mIHN1YnN0cmluZyBpbmZvcm1hdGlvbiBvZiBhbGwgbWF0Y2hpbmcgc3Vic3RyaW5ncyBp bgotLSAgICBzdHJpbmcgW3N1YmpdIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdIHdpdGggcGF0 dGVybiBbcGF0XSB3aGVuCi0tICAgIGdpdmVuLCByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gb3Ro ZXJ3aXNlLiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwKLS0gICAgdGhlIHByZWNvbXBpbGVkIFtp ZmxhZ3NdIG90aGVyd2lzZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotLQot LSAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFyYW0g ZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hl cyB3aGl0ZXNwYWNlCi0tICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBh cmFtIHBvcyBkZWZhdWx0ID0gMAotLSAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3Jl IGNhbGxvdXRzCi0tCi0tICAgIEByYWlzZSBOb3RfZm91bmQgaWYgcGF0dGVybiBkb2VzIG5vdCBt YXRjaC4gKikKLS0KLS12YWwgbmV4dF9tYXRjaCA6Ci0tICA/aWZsYWdzIDogaXJmbGFnIC0+Ci0t ICA/ZmxhZ3MgOiByZmxhZyBsaXN0IC0+Ci0tICA/cmV4IDogcmVnZXhwIC0+Ci0tICA/cGF0IDog c3RyaW5nIC0+Ci0tICA/cG9zIDogaW50IC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQgLT4KLS0g IHN1YnN0cmluZ3MgLT4gc3Vic3RyaW5ncwotLSgqKiBbbmV4dF9tYXRjaCA/aWZsYWdzID9mbGFn cyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJzdHJzXSBAcmV0dXJuCi0tICAgIHN1YnN0cmlu ZyBpbmZvcm1hdGlvbiBvbiB0aGUgbWF0Y2ggdGhhdCBmb2xsb3dzIG9uIHRoZSBsYXN0Ci0tICAg IG1hdGNoIGRlbm90ZWQgYnkgW3N1YnN0cnNdLCBqdW1waW5nIG92ZXIgW3Bvc10gY2hhcmFjdGVy cyAoYWxzbwotLSAgICBiYWNrd2FyZHMhKSwgdXNpbmcgcGF0dGVybiBbcGF0XSB3aGVuIGdpdmVu LCByZWd1bGFyIGV4cHJlc3Npb24KLS0gICAgW3JleF0gb3RoZXJ3aXNlLiBVc2VzIFtmbGFnc10g d2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdCi0tICAgIG90aGVyd2lzZS4gQ2Fs bG91dHMgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotLQotLSAgICBAcGFyYW0gaWZsYWdzIGRl ZmF1bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9y ZWQKLS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0tICAgIEBw YXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAot LSAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0tCi0tICAgIEBy YWlzZSBOb3RfZm91bmQgaWYgcGF0dGVybiBkb2VzIG5vdCBtYXRjaC4KLS0gICAgQHJhaXNlIElu dmFsaWRfYXJnIGlmIFtwb3NdIGxldCBtYXRjaGluZyBzdGFydCBvdXRzaWRlIG9mCi0tICAgICAg ICAgICB0aGUgc3ViamVjdCBzdHJpbmcuICopCi0tCi0tdmFsIGV4dHJhY3QgOgotLSAgP2lmbGFn cyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcgbGlzdCAtPgotLSAgP3JleCA6IHJlZ2V4 cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3BvcyA6IGludCAtPgotLSAgP2Z1bGxfbWF0 Y2ggOiBib29sIC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQgLT4KLS0gIHN0cmluZyAtPiBzdHJp bmcgYXJyYXkKLS0oKiogW2V4dHJhY3QgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2Z1 bGxfbWF0Y2ggP2NhbGxvdXQgc3Vial0KLS0gICAgQHJldHVybiB0aGUgYXJyYXkgb2Ygc3Vic3Ry aW5ncyB0aGF0IG1hdGNoIFtzdWJqXSBzdGFydGluZyBhdAotLSAgICBwb3NpdGlvbiBbcG9zXSwg dXNpbmcgcGF0dGVybiBbcGF0XSB3aGVuIGdpdmVuLCByZWd1bGFyIGV4cHJlc3Npb24KLS0gICAg W3JleF0gb3RoZXJ3aXNlLiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVk IFtpZmxhZ3NdCi0tICAgIG90aGVyd2lzZS4gSXQgaW5jbHVkZXMgdGhlIGZ1bGwgbWF0Y2ggYXQg aW5kZXggMCB3aGVuIFtmdWxsX21hdGNoXSBpcwotLSAgICBbdHJ1ZV0sIHRoZSBjYXB0dXJlZCBz dWJzdHJpbmdzIG9ubHkgd2hlbiBpdCBpcyBbZmFsc2VdLiBDYWxsb3V0cyBhcmUKLS0gICAgaGFu ZGxlZCBieSBbY2FsbG91dF0uICBJZiBhIHN1YnBhdHRlcm4gZGlkIG5vdCBjYXB0dXJlIGEgc3Vi c3RyaW5nLAotLSAgICB0aGUgZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGluIHRoZSBjb3JyZXNw b25kaW5nIHBvc2l0aW9uIGluc3RlYWQuCi0tCi0tICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9 IG5vIGV4dHJhIGZsYWdzCi0tICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAotLSAg ICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLS0gICAgQHBhcmFtIHBh dCBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAwCi0tICAgIEBw YXJhbSBmdWxsX21hdGNoIGRlZmF1bHQgPSB0cnVlCi0tICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1 bHQgPSBpZ25vcmUgY2FsbG91dHMKLS0KLS0gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBwYXR0ZXJu IGRvZXMgbm90IG1hdGNoLiAqKQotLQotLXZhbCBleHRyYWN0X29wdCA6Ci0tICA/aWZsYWdzIDog aXJmbGFnIC0+Ci0tICA/ZmxhZ3MgOiByZmxhZyBsaXN0IC0+Ci0tICA/cmV4IDogcmVnZXhwIC0+ Ci0tICA/cGF0IDogc3RyaW5nIC0+Ci0tICA/cG9zIDogaW50IC0+Ci0tICA/ZnVsbF9tYXRjaCA6 IGJvb2wgLT4KLS0gID9jYWxsb3V0IDogY2FsbG91dCAtPgotLSAgc3RyaW5nIC0+IHN0cmluZyBv cHRpb24gYXJyYXkKLS0oKiogW2V4dHJhY3Rfb3B0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/ cG9zID9mdWxsX21hdGNoID9jYWxsb3V0IHN1YmpdCi0tICAgIEByZXR1cm4gdGhlIGFycmF5IG9m IG9wdGlvbmFsIHN1YnN0cmluZ3MgdGhhdCBtYXRjaCBbc3Vial0gc3RhcnRpbmcKLS0gICAgYXQg cG9zaXRpb24gW3Bvc10sIHVzaW5nIHBhdHRlcm4gW3BhdF0gd2hlbiBnaXZlbiwgcmVndWxhciBl eHByZXNzaW9uCi0tICAgIFtyZXhdIG90aGVyd2lzZS4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2ZW4s IHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXQotLSAgICBvdGhlcndpc2UuIEl0IGluY2x1ZGVzIFtT b21lIGZ1bGxfbWF0Y2hfc3RyXSBhdCBpbmRleCAwIHdoZW4KLS0gICAgW2Z1bGxfbWF0Y2hdIGlz IFt0cnVlXSwgW1NvbWUgY2FwdHVyZWQtc3Vic3RyaW5nc10gb25seSB3aGVuIGl0IGlzCi0tICAg IFtmYWxzZV0uIENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5IFtjYWxsb3V0XS4gIElmIGEgc3VicGF0 dGVybiBkaWQKLS0gICAgbm90IGNhcHR1cmUgYSBzdWJzdHJpbmcsIFtOb25lXSBpcyByZXR1cm5l ZCBpbiB0aGUgY29ycmVzcG9uZGluZwotLSAgICBwb3NpdGlvbiBpbnN0ZWFkLgotLQotLSAgICBA cGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFyYW0gZmxhZ3Mg ZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0 ZXNwYWNlCi0tICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHBv cyBkZWZhdWx0ID0gMAotLSAgICBAcGFyYW0gZnVsbF9tYXRjaCBkZWZhdWx0ID0gdHJ1ZQotLSAg ICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0tCi0tICAgIEByYWlz ZSBOb3RfZm91bmQgaWYgcGF0dGVybiBkb2VzIG5vdCBtYXRjaC4gKikKLS0KLS12YWwgZXh0cmFj dF9hbGwgOgotLSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcgbGlzdCAt PgotLSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3BvcyA6IGlu dCAtPgotLSAgP2Z1bGxfbWF0Y2ggOiBib29sIC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQgLT4K LS0gIHN0cmluZyAtPiBzdHJpbmcgYXJyYXkgYXJyYXkKLS0oKiogW2V4dHJhY3RfYWxsID9pZmxh Z3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9mdWxsX21hdGNoID9jYWxsb3V0IHN1YmpdCi0tICAg IEByZXR1cm4gYW4gYXJyYXkgb2YgYXJyYXlzIG9mIGFsbCBtYXRjaGluZyBzdWJzdHJpbmdzIHRo YXQgbWF0Y2gKLS0gICAgW3N1YmpdIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdLCB1c2luZyBw YXR0ZXJuIFtwYXRdIHdoZW4gZ2l2ZW4sCi0tICAgIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBv dGhlcndpc2UuIFVzZXMgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUKLS0gICAgcHJlY29tcGlsZWQg W2lmbGFnc10gb3RoZXJ3aXNlLiBJdCBpbmNsdWRlcyB0aGUgZnVsbCBtYXRjaCBhdCBpbmRleAot LSAgICAwIG9mIHRoZSBleHRyYWN0ZWQgc3RyaW5nIGFycmF5cyB3aGVuIFtmdWxsX21hdGNoXSBp cyBbdHJ1ZV0sIHRoZQotLSAgICBjYXB0dXJlZCBzdWJzdHJpbmdzIG9ubHkgd2hlbiBpdCBpcyBb ZmFsc2VdLiBDYWxsb3V0cyBhcmUgaGFuZGxlZCBieQotLSAgICBbY2FsbG91dF0uCi0tCi0tICAg IEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0tICAgIEBwYXJhbSBmbGFn cyBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdo aXRlc3BhY2UKLS0gICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0g cG9zIGRlZmF1bHQgPSAwCi0tICAgIEBwYXJhbSBmdWxsX21hdGNoIGRlZmF1bHQgPSB0cnVlCi0t ICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91dHMKLS0KLS0gICAgQHJh aXNlIE5vdF9mb3VuZCBpZiBwYXR0ZXJuIGRvZXMgbm90IG1hdGNoLiAqKQotLQotLXZhbCBleHRy YWN0X2FsbF9vcHQgOgotLSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcg bGlzdCAtPgotLSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3Bv cyA6IGludCAtPgotLSAgP2Z1bGxfbWF0Y2ggOiBib29sIC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxv dXQgLT4KLS0gIHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uIGFycmF5IGFycmF5Ci0tKCoqIFtleHRy YWN0X2FsbF9vcHQKLS0gICAgICA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/ZnVsbF9t YXRjaCA/Y2FsbG91dCBzdWJqXQotLSAgICBAcmV0dXJuIGFuIGFycmF5IG9mIGFycmF5cyBvZiBh bGwgb3B0aW9uYWwgbWF0Y2hpbmcgc3Vic3RyaW5ncyB0aGF0Ci0tICAgIG1hdGNoIFtzdWJqXSBz dGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXSwgdXNpbmcgcGF0dGVybiBbcGF0XSB3aGVuCi0tICAg IGdpdmVuLCByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gb3RoZXJ3aXNlLiBVc2VzIFtmbGFnc10g d2hlbiBnaXZlbiwKLS0gICAgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90aGVyd2lzZS4gSXQg aW5jbHVkZXMgW1NvbWUgZnVsbF9tYXRjaF9zdHJdCi0tICAgIGF0IGluZGV4IDAgb2YgdGhlIGV4 dHJhY3RlZCBzdHJpbmcgYXJyYXlzIHdoZW4gW2Z1bGxfbWF0Y2hdIGlzIFt0cnVlXSwKLS0gICAg W1NvbWUgY2FwdHVyZWRfc3Vic3RyaW5nc10gb25seSB3aGVuIGl0IGlzIFtmYWxzZV0uIENhbGxv dXRzIGFyZQotLSAgICBoYW5kbGVkIGJ5IFtjYWxsb3V0XS4gIElmIGEgc3VicGF0dGVybiBkaWQg bm90IGNhcHR1cmUgYSBzdWJzdHJpbmcsCi0tICAgIFtOb25lXSBpcyByZXR1cm5lZCBpbiB0aGUg Y29ycmVzcG9uZGluZyBwb3NpdGlvbiBpbnN0ZWFkLgotLQotLSAgICBAcGFyYW0gaWZsYWdzIGRl ZmF1bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9y ZWQKLS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0tICAgIEBw YXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAot LSAgICBAcGFyYW0gZnVsbF9tYXRjaCBkZWZhdWx0ID0gdHJ1ZQotLSAgICBAcGFyYW0gY2FsbG91 dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0tCi0tICAgIEByYWlzZSBOb3RfZm91bmQgaWYg cGF0dGVybiBkb2VzIG5vdCBtYXRjaC4gKikKLS0KLS12YWwgcG1hdGNoIDoKLS0gID9pZmxhZ3Mg OiBpcmZsYWcgLT4KLS0gID9mbGFncyA6IHJmbGFnIGxpc3QgLT4KLS0gID9yZXggOiByZWdleHAg LT4KLS0gID9wYXQgOiBzdHJpbmcgLT4KLS0gID9wb3MgOiBpbnQgLT4KLS0gID9jYWxsb3V0IDog Y2FsbG91dCAtPgotLSAgc3RyaW5nIC0+IGJvb2wKLS0oKiogW3BtYXRjaCA/aWZsYWdzID9mbGFn cyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJqXSBAcmV0dXJuIFt0cnVlXQotLSAgICBpZiBb c3Vial0gaXMgbWF0Y2hlZCBieSBwYXR0ZXJuIFtwYXRdIHdoZW4gZ2l2ZW4sIHJlZ3VsYXIgZXhw cmVzc2lvbgotLSAgICBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3Nd LiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwKLS0gICAgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3Nd IG90aGVyd2lzZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotLQotLSAgICBA cGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFyYW0gZmxhZ3Mg ZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0 ZXNwYWNlCi0tICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHBv cyBkZWZhdWx0ID0gMAotLSAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxv dXRzICopCi0tCi0tCi0tKCoqIHs2IFN0cmluZyBzdWJzdGl0dXRpb259ICopCi0tCi0tKCoqIElu Zm9ybWF0aW9uIG9uIHN1YnN0aXR1dGlvbiBwYXR0ZXJucyAqKQotLXR5cGUgc3Vic3RpdHV0aW9u Ci0tCi0tdmFsIHN1YnN0IDogc3RyaW5nIC0+IHN1YnN0aXR1dGlvbgotLSgqKiBbc3Vic3Qgc3Ry XSBjb252ZXJ0cyB0aGUgc3RyaW5nIFtzdHJdIHJlcHJlc2VudGluZyBhCi0tICAgIHN1YnN0aXR1 dGlvbiBwYXR0ZXJuIHRvIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbgotLQotLSAgICBUaGUg Y29udGVudHMgb2YgdGhlIHN1YnN0aXR1dGlvbiBzdHJpbmcgW3N0cl0gY2FuIGJlIG5vcm1hbCB0 ZXh0Ci0tICAgIG1peGVkIHdpdGggYW55IG9mIHRoZSBmb2xsb3dpbmcgKG1vc3RseSBhcyBpbiBQ RVJMKToKLS0KLS0gICAgLSB7ZSAkXFswLTlcXSt9ICAtIGEgIiQiIGltbWVkaWF0ZWx5IGZvbGxv d2VkIGJ5IGFuIGFyYml0cmFyeSBudW1iZXIuCi0tICAgICAgICAgICAgICAgICAgICAgICAiJDAi IHN0YW5kcyBmb3IgdGhlIG5hbWUgb2YgdGhlIGV4ZWN1dGFibGUsCi0tICAgICAgICAgICAgICAg ICAgICAgICBhbnkgb3RoZXIgbnVtYmVyIGZvciB0aGUgbi10aCBiYWNrcmVmZXJlbmNlLgotLSAg ICAtIHtlICQmfSAgICAgICAgIC0gdGhlIHdob2xlIG1hdGNoZWQgcGF0dGVybgotLSAgICAtIHtl ICRgfSAgICAgICAgIC0gdGhlIHRleHQgYmVmb3JlIHRoZSBtYXRjaAotLSAgICAtIHtlICQnfSAg ICAgICAgIC0gdGhlIHRleHQgYWZ0ZXIgdGhlIG1hdGNoCi0tICAgIC0ge2UgJCt9ICAgICAgICAg LSB0aGUgbGFzdCBncm91cCB0aGF0IG1hdGNoZWQKLS0gICAgLSB7ZSAkJH0gICAgICAgICAtIGEg c2luZ2xlICIkIgotLSAgICAtIHtlICQhfSAgICAgICAgIC0gZGVsaW1pdGVyIHdoaWNoIGRvZXMg bm90IGFwcGVhciBpbiB0aGUgc3Vic3RpdHV0aW9uLgotLSAgICAgICAgICAgICAgICAgICAgICAg Q2FuIGJlIHVzZWQgdG8gcGFydCAiJFswLTldKyIgZnJvbSBhbiBpbW1lZGlhdGVseQotLSAgICAg ICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIG90aGVyIG51bWJlci4gKikKLS0KLS12YWwgcmVw bGFjZSA6Ci0tICA/aWZsYWdzIDogaXJmbGFnIC0+Ci0tICA/ZmxhZ3MgOiByZmxhZyBsaXN0IC0+ Ci0tICA/cmV4IDogcmVnZXhwIC0+Ci0tICA/cGF0IDogc3RyaW5nIC0+Ci0tICA/cG9zIDogaW50 IC0+Ci0tICA/aXRlbXBsIDogc3Vic3RpdHV0aW9uIC0+Ci0tICA/dGVtcGwgOiBzdHJpbmcgLT4K LS0gID9jYWxsb3V0IDogY2FsbG91dCAtPgotLSAgc3RyaW5nIC0+IHN0cmluZwotLSgqKiBbcmVw bGFjZSA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/aXRlbXBsID90ZW1wbCA/Y2FsbG91 dCBzdWJqXQotLSAgICByZXBsYWNlcyBhbGwgc3Vic3RyaW5ncyBvZiBbc3Vial0gbWF0Y2hpbmcg cGF0dGVybiBbcGF0XSB3aGVuIGdpdmVuLAotLSAgICByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0g b3RoZXJ3aXNlLCBzdGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXSB3aXRoCi0tICAgIHRoZSBzdWJz dGl0dXRpb24gc3RyaW5nIFt0ZW1wbF0gd2hlbiBnaXZlbiwgW2l0ZW1wbF0gb3RoZXJ3aXNlLiBV c2VzCi0tICAgIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90 aGVyd2lzZS4gQ2FsbG91dHMKLS0gICAgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotLQotLSAg ICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFyYW0gZmxh Z3MgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3 aGl0ZXNwYWNlCi0tICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFt IHBvcyBkZWZhdWx0ID0gMAotLSAgICBAcGFyYW0gaXRlbXBsIGRlZmF1bHQgPSBlbXB0eSBzdHJp bmcKLS0gICAgQHBhcmFtIHRlbXBsIGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBjYWxs b3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91dHMKLS0KLS0gICAgQHJhaXNlIEZhaWx1cmUgaWYg dGhlcmUgYXJlIGJhY2tyZWZlcmVuY2VzIHRvIG5vbmV4aXN0ZW50IHN1YnBhdHRlcm5zLiAqKQot LQotLXZhbCBxcmVwbGFjZSA6Ci0tICA/aWZsYWdzIDogaXJmbGFnIC0+Ci0tICA/ZmxhZ3MgOiBy ZmxhZyBsaXN0IC0+Ci0tICA/cmV4IDogcmVnZXhwIC0+Ci0tICA/cGF0IDogc3RyaW5nIC0+Ci0t ICA/cG9zIDogaW50IC0+Ci0tICA/dGVtcGwgOiBzdHJpbmcgLT4KLS0gID9jYWxsb3V0IDogY2Fs bG91dCAtPgotLSAgc3RyaW5nIC0+IHN0cmluZwotLSgqKiBbcXJlcGxhY2UgP2lmbGFncyA/Zmxh Z3MgP3JleCA/cGF0ID9wb3MgP3RlbXBsID9jYWxsb3V0IHN1YmpdCi0tICAgIHJlcGxhY2VzIGFs bCBzdWJzdHJpbmdzIG9mIFtzdWJqXSBtYXRjaGluZyBwYXR0ZXJuIFtwYXRdIHdoZW4gZ2l2ZW4s Ci0tICAgIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0aW5nIGF0IHBv c2l0aW9uIFtwb3NdCi0tICAgIHdpdGggdGhlIHN0cmluZyBbdGVtcGxdLiBVc2VzIFtmbGFnc10g d2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkCi0tICAgIFtpZmxhZ3NdIG90aGVyd2lzZS4gQ2Fs bG91dHMgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotLQotLSAgICBAcGFyYW0gaWZsYWdzIGRl ZmF1bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9y ZWQKLS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0tICAgIEBw YXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAot LSAgICBAcGFyYW0gdGVtcGwgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIGNhbGxvdXQg ZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cyAqKQotLQotLXZhbCBzdWJzdGl0dXRlX3N1YnN0cmlu Z3MgOgotLSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcgbGlzdCAtPgot LSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3BvcyA6IGludCAt PgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBzdWJzdCA6IChzdWJzdHJpbmdzIC0+IHN0 cmluZykgLT4KLS0gIHN0cmluZyAtPiBzdHJpbmcKLS0oKiogW3N1YnN0aXR1dGVfc3Vic3RyaW5n cyA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCB+c3Vic3Qgc3Vial0KLS0g ICAgcmVwbGFjZXMgYWxsIHN1YnN0cmluZ3Mgb2YgW3N1YmpdIG1hdGNoaW5nIHBhdHRlcm4gW3Bh dF0gd2hlbiBnaXZlbiwKLS0gICAgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZSwg c3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10KLS0gICAgd2l0aCB0aGUgcmVzdWx0IG9mIGZ1bmN0 aW9uIFtzdWJzdF0gYXBwbGllZCB0byB0aGUgc3Vic3RyaW5ncwotLSAgICBvZiB0aGUgbWF0Y2gu IFVzZXMgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUgcHJlY29tcGlsZWQgW2lmbGFnc10KLS0gICAg b3RoZXJ3aXNlLiBDYWxsb3V0cyBhcmUgaGFuZGxlZCBieSBbY2FsbG91dF0uCi0tCi0tICAgIEBw YXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0tICAgIEBwYXJhbSBmbGFncyBk ZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRl c3BhY2UKLS0gICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcG9z IGRlZmF1bHQgPSAwCi0tICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91 dHMgKikKLS0KLS12YWwgc3Vic3RpdHV0ZSA6Ci0tICA/aWZsYWdzIDogaXJmbGFnIC0+Ci0tICA/ ZmxhZ3MgOiByZmxhZyBsaXN0IC0+Ci0tICA/cmV4IDogcmVnZXhwIC0+Ci0tICA/cGF0IDogc3Ry aW5nIC0+Ci0tICA/cG9zIDogaW50IC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQgLT4KLS0gIHN1 YnN0IDogKHN0cmluZyAtPiBzdHJpbmcpIC0+Ci0tICBzdHJpbmcgLT4gc3RyaW5nCi0tKCoqIFtz dWJzdGl0dXRlID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IH5zdWJzdCBz dWJqXQotLSAgICByZXBsYWNlcyBhbGwgc3Vic3RyaW5ncyBvZiBbc3Vial0gbWF0Y2hpbmcgcGF0 dGVybiBbcGF0XSB3aGVuIGdpdmVuLAotLSAgICByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gb3Ro ZXJ3aXNlLCBzdGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXSB3aXRoCi0tICAgIHRoZSByZXN1bHQg b2YgZnVuY3Rpb24gW3N1YnN0XSBhcHBsaWVkIHRvIHRoZSBtYXRjaC4gVXNlcyBbZmxhZ3NdCi0t ICAgIHdoZW4gZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndpc2UuIENhbGxv dXRzIGFyZSBoYW5kbGVkCi0tICAgIGJ5IFtjYWxsb3V0XS4KLS0KLS0gICAgQHBhcmFtIGlmbGFn cyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQgPSBp Z25vcmVkCi0tICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQotLSAg ICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBwb3MgZGVmYXVsdCA9 IDAKLS0gICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cyAqKQotLQot LXZhbCByZXBsYWNlX2ZpcnN0IDoKLS0gID9pZmxhZ3MgOiBpcmZsYWcgLT4KLS0gID9mbGFncyA6 IHJmbGFnIGxpc3QgLT4KLS0gID9yZXggOiByZWdleHAgLT4KLS0gID9wYXQgOiBzdHJpbmcgLT4K LS0gID9wb3MgOiBpbnQgLT4KLS0gID9pdGVtcGwgOiBzdWJzdGl0dXRpb24gLT4KLS0gID90ZW1w bCA6IHN0cmluZyAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBzdHJpbmcgLT4gc3Ry aW5nCi0tKCoqIFtyZXBsYWNlX2ZpcnN0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9p dGVtcGwgP3RlbXBsID9jYWxsb3V0IHN1YmpdCi0tICAgIHJlcGxhY2VzIHRoZSBmaXJzdCBzdWJz dHJpbmcgb2YgW3N1YmpdIG1hdGNoaW5nIHBhdHRlcm4gW3BhdF0gd2hlbgotLSAgICBnaXZlbiwg cmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZSwgc3RhcnRpbmcgYXQgcG9zaXRpb24K LS0gICAgW3Bvc10gd2l0aCB0aGUgc3Vic3RpdHV0aW9uIHN0cmluZyBbdGVtcGxdIHdoZW4gZ2l2 ZW4sIFtpdGVtcGxdCi0tICAgIG90aGVyd2lzZS4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2ZW4sIHRo ZSBwcmVjb21waWxlZCBbaWZsYWdzXQotLSAgICBvdGhlcndpc2UuIENhbGxvdXRzIGFyZSBoYW5k bGVkIGJ5IFtjYWxsb3V0XS4KLS0KLS0gICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0 cmEgZmxhZ3MKLS0gICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJh bSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQotLSAgICBAcGFyYW0gcGF0IGRlZmF1 bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBwb3MgZGVmYXVsdCA9IDAKLS0gICAgQHBhcmFtIGl0 ZW1wbCBkZWZhdWx0ID0gZW1wdHkgc3RyaW5nCi0tICAgIEBwYXJhbSB0ZW1wbCBkZWZhdWx0ID0g aWdub3JlZAotLSAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0t Ci0tICAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZXJlIGFyZSBiYWNrcmVmZXJlbmNlcyB0byBub25l eGlzdGVudCBzdWJwYXR0ZXJucy4gKikKLS0KLS12YWwgcXJlcGxhY2VfZmlyc3QgOgotLSAgP2lm bGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcgbGlzdCAtPgotLSAgP3JleCA6IHJl Z2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3BvcyA6IGludCAtPgotLSAgP3RlbXBs IDogc3RyaW5nIC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQgLT4KLS0gIHN0cmluZyAtPiBzdHJp bmcKLS0oKiogW3FyZXBsYWNlX2ZpcnN0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID90 ZW1wbCA/Y2FsbG91dCBzdWJqXQotLSAgICByZXBsYWNlcyB0aGUgZmlyc3Qgc3Vic3RyaW5nIG9m IFtzdWJqXSBtYXRjaGluZyBwYXR0ZXJuIFtwYXRdIHdoZW4KLS0gICAgZ2l2ZW4sIHJlZ3VsYXIg ZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdCi0t ICAgIHdpdGggdGhlIHN0cmluZyBbdGVtcGxdLiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhl IHByZWNvbXBpbGVkCi0tICAgIFtpZmxhZ3NdIG90aGVyd2lzZS4gQ2FsbG91dHMgYXJlIGhhbmRs ZWQgYnkgW2NhbGxvdXRdLgotLQotLSAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRy YSBmbGFncwotLSAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFt IHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0tICAgIEBwYXJhbSBwYXQgZGVmYXVs dCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotLSAgICBAcGFyYW0gdGVt cGwgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9y ZSBjYWxsb3V0cyAqKQotLQotLXZhbCBzdWJzdGl0dXRlX3N1YnN0cmluZ3NfZmlyc3QgOgotLSAg P2lmbGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcgbGlzdCAtPgotLSAgP3JleCA6 IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3BvcyA6IGludCAtPgotLSAgP2Nh bGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBzdWJzdCA6IChzdWJzdHJpbmdzIC0+IHN0cmluZykgLT4K LS0gIHN0cmluZyAtPiBzdHJpbmcKLS0oKiogW3N1YnN0aXR1dGVfc3Vic3RyaW5nc19maXJzdAot LSAgICAgICA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCB+c3Vic3Qgc3Vi al0KLS0gICAgcmVwbGFjZXMgdGhlIGZpcnN0IHN1YnN0cmluZyBvZiBbc3Vial0gbWF0Y2hpbmcg cGF0dGVybiBbcGF0XSB3aGVuCi0tICAgIGdpdmVuLCByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0g b3RoZXJ3aXNlLCBzdGFydGluZyBhdCBwb3NpdGlvbgotLSAgICBbcG9zXSB3aXRoIHRoZSByZXN1 bHQgb2YgZnVuY3Rpb24gW3N1YnN0XSBhcHBsaWVkIHRvIHRoZSBzdWJzdHJpbmdzCi0tICAgIG9m IHRoZSBtYXRjaC4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZs YWdzXQotLSAgICBvdGhlcndpc2UuIENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5IFtjYWxsb3V0XS4K LS0KLS0gICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBh cmFtIGZsYWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1h dGNoZXMgd2hpdGVzcGFjZQotLSAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0tICAg IEBwYXJhbSBwb3MgZGVmYXVsdCA9IDAKLS0gICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGln bm9yZSBjYWxsb3V0cyAqKQotLQotLXZhbCBzdWJzdGl0dXRlX2ZpcnN0IDoKLS0gID9pZmxhZ3Mg OiBpcmZsYWcgLT4KLS0gID9mbGFncyA6IHJmbGFnIGxpc3QgLT4KLS0gID9yZXggOiByZWdleHAg LT4KLS0gID9wYXQgOiBzdHJpbmcgLT4KLS0gID9wb3MgOiBpbnQgLT4KLS0gID9jYWxsb3V0IDog Y2FsbG91dCAtPgotLSAgc3Vic3QgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4KLS0gIHN0cmluZyAt PiBzdHJpbmcKLS0oKiogW3N1YnN0aXR1dGVfZmlyc3QgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0 ID9wb3MgP2NhbGxvdXQgfnN1YnN0IHN1YmpdCi0tICAgIHJlcGxhY2VzIHRoZSBmaXJzdCBzdWJz dHJpbmcgb2YgW3N1YmpdIG1hdGNoaW5nIHBhdHRlcm4gW3BhdF0gd2hlbgotLSAgICBnaXZlbiwg cmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZSwgc3RhcnRpbmcgYXQgcG9zaXRpb24K LS0gICAgW3Bvc10gd2l0aCB0aGUgcmVzdWx0IG9mIGZ1bmN0aW9uIFtzdWJzdF0gYXBwbGllZCB0 byB0aGUgbWF0Y2guIFVzZXMKLS0gICAgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUgcHJlY29tcGls ZWQgW2lmbGFnc10gb3RoZXJ3aXNlLiBDYWxsb3V0cwotLSAgICBhcmUgaGFuZGxlZCBieSBbY2Fs bG91dF0uCi0tCi0tICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0t ICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcmV4IGRlZmF1 bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLS0gICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3Jl ZAotLSAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAwCi0tICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1 bHQgPSBpZ25vcmUgY2FsbG91dHMgKikKLS0KLS0KLS0oKiogezYgU3BsaXR0aW5nfSAqKQotLQot LXZhbCBzcGxpdCA6Ci0tICA/aWZsYWdzIDogaXJmbGFnIC0+Ci0tICA/ZmxhZ3MgOiByZmxhZyBs aXN0IC0+Ci0tICA/cmV4IDogcmVnZXhwIC0+Ci0tICA/cGF0IDogc3RyaW5nIC0+Ci0tICA/cG9z IDogaW50IC0+Ci0tICA/bWF4IDogaW50IC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQgLT4KLS0g IHN0cmluZyAtPiBzdHJpbmcgbGlzdAotLSgqKiBbc3BsaXQgP2lmbGFncyA/ZmxhZ3MgP3JleCA/ cGF0ID9wb3MgP21heCA/Y2FsbG91dCBzdWJqXSBzcGxpdHMgW3N1YmpdCi0tICAgIGludG8gYSBs aXN0IG9mIGF0IG1vc3QgW21heF0gc3RyaW5ncywgdXNpbmcgYXMgZGVsaW1pdGVyIHBhdHRlcm4K LS0gICAgW3BhdF0gd2hlbiBnaXZlbiwgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lz ZSwgc3RhcnRpbmcgYXQKLS0gICAgcG9zaXRpb24gW3Bvc10uIFVzZXMgW2ZsYWdzXSB3aGVuIGdp dmVuLCB0aGUgcHJlY29tcGlsZWQgW2lmbGFnc10KLS0gICAgb3RoZXJ3aXNlLiBJZiBbbWF4XSBp cyB6ZXJvLCB0cmFpbGluZyBlbXB0eSBmaWVsZHMgYXJlIHN0cmlwcGVkLiBJZgotLSAgICBpdCBp cyBuZWdhdGl2ZSwgaXQgaXMgdHJlYXRlZCBhcyBhcmJpdHJhcmlseSBsYXJnZS4gSWYgbmVpdGhl ciBbcGF0XQotLSAgICBub3IgW3JleF0gYXJlIHNwZWNpZmllZCwgbGVhZGluZyB3aGl0ZXNwYWNl IHdpbGwgYmUgc3RyaXBwZWQhIFNob3VsZAotLSAgICBiZWhhdmUgZXhhY3RseSBhcyBpbiBQRVJM LiBDYWxsb3V0cyBhcmUgaGFuZGxlZCBieSBbY2FsbG91dF0uCi0tCi0tICAgIEBwYXJhbSBpZmxh Z3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0tICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0g aWdub3JlZAotLSAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLS0g ICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcG9zIGRlZmF1bHQg PSAwCi0tICAgIEBwYXJhbSBtYXggZGVmYXVsdCA9IDAKLS0gICAgQHBhcmFtIGNhbGxvdXQgZGVm YXVsdCA9IGlnbm9yZSBjYWxsb3V0cyAqKQotLQotLXZhbCBhc3BsaXQgOgotLSAgP2lmbGFncyA6 IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcgbGlzdCAtPgotLSAgP3JleCA6IHJlZ2V4cCAt PgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3BvcyA6IGludCAtPgotLSAgP21heCA6IGludCAt PgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBzdHJpbmcgLT4gc3RyaW5nIGFycmF5Ci0t KCoqIFthc3BsaXQgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP21heCA/Y2FsbG91dCBz dWJqXSBzYW1lIGFzCi0tICAgIHshUGNyZS5zcGxpdH0gYnV0IEByZXR1cm4gYW4gYXJyYXkgaW5z dGVhZCBvZiBhIGxpc3QuICopCi0tCi0tKCoqIFJlc3VsdCBvZiBhIHshUGNyZS5mdWxsX3NwbGl0 fSAqKQotLXR5cGUgc3BsaXRfcmVzdWx0ID0gVGV4dCBvZiBzdHJpbmcgICAgICAgICgqKiBUZXh0 IHBhcnQgb2Ygc3BsaXQgc3RyaW5nICopCi0tICAgICAgICAgICAgICAgICAgfCBEZWxpbSBvZiBz dHJpbmcgICAgICAgKCoqIERlbGltaXRlciBwYXJ0IG9mIHNwbGl0IHN0cmluZyAqKQotLSAgICAg ICAgICAgICAgICAgIHwgR3JvdXAgb2YgaW50ICogc3RyaW5nICgqKiBTdWJncm91cCBvZiBtYXRj aGVkIGRlbGltaXRlcgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc3ViZ3JvdXBfbnIsIHN1Ymdyb3VwX3N0cikgKikKLS0gICAgICAgICAgICAgICAgICB8 IE5vR3JvdXAgICAgICAgICAgICAgICAoKiogVW5tYXRjaGVkIHN1Ymdyb3VwICopCi0tCi0tdmFs IGZ1bGxfc3BsaXQgOgotLSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcg bGlzdCAtPgotLSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3Bv cyA6IGludCAtPgotLSAgP21heCA6IGludCAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0t ICBzdHJpbmcgLT4gc3BsaXRfcmVzdWx0IGxpc3QKLS0oKiogW2Z1bGxfc3BsaXQgP2lmbGFncyA/ ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP21heCA/Y2FsbG91dCBzdWJqXSBzcGxpdHMKLS0gICAgW3N1 YmpdIGludG8gYSBsaXN0IG9mIGF0IG1vc3QgW21heF0gZWxlbWVudHMgb2YgdHlwZSAic3BsaXRf cmVzdWx0IiwKLS0gICAgdXNpbmcgYXMgZGVsaW1pdGVyIHBhdHRlcm4gW3BhdF0gd2hlbiBnaXZl biwgcmVndWxhciBleHByZXNzaW9uCi0tICAgIFtyZXhdIG90aGVyd2lzZSwgc3RhcnRpbmcgYXQg cG9zaXRpb24gW3Bvc10uIFVzZXMgW2ZsYWdzXSB3aGVuIGdpdmVuLAotLSAgICB0aGUgcHJlY29t cGlsZWQgW2lmbGFnc10gb3RoZXJ3aXNlLiBJZiBbbWF4XSBpcyB6ZXJvLCB0cmFpbGluZyBlbXB0 eQotLSAgICBmaWVsZHMgYXJlIHN0cmlwcGVkLiBJZiBpdCBpcyBuZWdhdGl2ZSwgaXQgaXMgdHJl YXRlZCBhcyBhcmJpdHJhcmlseQotLSAgICBsYXJnZS4gU2hvdWxkIGJlaGF2ZSBleGFjdGx5IGFz IGluIFBFUkwuIENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5Ci0tICAgIFtjYWxsb3V0XS4KLS0KLS0g ICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBhcmFtIGZs YWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMg d2hpdGVzcGFjZQotLSAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJh bSBwb3MgZGVmYXVsdCA9IDAKLS0gICAgQHBhcmFtIG1heCBkZWZhdWx0ID0gMAotLSAgICBAcGFy YW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzICopCi0tCi0tCi0tKCoqIHs2IEFk ZGl0aW9uYWwgY29udmVuaWVuY2UgZnVuY3Rpb25zfSAqKQotLQotLXZhbCBmb3JlYWNoX2xpbmUg OgotLSAgP2ljIDogaW5fY2hhbm5lbCAtPgotLSAgKHN0cmluZyAtPiB1bml0KSAtPiB1bml0Ci0t KCoqIFtmb3JlYWNoX2xpbmUgP2ljIGZdIGFwcGxpZXMgW2ZdIHRvIGVhY2ggbGluZSBpbiBpbmNo YW5uZWwgW2ljXSB1bnRpbAotLSAgICB0aGUgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4KLS0KLS0g ICAgQHBhcmFtIGljIGRlZmF1bHQgPSBzdGRpbiAqKQotLQotLXZhbCBmb3JlYWNoX2ZpbGUgOiBz dHJpbmcgbGlzdCAtPiAoc3RyaW5nIC0+IGluX2NoYW5uZWwgLT4gdW5pdCkgLT4gdW5pdAotLSgq KiBbZm9yZWFjaF9maWxlIGZpbGVuYW1lcyBmXSBvcGVucyBlYWNoIGZpbGUgaW4gdGhlIGxpc3Qg W2ZpbGVuYW1lc10KLS0gICAgZm9yIGlucHV0IGFuZCBhcHBsaWVzIFtmXSB0byBlYWNoIGZpbGVu YW1lIGFuZCB0aGUgY29ycmVzcG9uZGluZwotLSAgICBjaGFubmVsLiBDaGFubmVscyBhcmUgY2xv c2VkIGFmdGVyIGVhY2ggb3BlcmF0aW9uIChldmVuIHdoZW4KLS0gICAgZXhjZXB0aW9ucyBvY2N1 ciAtIHRoZXkgZ2V0IHJlcmFpc2VkIGFmdGVyd2FyZHMhKS4gKikKLS0KLS0KLS0oKiogezYge2Ig VU5TQUZFIFNUVUZGIC0gVVNFIFdJVEggQ0FVVElPTiF9fSAqKQotLQotLXZhbCB1bnNhZmVfcGNy ZV9leGVjIDoKLS0gIGlyZmxhZyAtPgotLSAgcmVnZXhwIC0+Ci0tICBwb3MgOiBpbnQgLT4KLS0g IHN1Ympfc3RhcnQgOiBpbnQgLT4KLS0gIHN1YmogOiBzdHJpbmcgLT4KLS0gIGludCBhcnJheSAt PgotLSAgY2FsbG91dCBvcHRpb24gLT4KLS0gIHVuaXQKLS0oKiogW3Vuc2FmZV9wY3JlX2V4ZWMg ZmxhZ3MgcmV4IH5wb3MgfnN1Ympfc3RhcnQgfnN1Ymogb2Zmc2V0X3ZlY3Rvcl0uCi0tICAgIFlv dSBzaG91bGQgcmVhZCB0aGUgQy1zb3VyY2UgdG8ga25vdyB3aGF0IGhhcHBlbnMuCi0tICAgIElm IHlvdSBkbyBub3QgdW5kZXJzdGFuZCBpdCAtIHtiIGRvbid0IHVzZSB0aGlzIGZ1bmN0aW9uIX0g KikKLS0KLS12YWwgbWFrZV9vdmVjdG9yIDogcmVnZXhwIC0+IGludCAqIGludCBhcnJheQotLSgq KiBbbWFrZV9vdmVjdG9yIHJlZ2V4cF0gY2FsY3VsYXRlcyB0aGUgdHVwbGUgKHN1Ymdyb3VwczIs IG92ZWN0b3IpCi0tICAgIHdoaWNoIGlzIHRoZSBudW1iZXIgb2Ygc3ViZ3JvdXAgb2Zmc2V0cyBh bmQgdGhlIG9mZnNldCBhcnJheS4gKikKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1v Y2FtbC9zcmMvcGNyZV9zdHVicy5jLmluIGIvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL3Bj cmVfc3R1YnMuYy5pbgotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA2NmRmYjdiMGQu LjAwMDAwMDAwMAotLS0tIGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL3BjcmVfc3R1YnMu Yy5pbgotKysrIC9kZXYvbnVsbAotQEAgLTEsODYyICswLDAgQEAKLS0vKgotLSAgIFBDUkUtT0NB TUwgLSBQZXJsIENvbXBhdGliaWxpdHkgUmVndWxhciBFeHByZXNzaW9ucyBmb3IgT0NhbWwKLS0K LS0gICBDb3B5cmlnaHQgKEMpIDE5OTktICBNYXJrdXMgTW90dGwKLS0gICBlbWFpbDogbWFya3Vz Lm1vdHRsQGdtYWlsLmNvbQotLSAgIFdXVzogICBodHRwOi8vd3d3Lm9jYW1sLmluZm8KLS0KLS0g ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCi0tICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYwotLSAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcgotLSAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgbGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLS0gICBMaWNlbnNlIGFsb25nIHdpdGgg dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tICAgRm91 bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAgMDIxMTAtMTMwMSAgVVNBCi0tKi8KLS0KLS0jaWYgZGVmaW5lZChfV0lOMzIpCi0tIyAgZGVm aW5lIHNucHJpbnRmIF9zbnByaW50ZgotLSMgIGlmIGRlZmluZWQoX0RMTCkKLS0jICAgIGRlZmlu ZSBQQ1JFZXh0ZXJuIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotLSMgIGVsc2UKLS0jICAgIGRlZmlu ZSBQQ1JFZXh0ZXJuCi0tIyAgZW5kaWYKLS0jZW5kaWYKLS0KLS0jaWYgX1dJTjY0Ci0tICB0eXBl ZGVmIGxvbmcgbG9uZyAqb3ZlY19kc3RfcHRyOwotLSNlbHNlCi0tICB0eXBlZGVmIGxvbmcgKm92 ZWNfZHN0X3B0cjsKLS0jZW5kaWYKLS0KLS0jaWYgX19HTlVDX18gPj0gMwotLSMgZGVmaW5lIGlu bGluZSBpbmxpbmUgX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQotLSMgZGVmaW5lIF9f dW51c2VkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotLSNlbHNlCi0tIyBkZWZpbmUgX191bnVz ZWQKLS0jIGRlZmluZSBpbmxpbmUKLS0jZW5kaWYKLS0KLS0jaW5jbHVkZSA8Y3R5cGUuaD4KLS0j aW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tCi0tI2luY2x1ZGUgPGNh bWwvbWx2YWx1ZXMuaD4KLS0jaW5jbHVkZSA8Y2FtbC9hbGxvYy5oPgotLSNpbmNsdWRlIDxjYW1s L21lbW9yeS5oPgotLSNpbmNsdWRlIDxjYW1sL2ZhaWwuaD4KLS0jaW5jbHVkZSA8Y2FtbC9jYWxs YmFjay5oPgotLSNpbmNsdWRlIDxjYW1sL2N1c3RvbS5oPgotLQotLSNpbmNsdWRlIDxwY3JlLmg+ Ci0tCi0tLyogRXJyb3IgY29kZXMgYXMgZGVmaW5lZCBmb3IgcGNyZSA3LjksIHVuZGVmaW5lZCBp biBwY3JlIDQuNSAqLwotLSNpZm5kZWYgUENSRV9FUlJPUl9QQVJUSUFMCi0tI2RlZmluZSBQQ1JF X0VSUk9SX1BBUlRJQUwgICAgICAgICgtMTIpCi0tI2VuZGlmCi0tI2lmbmRlZiBQQ1JFX0VSUk9S X0JBRFBBUlRJQUwKLS0jZGVmaW5lIFBDUkVfRVJST1JfQkFEUEFSVElBTCAgICAgKC0xMykKLS0j ZW5kaWYKLS0jaWZuZGVmIFBDUkVfRVJST1JfUkVDVVJTSU9OTElNSVQKLS0jZGVmaW5lIFBDUkVf RVJST1JfUkVDVVJTSU9OTElNSVQgKC0yMSkKLS0jZW5kaWYKLS0KLS10eXBlZGVmIGNvbnN0IHVu c2lnbmVkIGNoYXIgKmNoYXJ0YWJsZXM7ICAvKiBUeXBlIG9mIGNoYXJ0YWJsZSBzZXRzICovCi0t Ci0tLyogQ29udGVudHMgb2YgY2FsbG91dCBkYXRhICovCi0tc3RydWN0IGNvZCB7Ci0tICBsb25n IHN1Ympfc3RhcnQ7ICAgICAgICAvKiBTdGFydCBvZiBzdWJqZWN0IHN0cmluZyAqLwotLSAgdmFs dWUgKnZfc3Vic3RyaW5nc19wOyAgLyogUG9pbnRlciB0byBzdWJzdHJpbmdzIG1hdGNoZWQgc28g ZmFyICovCi0tICB2YWx1ZSAqdl9jb2ZfcDsgICAgICAgICAvKiBQb2ludGVyIHRvIGNhbGxvdXQg ZnVuY3Rpb24gKi8KLS0gIHZhbHVlIHZfZXhuOyAgICAgICAgICAgIC8qIFBvc3NpYmxlIGV4Y2Vw dGlvbiByYWlzZWQgYnkgY2FsbG91dCBmdW5jdGlvbiAqLwotLX07Ci0tCi0tLyogQ2FjaGUgZm9y IGV4Y2VwdGlvbnMgKi8KLS1zdGF0aWMgdmFsdWUgKnBjcmVfZXhjX0Vycm9yICAgICAgICAgPSBO VUxMOyAgLyogRXhjZXB0aW9uIFtFcnJvcl0gKi8KLS1zdGF0aWMgdmFsdWUgKnBjcmVfZXhjX0Jh Y2t0cmFjayAgICAgPSBOVUxMOyAgLyogRXhjZXB0aW9uIFtCYWNrdHJhY2tdICovCi0tCi0tLyog Q2FjaGUgZm9yIHBvbHltb3JwaGljIHZhcmlhbnRzICovCi0tc3RhdGljIHZhbHVlIHZhcl9TdGFy dF9vbmx5OyAgIC8qIFZhcmlhbnQgW2BTdGFydF9vbmx5XSAqLwotLXN0YXRpYyB2YWx1ZSB2YXJf QU5DSE9SRUQ7ICAgICAvKiBWYXJpYW50IFtgQU5DSE9SRURdICovCi0tc3RhdGljIHZhbHVlIHZh cl9DaGFyOyAgICAgICAgIC8qIFZhcmlhbnQgW2BDaGFyIGNoYXJdICovCi0tc3RhdGljIHZhbHVl IHZhcl9Ob3Rfc3R1ZGllZDsgIC8qIFZhcmlhbnQgW2BOb3Rfc3R1ZGllZF0gKi8KLS1zdGF0aWMg dmFsdWUgdmFyX1N0dWRpZWQ7ICAgICAgLyogVmFyaWFudCBbYFN0dWRpZWRdICovCi0tc3RhdGlj IHZhbHVlIHZhcl9PcHRpbWFsOyAgICAgIC8qIFZhcmlhbnQgW2BPcHRpbWFsXSAqLwotLQotLXN0 YXRpYyB2YWx1ZSBOb25lID0gVmFsX2ludCgwKTsKLS0KLS0vKiBEYXRhIGFzc29jaWF0ZWQgd2l0 aCBPQ2FtbCB2YWx1ZXMgb2YgUENSRSByZWd1bGFyIGV4cHJlc3Npb24gKi8KLS1zdHJ1Y3QgcGNy ZV9vY2FtbF9yZWdleHAgeyBwY3JlICpyZXg7IHBjcmVfZXh0cmEgKmV4dHJhOyBpbnQgc3R1ZGll ZDsgfTsKLS0KLS0jZGVmaW5lIFBjcmVfb2NhbWxfcmVnZXhwX3ZhbCh2KSBcCi0tICAoKHN0cnVj dCBwY3JlX29jYW1sX3JlZ2V4cCAqKSBEYXRhX2N1c3RvbV92YWwodikpCi0tCi0tI2RlZmluZSBn ZXRfcmV4KHYpIFBjcmVfb2NhbWxfcmVnZXhwX3ZhbCh2KS0+cmV4Ci0tI2RlZmluZSBnZXRfZXh0 cmEodikgUGNyZV9vY2FtbF9yZWdleHBfdmFsKHYpLT5leHRyYQotLSNkZWZpbmUgZ2V0X3N0dWRp ZWQodikgUGNyZV9vY2FtbF9yZWdleHBfdmFsKHYpLT5zdHVkaWVkCi0tCi0tI2RlZmluZSBzZXRf cmV4KHYsIHIpIFBjcmVfb2NhbWxfcmVnZXhwX3ZhbCh2KS0+cmV4ID0gcgotLSNkZWZpbmUgc2V0 X2V4dHJhKHYsIGUpIFBjcmVfb2NhbWxfcmVnZXhwX3ZhbCh2KS0+ZXh0cmEgPSBlCi0tI2RlZmlu ZSBzZXRfc3R1ZGllZCh2LCBzKSBQY3JlX29jYW1sX3JlZ2V4cF92YWwodiktPnN0dWRpZWQgPSBz Ci0tCi0tLyogRGF0YSBhc3NvY2lhdGVkIHdpdGggT0NhbWwgdmFsdWVzIG9mIFBDUkUgdGFibGVz ICovCi0tc3RydWN0IHBjcmVfb2NhbWxfdGFibGVzIHsgY2hhcnRhYmxlcyB0YWJsZXM7IH07Ci0t Ci0tI2RlZmluZSBQY3JlX29jYW1sX3RhYmxlc192YWwodikgXAotLSAgKChzdHJ1Y3QgcGNyZV9v Y2FtbF90YWJsZXMgKikgRGF0YV9jdXN0b21fdmFsKHYpKQotLQotLSNkZWZpbmUgZ2V0X3RhYmxl cyh2KSBQY3JlX29jYW1sX3RhYmxlc192YWwodiktPnRhYmxlcwotLSNkZWZpbmUgc2V0X3RhYmxl cyh2LCB0KSBQY3JlX29jYW1sX3RhYmxlc192YWwodiktPnRhYmxlcyA9IHQKLS0KLS0vKiBDb252 ZXJ0cyBzdWJqZWN0IG9mZnNldHMgZnJvbSBDLWludGVnZXJzIHRvIE9DYW1sLUludGVnZXJzLgot LQotLSAgIFRoaXMgaXMgYSBiaXQgdHJpY2t5LCBiZWNhdXNlIHRoZXJlIGFyZSAzMi0gYW5kIDY0 LWJpdCBwbGF0Zm9ybXMgYXJvdW5kCi0tICAgYW5kIE9DYW1sIGNob29zZXMgdGhlIGxhcmdlciBw b3NzaWJpbGl0eSBmb3IgcmVwcmVzZW50aW5nIGludGVnZXJzIHdoZW4KLS0gICBhdmFpbGFibGUg KGFsc28gaW4gYXJyYXlzKSAtIG5vdCBzbyB0aGUgUENSRSEKLS0qLwotLXN0YXRpYyBpbmxpbmUg dm9pZCBjb3B5X292ZWN0b3IoCi0tICBsb25nIHN1Ympfc3RhcnQsIGNvbnN0IGludCAqb3ZlY19z cmMsIG92ZWNfZHN0X3B0ciBvdmVjX2RzdCwgaW50IHN1Ymdyb3VwczIpCi0tewotLSAgaWYgKHN1 Ympfc3RhcnQgPT0gMCkKLS0gICAgd2hpbGUgKHN1Ymdyb3VwczItLSkgewotLSAgICAgICpvdmVj X2RzdCA9IFZhbF9pbnQoKm92ZWNfc3JjKTsKLS0gICAgICAtLW92ZWNfc3JjOyAtLW92ZWNfZHN0 OwotLSAgICB9Ci0tICBlbHNlCi0tICAgIHdoaWxlIChzdWJncm91cHMyLS0pIHsKLS0gICAgICAq b3ZlY19kc3QgPSBWYWxfbG9uZygqb3ZlY19zcmMgKyBzdWJqX3N0YXJ0KTsKLS0gICAgICAtLW92 ZWNfc3JjOyAtLW92ZWNfZHN0OwotLSAgICB9Ci0tfQotLQotLS8qIENhbGxvdXQgaGFuZGxlciAq LwotLXN0YXRpYyBpbnQgcGNyZV9jYWxsb3V0X2hhbmRsZXIocGNyZV9jYWxsb3V0X2Jsb2NrKiBj YikKLS17Ci0tICBzdHJ1Y3QgY29kICpjb2QgPSAoc3RydWN0IGNvZCAqKSBjYi0+Y2FsbG91dF9k YXRhOwotLQotLSAgaWYgKGNvZCAhPSBOVUxMKSB7Ci0tICAgIC8qIENhbGxvdXQgaXMgYXZhaWxh YmxlICovCi0tICAgIHZhbHVlIHZfcmVzOwotLQotLSAgICAvKiBTZXQgdXAgcGFyYW1ldGVyIGFy cmF5ICovCi0tICAgIHZhbHVlIHZfY2FsbG91dF9kYXRhID0gY2FtbF9hbGxvY19zbWFsbCg4LCAw KTsKLS0KLS0gICAgY29uc3QgdmFsdWUgdl9zdWJzdHJpbmdzID0gKmNvZC0+dl9zdWJzdHJpbmdz X3A7Ci0tCi0tICAgIGNvbnN0IGludCBjYXB0dXJlX3RvcCA9IGNiLT5jYXB0dXJlX3RvcDsKLS0g ICAgaW50IHN1Ymdyb3VwczIgPSBjYXB0dXJlX3RvcCA8PCAxOwotLSAgICBjb25zdCBpbnQgc3Vi Z3JvdXBzMl8xID0gc3ViZ3JvdXBzMiAtIDE7Ci0tCi0tICAgIGNvbnN0IGludCAqb3ZlY19zcmMg PSBjYi0+b2Zmc2V0X3ZlY3RvciArIHN1Ymdyb3VwczJfMTsKLS0gICAgb3ZlY19kc3RfcHRyIG92 ZWNfZHN0ID0gJkZpZWxkKEZpZWxkKHZfc3Vic3RyaW5ncywgMSksIDApICsgc3ViZ3JvdXBzMl8x OwotLSAgICBsb25nIHN1Ympfc3RhcnQgPSBjb2QtPnN1Ympfc3RhcnQ7Ci0tCi0tICAgIGNvcHlf b3ZlY3RvcihzdWJqX3N0YXJ0LCBvdmVjX3NyYywgb3ZlY19kc3QsIHN1Ymdyb3VwczIpOwotLQot LSAgICBGaWVsZCh2X2NhbGxvdXRfZGF0YSwgMCkgPSBWYWxfaW50KGNiLT5jYWxsb3V0X251bWJl cik7Ci0tICAgIEZpZWxkKHZfY2FsbG91dF9kYXRhLCAxKSA9IHZfc3Vic3RyaW5nczsKLS0gICAg RmllbGQodl9jYWxsb3V0X2RhdGEsIDIpID0gVmFsX2ludChjYi0+c3RhcnRfbWF0Y2ggKyBzdWJq X3N0YXJ0KTsKLS0gICAgRmllbGQodl9jYWxsb3V0X2RhdGEsIDMpID0gVmFsX2ludChjYi0+Y3Vy cmVudF9wb3NpdGlvbiArIHN1Ympfc3RhcnQpOwotLSAgICBGaWVsZCh2X2NhbGxvdXRfZGF0YSwg NCkgPSBWYWxfaW50KGNhcHR1cmVfdG9wKTsKLS0gICAgRmllbGQodl9jYWxsb3V0X2RhdGEsIDUp ID0gVmFsX2ludChjYi0+Y2FwdHVyZV9sYXN0KTsKLS0gICAgRmllbGQodl9jYWxsb3V0X2RhdGEs IDYpID0gVmFsX2ludChjYi0+cGF0dGVybl9wb3NpdGlvbik7Ci0tICAgIEZpZWxkKHZfY2FsbG91 dF9kYXRhLCA3KSA9IFZhbF9pbnQoY2ItPm5leHRfaXRlbV9sZW5ndGgpOwotLQotLSAgICAvKiBQ ZXJmb3JtIGNhbGxvdXQgKi8KLS0gICAgdl9yZXMgPSBjYW1sX2NhbGxiYWNrX2V4bigqY29kLT52 X2NvZl9wLCB2X2NhbGxvdXRfZGF0YSk7Ci0tCi0tICAgIGlmIChJc19leGNlcHRpb25fcmVzdWx0 KHZfcmVzKSkgewotLSAgICAgIC8qIENhbGxvdXQgcmFpc2VkIGFuIGV4Y2VwdGlvbiAqLwotLSAg ICAgIGNvbnN0IHZhbHVlIHZfZXhuID0gRXh0cmFjdF9leGNlcHRpb24odl9yZXMpOwotLSAgICAg IGlmIChGaWVsZCh2X2V4biwgMCkgPT0gKnBjcmVfZXhjX0JhY2t0cmFjaykgcmV0dXJuIDE7Ci0t ICAgICAgY29kLT52X2V4biA9IHZfZXhuOwotLSAgICAgIHJldHVybiBQQ1JFX0VSUk9SX0NBTExP VVQ7Ci0tICAgIH0KLS0gIH0KLS0KLS0gIHJldHVybiAwOwotLX0KLS0KLS0vKiBGZXRjaHMgdGhl IG5hbWVkIE9DYW1sLXZhbHVlcyArIGNhY2hlcyB0aGVtIGFuZAotLSAgIGNhbGN1bGF0ZXMgKyBj YWNoZXMgdGhlIHZhcmlhbnQgaGFzaCB2YWx1ZXMgKi8KLS1DQU1McHJpbSB2YWx1ZSBwY3JlX29j YW1sX2luaXQodmFsdWUgX191bnVzZWQgdl91bml0KQotLXsKLS0gIHBjcmVfZXhjX0Vycm9yICAg ICA9IGNhbWxfbmFtZWRfdmFsdWUoIlBjcmUuRXJyb3IiKTsKLS0gIHBjcmVfZXhjX0JhY2t0cmFj ayA9IGNhbWxfbmFtZWRfdmFsdWUoIlBjcmUuQmFja3RyYWNrIik7Ci0tCi0tICB2YXJfU3RhcnRf b25seSAgPSBjYW1sX2hhc2hfdmFyaWFudCgiU3RhcnRfb25seSIpOwotLSAgdmFyX0FOQ0hPUkVE ICAgID0gY2FtbF9oYXNoX3ZhcmlhbnQoIkFOQ0hPUkVEIik7Ci0tICB2YXJfQ2hhciAgICAgICAg PSBjYW1sX2hhc2hfdmFyaWFudCgiQ2hhciIpOwotLSAgdmFyX05vdF9zdHVkaWVkID0gY2FtbF9o YXNoX3ZhcmlhbnQoIk5vdF9zdHVkaWVkIik7Ci0tICB2YXJfU3R1ZGllZCAgICAgPSBjYW1sX2hh c2hfdmFyaWFudCgiU3R1ZGllZCIpOwotLSAgdmFyX09wdGltYWwgICAgID0gY2FtbF9oYXNoX3Zh cmlhbnQoIk9wdGltYWwiKTsKLS0KLS0gIHBjcmVfY2FsbG91dCA9ICZwY3JlX2NhbGxvdXRfaGFu ZGxlcjsKLS0KLS0gIHJldHVybiBWYWxfdW5pdDsKLS19Ci0tCi0tLyogRmluYWxpemluZyBkZWFs bG9jYXRpb24gZnVuY3Rpb24gZm9yIGNoYXJ0YWJsZSBzZXRzICovCi0tc3RhdGljIHZvaWQgcGNy ZV9kZWFsbG9jX3RhYmxlcyh2YWx1ZSB2X3RhYmxlcykKLS17IChwY3JlX2ZyZWUpKCh2b2lkICop IGdldF90YWJsZXModl90YWJsZXMpKTsgfQotLQotLS8qIEZpbmFsaXppbmcgZGVhbGxvY2F0aW9u IGZ1bmN0aW9uIGZvciBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb25zICovCi0tc3RhdGljIHZv aWQgcGNyZV9kZWFsbG9jX3JlZ2V4cCh2YWx1ZSB2X3JleCkKLS17Ci0tICB2b2lkICpleHRyYSA9 IGdldF9leHRyYSh2X3JleCk7Ci0tICBpZiAoZXh0cmEgIT0gTlVMTCkKLS0jaWZkZWYgUENSRV9T VFVEWV9KSVRfQ09NUElMRQotLSAgICBwY3JlX2ZyZWVfc3R1ZHkoZXh0cmEpOwotLSNlbHNlCi0t ICAgIHBjcmVfZnJlZShleHRyYSk7Ci0tI2VuZGlmCi0tICAocGNyZV9mcmVlKShnZXRfcmV4KHZf cmV4KSk7Ci0tfQotLQotLQotLS8qIFJhaXNpbmcgZXhjZXB0aW9ucyAqLwotLQotLUBDQU1Mbm9y ZXR1cm5fc3RhcnRACi0tc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX3BjcmVfZXJyb3IodmFsdWUg dl9hcmcpCi0tQENBTUxub3JldHVybl9lbmRAOwotLQotLUBDQU1Mbm9yZXR1cm5fc3RhcnRACi0t c3RhdGljIGlubGluZSB2b2lkIHJhaXNlX3BhcnRpYWwoKQotLUBDQU1Mbm9yZXR1cm5fZW5kQDsK LS0KLS1AQ0FNTG5vcmV0dXJuX3N0YXJ0QAotLXN0YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9iYWRf cGFydGlhbCgpCi0tQENBTUxub3JldHVybl9lbmRAOwotLQotLUBDQU1Mbm9yZXR1cm5fc3RhcnRA Ci0tc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX2JhZF91dGY4KCkKLS1AQ0FNTG5vcmV0dXJuX2Vu ZEA7Ci0tCi0tQENBTUxub3JldHVybl9zdGFydEAKLS1zdGF0aWMgaW5saW5lIHZvaWQgcmFpc2Vf YmFkX3V0Zjhfb2Zmc2V0KCkKLS1AQ0FNTG5vcmV0dXJuX2VuZEA7Ci0tCi0tQENBTUxub3JldHVy bl9zdGFydEAKLS1zdGF0aWMgaW5saW5lIHZvaWQgcmFpc2VfbWF0Y2hfbGltaXQoKQotLUBDQU1M bm9yZXR1cm5fZW5kQDsKLS0KLS1AQ0FNTG5vcmV0dXJuX3N0YXJ0QAotLXN0YXRpYyBpbmxpbmUg dm9pZCByYWlzZV9yZWN1cnNpb25fbGltaXQoKQotLUBDQU1Mbm9yZXR1cm5fZW5kQDsKLS0KLS1A Q0FNTG5vcmV0dXJuX3N0YXJ0QAotLXN0YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9iYWRfcGF0dGVy bihjb25zdCBjaGFyICptc2csIGludCBwb3MpCi0tQENBTUxub3JldHVybl9lbmRAOwotLQotLUBD QU1Mbm9yZXR1cm5fc3RhcnRACi0tc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX2ludGVybmFsX2Vy cm9yKGNoYXIgKm1zZykKLS1AQ0FNTG5vcmV0dXJuX2VuZEA7Ci0tCi0tc3RhdGljIGlubGluZSB2 b2lkIHJhaXNlX3BjcmVfZXJyb3IodmFsdWUgdl9hcmcpCi0teyBjYW1sX3JhaXNlX3dpdGhfYXJn KCpwY3JlX2V4Y19FcnJvciwgdl9hcmcpOyB9Ci0tCi0tc3RhdGljIGlubGluZSB2b2lkIHJhaXNl X3BhcnRpYWwoKSB7IHJhaXNlX3BjcmVfZXJyb3IoVmFsX2ludCgwKSk7IH0KLS1zdGF0aWMgaW5s aW5lIHZvaWQgcmFpc2VfYmFkX3BhcnRpYWwoKSB7IHJhaXNlX3BjcmVfZXJyb3IoVmFsX2ludCgx KSk7IH0KLS1zdGF0aWMgaW5saW5lIHZvaWQgcmFpc2VfYmFkX3V0ZjgoKSB7IHJhaXNlX3BjcmVf ZXJyb3IoVmFsX2ludCgyKSk7IH0KLS1zdGF0aWMgaW5saW5lIHZvaWQgcmFpc2VfYmFkX3V0Zjhf b2Zmc2V0KCkgeyByYWlzZV9wY3JlX2Vycm9yKFZhbF9pbnQoMykpOyB9Ci0tc3RhdGljIGlubGlu ZSB2b2lkIHJhaXNlX21hdGNoX2xpbWl0KCkgeyByYWlzZV9wY3JlX2Vycm9yKFZhbF9pbnQoNCkp OyB9Ci0tc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX3JlY3Vyc2lvbl9saW1pdCgpIHsgcmFpc2Vf cGNyZV9lcnJvcihWYWxfaW50KDUpKTsgfQotLQotLXN0YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9i YWRfcGF0dGVybihjb25zdCBjaGFyICptc2csIGludCBwb3MpCi0tewotLSAgQ0FNTHBhcmFtMCgp OwotLSAgQ0FNTGxvY2FsMSh2X21zZyk7Ci0tICB2YWx1ZSB2X2FyZzsKLS0gIHZfbXNnID0gY2Ft bF9jb3B5X3N0cmluZyhtc2cpOwotLSAgdl9hcmcgPSBjYW1sX2FsbG9jX3NtYWxsKDIsIDApOwot LSAgRmllbGQodl9hcmcsIDApID0gdl9tc2c7Ci0tICBGaWVsZCh2X2FyZywgMSkgPSBWYWxfaW50 KHBvcyk7Ci0tICByYWlzZV9wY3JlX2Vycm9yKHZfYXJnKTsKLS0gIENBTUxub3JldHVybjsKLS19 Ci0tCi0tc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX2ludGVybmFsX2Vycm9yKGNoYXIgKm1zZykK LS17Ci0tICBDQU1McGFyYW0wKCk7Ci0tICBDQU1MbG9jYWwxKHZfbXNnKTsKLS0gIHZhbHVlIHZf YXJnOwotLSAgdl9tc2cgPSBjYW1sX2NvcHlfc3RyaW5nKG1zZyk7Ci0tICB2X2FyZyA9IGNhbWxf YWxsb2Nfc21hbGwoMSwgMSk7Ci0tICBGaWVsZCh2X2FyZywgMCkgPSB2X21zZzsKLS0gIHJhaXNl X3BjcmVfZXJyb3Iodl9hcmcpOwotLSAgQ0FNTG5vcmV0dXJuOwotLX0KLS0KLS0vKiBQQ1JFIHBh dHRlcm4gY29tcGlsYXRpb24gKi8KLS0KLS1zdGF0aWMgc3RydWN0IGN1c3RvbV9vcGVyYXRpb25z IHJlZ2V4cF9vcHMgPSB7Ci0tICAicGNyZV9vY2FtbF9yZWdleHAiLAotLSAgcGNyZV9kZWFsbG9j X3JlZ2V4cCwKLS0gIGN1c3RvbV9jb21wYXJlX2RlZmF1bHQsCi0tICBjdXN0b21faGFzaF9kZWZh dWx0LAotLSAgY3VzdG9tX3NlcmlhbGl6ZV9kZWZhdWx0LAotLSAgY3VzdG9tX2Rlc2VyaWFsaXpl X2RlZmF1bHQsCi0tICBjdXN0b21fY29tcGFyZV9leHRfZGVmYXVsdAotLX07Ci0tCi0tLyogTWFr ZXMgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIGZyb20gY29tcGlsYXRpb24gb3B0aW9ucywg YW4gb3B0aW9uYWwKLS0gICB2YWx1ZSBvZiBjaGFydGFibGVzIGFuZCB0aGUgcGF0dGVybiBzdHJp bmcgKi8KLS0KLS1DQU1McHJpbSB2YWx1ZSBwY3JlX2NvbXBpbGVfc3R1YihAaW50bmF0QCB2X29w dCwgdmFsdWUgdl90YWJsZXMsIHZhbHVlIHZfcGF0KQotLXsKLS0gIHZhbHVlIHZfcmV4OyAgLyog RmluYWwgcmVzdWx0IC0+IHZhbHVlIG9mIHR5cGUgW3JlZ2V4cF0gKi8KLS0gIGNvbnN0IGNoYXIg KmVycm9yID0gTlVMTDsgIC8qIHBvaW50ZXIgdG8gcG9zc2libGUgZXJyb3IgbWVzc2FnZSAqLwot LSAgaW50IGVycm9yX29mcyA9IDA7ICAvKiBvZmZzZXQgaW4gdGhlIHBhdHRlcm4gYXQgd2hpY2gg ZXJyb3Igb2NjdXJyZWQgKi8KLS0KLS0gIC8qIElmIHZfdGFibGVzID0gW05vbmVdLCB0aGVuIHBv aW50ZXIgdG8gdGFibGVzIGlzIE5VTEwsIG90aGVyd2lzZQotLSAgICAgc2V0IGl0IHRvIHRoZSBh cHByb3ByaWF0ZSB2YWx1ZSAqLwotLSAgY2hhcnRhYmxlcyB0YWJsZXMgPQotLSAgICAodl90YWJs ZXMgPT0gTm9uZSkgPyBOVUxMIDogZ2V0X3RhYmxlcyhGaWVsZCh2X3RhYmxlcywgMCkpOwotLQot LSAgLyogQ29tcGlsZXMgdGhlIHBhdHRlcm4gKi8KLS0gIHBjcmUgKnJlZ2V4cCA9IHBjcmVfY29t cGlsZShTdHJpbmdfdmFsKHZfcGF0KSwgQEludF92YWxAKHZfb3B0KSwgJmVycm9yLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcl9vZnMsIHRhYmxlcyk7Ci0tCi0tICAvKiBS YWlzZXMgYXBwcm9wcmlhdGUgZXhjZXB0aW9uIHdpdGggW0JhZFBhdHRlcm5dIGlmIHRoZSBwYXR0 ZXJuCi0tICAgICBjb3VsZCBub3QgYmUgY29tcGlsZWQgKi8KLS0gIGlmIChyZWdleHAgPT0gTlVM TCkgcmFpc2VfYmFkX3BhdHRlcm4oZXJyb3IsIGVycm9yX29mcyk7Ci0tCi0tICAvKiBHQyB3aWxs IGRvIGEgZnVsbCBjeWNsZSBldmVyeSAxXzAwMF8wMDAgcmVnZXhwIGFsbG9jYXRpb25zIChhIHR5 cGljYWwKLS0gICAgIHJlZ2V4cCBwcm9iYWJseSBjb25zdW1lcyBsZXNzIHRoYW4gMTAwIGJ5dGVz IC0+IG1heGltdW0gb2YgMTAwXzAwMF8wMDAKLS0gICAgIGJ5dGVzIHVucmVjbGFpbWVkIHJlZ2V4 cHMpICovCi0tICB2X3JleCA9Ci0tICAgIGNhbWxfYWxsb2NfY3VzdG9tKCZyZWdleHBfb3BzLAot LSAgICAgICAgc2l6ZW9mKHN0cnVjdCBwY3JlX29jYW1sX3JlZ2V4cCksIDEsIDEwMDAwMDApOwot LQotLSAgc2V0X3JleCh2X3JleCwgcmVnZXhwKTsKLS0gIHNldF9leHRyYSh2X3JleCwgTlVMTCk7 Ci0tICBzZXRfc3R1ZGllZCh2X3JleCwgMCk7Ci0tCi0tICByZXR1cm4gdl9yZXg7Ci0tfQotLQot LUNBTUxwcmltIHZhbHVlIHBjcmVfY29tcGlsZV9zdHViX2JjKHZhbHVlIHZfb3B0LCB2YWx1ZSB2 X3RhYmxlcywgdmFsdWUgdl9wYXQpCi0tewotLSAgcmV0dXJuIHBjcmVfY29tcGlsZV9zdHViKEBJ bnRfdmFsX3ZhbEAodl9vcHQpLCB2X3RhYmxlcywgdl9wYXQpOwotLX0KLS0KLS0KLS0vKiBTdHVk aWVzIGEgcmVnZXhwICovCi0tQ0FNTHByaW0gdmFsdWUgcGNyZV9zdHVkeV9zdHViKHZhbHVlIHZf cmV4KQotLXsKLS0gIC8qIElmIGl0IGhhcyBub3QgeWV0IGJlZW4gc3R1ZGllZCAqLwotLSAgaWYg KCEgZ2V0X3N0dWRpZWQodl9yZXgpKSB7Ci0tICAgIGNvbnN0IGNoYXIgKmVycm9yID0gTlVMTDsK LS0gICAgcGNyZV9leHRyYSAqZXh0cmEgPSBwY3JlX3N0dWR5KGdldF9yZXgodl9yZXgpLCAwLCAm ZXJyb3IpOwotLSAgICBpZiAoZXJyb3IgIT0gTlVMTCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KChj aGFyICopIGVycm9yKTsKLS0gICAgc2V0X2V4dHJhKHZfcmV4LCBleHRyYSk7Ci0tICAgIHNldF9z dHVkaWVkKHZfcmV4LCAxKTsKLS0gIH0KLS0gIHJldHVybiB2X3JleDsKLS19Ci0tCi0tCi0tLyog R2V0cyB0aGUgbWF0Y2ggbGltaXQgcmVjdXJzaW9uIG9mIGEgcmVndWxhciBleHByZXNzaW9uIGlm IGl0IGV4aXN0cyAqLwotLUNBTUxwcmltIHZhbHVlIHBjcmVfZ2V0X21hdGNoX2xpbWl0X3JlY3Vy c2lvbl9zdHViKHZhbHVlIHZfcmV4KQotLXsKLS0gIHBjcmVfZXh0cmEgKmV4dHJhID0gZ2V0X2V4 dHJhKHZfcmV4KTsKLS0gIGlmIChleHRyYSA9PSBOVUxMKSByZXR1cm4gTm9uZTsKLS0gIGlmIChl eHRyYS0+ZmxhZ3MgJiBQQ1JFX0VYVFJBX01BVENIX0xJTUlUX1JFQ1VSU0lPTikgewotLSAgICB2 YWx1ZSB2X2xpbSA9IFZhbF9pbnQoZXh0cmEtPm1hdGNoX2xpbWl0X3JlY3Vyc2lvbik7Ci0tICAg IHZhbHVlIHZfcmVzID0gY2FtbF9hbGxvY19zbWFsbCgxLCAwKTsKLS0gICAgRmllbGQodl9yZXMs IDApID0gdl9saW07Ci0tICAgIHJldHVybiB2X3JlczsKLS0gIH0KLS0gIHJldHVybiBOb25lOwot LX0KLS0KLS0vKiBHZXRzIHRoZSBtYXRjaCBsaW1pdCBvZiBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBp ZiBpdCBleGlzdHMgKi8KLS1DQU1McHJpbSB2YWx1ZSBwY3JlX2dldF9tYXRjaF9saW1pdF9zdHVi KHZhbHVlIHZfcmV4KQotLXsKLS0gIHBjcmVfZXh0cmEgKmV4dHJhID0gZ2V0X2V4dHJhKHZfcmV4 KTsKLS0gIGlmIChleHRyYSA9PSBOVUxMKSByZXR1cm4gTm9uZTsKLS0gIGlmIChleHRyYS0+Zmxh Z3MgJiBQQ1JFX0VYVFJBX01BVENIX0xJTUlUKSB7Ci0tICAgIHZhbHVlIHZfbGltID0gVmFsX2lu dChleHRyYS0+bWF0Y2hfbGltaXQpOwotLSAgICB2YWx1ZSB2X3JlcyA9IGNhbWxfYWxsb2Nfc21h bGwoMSwgMCk7Ci0tICAgIEZpZWxkKHZfcmVzLCAwKSA9IHZfbGltOwotLSAgICByZXR1cm4gdl9y ZXM7Ci0tICB9Ci0tICByZXR1cm4gTm9uZTsKLS19Ci0tCi0tCi0tLyogU2V0cyBhIG1hdGNoIGxp bWl0IGZvciBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbXBlcmF0aXZlbHkgKi8KLS0KLS1DQU1McHJp bSB2YWx1ZSBwY3JlX3NldF9pbXBfbWF0Y2hfbGltaXRfc3R1Yih2YWx1ZSB2X3JleCwgQGludG5h dEAgdl9saW0pCi0tewotLSAgcGNyZV9leHRyYSAqZXh0cmEgPSBnZXRfZXh0cmEodl9yZXgpOwot LSAgaWYgKGV4dHJhID09IE5VTEwpIHsKLS0gICAgZXh0cmEgPSBwY3JlX21hbGxvYyhzaXplb2Yo cGNyZV9leHRyYSkpOwotLSAgICBleHRyYS0+ZmxhZ3MgPSBQQ1JFX0VYVFJBX01BVENIX0xJTUlU OwotLSAgICBzZXRfZXh0cmEodl9yZXgsIGV4dHJhKTsKLS0gIH0gZWxzZSB7Ci0tICAgIHVuc2ln bmVkIGxvbmcgKmZsYWdzX3B0ciA9ICZleHRyYS0+ZmxhZ3M7Ci0tICAgICpmbGFnc19wdHIgPSBQ Q1JFX0VYVFJBX01BVENIX0xJTUlUIHwgKmZsYWdzX3B0cjsKLS0gIH0KLS0gIGV4dHJhLT5tYXRj aF9saW1pdCA9IEBJbnRfdmFsQCh2X2xpbSk7Ci0tICByZXR1cm4gdl9yZXg7Ci0tfQotLQotLUNB TUxwcmltIHZhbHVlIHBjcmVfc2V0X2ltcF9tYXRjaF9saW1pdF9zdHViX2JjKHZhbHVlIHZfcmV4 LCB2YWx1ZSB2X2xpbSkKLS17Ci0tICByZXR1cm4gcGNyZV9zZXRfaW1wX21hdGNoX2xpbWl0X3N0 dWIodl9yZXgsIEBJbnRfdmFsX3ZhbEAodl9saW0pKTsKLS19Ci0tCi0tCi0tLyogU2V0cyBhIG1h dGNoIGxpbWl0IHJlY3Vyc2lvbiBmb3IgYSByZWd1bGFyIGV4cHJlc3Npb24gaW1wZXJhdGl2ZWx5 ICovCi0tCi0tQ0FNTHByaW0gdmFsdWUgcGNyZV9zZXRfaW1wX21hdGNoX2xpbWl0X3JlY3Vyc2lv bl9zdHViKAotLSAgICB2YWx1ZSB2X3JleCwgQGludG5hdEAgdl9saW0pCi0tewotLSAgcGNyZV9l eHRyYSAqZXh0cmEgPSBnZXRfZXh0cmEodl9yZXgpOwotLSAgaWYgKGV4dHJhID09IE5VTEwpIHsK LS0gICAgZXh0cmEgPSBwY3JlX21hbGxvYyhzaXplb2YocGNyZV9leHRyYSkpOwotLSAgICBleHRy YS0+ZmxhZ3MgPSBQQ1JFX0VYVFJBX01BVENIX0xJTUlUX1JFQ1VSU0lPTjsKLS0gICAgc2V0X2V4 dHJhKHZfcmV4LCBleHRyYSk7Ci0tICB9IGVsc2UgewotLSAgICB1bnNpZ25lZCBsb25nICpmbGFn c19wdHIgPSAmZXh0cmEtPmZsYWdzOwotLSAgICAqZmxhZ3NfcHRyID0gUENSRV9FWFRSQV9NQVRD SF9MSU1JVF9SRUNVUlNJT04gfCAqZmxhZ3NfcHRyOwotLSAgfQotLSAgZXh0cmEtPm1hdGNoX2xp bWl0X3JlY3Vyc2lvbiA9IEBJbnRfdmFsQCh2X2xpbSk7Ci0tICByZXR1cm4gdl9yZXg7Ci0tfQot LQotLUNBTUxwcmltIHZhbHVlIHBjcmVfc2V0X2ltcF9tYXRjaF9saW1pdF9yZWN1cnNpb25fc3R1 Yl9iYygKLS0gICAgdmFsdWUgdl9yZXgsIHZhbHVlIHZfbGltKQotLXsKLS0gIHJldHVybiBwY3Jl X3NldF9pbXBfbWF0Y2hfbGltaXRfcmVjdXJzaW9uX3N0dWIodl9yZXgsIEBJbnRfdmFsX3ZhbEAo dl9saW0pKTsKLS19Ci0tCi0tCi0tLyogUGVyZm9ybXMgdGhlIGNhbGwgdG8gdGhlIHBjcmVfZnVs bGluZm8gZnVuY3Rpb24gKi8KLS1zdGF0aWMgaW5saW5lIGludCBwY3JlX2Z1bGxpbmZvX3N0dWIo dmFsdWUgdl9yZXgsIGludCB3aGF0LCB2b2lkICp3aGVyZSkKLS17Ci0tICByZXR1cm4gcGNyZV9m dWxsaW5mbyhnZXRfcmV4KHZfcmV4KSwgZ2V0X2V4dHJhKHZfcmV4KSwgd2hhdCwgd2hlcmUpOwot LX0KLS0KLS0vKiBTb21lIHN0dWJzIGZvciBpbmZvLWZ1bmN0aW9ucyAqLwotLQotLS8qIEdlbmVy aWMgbWFjcm8gZm9yIGdldHRpbmcgaW50ZWdlciByZXN1bHRzIGZyb20gcGNyZV9mdWxsaW5mbyAq LwotLSNkZWZpbmUgbWFrZV9pbnRuYXRfaW5mbyh0cCwgbmFtZSwgb3B0aW9uKSBcCi0tICBDQU1M cHJpbSBAaW50bmF0QCBwY3JlXyMjbmFtZSMjX3N0dWIodmFsdWUgdl9yZXgpIFwKLS0gIHsgXAot LSAgICB0cCBvcHRpb25zOyBcCi0tICAgIGNvbnN0IGludCByZXQgPSBwY3JlX2Z1bGxpbmZvX3N0 dWIodl9yZXgsIFBDUkVfSU5GT18jI29wdGlvbiwgJm9wdGlvbnMpOyBcCi0tICAgIGlmIChyZXQg IT0gMCkgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBjcmVfIyNuYW1lIyNfc3R1YiIpOyBcCi0tICAg IHJldHVybiBAVmFsX2ludEAob3B0aW9ucyk7IFwKLS0gIH0gXAotLSAgXAotLSAgQ0FNTHByaW0g dmFsdWUgcGNyZV8jI25hbWUjI19zdHViX2JjKHZhbHVlIHZfcmV4KSBcCi0tICB7IHJldHVybiBW YWxfaW50KHBjcmVfIyNuYW1lIyNfc3R1Yih2X3JleCkpOyB9Ci0tCi0tbWFrZV9pbnRuYXRfaW5m byh1bnNpZ25lZCBsb25nLCBvcHRpb25zLCBPUFRJT05TKQotLW1ha2VfaW50bmF0X2luZm8oc2l6 ZV90LCBzaXplLCBTSVpFKQotLW1ha2VfaW50bmF0X2luZm8oc2l6ZV90LCBzdHVkeXNpemUsIFNU VURZU0laRSkKLS1tYWtlX2ludG5hdF9pbmZvKGludCwgY2FwdHVyZWNvdW50LCBDQVBUVVJFQ09V TlQpCi0tbWFrZV9pbnRuYXRfaW5mbyhpbnQsIGJhY2tyZWZtYXgsIEJBQ0tSRUZNQVgpCi0tbWFr ZV9pbnRuYXRfaW5mbyhpbnQsIG5hbWVjb3VudCwgTkFNRUNPVU5UKQotLW1ha2VfaW50bmF0X2lu Zm8oaW50LCBuYW1lZW50cnlzaXplLCBOQU1FRU5UUllTSVpFKQotLQotLUNBTUxwcmltIHZhbHVl IHBjcmVfZmlyc3RieXRlX3N0dWIodmFsdWUgdl9yZXgpCi0tewotLSAgaW50IGZpcnN0Ynl0ZTsK LS0gIGNvbnN0IGludCByZXQgPSBwY3JlX2Z1bGxpbmZvX3N0dWIodl9yZXgsIFBDUkVfSU5GT19G SVJTVEJZVEUsICZmaXJzdGJ5dGUpOwotLQotLSAgaWYgKHJldCAhPSAwKSByYWlzZV9pbnRlcm5h bF9lcnJvcigicGNyZV9maXJzdGJ5dGVfc3R1YiIpOwotLQotLSAgc3dpdGNoIChmaXJzdGJ5dGUp IHsKLS0gICAgY2FzZSAtMSA6IHJldHVybiB2YXJfU3RhcnRfb25seTsgYnJlYWs7ICAvKiBbYFN0 YXJ0X29ubHldICovCi0tICAgIGNhc2UgLTIgOiByZXR1cm4gdmFyX0FOQ0hPUkVEOyBicmVhazsg ICAgLyogW2BBTkNIT1JFRF0gKi8KLS0gICAgZGVmYXVsdCA6Ci0tICAgICAgaWYgKGZpcnN0Ynl0 ZSA8IDAgKSAgLyogU2hvdWxkIG5vdCBoYXBwZW4gKi8KLS0gICAgICAgIHJhaXNlX2ludGVybmFs X2Vycm9yKCJwY3JlX2ZpcnN0Ynl0ZV9zdHViIik7Ci0tICAgICAgZWxzZSB7Ci0tICAgICAgICB2 YWx1ZSB2X2ZpcnN0Ynl0ZTsKLS0gICAgICAgIC8qIEFsbG9jYXRlcyB0aGUgbm9uLWNvbnN0YW50 IGNvbnN0cnVjdG9yIFtgQ2hhciBvZiBjaGFyXSBhbmQgZmlsbHMKLS0gICAgICAgICAgIGluIHRo ZSBhcHByb3ByaWF0ZSB2YWx1ZSAqLwotLSAgICAgICAgdl9maXJzdGJ5dGUgPSBjYW1sX2FsbG9j X3NtYWxsKDIsIDApOwotLSAgICAgICAgRmllbGQodl9maXJzdGJ5dGUsIDApID0gdmFyX0NoYXI7 Ci0tICAgICAgICBGaWVsZCh2X2ZpcnN0Ynl0ZSwgMSkgPSBWYWxfaW50KGZpcnN0Ynl0ZSk7Ci0t ICAgICAgICByZXR1cm4gdl9maXJzdGJ5dGU7Ci0tICAgICAgfQotLSAgfQotLX0KLS0KLS1DQU1M cHJpbSB2YWx1ZSBwY3JlX2ZpcnN0dGFibGVfc3R1Yih2YWx1ZSB2X3JleCkKLS17Ci0tICBjb25z dCB1bnNpZ25lZCBjaGFyICpmdGFibGU7Ci0tCi0tICBpbnQgcmV0ID0KLS0gICAgcGNyZV9mdWxs aW5mb19zdHViKHZfcmV4LCBQQ1JFX0lORk9fRklSU1RUQUJMRSwgKHZvaWQgKikgJmZ0YWJsZSk7 Ci0tCi0tICBpZiAocmV0ICE9IDApIHJhaXNlX2ludGVybmFsX2Vycm9yKCJwY3JlX2ZpcnN0dGFi bGVfc3R1YiIpOwotLQotLSAgaWYgKGZ0YWJsZSA9PSBOVUxMKSByZXR1cm4gTm9uZTsKLS0gIGVs c2UgewotLSAgICB2YWx1ZSB2X3Jlcywgdl9yZXNfc3RyOwotLSAgICBjaGFyICpwdHI7Ci0tICAg IGludCBpOwotLQotLSAgICBCZWdpbl9yb290czEodl9yZXgpOwotLSAgICAgIHZfcmVzX3N0ciA9 IGNhbWxfYWxsb2Nfc3RyaW5nKDMyKTsKLS0gICAgRW5kX3Jvb3RzKCk7Ci0tCi0tICAgIHB0ciA9 IFN0cmluZ192YWwodl9yZXNfc3RyKTsKLS0gICAgZm9yIChpID0gMDsgaSA8PSAzMTsgKytpKSB7 ICpwdHIgPSAqZnRhYmxlOyArK3B0cjsgKytmdGFibGU7IH0KLS0KLS0gICAgQmVnaW5fcm9vdHMx KHZfcmVzX3N0cik7Ci0tICAgICAgLyogQWxsb2NhdGVzIFtTb21lIHN0cmluZ10gZnJvbSBmaXJz dHRhYmxlICovCi0tICAgICAgdl9yZXMgPSBjYW1sX2FsbG9jX3NtYWxsKDEsIDApOwotLSAgICBF bmRfcm9vdHMoKTsKLS0KLS0gICAgRmllbGQodl9yZXMsIDApID0gdl9yZXNfc3RyOwotLQotLSAg ICByZXR1cm4gdl9yZXM7Ci0tICB9Ci0tfQotLQotLUNBTUxwcmltIHZhbHVlIHBjcmVfbGFzdGxp dGVyYWxfc3R1Yih2YWx1ZSB2X3JleCkKLS17Ci0tICBpbnQgbGFzdGxpdGVyYWw7Ci0tICBjb25z dCBpbnQgcmV0ID0gcGNyZV9mdWxsaW5mb19zdHViKHZfcmV4LCBQQ1JFX0lORk9fTEFTVExJVEVS QUwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsYXN0bGl0ZXJh bCk7Ci0tCi0tICBpZiAocmV0ICE9IDApIHJhaXNlX2ludGVybmFsX2Vycm9yKCJwY3JlX2xhc3Rs aXRlcmFsX3N0dWIiKTsKLS0KLS0gIGlmIChsYXN0bGl0ZXJhbCA9PSAtMSkgcmV0dXJuIE5vbmU7 Ci0tICBpZiAobGFzdGxpdGVyYWwgPCAwKSByYWlzZV9pbnRlcm5hbF9lcnJvcigicGNyZV9sYXN0 bGl0ZXJhbF9zdHViIik7Ci0tICBlbHNlIHsKLS0gICAgLyogQWxsb2NhdGVzIFtTb21lIGNoYXJd ICovCi0tICAgIHZhbHVlIHZfcmVzID0gY2FtbF9hbGxvY19zbWFsbCgxLCAwKTsKLS0gICAgRmll bGQodl9yZXMsIDApID0gVmFsX2ludChsYXN0bGl0ZXJhbCk7Ci0tICAgIHJldHVybiB2X3JlczsK LS0gIH0KLS19Ci0tCi0tQ0FNTHByaW0gdmFsdWUgcGNyZV9zdHVkeV9zdGF0X3N0dWIodmFsdWUg dl9yZXgpCi0tewotLSAgLyogR2VuZXJhdGVzIHRoZSBhcHByb3ByaWF0ZSBjb25zdGFudCBjb25z dHJ1Y3RvciBbYE9wdGltYWxdIG9yCi0tICAgICBbYFN0dWRpZWRdIGlmIHJlZ2V4cCBoYXMgYWxy ZWFkeSBiZWVuIHN0dWRpZWQgKi8KLS0gIGlmIChnZXRfc3R1ZGllZCh2X3JleCkpCi0tICAgIHJl dHVybiAoZ2V0X2V4dHJhKHZfcmV4KSA9PSBOVUxMKSA/IHZhcl9PcHRpbWFsIDogdmFyX1N0dWRp ZWQ7Ci0tCi0tICByZXR1cm4gdmFyX05vdF9zdHVkaWVkOyAgLyogb3RoZXJ3aXNlIFtgTm90X3N0 dWRpZWRdICovCi0tfQotLQotLUBDQU1Mbm9yZXR1cm5fc3RhcnRACi0tc3RhdGljIGlubGluZSB2 b2lkIGhhbmRsZV9leGVjX2Vycm9yKGNoYXIgKmxvYywgY29uc3QgaW50IHJldCkKLS1AQ0FNTG5v cmV0dXJuX2VuZEA7Ci0tCi0tc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZV9leGVjX2Vycm9yKGNo YXIgKmxvYywgY29uc3QgaW50IHJldCkKLS17Ci0tICBzd2l0Y2ggKHJldCkgewotLSAgICAvKiBE ZWRpY2F0ZWQgZXhjZXB0aW9ucyAqLwotLSAgICBjYXNlIFBDUkVfRVJST1JfTk9NQVRDSCA6IGNh bWxfcmFpc2Vfbm90X2ZvdW5kKCk7Ci0tICAgIGNhc2UgUENSRV9FUlJPUl9QQVJUSUFMIDogcmFp c2VfcGFydGlhbCgpOwotLSAgICBjYXNlIFBDUkVfRVJST1JfTUFUQ0hMSU1JVCA6IHJhaXNlX21h dGNoX2xpbWl0KCk7Ci0tICAgIGNhc2UgUENSRV9FUlJPUl9CQURQQVJUSUFMIDogcmFpc2VfYmFk X3BhcnRpYWwoKTsKLS0gICAgY2FzZSBQQ1JFX0VSUk9SX0JBRFVURjggOiByYWlzZV9iYWRfdXRm OCgpOwotLSAgICBjYXNlIFBDUkVfRVJST1JfQkFEVVRGOF9PRkZTRVQgOiByYWlzZV9iYWRfdXRm OF9vZmZzZXQoKTsKLS0gICAgY2FzZSBQQ1JFX0VSUk9SX1JFQ1VSU0lPTkxJTUlUIDogcmFpc2Vf cmVjdXJzaW9uX2xpbWl0KCk7Ci0tICAgIC8qIFVua25vd24gZXJyb3IgKi8KLS0gICAgZGVmYXVs dCA6IHsKLS0gICAgICBjaGFyIGVycl9idWZbMTAwXTsKLS0gICAgICBzbnByaW50ZihlcnJfYnVm LCAxMDAsICIlczogdW5oYW5kbGVkIFBDUkUgZXJyb3IgY29kZTogJWQiLCBsb2MsIHJldCk7Ci0t ICAgICAgcmFpc2VfaW50ZXJuYWxfZXJyb3IoZXJyX2J1Zik7Ci0tICAgIH0KLS0gIH0KLS19Ci0t Ci0tc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZV9wY3JlX2V4ZWNfcmVzdWx0KAotLSAgaW50ICpv dmVjLCB2YWx1ZSB2X292ZWMsIGxvbmcgb3ZlY19sZW4sIGxvbmcgc3Vial9zdGFydCwgaW50IHJl dCkKLS17Ci0tICBvdmVjX2RzdF9wdHIgb2NhbWxfb3ZlYyA9IChvdmVjX2RzdF9wdHIpICZGaWVs ZCh2X292ZWMsIDApOwotLSAgY29uc3QgaW50IHN1Ymdyb3VwczIgPSByZXQgKiAyOwotLSAgY29u c3QgaW50IHN1Ymdyb3VwczJfMSA9IHN1Ymdyb3VwczIgLSAxOwotLSAgY29uc3QgaW50ICpvdmVj X3NyYyA9IG92ZWMgKyBzdWJncm91cHMyXzE7Ci0tICBvdmVjX2RzdF9wdHIgb3ZlY19jbGVhcl9z dG9wID0gb2NhbWxfb3ZlYyArIChvdmVjX2xlbiAqIDIpIC8gMzsKLS0gIG92ZWNfZHN0X3B0ciBv dmVjX2RzdCA9IG9jYW1sX292ZWMgKyBzdWJncm91cHMyXzE7Ci0tICBjb3B5X292ZWN0b3Ioc3Vi al9zdGFydCwgb3ZlY19zcmMsIG92ZWNfZHN0LCBzdWJncm91cHMyKTsKLS0gIHdoaWxlICgrK292 ZWNfZHN0IDwgb3ZlY19jbGVhcl9zdG9wKSAqb3ZlY19kc3QgPSAtMTsKLS19Ci0tCi0tCi0tLyog RXhlY3V0ZXMgYSBwYXR0ZXJuIG1hdGNoIHdpdGggcnVudGltZSBvcHRpb25zLCBhIHJlZ3VsYXIg ZXhwcmVzc2lvbiwgYQotLSAgIG1hdGNoaW5nIHBvc2l0aW9uLCB0aGUgc3RhcnQgb2YgdGhlIHRo ZSBzdWJqZWN0IHN0cmluZywgYSBzdWJqZWN0IHN0cmluZywKLS0gICBhIG51bWJlciBvZiBzdWJn cm91cCBvZmZzZXRzLCBhbiBvZmZzZXQgdmVjdG9yIGFuZCBhbiBvcHRpb25hbCBjYWxsb3V0Ci0t ICAgZnVuY3Rpb24gKi8KLS0KLS1DQU1McHJpbSB2YWx1ZSBwY3JlX2V4ZWNfc3R1YigKLS0gICAg QGludG5hdEAgdl9vcHQsIHZhbHVlIHZfcmV4LCBAaW50bmF0QCB2X3BvcywgQGludG5hdEAgdl9z dWJqX3N0YXJ0LCB2YWx1ZSB2X3N1YmosCi0tICAgIHZhbHVlIHZfb3ZlYywgdmFsdWUgdl9tYXli ZV9jb2YpCi0tewotLSAgaW50IHJldDsKLS0gIGxvbmcKLS0gICAgcG9zID0gQEludF92YWxAKHZf cG9zKSwKLS0gICAgbGVuID0gY2FtbF9zdHJpbmdfbGVuZ3RoKHZfc3ViaiksCi0tICAgIHN1Ympf c3RhcnQgPSBASW50X3ZhbEAodl9zdWJqX3N0YXJ0KTsKLS0gIGxvbmcgb3ZlY19sZW4gPSBXb3Np emVfdmFsKHZfb3ZlYyk7Ci0tCi0tICBpZiAocG9zID4gbGVuIHx8IHBvcyA8IHN1Ympfc3RhcnQp Ci0tICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCgiUGNyZS5wY3JlX2V4ZWNfc3R1YjogaWxsZWdh bCBwb3NpdGlvbiIpOwotLQotLSAgaWYgKHN1Ympfc3RhcnQgPiBsZW4gfHwgc3Vial9zdGFydCA8 IDApCi0tICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCgiUGNyZS5wY3JlX2V4ZWNfc3R1YjogaWxs ZWdhbCBzdWJqZWN0IHN0YXJ0Iik7Ci0tCi0tICBwb3MgLT0gc3Vial9zdGFydDsKLS0gIGxlbiAt PSBzdWJqX3N0YXJ0OwotLQotLSAgewotLSAgICBjb25zdCBwY3JlICpjb2RlID0gZ2V0X3JleCh2 X3JleCk7ICAvKiBDb21waWxlZCBwYXR0ZXJuICovCi0tICAgIGNvbnN0IHBjcmVfZXh0cmEgKmV4 dHJhID0gZ2V0X2V4dHJhKHZfcmV4KTsgIC8qIEV4dHJhIGluZm8gKi8KLS0gICAgY29uc3QgY2hh ciAqb2NhbWxfc3ViaiA9Ci0tICAgICAgU3RyaW5nX3ZhbCh2X3N1YmopICsgc3Vial9zdGFydDsg IC8qIFN1YmplY3Qgc3RyaW5nICovCi0tICAgIGNvbnN0IGludCBvcHQgPSBASW50X3ZhbEAodl9v cHQpOyAgLyogUnVudGltZSBvcHRpb25zICovCi0tCi0tICAgIC8qIFNwZWNpYWwgY2FzZSB3aGVu IG5vIGNhbGxvdXQgZnVuY3Rpb25zIHNwZWNpZmllZCAqLwotLSAgICBpZiAodl9tYXliZV9jb2Yg PT0gTm9uZSkgewotLSAgICAgIGludCAqb3ZlYyA9IChpbnQgKikgJkZpZWxkKHZfb3ZlYywgMCk7 Ci0tCi0tICAgICAgLyogUGVyZm9ybXMgdGhlIG1hdGNoICovCi0tICAgICAgcmV0ID0gcGNyZV9l eGVjKGNvZGUsIGV4dHJhLCBvY2FtbF9zdWJqLCBsZW4sIHBvcywgb3B0LCBvdmVjLCBvdmVjX2xl bik7Ci0tCi0tICAgICAgaWYgKHJldCA8IDApIGhhbmRsZV9leGVjX2Vycm9yKCJwY3JlX2V4ZWNf c3R1YiIsIHJldCk7Ci0tICAgICAgZWxzZSBoYW5kbGVfcGNyZV9leGVjX3Jlc3VsdChvdmVjLCB2 X292ZWMsIG92ZWNfbGVuLCBzdWJqX3N0YXJ0LCByZXQpOwotLSAgICB9Ci0tCi0tICAgIC8qIFRo ZXJlIGFyZSBjYWxsb3V0IGZ1bmN0aW9ucyAqLwotLSAgICBlbHNlIHsKLS0gICAgICB2YWx1ZSB2 X2NvZiA9IEZpZWxkKHZfbWF5YmVfY29mLCAwKTsKLS0gICAgICB2YWx1ZSB2X3N1YnN0cmluZ3M7 Ci0tICAgICAgY2hhciAqc3ViaiA9IGNhbWxfc3RhdF9hbGxvYyhzaXplb2YoY2hhcikgKiBsZW4p OwotLSAgICAgIGludCAqb3ZlYyA9IGNhbWxfc3RhdF9hbGxvYyhzaXplb2YoaW50KSAqIG92ZWNf bGVuKTsKLS0gICAgICBzdHJ1Y3QgY29kIGNvZCA9IHsgMCwgKHZhbHVlICopIE5VTEwsICh2YWx1 ZSAqKSBOVUxMLCAodmFsdWUpIE5VTEwgfTsKLS0gICAgICBzdHJ1Y3QgcGNyZV9leHRyYSBuZXdf ZXh0cmEgPQotLSNpZmRlZiBQQ1JFX0VYVFJBX01BVENIX0xJTUlUX1JFQ1VSU0lPTgotLSMgaWZk ZWYgUENSRV9FWFRSQV9NQVJLCi0tIyAgaWZkZWYgUENSRV9FWFRSQV9FWEVDVVRBQkxFX0pJVAot LSAgICAgICAgeyBQQ1JFX0VYVFJBX0NBTExPVVRfREFUQSwgTlVMTCwgMCwgTlVMTCwgTlVMTCwg MCwgTlVMTCwgTlVMTCB9OwotLSMgIGVsc2UKLS0gICAgICAgIHsgUENSRV9FWFRSQV9DQUxMT1VU X0RBVEEsIE5VTEwsIDAsIE5VTEwsIE5VTEwsIDAsIE5VTEwgfTsKLS0jICBlbmRpZgotLSMgZWxz ZQotLSAgICAgICAgeyBQQ1JFX0VYVFJBX0NBTExPVVRfREFUQSwgTlVMTCwgMCwgTlVMTCwgTlVM TCwgMCB9OwotLSMgZW5kaWYKLS0jZWxzZQotLSAgICAgICAgeyBQQ1JFX0VYVFJBX0NBTExPVVRf REFUQSwgTlVMTCwgMCwgTlVMTCwgTlVMTCB9OwotLSNlbmRpZgotLQotLSAgICAgIGNvZC5zdWJq X3N0YXJ0ID0gc3Vial9zdGFydDsKLS0gICAgICBtZW1jcHkoc3Viaiwgb2NhbWxfc3ViaiwgbGVu KTsKLS0KLS0gICAgICBCZWdpbl9yb290czQodl9yZXgsIHZfY29mLCB2X3N1YnN0cmluZ3MsIHZf b3ZlYyk7Ci0tICAgICAgICBCZWdpbl9yb290czEodl9zdWJqKTsKLS0gICAgICAgICAgdl9zdWJz dHJpbmdzID0gY2FtbF9hbGxvY19zbWFsbCgyLCAwKTsKLS0gICAgICAgIEVuZF9yb290cygpOwot LQotLSAgICAgICAgRmllbGQodl9zdWJzdHJpbmdzLCAwKSA9IHZfc3ViajsKLS0gICAgICAgIEZp ZWxkKHZfc3Vic3RyaW5ncywgMSkgPSB2X292ZWM7Ci0tCi0tICAgICAgICBjb2Qudl9zdWJzdHJp bmdzX3AgPSAmdl9zdWJzdHJpbmdzOwotLSAgICAgICAgY29kLnZfY29mX3AgPSAmdl9jb2Y7Ci0t ICAgICAgICBuZXdfZXh0cmEuY2FsbG91dF9kYXRhID0gJmNvZDsKLS0KLS0gICAgICAgIGlmIChl eHRyYSA9PSBOVUxMKSB7Ci0tICAgICAgICAgIHJldCA9IHBjcmVfZXhlYyhjb2RlLCAmbmV3X2V4 dHJhLCBzdWJqLCBsZW4sIHBvcywgb3B0LCBvdmVjLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgb3ZlY19sZW4pOwotLSAgICAgICAgfQotLSAgICAgICAgZWxzZSB7Ci0tICAgICAgICAgIG5l d19leHRyYS5mbGFncyA9IFBDUkVfRVhUUkFfQ0FMTE9VVF9EQVRBIHwgZXh0cmEtPmZsYWdzOwot LSAgICAgICAgICBuZXdfZXh0cmEuc3R1ZHlfZGF0YSA9IGV4dHJhLT5zdHVkeV9kYXRhOwotLSAg ICAgICAgICBuZXdfZXh0cmEubWF0Y2hfbGltaXQgPSBleHRyYS0+bWF0Y2hfbGltaXQ7Ci0tICAg ICAgICAgIG5ld19leHRyYS50YWJsZXMgPSBleHRyYS0+dGFibGVzOwotLSNpZmRlZiBQQ1JFX0VY VFJBX01BVENIX0xJTUlUX1JFQ1VSU0lPTgotLSAgICAgICAgICBuZXdfZXh0cmEubWF0Y2hfbGlt aXRfcmVjdXJzaW9uID0gZXh0cmEtPm1hdGNoX2xpbWl0X3JlY3Vyc2lvbjsKLS0jZW5kaWYKLS0K LS0gICAgICAgICAgcmV0ID0gcGNyZV9leGVjKGNvZGUsICZuZXdfZXh0cmEsIHN1YmosIGxlbiwg cG9zLCBvcHQsIG92ZWMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVjX2xlbik7Ci0t ICAgICAgICB9Ci0tCi0tICAgICAgICBjYW1sX3N0YXRfZnJlZShzdWJqKTsKLS0gICAgICBFbmRf cm9vdHMoKTsKLS0KLS0gICAgICBpZiAocmV0IDwgMCkgewotLSAgICAgICAgY2FtbF9zdGF0X2Zy ZWUob3ZlYyk7Ci0tICAgICAgICBpZiAocmV0ID09IFBDUkVfRVJST1JfQ0FMTE9VVCkgY2FtbF9y YWlzZShjb2Qudl9leG4pOwotLSAgICAgICAgZWxzZSBoYW5kbGVfZXhlY19lcnJvcigicGNyZV9l eGVjX3N0dWIoY2FsbG91dCkiLCByZXQpOwotLSAgICAgIH0gZWxzZSB7Ci0tICAgICAgICBoYW5k bGVfcGNyZV9leGVjX3Jlc3VsdChvdmVjLCB2X292ZWMsIG92ZWNfbGVuLCBzdWJqX3N0YXJ0LCBy ZXQpOwotLSAgICAgICAgY2FtbF9zdGF0X2ZyZWUob3ZlYyk7Ci0tICAgICAgfQotLSAgICB9Ci0t ICB9Ci0tCi0tICByZXR1cm4gVmFsX3VuaXQ7Ci0tfQotLQotLS8qIEJ5dGUtY29kZSBob29rIGZv ciBwY3JlX2V4ZWNfc3R1YgotLSAgIE5lZWRlZCwgYmVjYXVzZSB0aGVyZSBhcmUgbW9yZSB0aGFu IDUgYXJndW1lbnRzICovCi0tQ0FNTHByaW0gdmFsdWUgcGNyZV9leGVjX3N0dWJfYmModmFsdWUg KmFyZ3YsIGludCBfX3VudXNlZCBhcmduKQotLXsKLS0gIHJldHVybgotLSAgICBwY3JlX2V4ZWNf c3R1YigKLS0gICAgICAgIEBJbnRfdmFsX3ZhbEAoYXJndlswXSksIGFyZ3ZbMV0sIEBJbnRfdmFs X3ZhbEAoYXJndlsyXSksIEBJbnRfdmFsX3ZhbEAoYXJndlszXSksCi0tICAgICAgICBhcmd2WzRd LCBhcmd2WzVdLCBhcmd2WzZdKTsKLS19Ci0tCi0tc3RhdGljIHN0cnVjdCBjdXN0b21fb3BlcmF0 aW9ucyB0YWJsZXNfb3BzID0gewotLSAgInBjcmVfb2NhbWxfdGFibGVzIiwKLS0gIHBjcmVfZGVh bGxvY190YWJsZXMsCi0tICBjdXN0b21fY29tcGFyZV9kZWZhdWx0LAotLSAgY3VzdG9tX2hhc2hf ZGVmYXVsdCwKLS0gIGN1c3RvbV9zZXJpYWxpemVfZGVmYXVsdCwKLS0gIGN1c3RvbV9kZXNlcmlh bGl6ZV9kZWZhdWx0LAotLSAgY3VzdG9tX2NvbXBhcmVfZXh0X2RlZmF1bHQKLS19OwotLQotLS8q IEdlbmVyYXRlcyBhIG5ldyBzZXQgb2YgY2hhcnRhYmxlcyBmb3IgdGhlIGN1cnJlbnQgbG9jYWxl IChzZWUgbWFuCi0tICAgcGFnZSBvZiBQQ1JFICovCi0tQ0FNTHByaW0gdmFsdWUgcGNyZV9tYWtl dGFibGVzX3N0dWIodmFsdWUgX191bnVzZWQgdl91bml0KQotLXsKLS0gIC8qIEdDIHdpbGwgZG8g YSBmdWxsIGN5Y2xlIGV2ZXJ5IDFfMDAwXzAwMCB0YWJsZSBzZXQgYWxsb2NhdGlvbnMgKG9uZQot LSAgICAgdGFibGUgc2V0IGNvbnN1bWVzIDg2NCBieXRlcyAtPiBtYXhpbXVtIG9mIDg2NF8wMDBf MDAwIGJ5dGVzIHVucmVjbGFpbWVkCi0tICAgICB0YWJsZSBzZXRzKSAqLwotLSAgY29uc3QgdmFs dWUgdl90YWJsZXMgPQotLSAgICBjYW1sX2FsbG9jX2N1c3RvbSgKLS0gICAgICAgICZ0YWJsZXNf b3BzLCBzaXplb2Yoc3RydWN0IHBjcmVfb2NhbWxfdGFibGVzKSwgMSwgMTAwMDAwMCk7Ci0tICBz ZXRfdGFibGVzKHZfdGFibGVzLCBwY3JlX21ha2V0YWJsZXMoKSk7Ci0tICByZXR1cm4gdl90YWJs ZXM7Ci0tfQotLQotLS8qIFdyYXBzIGFyb3VuZCB0aGUgaXNzcGFjZS1mdW5jdGlvbiAqLwotLUNB TUxwcmltIHZhbHVlIHBjcmVfaXNzcGFjZV9zdHViKHZhbHVlIHZfYykKLS17Ci0tICByZXR1cm4g VmFsX2Jvb2woaXNzcGFjZShJbnRfdmFsKHZfYykpKTsKLS19Ci0tCi0tCi0tLyogUmV0dXJucyBu dW1iZXIgb2Ygc3Vic3RyaW5nIGFzc29jaWF0ZWQgd2l0aCBhIG5hbWUgKi8KLS0KLS1DQU1McHJp bSBAaW50bmF0QCBwY3JlX2dldF9zdHJpbmdudW1iZXJfc3R1Yih2YWx1ZSB2X3JleCwgdmFsdWUg dl9uYW1lKQotLXsKLS0gIGNvbnN0IGludCByZXQgPSBwY3JlX2dldF9zdHJpbmdudW1iZXIoZ2V0 X3JleCh2X3JleCksIFN0cmluZ192YWwodl9uYW1lKSk7Ci0tICBpZiAocmV0ID09IFBDUkVfRVJS T1JfTk9TVUJTVFJJTkcpCi0tICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCgiTmFtZWQgc3RyaW5n IG5vdCBmb3VuZCIpOwotLQotLSAgcmV0dXJuIEBWYWxfaW50QChyZXQpOwotLX0KLS0KLS1DQU1M cHJpbSB2YWx1ZSBwY3JlX2dldF9zdHJpbmdudW1iZXJfc3R1Yl9iYyh2YWx1ZSB2X3JleCwgdmFs dWUgdl9uYW1lKQotLXsKLS0gIHJldHVybiBAVmFsX1ZhbF9pbnRAKHBjcmVfZ2V0X3N0cmluZ251 bWJlcl9zdHViKHZfcmV4LCB2X25hbWUpKTsKLS19Ci0tCi0tCi0tLyogUmV0dXJucyBhcnJheSBv ZiBuYW1lcyBvZiBuYW1lZCBzdWJzdHJpbmdzIGluIGEgcmVnZXhwICovCi0tQ0FNTHByaW0gdmFs dWUgcGNyZV9uYW1lc19zdHViKHZhbHVlIHZfcmV4KQotLXsKLS0gIENBTUxwYXJhbTAoKTsKLS0g IENBTUxsb2NhbDEodl9yZXMpOwotLSAgaW50IG5hbWVfY291bnQ7Ci0tICBpbnQgZW50cnlfc2l6 ZTsKLS0gIGNvbnN0IGNoYXIgKnRibF9wdHI7Ci0tICBpbnQgaTsKLS0KLS0gIGludCByZXQgPSBw Y3JlX2Z1bGxpbmZvX3N0dWIodl9yZXgsIFBDUkVfSU5GT19OQU1FQ09VTlQsICZuYW1lX2NvdW50 KTsKLS0gIGlmIChyZXQgIT0gMCkgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBjcmVfbmFtZXNfc3R1 YjogbmFtZWNvdW50Iik7Ci0tCi0tICByZXQgPSBwY3JlX2Z1bGxpbmZvX3N0dWIodl9yZXgsIFBD UkVfSU5GT19OQU1FRU5UUllTSVpFLCAmZW50cnlfc2l6ZSk7Ci0tICBpZiAocmV0ICE9IDApIHJh aXNlX2ludGVybmFsX2Vycm9yKCJwY3JlX25hbWVzX3N0dWI6IG5hbWVlbnRyeXNpemUiKTsKLS0K LS0gIHJldCA9IHBjcmVfZnVsbGluZm9fc3R1Yih2X3JleCwgUENSRV9JTkZPX05BTUVUQUJMRSwg JnRibF9wdHIpOwotLSAgaWYgKHJldCAhPSAwKSByYWlzZV9pbnRlcm5hbF9lcnJvcigicGNyZV9u YW1lc19zdHViOiBuYW1ldGFibGUiKTsKLS0KLS0gIHZfcmVzID0gY2FtbF9hbGxvYyhuYW1lX2Nv dW50LCAwKTsKLS0KLS0gIGZvciAoaSA9IDA7IGkgPCBuYW1lX2NvdW50OyArK2kpIHsKLS0gICAg dmFsdWUgdl9uYW1lID0gY2FtbF9jb3B5X3N0cmluZyh0YmxfcHRyICsgMik7Ci0tICAgIFN0b3Jl X2ZpZWxkKHZfcmVzLCBpLCB2X25hbWUpOwotLSAgICB0YmxfcHRyICs9IGVudHJ5X3NpemU7Ci0t ICB9Ci0tCi0tICBDQU1McmV0dXJuKHZfcmVzKTsKLS19Ci0tCi0tLyogR2VuZXJpYyBzdHViIGZv ciBnZXR0aW5nIGludGVnZXIgcmVzdWx0cyBmcm9tIHBjcmVfY29uZmlnICovCi0tc3RhdGljIGlu bGluZSBpbnQgcGNyZV9jb25maWdfaW50KGludCB3aGF0KQotLXsKLS0gIGludCByZXQ7Ci0tICBw Y3JlX2NvbmZpZyh3aGF0LCAodm9pZCAqKSAmcmV0KTsKLS0gIHJldHVybiByZXQ7Ci0tfQotLQot LS8qIEdlbmVyaWMgc3R1YiBmb3IgZ2V0dGluZyBsb25nIGludGVnZXIgcmVzdWx0cyBmcm9tIHBj cmVfY29uZmlnICovCi0tc3RhdGljIGlubGluZSBpbnQgcGNyZV9jb25maWdfbG9uZyhpbnQgd2hh dCkKLS17Ci0tICBsb25nIHJldDsKLS0gIHBjcmVfY29uZmlnKHdoYXQsICh2b2lkICopICZyZXQp OwotLSAgcmV0dXJuIHJldDsKLS19Ci0tCi0tCi0tLyogU29tZSBzdHVicyBmb3IgY29uZmlnLWZ1 bmN0aW9ucyAqLwotLQotLS8qIE1ha2VzIE9DYW1sLXN0cmluZyBmcm9tIFBDUkUtdmVyc2lvbiAq LwotLUNBTUxwcmltIHZhbHVlIHBjcmVfdmVyc2lvbl9zdHViKHZhbHVlIF9fdW51c2VkIHZfdW5p dCkKLS17Ci0tICByZXR1cm4gY2FtbF9jb3B5X3N0cmluZygoY2hhciAqKSBwY3JlX3ZlcnNpb24o KSk7Ci0tfQotLQotLS8qIFJldHVybnMgYm9vbGVhbiBpbmRpY2F0aW5nIFVURjgtc3VwcG9ydCAq LwotLUNBTUxwcmltIHZhbHVlIHBjcmVfY29uZmlnX3V0Zjhfc3R1Yih2YWx1ZSBfX3VudXNlZCB2 X3VuaXQpCi0teyByZXR1cm4gVmFsX2Jvb2wocGNyZV9jb25maWdfaW50KFBDUkVfQ09ORklHX1VU RjgpKTsgfQotLQotLQotLS8qIFJldHVybnMgY2hhcmFjdGVyIHVzZWQgYXMgbmV3bGluZSAqLwot LUNBTUxwcmltIHZhbHVlIHBjcmVfY29uZmlnX25ld2xpbmVfc3R1Yih2YWx1ZSBfX3VudXNlZCB2 X3VuaXQpCi0teyByZXR1cm4gVmFsX2ludChwY3JlX2NvbmZpZ19pbnQoUENSRV9DT05GSUdfTkVX TElORSkpOyB9Ci0tCi0tCi0tLyogUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3IgaW50 ZXJuYWwgbGlua2FnZSBvZiByZWd1bGFyIGV4cHJlc3Npb25zICovCi0tCi0tQ0FNTHByaW0gQGlu dG5hdEAgcGNyZV9jb25maWdfbGlua19zaXplX3N0dWIodmFsdWUgX191bnVzZWQgdl91bml0KQot LXsgcmV0dXJuIEBWYWxfaW50QChwY3JlX2NvbmZpZ19pbnQoUENSRV9DT05GSUdfTElOS19TSVpF KSk7IH0KLS0KLS1DQU1McHJpbSB2YWx1ZSBwY3JlX2NvbmZpZ19saW5rX3NpemVfc3R1Yl9iYyh2 YWx1ZSB2X3VuaXQpCi0teyByZXR1cm4gQFZhbF9WYWxfaW50QChwY3JlX2NvbmZpZ19saW5rX3Np emVfc3R1Yih2X3VuaXQpKTsgfQotLQotLQotLS8qIFJldHVybnMgZGVmYXVsdCBsaW1pdCBmb3Ig Y2FsbHMgdG8gaW50ZXJuYWwgbWF0Y2hpbmcgZnVuY3Rpb24gKi8KLS0KLS1DQU1McHJpbSBAaW50 bmF0QCBwY3JlX2NvbmZpZ19tYXRjaF9saW1pdF9zdHViKHZhbHVlIF9fdW51c2VkIHZfdW5pdCkK LS17IHJldHVybiBAVmFsX2ludEAocGNyZV9jb25maWdfbG9uZyhQQ1JFX0NPTkZJR19NQVRDSF9M SU1JVCkpOyB9Ci0tCi0tCi0tQ0FNTHByaW0gdmFsdWUgcGNyZV9jb25maWdfbWF0Y2hfbGltaXRf c3R1Yl9iYyh2YWx1ZSB2X3VuaXQpCi0teyByZXR1cm4gQFZhbF9WYWxfaW50QChwY3JlX2NvbmZp Z19tYXRjaF9saW1pdF9zdHViKHZfdW5pdCkpOyB9Ci0tCi0tCi0tLyogUmV0dXJucyBkZWZhdWx0 IGxpbWl0IGZvciByZWN1cnNpdmUgY2FsbHMgdG8gaW50ZXJuYWwgbWF0Y2hpbmcgZnVuY3Rpb24g Ki8KLS0KLS1DQU1McHJpbSBAaW50bmF0QCBwY3JlX2NvbmZpZ19tYXRjaF9saW1pdF9yZWN1cnNp b25fc3R1Yih2YWx1ZSBfX3VudXNlZCB2X3VuaXQpCi0teyByZXR1cm4gQFZhbF9pbnRAKHBjcmVf Y29uZmlnX2xvbmcoUENSRV9DT05GSUdfTUFUQ0hfTElNSVRfUkVDVVJTSU9OKSk7IH0KLS0KLS1D QU1McHJpbSB2YWx1ZSBwY3JlX2NvbmZpZ19tYXRjaF9saW1pdF9yZWN1cnNpb25fc3R1Yl9iYyh2 YWx1ZSB2X3VuaXQpCi0teyByZXR1cm4gQFZhbF9WYWxfaW50QChwY3JlX2NvbmZpZ19tYXRjaF9s aW1pdF9yZWN1cnNpb25fc3R1Yih2X3VuaXQpKTsgfQotLQotLQotLS8qIFJldHVybnMgYm9vbGVh biBpbmRpY2F0aW5nIHVzZSBvZiBzdGFjayByZWN1cnNpb24gKi8KLS1DQU1McHJpbSB2YWx1ZSBw Y3JlX2NvbmZpZ19zdGFja3JlY3Vyc2Vfc3R1Yih2YWx1ZSBfX3VudXNlZCB2X3VuaXQpCi0teyBy ZXR1cm4gVmFsX2Jvb2wocGNyZV9jb25maWdfaW50KFBDUkVfQ09ORklHX1NUQUNLUkVDVVJTRSkp OyB9Ci1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvLmdpdGlnbm9yZSBiL2J1 bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvLmdpdGlnbm9yZQotc2ltaWxhcml0eSBpbmRleCAxMDAl Ci1yZW5hbWUgZnJvbSBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC8uZ2l0aWdub3JlCi1yZW5hbWUg dG8gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC8uZ2l0aWdub3JlCi1kaWZmIC0tZ2l0IGEvYnVu ZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9DSEFOR0VMT0cubWQgYi9idW5kbGVzL3BjcmUyL3BjcmUy LW9jYW1sL0NIQU5HRUxPRy5tZAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAw MC4uZGExMWVhZTM0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9j YW1sL0NIQU5HRUxPRy5tZAotQEAgLTAsMCArMSw2OSBAQAotKyMgQ2hhbmdlbG9nCi0rCi0rIyMg WzguMC40XSAtIDIwMjUtMTAtMTkKLSsKLSsjIyMgQWRkZWQKLSsKLSstIFByb3ZpZGUgYSBgbWFr ZSB0ZXN0YCBjb252ZW5pZW5jZSB0YXJnZXQgYW5kIGdlbmVyYXRlCi0rICBgbGliL2NvbXBpbGVf Y29tbWFuZHMuanNvbmAgdG8gc3RyZWFtbGluZSBydW5uaW5nIHRoZSBzdWl0ZSBhbmQgSURFCi0r ICBpbnRlZ3JhdGlvbi4KLSstIEludHJvZHVjZSBHaXRIdWIgYXV0b21hdGlvbiAoRGVwZW5kYWJv dCB1cGRhdGVzIHBsdXMgbGludGluZywgZm9ybWF0dGluZywgYW5kCi0rICBwcmUtY29tbWl0IHdv cmtmbG93cykgbWlycm9yaW5nIHRoZSBvcmlnaW5hbCBgcGNyZS1vY2FtbGAgcHJvamVjdC4KLSsK LSsjIyMgQ2hhbmdlZAotKwotKy0gUmVvcmdhbml6ZSB0aGUgcmVwb3NpdG9yeSB0byBtYXRjaCB0 aGUgdXBzdHJlYW0gbGF5b3V0LCBtb3ZpbmcgbGlicmFyeSBzb3VyY2VzCi0rICB0byBgbGliL2As IHJlZnJlc2hpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHVwZGF0aW5nIGV4YW1wbGUgZGVzY3JpcHRp b25zLgotKwotKyMjIyBGaXhlZAotKwotKy0gRW5zdXJlIHRoZSBgUGNyZTIuQmFkUGF0dGVybmAg ZXhjZXB0aW9uIGFsbG9jYXRlcyBzaG9ydCBPQ2FtbCBzdHJpbmdzIHRvIGF2b2lkCi0rICB0cmFp bGluZyBnYXJiYWdlIG9yIGVtYmVkZGVkIE5VTCBieXRlcyBpbiBlcnJvciBtZXNzYWdlcy4KLSst IENvcnJlY3QgdGhlIG9mZnNldC12ZWN0b3IgcG9pbnRlciBjYXN0IGluIGBwY3JlMl9zdHVicy5j YCB0byByZW1vdmUgdW5kZWZpbmVkCi0rICBiZWhhdmlvciB3aGVuIGNvcHlpbmcgbWF0Y2ggb2Zm c2V0cy4KLSsKLSsjIyBbOC4wLjNdIC0gMjAyNS0wMi0xNQotKwotKyMjIyBGaXhlZAotKwotKy0g TWFrZSBgY2FtbF9hbGxvY19zb21lYCBzdGF0aWMgdG8gcHJldmVudCBjbGFzaGVzIHdpdGggdGhl IGBwY3JlYCBwYWNrYWdlIHdoZW4KLSsgIHRhcmdldGluZyBPQ2FtbCA0LjA4LTQuMTEuCi0rCi0r IyMgWzguMC4yXSAtIDIwMjQtMTItMjYKLSsKLSsjIyMgQWRkZWQKLSsKLSstIFJlc3RvcmUgY29t cGF0aWJpbGl0eSB3aXRoIE9DYW1sIDQuMDggdGhyb3VnaCA0LjExLiBUaGFua3MgdG8gQG5vamIu Ci0rCi0rIyMgWzguMC4xXSAtIDIwMjQtMTItMjAKLSsKLSsjIyMgQ2hhbmdlZAotKwotKy0gTWVy Z2UgdGhlIGxlZ2FjeSBgcGNyZS1vY2FtbGAgY2hhbmdlcyBpbnRvIGBwY3JlMi1vY2FtbGAuCi0r Ci0rIyMjIEZpeGVkCi0rCi0rLSBDb3JyZWN0IGBmdWxsX3NwbGl0YCBzbyB0aGF0IG5vbi1jYXB0 dXJpbmcgZ3JvdXBzIGFyZSBpZGVudGlmaWVkIHByb3Blcmx5LgotKwotKyMjIFs3LjUuM10gLSAy MDI0LTEyLTIzCi0rCi0rIyMjIEZpeGVkCi0rCi0rLSBBZGRyZXNzIHRoZSBgZnVsbF9zcGxpdGAg cmVncmVzc2lvbi4gVGhhbmtzIHRvIEBtbW90dGwuCi0rCi0rIyMgWzcuNS4yXSAtIDIwMjMtMDkt MDYKLSsKLSsjIyMgQWRkZWQKLSsKLSstIEludHJvZHVjZSB0aGUgaW5pdGlhbCB1bml0IHRlc3Qg dGhhdCBleGVyY2lzZXMgYGZ1bGxfc3BsaXRgLgotKwotKyMjIyBGaXhlZAotKwotKy0gUmVzb2x2 ZSB0aGUgYGZ1bGxfc3BsaXRgIGJ1ZyBhZmZlY3Rpbmcgc3BsaXQgY2xhc3NpZmljYXRpb24uCi0r Ci0rIyMgWzcuNS4xXSAtIDIwMjMtMDktMDEKLSsKLSsjIyMgQWRkZWQKLSsKLSstIENyZWF0ZSB0 aGUgaW5pdGlhbCBgcGNyZTItb2NhbWxgIGJpbmRpbmdzIGRlcml2ZWQgZnJvbSB0aGUgb3JpZ2lu YWwKLSsgIGBwY3JlLW9jYW1sYCBwcm9qZWN0LgotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9w Y3JlLW9jYW1sL0xJQ0VOU0UubWQgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL0xJQ0VOU0Uu bWQKLXNpbWlsYXJpdHkgaW5kZXggOTklCi1yZW5hbWUgZnJvbSBidW5kbGVzL3BjcmUvcGNyZS1v Y2FtbC9MSUNFTlNFLm1kCi1yZW5hbWUgdG8gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9MSUNF TlNFLm1kCi1pbmRleCBjMzVjMjRkYWEuLjQ0ODFlM2U2OCAxMDA2NDQKLS0tLSBhL2J1bmRsZXMv cGNyZS9wY3JlLW9jYW1sL0xJQ0VOU0UubWQKLSsrKyBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2Nh bWwvTElDRU5TRS5tZAotQEAgLTEyLDcgKzEyLDcgQEAgcmVxdWlyZW1lbnRzIGxpc3RlZCBpbiBj bGF1c2UgNiBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotIEJ5ICJh IHB1YmxpY2x5IGRpc3RyaWJ1dGVkIHZlcnNpb24gb2YgdGhlIExpYnJhcnkiLCB3ZSBtZWFuIGVp dGhlciB0aGUKLSB1bm1vZGlmaWVkIExpYnJhcnkgYXMgZGlzdHJpYnV0ZWQgYnkgdGhlIGF1dGhv cnMsIG9yIGEgbW9kaWZpZWQgdmVyc2lvbgotIG9mIHRoZSBMaWJyYXJ5IHRoYXQgaXMgZGlzdHJp YnV0ZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgZGVmaW5lZCBpbiBjbGF1c2UKLS0zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5v dAotKzIgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhj ZXB0aW9uIGRvZXMgbm90Ci0gaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdo eSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlCi0gY292ZXJlZCBieSB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotIAotQEAgLTI0LDcgKzI0LDcgQEAgVmVyc2lvbiAy LjEsIEZlYnJ1YXJ5IDE5OTkKLSAKLSAgICAgQ29weXJpZ2h0IChDKSAxOTkxLCAxOTk5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICAgICA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLS0gICAgCi0rCi0gICAgIEV2ZXJ5 b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwot ICAgICBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxs b3dlZC4KLSAKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL01ha2VmaWxl IGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9NYWtlZmlsZQotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAwMC4uY2YyZWU2ZTUxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5k bGVzL3BjcmUyL3BjcmUyLW9jYW1sL01ha2VmaWxlCi1AQCAtMCwwICsxLDE1IEBACi0rLlBIT05Z OiBhbGwgY2xlYW4gZG9jCi0rCi0rYWxsOgotKwlAZHVuZSBidWlsZCBAaW5zdGFsbAotKwlAbWFr ZSAtQyBsaWIgY29tcGlsZV9jb21tYW5kcy5qc29uCi0rCi0rdGVzdDogYWxsCi0rCUBkdW5lIGJ1 aWxkIEBpbnN0YWxsIEBydW50ZXN0Ci0rCi0rY2xlYW46Ci0rCUBkdW5lIGNsZWFuCi0rCUBtYWtl IC1DIGxpYiBjbGVhbi1jb21waWxlLWNvbW1hbmRzCi0rCi0rZG9jOgotKwlAZHVuZSBidWlsZCBA ZG9jCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9SRUFETUUubWQgYi9i dW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL1JFQURNRS5tZAotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAwMC4uYTY3OWZiNGViCi0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVz L3BjcmUyL3BjcmUyLW9jYW1sL1JFQURNRS5tZAotQEAgLTAsMCArMSwxMzggQEAKLSsjIFBDUkUy LU9DYW1sIC0gUGVybCBDb21wYXRpYmlsaXR5IFJlZ3VsYXIgRXhwcmVzc2lvbnMgZm9yIE9DYW1s Ci0rCi0rRm9yayBvZiB0aGUgb3JpZ2luYWwgW3BjcmUtb2NhbWwgcHJvamVjdF0oaHR0cHM6Ly9n aXRodWIuY29tL21tb3R0bC9wY3JlLW9jYW1sKQotK2ZvciBQQ1JFMiBzdXBwb3J0LgotKwotK1Ro ZXNlIGFyZSB0aGUgYmluZGluZ3MgYXMgbmVlZGVkIGJ5IHRoZQotK1tIYXhlIGNvbXBpbGVyXSho dHRwczovL2dpdGh1Yi5jb20vSGF4ZUZvdW5kYXRpb24vaGF4ZSkuIEkgZG8gbm90IHBsYW4gb24K LSttYWludGFpbmluZyB0aGlzIHJlcG9zaXRvcnkuCi0rCi0rVGhpcyBbT0NhbWxdKGh0dHA6Ly93 d3cub2NhbWwub3JnKSBsaWJyYXJ5IGludGVyZmFjZXMgd2l0aCB0aGUgQyBsaWJyYXJ5Ci0rW1BD UkUyXShodHRwOi8vd3d3LnBjcmUub3JnKSwgcHJvdmlkaW5nIFBlcmwtY29tcGF0aWJsZSByZWd1 bGFyIGV4cHJlc3Npb25zIGZvcgotK3N0cmluZyBtYXRjaGluZy4KLSsKLSsjIyBGZWF0dXJlcwot KwotK1BDUkUyLU9DYW1sIG9mZmVyczoKLSsKLSstIFBhdHRlcm4gc2VhcmNoaW5nCi0rLSBTdWJw YXR0ZXJuIGV4dHJhY3Rpb24KLSstIFN0cmluZyBzcGxpdHRpbmcgYnkgcGF0dGVybnMKLSstIFBh dHRlcm4gc3Vic3RpdHV0aW9uCi0rCi0rUmVhc29ucyB0byBjaG9vc2UgUENSRTItT0NhbWw6Ci0r Ci0rLSBUaGUgUENSRTIgbGlicmFyeSBieSBQaGlsaXAgSGF6ZWwgaXMgbWF0dXJlIGFuZCBzdGFi bGUsIGltcGxlbWVudGluZyBuZWFybHkKLSsgIGFsbCBQZXJsIHJlZ3VsYXIgZXhwcmVzc2lvbiBm ZWF0dXJlcy4gSGlnaC1sZXZlbCBPQ2FtbCBmdW5jdGlvbnMgKHNwbGl0LAotKyAgcmVwbGFjZSwg ZXRjLikgYXJlIGNvbXBhdGlibGUgd2l0aCBQZXJsIGZ1bmN0aW9ucywgYXMgbXVjaCBhcyBPQ2Ft bCBhbGxvd3MuCi0rICBTb21lIGRldmVsb3BlcnMgZmluZCBQZXJsLXN0eWxlIHJlZ2V4IHN5bnRh eCBtb3JlIGludHVpdGl2ZSBhbmQgcG93ZXJmdWwgdGhhbgotKyAgdGhlIEVtYWNzLXN0eWxlIHJl Z2V4IHVzZWQgaW4gT0NhbWwncyBgU3RyYCBtb2R1bGUuCi0rCi0rLSBQQ1JFMi1PQ2FtbCBpcyBy ZWVudHJhbnQgYW5kIHRocmVhZC1zYWZlLCB1bmxpa2UgdGhlIGBTdHJgIG1vZHVsZS4gVGhpcwot KyAgcmVlbnRyYW5jeSBvZmZlcnMgY29udmVuaWVuY2UsIGVsaW1pbmF0aW5nIGNvbmNlcm5zIGFi b3V0IGxpYnJhcnkgc3RhdGUuCi0rCi0rLSBIaWdoLWxldmVsIHJlcGxhY2VtZW50IGFuZCBzdWJz dGl0dXRpb24gZnVuY3Rpb25zIGluIE9DYW1sIGFyZSBmYXN0ZXIgdGhhbgotKyAgdGhvc2UgaW4g dGhlIGBTdHJgIG1vZHVsZS4gV2hlbiBjb21waWxlZCB0byBuYXRpdmUgY29kZSwgdGhleSBjYW4g ZXZlbgotKyAgb3V0cGVyZm9ybSBQZXJsJ3MgQy1iYXNlZCBmdW5jdGlvbnMuCi0rCi0rLSBSZXR1 cm5lZCBkYXRhIGlzIHVuaXF1ZSwgYWxsb3dpbmcgc2FmZSBkZXN0cnVjdGl2ZSB1cGRhdGVzIHdp dGhvdXQgc2lkZQotKyAgZWZmZWN0cy4KLSsKLSstIFRoZSBsaWJyYXJ5IGludGVyZmFjZSB1c2Vz IGxhYmVscyBhbmQgZGVmYXVsdCBhcmd1bWVudHMgZm9yIGVuaGFuY2VkCi0rICBwcm9ncmFtbWlu ZyBjb21mb3J0LgotKwotKyMjIFVzYWdlCi0rCi0rUGxlYXNlIHJ1bjoKLSsKLStgYGBzaAotK29k aWcgb2RvYyBwY3JlMgotK2BgYAotKwotK09yIChtYXliZT8pOgotKwotK2BgYHNoCi0rZHVuZSBi dWlsZCBAZG9jCi0rYGBgCi0rCi0rRnVuY3Rpb25zIHN1cHBvcnQgdHdvIGZsYWcgdHlwZXM6Ci0r Ci0rMS4gKipDb252ZW5pZW5jZSBmbGFncyoqOiBSZWFkYWJsZSBhbmQgY29uY2lzZSwgdHJhbnNs YXRlZCBpbnRlcm5hbGx5IG9uIGVhY2gKLSsgICBjYWxsLiBFeGFtcGxlOgotKwotKyAgIGBgYG9j YW1sCi0rICAgbGV0IHJleCA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W2BBTkNIT1JFRDsgYENBU0VM RVNTXSAic29tZSBwYXR0ZXJuIiBpbgotKyAgICgqIC4uLiAqKQotKyAgIGBgYAotKwotKyAgIFRo ZXNlIGFyZSBlYXN5IHRvIHVzZSBidXQgbWF5IGluY3VyIG92ZXJoZWFkIGluIGxvb3BzLiBGb3Ig cGVyZm9ybWFuY2UKLSsgICBvcHRpbWl6YXRpb24sIGNvbnNpZGVyIHRoZSBuZXh0IGFwcHJvYWNo LgotKwotKzIuICoqSW50ZXJuYWwgZmxhZ3MqKjogUHJlZGVmaW5lZCBhbmQgdHJhbnNsYXRlZCBm cm9tIGNvbnZlbmllbmNlIGZsYWdzIGZvcgotKyAgIG9wdGltYWwgbG9vcCBwZXJmb3JtYW5jZS4g RXhhbXBsZToKLSsKLSsgICBgYGBvY2FtbAotKyAgIGxldCBpZmxhZ3MgPSBQY3JlMi5jZmxhZ3Mg W2BBTkNIT1JFRDsgYENBU0VMRVNTXSBpbgotKyAgIGZvciBpID0gMSB0byAxMDAwIGRvCi0rICAg ICBsZXQgcmV4ID0gUGNyZTIucmVnZXhwIH5pZmxhZ3MgInNvbWUgcGF0dGVybiBjb25zdHJ1Y3Rl ZCBhdCBydW50aW1lIiBpbgotKyAgICAgKCogLi4uICopCi0rICAgZG9uZQotKyAgIGBgYAotKwot KyAgIFRyYW5zbGF0aW5nIGZsYWdzIG91dHNpZGUgbG9vcHMgc2F2ZXMgY3ljbGVzLiBBdm9pZCBj cmVhdGluZyByZWdleCBpbiBsb29wczoKLSsKLSsgICBgYGBvY2FtbAotKyAgIGZvciBpID0gMSB0 byAxMDAwIGRvCi0rICAgICBsZXQgY2h1bmtzID0gUGNyZTIuc3BsaXQgfnBhdDoiWyBcdF0rIiAi Zm9vIGJhciIgaW4KLSsgICAgICgqIC4uLiAqKQotKyAgIGRvbmUKLSsgICBgYGAKLSsKLSsgICBJ bnN0ZWFkLCBwcmVkZWZpbmUgdGhlIHJlZ2V4OgotKwotKyAgIGBgYG9jYW1sCi0rICAgbGV0IHJl eCA9IFBjcmUyLnJlZ2V4cCAiWyBcdF0rIiBpbgotKyAgIGZvciBpID0gMSB0byAxMDAwIGRvCi0r ICAgICBsZXQgY2h1bmtzID0gUGNyZTIuc3BsaXQgfnJleCAiZm9vIGJhciIgaW4KLSsgICAgICgq IC4uLiAqKQotKyAgIGRvbmUKLSsgICBgYGAKLSsKLStGdW5jdGlvbnMgdXNlIG9wdGlvbmFsIGFy Z3VtZW50cyB3aXRoIGludHVpdGl2ZSBkZWZhdWx0cy4gRm9yIGluc3RhbmNlLAotK2BQY3JlMi5z cGxpdGAgZGVmYXVsdHMgdG8gd2hpdGVzcGFjZSBhcyB0aGUgcGF0dGVybi4gVGhlIGBleGFtcGxl c2AgZGlyZWN0b3J5Ci0rY29udGFpbnMgYXBwbGljYXRpb25zIGRlbW9uc3RyYXRpbmcgUENSRTIt T0NhbWwncyBmdW5jdGlvbmFsaXR5LgotKwotKyMjIFJlc3RhcnRhYmxlIChQYXJ0aWFsKSBQYXR0 ZXJuIE1hdGNoaW5nCi0rCi0rUENSRTIgaW5jbHVkZXMgYSBERkEgbWF0Y2ggZnVuY3Rpb24gZm9y IHJlc3RhcnRpbmcgcGFydGlhbCBtYXRjaGVzIHdpdGggbmV3Ci0raW5wdXQsIGV4cG9zZWQgdmlh IGBwY3JlMl9kZmFfZXhlY2AuIFdoaWxlIG5vdCBzdWl0YWJsZSBmb3IgZXh0cmFjdGluZwotK3N1 Ym1hdGNoZXMgb3Igc3BsaXR0aW5nIHN0cmluZ3MsIGl0J3MgdXNlZnVsIGZvciBzdHJlYW1pbmcg YW5kIHNlYXJjaCB0YXNrcy4KLSsKLStFeGFtcGxlIG9mIGEgcGFydGlhbCBtYXRjaCByZXN0YXJ0 ZWQ6Ci0rCi0rYGBgb2NhbWwKLSt1dG9wICMgb3BlbiBQY3JlMjs7Ci0rdXRvcCAjIGxldCByZXgg PSByZWdleHAgIjEyKzMiOzsKLSt2YWwgcmV4IDogcmVnZXhwID0gPGFic3RyPgotK3V0b3AgIyBs ZXQgd29ya3NwYWNlID0gQXJyYXkubWFrZSA0MCAwOzsKLSt2YWwgd29ya3NwYWNlIDogaW50IGFy cmF5ID0KLSsgIFt8IC4uLiB8XQotK3V0b3AgIyBwY3JlMl9kZmFfbWF0Y2ggfnJleCB+ZmxhZ3M6 W2BQQVJUSUFMX1NPRlRdIH53b3Jrc3BhY2UgIjEyMjIyIjs7Ci0rRXhjZXB0aW9uOiBQY3JlMi5F cnJvciBQYXJ0aWFsLgotK3V0b3AgIyBwY3JlMl9kZmFfbWF0Y2ggfnJleCB+ZmxhZ3M6W2BQQVJU SUFMX1NPRlQ7IGBERkFfUkVTVEFSVF0gfndvcmtzcGFjZSAiMjIyMjIyMiI7OwotK0V4Y2VwdGlv bjogUGNyZTIuRXJyb3IgUGFydGlhbC4KLSt1dG9wICMgcGNyZTJfZGZhX2V4ZWMgfnJleCB+Zmxh Z3M6W2BQQVJUSUFMX1NPRlQ7IGBERkFfUkVTVEFSVF0gfndvcmtzcGFjZSAiMjIyMjIyMiI7Owot K0V4Y2VwdGlvbjogUGNyZTIuRXJyb3IgUGFydGlhbC4KLSt1dG9wICMgcGNyZTJfZGZhX2V4ZWMg fnJleCB+ZmxhZ3M6W2BQQVJUSUFMX1NPRlQ7IGBERkFfUkVTVEFSVF0gfndvcmtzcGFjZSAiMjIz eHh4eCI7OwotKy0gOiBpbnQgYXJyYXkgPSBbfDA7IDM7IDB8XQotK2BgYAotKwotK1JlZmVyIHRv IHRoZSBgcGNyZTJfZGZhX2V4ZWNgIGRvY3VtZW50YXRpb24gYW5kIHRoZSBgZGZhX3Jlc3RhcnRg IGV4YW1wbGUgZm9yCi0rbW9yZSBpbmZvcm1hdGlvbi4KLSsKLSsjIyBDb250YWN0IEluZm9ybWF0 aW9uIGFuZCBDb250cmlidXRpbmcKLSsKLStTdWJtaXQgYnVnIHJlcG9ydHMsIGZlYXR1cmUgcmVx dWVzdHMsIGFuZCBjb250cmlidXRpb25zIHZpYSB0aGUKLStbR2l0SHViIGlzc3VlIHRyYWNrZXJd KGh0dHBzOi8vZ2l0aHViLmNvbS9jYW1scDUvcGNyZTItb2NhbWwvaXNzdWVzKS4KLSsKLStGb3Ig dGhlIGxhdGVzdCBpbmZvcm1hdGlvbiwgdmlzaXQ6IDxodHRwczovL2dpdGh1Yi5jb20vY2FtbHA1 L3BjcmUyLW9jYW1sPgotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZHVu ZSBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZHVuZQotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAwMC4uM2VkYWEwODJiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVz L3BjcmUyL3BjcmUyLW9jYW1sL2R1bmUKLUBAIC0wLDAgKzEsOSBAQAotKyhlbnYKLSsgKGRldgot KyAgKGZsYWdzCi0rICAgKDpzdGFuZGFyZCAtdyAtOSAtcHJpbmNpcGFsKSkKLSsgIChjX2ZsYWdz Ci0rICAgKDpzdGFuZGFyZCAtV2FsbCAtcGVkYW50aWMgLVdleHRyYSAtV3VudXNlZCkpKQotKyAo cmVsZWFzZQotKyAgKG9jYW1sb3B0X2ZsYWdzCi0rICAgKDpzdGFuZGFyZCAtTzMpKSkpCi1kaWZm IC0tZ2l0IGEvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9kdW5lLXByb2plY3QgYi9idW5kbGVz L3BjcmUyL3BjcmUyLW9jYW1sL2R1bmUtcHJvamVjdAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAwMC4uMjYzNWE2NmEyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVzL3Bj cmUyL3BjcmUyLW9jYW1sL2R1bmUtcHJvamVjdAotQEAgLTAsMCArMSwzMiBAQAotKyhsYW5nIGR1 bmUgMi43KQotKwotKyhuYW1lIHBjcmUyKQotKwotKyh2ZXJzaW9uIDguMC40KQotKwotKyhnZW5l cmF0ZV9vcGFtX2ZpbGVzIHRydWUpCi0rCi0rKHNvdXJjZQotKyAoZ2l0aHViIGNhbWxwNS9wY3Jl Mi1vY2FtbCkpCi0rCi0rKGxpY2Vuc2UgIkxHUEwtMi4xLW9yLWxhdGVyIFdJVEggT0NhbWwtTEdQ TC1saW5raW5nLWV4Y2VwdGlvbiIpCi0rCi0rKGhvbWVwYWdlICJodHRwczovL2dpdGh1Yi5jb20v Y2FtbHA1L3BjcmUyLW9jYW1sIikKLSsKLSsobWFpbnRhaW5lcnMgIkNoZXQgTXVydGh5IDxjaGV0 c2t5QGdtYWlsLmNvbT4iKQotKwotKyhhdXRob3JzICJNYXJrdXMgTW90dGwgPG1hcmt1cy5tb3R0 bEBnbWFpbC5jb20+IikKLSsKLSsocGFja2FnZQotKyAobmFtZSBwY3JlMikKLSsgKHN5bm9wc2lz Ci0rICAgIkJpbmRpbmdzIHRvIHRoZSBQZXJsIENvbXBhdGliaWxpdHkgUmVndWxhciBFeHByZXNz aW9ucyBsaWJyYXJ5ICh2ZXJzaW9uIDIpIikKLSsgKGRlc2NyaXB0aW9uCi0rICAgInBjcmUyLW9j YW1sIG9mZmVycyBsaWJyYXJ5IGZ1bmN0aW9ucyBmb3Igc3RyaW5nIHBhdHRlcm4gbWF0Y2hpbmcg YW5kXG5zdWJzdGl0dXRpb24sIHNpbWlsYXIgdG8gdGhlIGZ1bmN0aW9uYWxpdHkgb2ZmZXJlZCBi eSB0aGUgUGVybCBsYW5ndWFnZS4iKQotKyAoZGVwZW5kcwotKyAgKG9jYW1sCi0rICAgKD49IDQu MDgpKQotKyAgZHVuZS1jb21waWxlZGIKLSsgIGR1bmUtY29uZmlndXJhdG9yCi0rICAoY29uZi1s aWJwY3JlMi04IDpidWlsZCkKLSsgIChvdW5pdDIgOndpdGgtdGVzdCkpKQotZGlmZiAtLWdpdCBh L2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvTWFrZWZpbGUgYi9idW5kbGVzL3Bj cmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVzL01ha2VmaWxlCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMDAwLi4yOWRiYmYwYTQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2J1bmRsZXMv cGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvTWFrZWZpbGUKLUBAIC0wLDAgKzEsOSBAQAotK1RB UkdFVFMgPSAkKGFkZHN1ZmZpeCAuYmMsIGNsb2MgY291bnRfaGFzaCBkZmFfcmVzdGFydCBwY3Jl MmdyZXAgc3Vic3QpCi0rCi0rLlBIT05ZOiBhbGwgY2xlYW4KLSsKLSthbGw6Ci0rCUBkdW5lIGJ1 aWxkICQoVEFSR0VUUykKLSsKLStjbGVhbjoKLSsJQGR1bmUgY2xlYW4KLWRpZmYgLS1naXQgYS9i dW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVzL1JFQURNRS5tZCBiL2J1bmRsZXMvcGNy ZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvUkVBRE1FLm1kCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMDAwLi5kODMyZjA0MmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2J1bmRsZXMv cGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvUkVBRE1FLm1kCi1AQCAtMCwwICsxLDQ4IEBACi0r IyBFeGFtcGxlcwotKwotKyMjIGBjbG9jYAotKwotK1RoaXMgcHJvZ3JhbSByZWFkcyBDIHNvdXJj ZSBjb2RlIGZyb20gYHN0ZGluYCBhbmQgb3V0cHV0cyBpdCB0byBgc3Rkb3V0YCB3aXRoCi0rY29t bWVudHMgYW5kIGVtcHR5IGxpbmVzIHJlbW92ZWQuIEl0J3MgdXNlZnVsIGZvciBjb3VudGluZyBs aW5lcyBvZiBjb2RlLgotKwotKyMjIGBjb3VudF9oYXNoYAotKwotK1RoaXMgcHJvZ3JhbSByZWFk cyB0ZXh0IGZyb20gYHN0ZGluYCwgY291bnRzIG9jY3VycmVuY2VzIG9mIGlkZW50aWNhbCB3b3Jk cwotK3NlcGFyYXRlZCBieSB3aGl0ZXNwYWNlLCBhbmQgcHJpbnRzIHRoZSByZXN1bHQgdG8gYHN0 ZG91dGAuCi0rCi0rIyMgYHBjcmUyZ3JlcGAKLSsKLStBIGdyZXAtbGlrZSBwcm9ncmFtIHVzaW5n IFBlcmwtY29tcGF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zLiBTdGFydCB0aGUgcHJvZ3JhbQot K3dpdGggdGhlIGAtaGVscGAgYXJndW1lbnQgdG8gc2VlIGl0cyBmdW5jdGlvbmFsaXR5LgotKwot KyMjIGBzdWJzdGAKLSsKLStTdWJzdGl0dXRlcyB0ZXh0IGluIGZpbGVzIHVzaW5nIFBlcmwtY29t cGF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIGFuZAotK3N1YnN0aXR1dGlvbiBwYXR0ZXJucy4g U3RhcnQgdGhlIHByb2dyYW0gd2l0aCB0aGUgYC1oZWxwYCBhcmd1bWVudCB0byBzZWUgaXRzCi0r ZnVuY3Rpb25hbGl0eS4KLSsKLStFeGFtcGxlIGludm9jYXRpb246Ci0rCi0rYGBgc2gKLStzdWJz dCAnKFtUdF0pZXJtY2FwJyAnJDFlcm1DYXAnIDwgL2V0Yy90ZXJtY2FwCi0rYGBgCi0rCi0rIyMg YGRmYV9yZXN0YXJ0YAotKwotK1Rlc3RzIHRoZSBERkEgbWF0Y2hpbmcgZnVuY3Rpb24gYW5kIGl0 cyBwYXJ0aWFsIG1hdGNoIHJlc3RhcnQgY2FwYWJpbGl0eS4gR2l2ZW4KLSthIHBhdHRlcm4sIGl0 IGFjY2VwdHMgaW5wdXQgaW5jcmVtZW50YWxseSwgcmVzdGFydGluZyB0aGUgcHJpb3IgcGFydGlh bCBtYXRjaAotK3VudGlsIHRoZSBwYXR0ZXJuIGVpdGhlciBzdWNjZWVkcyBvciBmYWlscy4KLSsK LStFeGFtcGxlIGludGVyYWN0aW9uOgotKwotK2BgYHNoCi0rJCBkZmFfcmVzdGFydC5leGUgJ2Fi YzEyKzMnCi0rPiBhYmMKLStwYXJ0aWFsIG1hdGNoLCBwcm92aWRlIG1vcmUgaW5wdXQ6Ci0rPiAx MjIyMjIKLStwYXJ0aWFsIG1hdGNoLCBwcm92aWRlIG1vcmUgaW5wdXQ6Ci0rPiAyMjIKLStwYXJ0 aWFsIG1hdGNoLCBwcm92aWRlIG1vcmUgaW5wdXQ6Ci0rPiAzCi0rbWF0Y2ggY29tcGxldGVkOiAi W3wwOzE7MHxdIgotK2BgYAotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4 YW1wbGVzL2Nsb2MubWwgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVzL2Nsb2Mu bWwKLXNpbWlsYXJpdHkgaW5kZXggOTclCi1yZW5hbWUgZnJvbSBidW5kbGVzL3BjcmUvcGNyZS1v Y2FtbC9leGFtcGxlcy9jbG9jLm1sCi1yZW5hbWUgdG8gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2Ft bC9leGFtcGxlcy9jbG9jLm1sCi1pbmRleCAyN2M3ZmQzYTguLmY0ODM3NjI1MCAxMDA2NDQKLS0t LSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVzL2Nsb2MubWwKLSsrKyBiL2J1bmRs ZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvY2xvYy5tbAotQEAgLTEsNCArMSw0IEBACi0t b3BlbiBQY3JlCi0rb3BlbiBQY3JlMgotIAotIGxldCByZWFkX3dob2xlX2NoYW5uZWwgY2ggPQot ICAgbGV0IHNpemUgPSA0MDk2IGluCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2Nh bWwvZXhhbXBsZXMvY291bnRfaGFzaC5tbCBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhh bXBsZXMvY291bnRfaGFzaC5tbAotc2ltaWxhcml0eSBpbmRleCA2MiUKLXJlbmFtZSBmcm9tIGJ1 bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVzL2NvdW50X2hhc2gubWwKLXJlbmFtZSB0byBi dW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVzL2NvdW50X2hhc2gubWwKLWluZGV4IDk4 ZDE2YmM1MC4uNDcxMThiNjg0IDEwMDY0NAotLS0tIGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwv ZXhhbXBsZXMvY291bnRfaGFzaC5tbAotKysrIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9l eGFtcGxlcy9jb3VudF9oYXNoLm1sCi1AQCAtMSw2ICsxLDggQEAKLSBvcGVuIEhhc2h0YmwKLSAK LSBsZXQgaGFzaCA9IGNyZWF0ZSAxOTczCi0tbGV0IGFkZF9zdHJpbmcgcyA9IHRyeSBpbmNyIChm aW5kIGhhc2ggcykgd2l0aCBOb3RfZm91bmQgLT4gYWRkIGhhc2ggcyAocmVmIDEpOzsKLS1QY3Jl LmZvcmVhY2hfbGluZSAoZnVuIGxpbmUgLT4gTGlzdC5pdGVyIGFkZF9zdHJpbmcgKFBjcmUuc3Bs aXQgbGluZSkpOwotK2xldCBhZGRfc3RyaW5nIHMgPSB0cnkgaW5jciAoZmluZCBoYXNoIHMpIHdp dGggTm90X2ZvdW5kIC0+IGFkZCBoYXNoIHMgKHJlZiAxKQotKzs7Ci0rCi0rUGNyZTIuZm9yZWFj aF9saW5lIChmdW4gbGluZSAtPiBMaXN0Lml0ZXIgYWRkX3N0cmluZyAoUGNyZTIuc3BsaXQgbGlu ZSkpOwotIGl0ZXIgKGZ1biBrIHYgLT4gUHJpbnRmLnByaW50ZiAiJTRkXHQlc1xuIiAhdiBrKSBo YXNoCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9leGFtcGxlcy9kZmFf cmVzdGFydC5tbCBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvZGZhX3Jlc3Rh cnQubWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLjg4MmExZjM1NQot LS0tIC9kZXYvbnVsbAotKysrIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9leGFtcGxlcy9k ZmFfcmVzdGFydC5tbAotQEAgLTAsMCArMSw0MCBAQAotK29wZW4gUGNyZTIKLStvcGVuIFByaW50 ZgotKwotK2xldCBzaG93X2FycmF5IGFyciA9Ci0rICBBcnJheS5tYXAgc3RyaW5nX29mX2ludCBh cnIKLSsgIHw+IEFycmF5LnRvX2xpc3QgfD4gU3RyaW5nLmNvbmNhdCAiOyIgfD4gc3ByaW50ZiAi W3wlc3xdIgotKwotK2xldCBuZXdfd29ya3NwYWNlICgpID0gQXJyYXkubWFrZSA1MCAwCi0rCi0r bGV0ICgpID0KLSsgIGxldCBwYXQgPQotKyAgICBpZiBBcnJheS5sZW5ndGggU3lzLmFyZ3YgPiAx IHRoZW4gU3lzLmFyZ3YuKDEpCi0rICAgIGVsc2UgKAotKyAgICAgIGVwcmludGYgIiVzOiBleHBl Y3RlZCBwYXR0ZXJuIGFyZ3VtZW50XG4iIFN5cy5hcmd2LigwKTsKLSsgICAgICBleGl0IDEpCi0r ICBpbgotKyAgbGV0IHJleCA9IHJlZ2V4cCBwYXQgaW4KLSsgIGxldCByZWMgZmluZF9tYXRjaCBm bGFncyB3b3Jrc3BhY2UgPQotKyAgICBwcmludF9zdHJpbmcgIj4gIjsKLSsgICAgbGV0IGxpbmUs IGVvZiA9Ci0rICAgICAgdHJ5IChyZWFkX2xpbmUgKCksIGZhbHNlKSB3aXRoIEVuZF9vZl9maWxl IC0+ICgiIiwgdHJ1ZSkKLSsgICAgaW4KLSsgICAgbWF0Y2ggcGNyZTJfZGZhX21hdGNoIH5yZXgg fmZsYWdzIH53b3Jrc3BhY2UgbGluZSB3aXRoCi0rICAgIHwgcmVzIC0+Ci0rICAgICAgICBwcmlu dGYgIm1hdGNoIGNvbXBsZXRlZDogJVNcbiIgKHNob3dfYXJyYXkgcmVzKTsKLSsgICAgICAgIGlm IG5vdCBlb2YgdGhlbiAoCi0rICAgICAgICAgIHByaW50ZiAiXG4gKmlucHV0ICYgd29ya3NwYWNl IHJlc2V0KlxuIjsKLSsgICAgICAgICAgZmluZF9tYXRjaCBbIGBQQVJUSUFMX1NPRlQgXSAobmV3 X3dvcmtzcGFjZSAoKSkpCi0rICAgIHwgZXhjZXB0aW9uIEVycm9yIFBhcnRpYWwgLT4KLSsgICAg ICAgIHByaW50ZiAicGFydGlhbCBtYXRjaCwgcHJvdmlkZSBtb3JlIGlucHV0OlxuIjsKLSsgICAg ICAgIGZpbmRfbWF0Y2ggWyBgREZBX1JFU1RBUlQ7IGBQQVJUSUFMX1NPRlQgXSB3b3Jrc3BhY2UK LSsgICAgfCBleGNlcHRpb24gZXhuIC0+Ci0rICAgICAgICAobWF0Y2ggZXhuIHdpdGgKLSsgICAg ICAgIHwgTm90X2ZvdW5kIC0+IGVwcmludGYgInBhdHRlcm4gbWF0Y2ggZmFpbGVkXG4iCi0rICAg ICAgICB8IEVycm9yIFdvcmtzcGFjZVNpemUgLT4gZXByaW50ZiAibmVlZCBsYXJnZXIgd29ya3Nw YWNlIHZlY3RvclxuIgotKyAgICAgICAgfCBFcnJvciAoSW50ZXJuYWxFcnJvciBzKSAtPiBlcHJp bnRmICJpbnRlcm5hbCBlcnJvcjogJXNcbiIgcwotKyAgICAgICAgfCBleG4gLT4gcmFpc2UgZXhu KTsKLSsgICAgICAgIGV4aXQgMQotKyAgaW4KLSsgIGZpbmRfbWF0Y2ggWyBgUEFSVElBTF9TT0ZU IF0gKG5ld193b3Jrc3BhY2UgKCkpCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlMi9wY3JlMi1v Y2FtbC9leGFtcGxlcy9kdW5lIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9leGFtcGxlcy9k dW5lCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi42MTJjNjBjMDQKLS0t LSAvZGV2L251bGwKLSsrKyBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvZHVu ZQotQEAgLTAsMCArMSw0IEBACi0rKGV4ZWN1dGFibGVzCi0rIChuYW1lcyBjbG9jIGNvdW50X2hh c2ggcGNyZTJncmVwIHN1YnN0IGRmYV9yZXN0YXJ0KQotKyAobGlicmFyaWVzIHBjcmUyKQotKyAo bW9kZXMgYnl0ZSBleGUpKQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwv ZXhhbXBsZXMvcGNyZTJncmVwLm1sIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9leGFtcGxl cy9wY3JlMmdyZXAubWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLjVh OGUwMmU0MQotLS0tIC9kZXYvbnVsbAotKysrIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9l eGFtcGxlcy9wY3JlMmdyZXAubWwKLUBAIC0wLDAgKzEsMTI4IEBACi0rb3BlbiBQY3JlMgotK29w ZW4gUHJpbnRmCi0rCi0rbGV0IGZpbGVuYW1lcyA9IHJlZiB0cnVlCi0rYW5kIGZpbGVuYW1lc19v bmx5ID0gcmVmIGZhbHNlCi0rYW5kIGNvdW50X29ubHkgPSByZWYgZmFsc2UKLSthbmQgaW52ZXJ0 ID0gcmVmIGZhbHNlCi0rYW5kIG51bWJlciA9IHJlZiBmYWxzZQotK2FuZCBzaWxlbnQgPSByZWYg ZmFsc2UKLSthbmQgd2hvbGVfbGluZXMgPSByZWYgZmFsc2UKLSsKLStsZXQgcGFyc2VfYXJncyAo KSA9Ci0rICBsZXQgaWdub3JlX2Nhc2UgPSByZWYgZmFsc2UgYW5kIHBhdCA9IHJlZiBOb25lIGFu ZCBmaWxlcyA9IHJlZiBbXSBpbgotKwotKyAgbGV0IGMgPSAoIi1jIiwgQXJnLlNldCBjb3VudF9v bmx5LCAiQ291bnQgbGluZXMgb25seS4iKQotKyAgYW5kIGggPQotKyAgICAoICItaCIsCi0rICAg ICAgQXJnLkNsZWFyIGZpbGVuYW1lcywKLSsgICAgICAiU3VwcHJlc3MgcHJpbnRpbmcgb2YgZmls ZW5hbWVzIHdoZW4gc2VhcmNoaW5nIG11bHRpcGxlIGZpbGVzLiIgKQotKyAgYW5kIGkgPSAoIi1p IiwgQXJnLlNldCBpZ25vcmVfY2FzZSwgIklnbm9yZSBjYXNlLiIpCi0rICBhbmQgbCA9Ci0rICAg ICggIi1sIiwKLSsgICAgICBBcmcuU2V0IGZpbGVuYW1lc19vbmx5LAotKyAgICAgICJPbmx5IHBy aW50IG5hbWVzIG9mIGZpbGVzIGNvbnRhaW5pbmcgbWF0Y2hpbmcgbGluZXMgKG9uY2UpLiIgKQot KyAgYW5kIG4gPQotKyAgICAoIi1uIiwgQXJnLlNldCBudW1iZXIsICJQcmVjZWRlIGVhY2ggbGlu ZSBieSBpdHMgbGluZSBudW1iZXIgaW4gdGhlIGZpbGUuIikKLSsgIGFuZCBzID0KLSsgICAgKCAi LXMiLAotKyAgICAgIEFyZy5TZXQgc2lsZW50LAotKyAgICAgICJEaXNwbGF5IG5vdGhpbmcgYnV0 IGVycm9yIG1lc3NhZ2VzLiBFeGl0IHN0YXR1cyBpbmRpY2F0ZXMgbWF0Y2guIiApCi0rICBhbmQg diA9Ci0rICAgICgiLXYiLCBBcmcuU2V0IGludmVydCwgIkludmVydCBzZW5zZSBvZiB0aGUgbWF0 Y2g6IGZpbmRzIG5vbm1hdGNoaW5nIGxpbmVzLiIpCi0rICBhbmQgeCA9Ci0rICAgICggIi14IiwK LSsgICAgICBBcmcuU2V0IHdob2xlX2xpbmVzLAotKyAgICAgICJGb3JjZSB0aGUgcGF0dGVybiB0 byBiZSBhbmNob3JlZCBhbmQgdG8gbWF0Y2ggdGhlIGVudGlyZSBsaW5lLiIgKQotKyAgYW5kIHVz YWdlID0KLSsgICAgIlVzYWdlOiBwY3JlMmdyZXAgW29wdGlvbnNdIHBhdHRlcm4gW2ZpbGVdIC4u LlxuXG5cCi0rICAgICBTZWFyY2hlcyBmaWxlcyBmb3IgY2hhcmFjdGVyIHBhdHRlcm5zLlxuIgot KyAgYW5kIGFub25fYXJnIGFyZyA9Ci0rICAgIGlmICFwYXQgPSBOb25lIHRoZW4gcGF0IDo9IFNv bWUgYXJnIGVsc2UgZmlsZXMgOj0gYXJnIDo6ICFmaWxlcwotKyAgaW4KLSsKLSsgIGxldCBhcmdz ID0gWyBjOyBoOyBpOyBsOyBuOyBzOyB2OyB4IF0gaW4KLSsgIEFyZy5wYXJzZSBhcmdzIGFub25f YXJnIHVzYWdlOwotKwotKyAgbGV0IGZsYWdzID0KLSsgICAgbGV0IGZsYWdfbGlzdCA9IGlmICFp Z25vcmVfY2FzZSB0aGVuIFsgYENBU0VMRVNTIF0gZWxzZSBbXSBpbgotKyAgICBpZiAhd2hvbGVf bGluZXMgdGhlbiBgQU5DSE9SRUQgOjogZmxhZ19saXN0IGVsc2UgZmxhZ19saXN0Ci0rICBpbgot KwotKyAgbGV0IHJleCA9Ci0rICAgIG1hdGNoICFwYXQgd2l0aAotKyAgICB8IFNvbWUgcGF0IC0+ IHJlZ2V4cCB+ZmxhZ3MgcGF0Ci0rICAgIHwgTm9uZSAtPgotKyAgICAgICAgZXByaW50ZiAiJXM6 IG5vdCBlbm91Z2ggYXJndW1lbnRzIVxuIiBTeXMuYXJndi4oMCk7Ci0rICAgICAgICBBcmcudXNh Z2UgYXJncyB1c2FnZTsKLSsgICAgICAgIGV4aXQgMgotKyAgaW4KLSsgIChyZXgsIExpc3QucmV2 ICFmaWxlcykKLSsKLStsZXQgXyA9Ci0rICBsZXQgcmV4LCBmaWxlcyA9IHBhcnNlX2FyZ3MgKCkg YW5kIHJmbCA9IHJmbGFncyBbXSBpbgotKwotKyAgbGV0IF8sIG92ZWN0b3IgPSBtYWtlX292ZWN0 b3IgcmV4IGluCi0rCi0rICBsZXQgcGNyZTJncmVwIGZpbGUgbmFtZSA9Ci0rICAgIGxldCByZXRf Y29kZSA9IHJlZiAxCi0rICAgIGFuZCBsaW5lbnVtYmVyID0gcmVmIDAKLSsgICAgYW5kIGNvdW50 ID0gcmVmIDAKLSsgICAgYW5kIHN0ZGluX3ByaW50X25hbWUgKCkgPQotKyAgICAgIG1hdGNoIG5h bWUgd2l0aAotKyAgICAgIHwgU29tZSBmaWxlbmFtZSAtPiBwcmludF9lbmRsaW5lIGZpbGVuYW1l Ci0rICAgICAgfCBOb25lIC0+IHByaW50X2VuZGxpbmUgIjxzdGRpbj4iCi0rICAgIGFuZCBwcmlu dF9uYW1lICgpID0KLSsgICAgICBtYXRjaCBuYW1lIHdpdGggU29tZSBuYW1lIC0+IHByaW50ZiAi JXM6IiBuYW1lIHwgTm9uZSAtPiAoKQotKyAgICBpbgotKwotKyAgICBsZXQgdHJ5X21hdGNoIGxp bmUgPQotKyAgICAgIGxldCBtYXRjaGVkID0KLSsgICAgICAgIHRyeQotKyAgICAgICAgICB1bnNh ZmVfcGNyZTJfbWF0Y2ggcmZsIHJleCB+cG9zOjAgfnN1Ympfc3RhcnQ6MCB+c3ViajpsaW5lIG92 ZWN0b3IKLSsgICAgICAgICAgICBOb25lOwotKyAgICAgICAgICBpZiAhd2hvbGVfbGluZXMgJiYg b3ZlY3Rvci4oMSkgPD4gU3RyaW5nLmxlbmd0aCBsaW5lIHRoZW4gZmFsc2UKLSsgICAgICAgICAg ZWxzZSB0cnVlCi0rICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZQotKyAgICAgIGluCi0r Ci0rICAgICAgaW5jciBsaW5lbnVtYmVyOwotKwotKyAgICAgIGlmIG1hdGNoZWQgPD4gIWludmVy dCB0aGVuICgKLSsgICAgICAgIGlmICFjb3VudF9vbmx5IHRoZW4gaW5jciBjb3VudAotKyAgICAg ICAgZWxzZSBpZiAhZmlsZW5hbWVzX29ubHkgdGhlbiAoCi0rICAgICAgICAgIHN0ZGluX3ByaW50 X25hbWUgKCk7Ci0rICAgICAgICAgIHJhaXNlIEV4aXQpCi0rICAgICAgICBlbHNlIGlmICFzaWxl bnQgdGhlbiByYWlzZSBFeGl0Ci0rICAgICAgICBlbHNlICgKLSsgICAgICAgICAgcHJpbnRfbmFt ZSAoKTsKLSsgICAgICAgICAgaWYgIW51bWJlciB0aGVuIHByaW50ZiAiJWQ6IiAhbGluZW51bWJl cjsKLSsgICAgICAgICAgcHJpbnRfZW5kbGluZSBsaW5lKTsKLSsgICAgICAgIHJldF9jb2RlIDo9 IDApCi0rICAgIGluCi0rCi0rICAgIHRyeQotKyAgICAgIGZvcmVhY2hfbGluZSB+aWM6ZmlsZSB0 cnlfbWF0Y2g7Ci0rICAgICAgaWYgIWNvdW50X29ubHkgdGhlbiAoCi0rICAgICAgICBwcmludF9u YW1lICgpOwotKyAgICAgICAgcHJpbnRmICIlZFxuIiAhY291bnQpOwotKyAgICAgICFyZXRfY29k ZQotKyAgICB3aXRoIEV4aXQgLT4gMAotKyAgaW4KLSsKLSsgIGlmIGZpbGVzID0gW10gdGhlbiBl eGl0IChwY3JlMmdyZXAgc3RkaW4gTm9uZSk7Ci0rCi0rICBpZiBMaXN0Lmxlbmd0aCBmaWxlcyA9 IDEgdGhlbiBmaWxlbmFtZXMgOj0gZmFsc2U7Ci0rICBpZiAhZmlsZW5hbWVzX29ubHkgdGhlbiBm aWxlbmFtZXMgOj0gdHJ1ZTsKLSsKLSsgIGxldCBjb2xsZWN0IHJldF9jb2RlIGZpbGVuYW1lID0K LSsgICAgdHJ5Ci0rICAgICAgbGV0IGZpbGUgPSBvcGVuX2luIGZpbGVuYW1lIGluCi0rICAgICAg bGV0IGZyYyA9IHBjcmUyZ3JlcCBmaWxlIChpZiAhZmlsZW5hbWVzIHRoZW4gU29tZSBmaWxlbmFt ZSBlbHNlIE5vbmUpIGluCi0rICAgICAgY2xvc2VfaW4gZmlsZTsKLSsgICAgICBpZiBmcmMgPSAw ICYmIHJldF9jb2RlID0gMSB0aGVuIDAgZWxzZSByZXRfY29kZQotKyAgICB3aXRoIFN5c19lcnJv ciBtc2cgLT4KLSsgICAgICBwcmVycl9lbmRsaW5lIG1zZzsKLSsgICAgICAyCi0rICBpbgotKyAg ZXhpdCAoTGlzdC5mb2xkX2xlZnQgY29sbGVjdCAxIGZpbGVzKQotZGlmZiAtLWdpdCBhL2J1bmRs ZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvc3Vic3QubWwgYi9idW5kbGVzL3BjcmUyL3Bj cmUyLW9jYW1sL2V4YW1wbGVzL3N1YnN0Lm1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMDAwLi5kOWVjNjFjN2EKLS0tLSAvZGV2L251bGwKLSsrKyBiL2J1bmRsZXMvcGNyZTIv cGNyZTItb2NhbWwvZXhhbXBsZXMvc3Vic3QubWwKLUBAIC0wLDAgKzEsNTcgQEAKLStvcGVuIFBj cmUyCi0rCi0rbGV0IHBhcnNlX2FyZ3MgKCkgPQotKyAgbGV0IHF1aWNrID0gcmVmIGZhbHNlCi0r ICBhbmQgZmlyc3QgPSByZWYgZmFsc2UKLSsgIGFuZCBpZ25vcmVfY2FzZSA9IHJlZiBmYWxzZQot KyAgYW5kIG9mZnNldCA9IHJlZiAwCi0rICBhbmQgcGF0ID0gcmVmIE5vbmUKLSsgIGFuZCBzdWJz dHIgPSByZWYgTm9uZSBpbgotKwotKyAgbGV0IHEgPQotKyAgICAoICItcSIsCi0rICAgICAgQXJn LlNldCBxdWljaywKLSsgICAgICAiUXVpY2sgcmVwbGFjZW1lbnQuIEludGVycHJldGVzIHN1YnN0 aXR1dGlvbiBhcyBwbGFpbiB0ZXh0LiIgKQotKyAgYW5kIGYgPSAoIi1mIiwgQXJnLlNldCBmaXJz dCwgIlJlcGxhY2UgZmlyc3Qgb2NjdXJyZW5jZSBpbiBsaW5lIG9ubHkuIikKLSsgIGFuZCBpID0g KCItaSIsIEFyZy5TZXQgaWdub3JlX2Nhc2UsICJJZ25vcmUgY2FzZS4iKQotKyAgYW5kIG9mcyA9 Ci0rICAgICgiLW9mcyIsIEFyZy5JbnQgKGZ1biBuIC0+IG9mZnNldCA6PSBuKSwgIlN0YXJ0IG1h dGNoaW5nIGF0IGNvbHVtbiBuLiIpCi0rICBhbmQgdXNhZ2UgPQotKyAgICAiVXNhZ2U6IHN1YnN0 IFstcV0gWy1mXSBbLWldIFstb2ZzIG9mZnNldF0gcGF0dGVybiBzdWJzdGl0dXRpb25cblxuXAot KyAgICAgUmVhZHMgbGluZXMgZnJvbSBzdGFuZGFyZCBpbnB1dCBhbmQgcmVwbGFjZXMgb2NjdXJy ZW5jZXMgb2ZcblwKLSsgICAgIHRoZSBQRVJMLXN0eWxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBcInBh dHRlcm5cIiB3aXRoIFwic3Vic3RpdHV0aW9uXCIsXG5cCi0rICAgICBwcmludGluZyB0aGUgcmVz dWx0IHRvIHN0YW5kYXJkIG91dHB1dC5cblwKLSsgICAgIEluIGRlZmF1bHQgbW9kZSB0aGUgY29u dGVudHMgb2YgXCJzdWJzdGl0dXRpb25cIiB3aWxsIGJlIGludGVycHJldGVkXG5cCi0rICAgICBz aW1pbGFybHkgdG8gaXRzIGVxdWl2YWxlbnQgaW4gUEVSTC5cbiIKLSsgIGFuZCBhbm9uX2FyZyBh cmcgPQotKyAgICBtYXRjaCAoIXBhdCwgIXN1YnN0cikgd2l0aAotKyAgICB8IE5vbmUsIF8gLT4g cGF0IDo9IFNvbWUgYXJnCi0rICAgIHwgXywgTm9uZSAtPiBzdWJzdHIgOj0gU29tZSBhcmcKLSsg ICAgfCBfIC0+IHJhaXNlIChBcmcuQmFkICJ0b28gbWFueSBhcmd1bWVudHMhIikKLSsgIGluCi0r Ci0rICBsZXQgYXJncyA9IFsgcTsgZjsgaTsgb2ZzIF0gaW4KLSsgIEFyZy5wYXJzZSBhcmdzIGFu b25fYXJnIHVzYWdlOwotKwotKyAgbGV0IGZsYWdzID0gaWYgIWlnbm9yZV9jYXNlIHRoZW4gWyBg Q0FTRUxFU1MgXSBlbHNlIFtdIGluCi0rCi0rICBsZXQgcmV4LCBzc3RyID0KLSsgICAgbWF0Y2gg KCFwYXQsICFzdWJzdHIpIHdpdGgKLSsgICAgfCBTb21lIHJleCwgU29tZSBzc3RyIC0+IChyZWdl eHAgfmZsYWdzIHJleCwgc3N0cikKLSsgICAgfCBfIC0+Ci0rICAgICAgICBwcmVycl9lbmRsaW5l IChTeXMuYXJndi4oMCkgXiAiOiBub3QgZW5vdWdoIGFyZ3VtZW50cyEiKTsKLSsgICAgICAgIEFy Zy51c2FnZSBhcmdzIHVzYWdlOwotKyAgICAgICAgZXhpdCAxCi0rICBpbgotKwotKyAgbWF0Y2gg KCFxdWljaywgIWZpcnN0KSB3aXRoCi0rICB8IGZhbHNlLCBmYWxzZSAtPiBmdW4gcyAtPiByZXBs YWNlIH5yZXggfnBvczohb2Zmc2V0IH50ZW1wbDpzc3RyIHMKLSsgIHwgdHJ1ZSwgZmFsc2UgLT4g ZnVuIHMgLT4gcXJlcGxhY2UgfnJleCB+cG9zOiFvZmZzZXQgfnRlbXBsOnNzdHIgcwotKyAgfCBm YWxzZSwgdHJ1ZSAtPiBmdW4gcyAtPiByZXBsYWNlX2ZpcnN0IH5yZXggfnBvczohb2Zmc2V0IH50 ZW1wbDpzc3RyIHMKLSsgIHwgdHJ1ZSwgdHJ1ZSAtPiBmdW4gcyAtPiBxcmVwbGFjZV9maXJzdCB+ cmV4IH5wb3M6IW9mZnNldCB+dGVtcGw6c3N0ciBzCi0rCi0rbGV0IF8gPQotKyAgbGV0IHN1YnN0 aXR1dGUgPSBwYXJzZV9hcmdzICgpIGluCi0rICBmb3JlYWNoX2xpbmUgKGZ1biBsaW5lIC0+Ci0r ICAgICAgdHJ5IHByaW50X2VuZGxpbmUgKHN1YnN0aXR1dGUgbGluZSkKLSsgICAgICB3aXRoIElu dmFsaWRfYXJndW1lbnQgXyAtPiBwcmludF9lbmRsaW5lIGxpbmUpCi1kaWZmIC0tZ2l0IGEvYnVu ZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvTWFrZWZpbGUgYi9idW5kbGVzL3BjcmUyL3BjcmUy LW9jYW1sL2xpYi9NYWtlZmlsZQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAw MC4uZWY1ZjA3Y2ZlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9j YW1sL2xpYi9NYWtlZmlsZQotQEAgLTAsMCArMSwxNSBAQAotK1RBUkdFVFMgPSBwY3JlMi5jbWEg bGlicGNyZTJfc3R1YnMuYQotKwotKy5QSE9OWTogYWxsIGNsZWFuIGNsZWFuLWNvbXBpbGUtY29t bWFuZHMKLSsKLSthbGw6IGNvbXBpbGVfY29tbWFuZHMuanNvbgotKwlAZHVuZSBidWlsZCAkKFRB UkdFVFMpCi0rCi0rY2xlYW46IGNsZWFuLWNvbXBpbGUtY29tbWFuZHMKLSsJQGR1bmUgY2xlYW4K LSsKLStjb21waWxlX2NvbW1hbmRzLmpzb246IGNvbmZpZy9kdW5lIGNvbmZpZy9kaXNjb3Zlci5t bCAkKHdpbGRjYXJkICouYyAqLmgpCi0rCUBkdW5lIHJ1bGVzIHwgZHVuZS1jb21waWxlZGIKLSsK LStjbGVhbi1jb21waWxlLWNvbW1hbmRzOgotKwlAcm0gLWYgY29tcGlsZV9jb21tYW5kcy5qc29u Ci1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL2NvbmZpZy9NYWtlZmls ZSBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL2NvbmZpZy9NYWtlZmlsZQotc2ltaWxh cml0eSBpbmRleCAxMDAlCi1yZW5hbWUgZnJvbSBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMv Y29uZmlnL01ha2VmaWxlCi1yZW5hbWUgdG8gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIv Y29uZmlnL01ha2VmaWxlCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9s aWIvY29uZmlnL2Rpc2NvdmVyLm1sIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvY29u ZmlnL2Rpc2NvdmVyLm1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi45 NDUyNGM2NWMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwv bGliL2NvbmZpZy9kaXNjb3Zlci5tbAotQEAgLTAsMCArMSwxNCBAQAotK2xldCAoKSA9Ci0rICBs ZXQgbW9kdWxlIEMgPSBDb25maWd1cmF0b3IuVjEgaW4KLSsgIEMubWFpbiB+bmFtZToicGNyZTIi IChmdW4gYyAtPgotKyAgICAgIGxldCBkZWZhdWx0IDogQy5Qa2dfY29uZmlnLnBhY2thZ2VfY29u ZiA9Ci0rICAgICAgICB7IGxpYnMgPSBbICItbHBjcmUyLTgiIF07IGNmbGFncyA9IFtdIH0KLSsg ICAgICBpbgotKyAgICAgIGxldCBjb25mID0KLSsgICAgICAgIG1hdGNoIEMuUGtnX2NvbmZpZy5n ZXQgYyB3aXRoCi0rICAgICAgICB8IE5vbmUgLT4gZGVmYXVsdAotKyAgICAgICAgfCBTb21lIHBj IC0+Ci0rICAgICAgICAgICAgT3B0aW9uLnZhbHVlIChDLlBrZ19jb25maWcucXVlcnkgcGMgfnBh Y2thZ2U6ImxpYnBjcmUyLTgiKSB+ZGVmYXVsdAotKyAgICAgIGluCi0rICAgICAgQy5GbGFncy53 cml0ZV9zZXhwICJjX2ZsYWdzLnNleHAiIGNvbmYuY2ZsYWdzOwotKyAgICAgIEMuRmxhZ3Mud3Jp dGVfc2V4cCAiY19saWJyYXJ5X2ZsYWdzLnNleHAiIGNvbmYubGlicykKLWRpZmYgLS1naXQgYS9i dW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9jb25maWcvZHVuZSBiL2J1bmRsZXMvcGNyZTIv cGNyZTItb2NhbWwvbGliL2NvbmZpZy9kdW5lCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMDAwLi5lYzFlYjY3ZjYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2J1bmRsZXMvcGNyZTIv cGNyZTItb2NhbWwvbGliL2NvbmZpZy9kdW5lCi1AQCAtMCwwICsxLDQgQEAKLSsoZXhlY3V0YWJs ZXMKLSsgKG5hbWVzIGRpc2NvdmVyKQotKyAobGlicmFyaWVzIGR1bmUuY29uZmlndXJhdG9yKQot KyAobW9kZXMgYnl0ZSBleGUpKQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2Nh bWwvbGliL2R1bmUgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9kdW5lCi1uZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi4yMmU1NzBmMDcKLS0tLSAvZGV2L251bGwK LSsrKyBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL2R1bmUKLUBAIC0wLDAgKzEsMTgg QEAKLSsobGlicmFyeQotKyAocHVibGljX25hbWUgcGNyZTIpCi0rIChmb3JlaWduX3N0dWJzCi0r ICAobGFuZ3VhZ2UgYykKLSsgIChuYW1lcyBwY3JlMl9zdHVicykKLSsgIChmbGFncwotKyAgICg6 c3RhbmRhcmQpCi0rICAgKDppbmNsdWRlIGNfZmxhZ3Muc2V4cCkKLSsgICAtTzIKLSsgICAtZlBJ QwotKyAgIC1EUElDKSkKLSsgKGNfbGlicmFyeV9mbGFncwotKyAgKDppbmNsdWRlIGNfbGlicmFy eV9mbGFncy5zZXhwKSkpCi0rCi0rKHJ1bGUKLSsgKHRhcmdldHMgY19mbGFncy5zZXhwIGNfbGli cmFyeV9mbGFncy5zZXhwKQotKyAoYWN0aW9uCi0rICAocnVuIC4vY29uZmlnL2Rpc2NvdmVyLmV4 ZSkpKQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL3BjcmUyLm1s IGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvcGNyZTIubWwKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmI4ZTJjM2M0MQotLS0tIC9kZXYvbnVsbAotKysrIGIv YnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvcGNyZTIubWwKLUBAIC0wLDAgKzEsMTIzMSBA QAotKygqIFBDUkUyLU9DQU1MIC0gUGVybCBDb21wYXRpYmlsaXR5IFJlZ3VsYXIgRXhwcmVzc2lv bnMgZm9yIE9DYW1sCi0rCi0rICAgQ29weXJpZ2h0IMKpIDE5OTktIE1hcmt1cyBNb3R0bCA8bWFy a3VzLm1vdHRsQGdtYWlsLmNvbT4KLSsKLSsgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgotKyAgIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAotKyAgIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTCi0rICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQotKyAgIGRldGFpbHMuCi0rCi0rICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSsgICA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBICopCi0rCi0rKCogUHVi bGljIGV4Y2VwdGlvbnMgYW5kIHRoZWlyIHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSBDIHJ1bnRpbWUg KikKLSsKLStvcGVuIFByaW50ZgotKwotK3R5cGUgZXJyb3IgPQotKyAgfCBQYXJ0aWFsCi0rICB8 IEJhZFBhdHRlcm4gb2Ygc3RyaW5nICogaW50Ci0rICB8IEJhZFVURgotKyAgfCBCYWRVVEZPZmZz ZXQKLSsgIHwgTWF0Y2hMaW1pdAotKyAgfCBEZXB0aExpbWl0Ci0rICB8IFdvcmtzcGFjZVNpemUK LSsgIHwgSW50ZXJuYWxFcnJvciBvZiBzdHJpbmcKLSsKLStsZXQgc3RyaW5nX29mX2Vycm9yID0g ZnVuY3Rpb24KLSsgIHwgUGFydGlhbCAtPiAiUGFydGlhbCIKLSsgIHwgQmFkUGF0dGVybiAobXNn LCBwb3MpIC0+IHNwcmludGYgIlBjcmUyLkJhZFBhdHRlcm4oJVMsIHBvcz0laSkiIG1zZyBwb3MK LSsgIHwgQmFkVVRGIC0+ICJCYWRVVEYiCi0rICB8IEJhZFVURk9mZnNldCAtPiAiQmFkVVRGT2Zm c2V0IgotKyAgfCBNYXRjaExpbWl0IC0+ICJNYXRjaExpbWl0IgotKyAgfCBEZXB0aExpbWl0IC0+ ICJEZXB0aExpbWl0IgotKyAgfCBXb3Jrc3BhY2VTaXplIC0+ICJXb3Jrc3BhY2VTaXplIgotKyAg fCBJbnRlcm5hbEVycm9yIG1zZyAtPiBzcHJpbnRmICJJbnRlcm5hbEVycm9yKCVTKSIgbXNnCi0r Ci0rZXhjZXB0aW9uIEVycm9yIG9mIGVycm9yCi0rZXhjZXB0aW9uIEJhY2t0cmFjawotK2V4Y2Vw dGlvbiBSZWdleHBfb3Igb2Ygc3RyaW5nICogZXJyb3IKLSsKLStsZXQgc3RyaW5nX29mX2V4biA9 IGZ1bmN0aW9uCi0rICB8IEVycm9yIGVycm9yIC0+IFNvbWUgKHNwcmludGYgIlBjcmUyLkVycm9y KCVzKSIgKHN0cmluZ19vZl9lcnJvciBlcnJvcikpCi0rICB8IEJhY2t0cmFjayAtPiBTb21lICJQ Y3JlMi5CYWNrdHJhY2siCi0rICB8IFJlZ2V4cF9vciAocGF0LCBlcnJvcikgLT4KLSsgICAgICBT b21lIChzcHJpbnRmICJQY3JlMi5SZWdleHBfb3IocGF0PSVTLCAlcykiIHBhdCAoc3RyaW5nX29m X2Vycm9yIGVycm9yKSkKLSsgIHwgX25vdF9mcm9tX3BjcmUgLT4gTm9uZQotKwotK2xldCAoKSA9 IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgc3RyaW5nX29mX2V4bgotKwotKygqIFB1dHMgZXhj ZXB0aW9ucyBpbnRvIGdsb2JhbCBDLXZhcmlhYmxlcyBmb3IgZmFzdCByZXRyaWV2YWwgKikKLStl eHRlcm5hbCBwY3JlMl9vY2FtbF9pbml0IDogdW5pdCAtPiB1bml0ID0gInBjcmUyX29jYW1sX2lu aXQiCi0rCi0rKCogUmVnaXN0ZXJzIGV4Y2VwdGlvbnMgd2l0aCB0aGUgQyBydW50aW1lIGFuZCBj YWNoZXMgcG9seW1vcnBoaWMgdmFyaWFudHMgKikKLStsZXQgKCkgPQotKyAgQ2FsbGJhY2sucmVn aXN0ZXJfZXhjZXB0aW9uICJQY3JlMi5FcnJvciIgKEVycm9yIChJbnRlcm5hbEVycm9yICIiKSk7 Ci0rICBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gIlBjcmUyLkJhY2t0cmFjayIgQmFja3Ry YWNrOwotKyAgcGNyZTJfb2NhbWxfaW5pdCAoKQotKwotKygqIENvbXBpbGF0aW9uIGFuZCBydW50 aW1lIGZsYWdzIGFuZCB0aGVpciBjb252ZXJzaW9uIGZ1bmN0aW9ucyAqKQotKwotK3R5cGUgaWNm bGFnID0gaW50NjQKLSt0eXBlIGlyZmxhZyA9IGludDY0Ci0rCi0rKCogQ29tcGlsYXRpb24gZmxh Z3MgKikKLSsKLSt0eXBlIGNmbGFnID0KLSsgIFsgYEFMTE9XX0VNUFRZX0NMQVNTCi0rICB8IGBB TFRfQlNVWAotKyAgfCBgQUxUX0NJUkNVTUZMRVgKLSsgIHwgYEFMVF9WRVJCTkFNRVMKLSsgIHwg YEFOQ0hPUkVECi0rICB8IGBBVVRPX0NBTExPVVQKLSsgIHwgYENBU0VMRVNTCi0rICB8IGBET0xM QVJfRU5ET05MWQotKyAgfCBgRE9UQUxMCi0rICB8IGBEVVBOQU1FUwotKyAgfCBgRU5EQU5DSE9S RUQKLSsgIHwgYEVYVEVOREVECi0rICB8IGBFWFRFTkRFRF9NT1JFCi0rICB8IGBGSVJTVExJTkUK LSsgIHwgYExJVEVSQUwKLSsgIHwgYE1BVENIX0lOVkFMSURfVVRGCi0rICB8IGBNQVRDSF9VTlNF VF9CQUNLUkVGCi0rICB8IGBNVUxUSUxJTkUKLSsgIHwgYE5FVkVSX0JBQ0tTTEFTSF9DCi0rICB8 IGBORVZFUl9VQ1AKLSsgIHwgYE5FVkVSX1VURgotKyAgfCBgTk9fQVVUT19DQVBUVVJFCi0rICB8 IGBOT19BVVRPX1BPU1NFU1MKLSsgIHwgYE5PX0RPVFNUQVJfQU5DSE9SCi0rICB8IGBOT19TVEFS VF9PUFRJTUlaRQotKyAgfCBgTk9fVVRGX0NIRUNLCi0rICB8IGBVQ1AKLSsgIHwgYFVOR1JFRURZ Ci0rICB8IGBVU0VfT0ZGU0VUX0xJTUlUCi0rICB8IGBVVEYgXQotKwotK2xldCBpbnRfb2ZfY2Zs YWcgPSBmdW5jdGlvbgotKyAgfCBgQUxMT1dfRU1QVFlfQ0xBU1MgLT4gMHgwMDAwMDAwMUwKLSsg IHwgYEFMVF9CU1VYIC0+IDB4MDAwMDAwMDJMCi0rICB8IGBBVVRPX0NBTExPVVQgLT4gMHgwMDAw MDAwNEwKLSsgIHwgYENBU0VMRVNTIC0+IDB4MDAwMDAwMDhMCi0rICB8IGBET0xMQVJfRU5ET05M WSAtPiAweDAwMDAwMDEwTAotKyAgfCBgRE9UQUxMIC0+IDB4MDAwMDAwMjBMCi0rICB8IGBEVVBO QU1FUyAtPiAweDAwMDAwMDQwTAotKyAgfCBgRVhURU5ERUQgLT4gMHgwMDAwMDA4MEwKLSsgIHwg YEZJUlNUTElORSAtPiAweDAwMDAwMTAwTAotKyAgfCBgTUFUQ0hfVU5TRVRfQkFDS1JFRiAtPiAw eDAwMDAwMjAwTAotKyAgfCBgTVVMVElMSU5FIC0+IDB4MDAwMDA0MDBMCi0rICB8IGBORVZFUl9V Q1AgLT4gMHgwMDAwMDgwMEwKLSsgIHwgYE5FVkVSX1VURiAtPiAweDAwMDAxMDAwTAotKyAgfCBg Tk9fQVVUT19DQVBUVVJFIC0+IDB4MDAwMDIwMDBMCi0rICB8IGBOT19BVVRPX1BPU1NFU1MgLT4g MHgwMDAwNDAwMEwKLSsgIHwgYE5PX0RPVFNUQVJfQU5DSE9SIC0+IDB4MDAwMDgwMDBMCi0rICB8 IGBOT19TVEFSVF9PUFRJTUlaRSAtPiAweDAwMDEwMDAwTAotKyAgfCBgVUNQIC0+IDB4MDAwMjAw MDBMCi0rICB8IGBVTkdSRUVEWSAtPiAweDAwMDQwMDAwTAotKyAgfCBgVVRGIC0+IDB4MDAwODAw MDBMCi0rICB8IGBORVZFUl9CQUNLU0xBU0hfQyAtPiAweDAwMTAwMDAwTAotKyAgfCBgQUxUX0NJ UkNVTUZMRVggLT4gMHgwMDIwMDAwMEwKLSsgIHwgYEFMVF9WRVJCTkFNRVMgLT4gMHgwMDQwMDAw MEwKLSsgIHwgYFVTRV9PRkZTRVRfTElNSVQgLT4gMHgwMDgwMDAwMEwKLSsgIHwgYEVYVEVOREVE X01PUkUgLT4gMHgwMTAwMDAwMEwKLSsgIHwgYExJVEVSQUwgLT4gMHgwMjAwMDAwMEwKLSsgIHwg YE1BVENIX0lOVkFMSURfVVRGIC0+IDB4MDQwMDAwMDBMCi0rICB8IGBFTkRBTkNIT1JFRCAtPiAw eDIwMDAwMDAwTAotKyAgfCBgTk9fVVRGX0NIRUNLIC0+IDB4NDAwMDAwMDBMCi0rICB8IGBBTkNI T1JFRCAtPiAweDgwMDAwMDAwTAotKwotK2xldCBjb2xsX2ljZmxhZyBpY2ZsYWcgZmxhZyA9IElu dDY0LmxvZ29yIChpbnRfb2ZfY2ZsYWcgZmxhZykgaWNmbGFnCi0rbGV0IGNmbGFncyBmbGFncyA9 IExpc3QuZm9sZF9sZWZ0IGNvbGxfaWNmbGFnIDBMIGZsYWdzCi0rCi0rbGV0IGNmbGFnX29mX2lu dCA9IGZ1bmN0aW9uCi0rICB8IDB4MDAwMDAwMDFMIC0+IGBBTExPV19FTVBUWV9DTEFTUwotKyAg fCAweDAwMDAwMDAyTCAtPiBgQUxUX0JTVVgKLSsgIHwgMHgwMDAwMDAwNEwgLT4gYEFVVE9fQ0FM TE9VVAotKyAgfCAweDAwMDAwMDA4TCAtPiBgQ0FTRUxFU1MKLSsgIHwgMHgwMDAwMDAxMEwgLT4g YERPTExBUl9FTkRPTkxZCi0rICB8IDB4MDAwMDAwMjBMIC0+IGBET1RBTEwKLSsgIHwgMHgwMDAw MDA0MEwgLT4gYERVUE5BTUVTCi0rICB8IDB4MDAwMDAwODBMIC0+IGBFWFRFTkRFRAotKyAgfCAw eDAwMDAwMTAwTCAtPiBgRklSU1RMSU5FCi0rICB8IDB4MDAwMDAyMDBMIC0+IGBNQVRDSF9VTlNF VF9CQUNLUkVGCi0rICB8IDB4MDAwMDA0MDBMIC0+IGBNVUxUSUxJTkUKLSsgIHwgMHgwMDAwMDgw MEwgLT4gYE5FVkVSX1VDUAotKyAgfCAweDAwMDAxMDAwTCAtPiBgTkVWRVJfVVRGCi0rICB8IDB4 MDAwMDIwMDBMIC0+IGBOT19BVVRPX0NBUFRVUkUKLSsgIHwgMHgwMDAwNDAwMEwgLT4gYE5PX0FV VE9fUE9TU0VTUwotKyAgfCAweDAwMDA4MDAwTCAtPiBgTk9fRE9UU1RBUl9BTkNIT1IKLSsgIHwg MHgwMDAxMDAwMEwgLT4gYE5PX1NUQVJUX09QVElNSVpFCi0rICB8IDB4MDAwMjAwMDBMIC0+IGBV Q1AKLSsgIHwgMHgwMDA0MDAwMEwgLT4gYFVOR1JFRURZCi0rICB8IDB4MDAwODAwMDBMIC0+IGBV VEYKLSsgIHwgMHgwMDEwMDAwMEwgLT4gYE5FVkVSX0JBQ0tTTEFTSF9DCi0rICB8IDB4MDAyMDAw MDBMIC0+IGBBTFRfQ0lSQ1VNRkxFWAotKyAgfCAweDAwNDAwMDAwTCAtPiBgQUxUX1ZFUkJOQU1F UwotKyAgfCAweDAwODAwMDAwTCAtPiBgVVNFX09GRlNFVF9MSU1JVAotKyAgfCAweDAxMDAwMDAw TCAtPiBgRVhURU5ERURfTU9SRQotKyAgfCAweDAyMDAwMDAwTCAtPiBgTElURVJBTAotKyAgfCAw eDA0MDAwMDAwTCAtPiBgTUFUQ0hfSU5WQUxJRF9VVEYKLSsgIHwgMHgyMDAwMDAwMEwgLT4gYEVO REFOQ0hPUkVECi0rICB8IDB4NDAwMDAwMDBMIC0+IGBOT19VVEZfQ0hFQ0sKLSsgIHwgMHg4MDAw MDAwMEwgLT4gYEFOQ0hPUkVECi0rICB8IF8gLT4gZmFpbHdpdGggIlBjcmUyLmNmbGFnX2xpc3Q6 IHVua25vd24gY29tcGlsYXRpb24gZmxhZyIKLSsKLStsZXQgYWxsX2NmbGFncyA9Ci0rICBbCi0r ICAgIDB4MDAwMDAwMDFMOwotKyAgICAweDAwMDAwMDAyTDsKLSsgICAgMHgwMDAwMDAwNEw7Ci0r ICAgIDB4MDAwMDAwMDhMOwotKyAgICAweDAwMDAwMDEwTDsKLSsgICAgMHgwMDAwMDAyMEw7Ci0r ICAgIDB4MDAwMDAwNDBMOwotKyAgICAweDAwMDAwMDgwTDsKLSsgICAgMHgwMDAwMDEwMEw7Ci0r ICAgIDB4MDAwMDAyMDBMOwotKyAgICAweDAwMDAwNDAwTDsKLSsgICAgMHgwMDAwMDgwMEw7Ci0r ICAgIDB4MDAwMDEwMDBMOwotKyAgICAweDAwMDAyMDAwTDsKLSsgICAgMHgwMDAwNDAwMEw7Ci0r ICAgIDB4MDAwMDgwMDBMOwotKyAgICAweDAwMDEwMDAwTDsKLSsgICAgMHgwMDAyMDAwMEw7Ci0r ICAgIDB4MDAwNDAwMDBMOwotKyAgICAweDAwMDgwMDAwTDsKLSsgICAgMHgwMDEwMDAwMEw7Ci0r ICAgIDB4MDAyMDAwMDBMOwotKyAgICAweDAwNDAwMDAwTDsKLSsgICAgMHgwMDgwMDAwMEw7Ci0r ICAgIDB4MDEwMDAwMDBMOwotKyAgICAweDAyMDAwMDAwTDsKLSsgICAgMHgwNDAwMDAwMEw7Ci0r ICAgIDB4MjAwMDAwMDBMOwotKyAgICAweDQwMDAwMDAwTDsKLSsgICAgMHg4MDAwMDAwMEw7Ci0r ICBdCi0rCi0rbGV0IGNmbGFnX2xpc3QgaWNmbGFncyA9Ci0rICBsZXQgY29sbCBmbGFnX2xpc3Qg ZmxhZyA9Ci0rICAgIGlmIEludDY0LmVxdWFsIChJbnQ2NC5sb2dhbmQgaWNmbGFncyBmbGFnKSAw TCB0aGVuIGZsYWdfbGlzdAotKyAgICBlbHNlIGNmbGFnX29mX2ludCBmbGFnIDo6IGZsYWdfbGlz dAotKyAgaW4KLSsgIExpc3QuZm9sZF9sZWZ0IGNvbGwgW10gYWxsX2NmbGFncwotKwotKygqIFJ1 bnRpbWUgZmxhZ3MgKikKLSsKLSt0eXBlIHJmbGFnID0KLSsgIFsgYEFOQ0hPUkVECi0rICB8IGBD T1BZX01BVENIRURfU1VCSkVDVAotKyAgfCBgREZBX1JFU1RBUlQKLSsgIHwgYERGQV9TSE9SVEVT VAotKyAgfCBgRU5EQU5DSE9SRUQKLSsgIHwgYE5PVEJPTAotKyAgfCBgTk9URU9MCi0rICB8IGBO T1RFTVBUWQotKyAgfCBgTk9URU1QVFlfQVRTVEFSVAotKyAgfCBgTk9fSklUCi0rICB8IGBOT19V VEZfQ0hFQ0sKLSsgIHwgYFBBUlRJQUxfSEFSRAotKyAgfCBgUEFSVElBTF9TT0ZUIF0KLSsKLSts ZXQgaW50X29mX3JmbGFnID0gZnVuY3Rpb24KLSsgIHwgYE5PVEJPTCAtPiAweDAwMDAwMDAxTAot KyAgfCBgTk9URU9MIC0+IDB4MDAwMDAwMDJMCi0rICB8IGBOT1RFTVBUWSAtPiAweDAwMDAwMDA0 TAotKyAgfCBgTk9URU1QVFlfQVRTVEFSVCAtPiAweDAwMDAwMDA4TAotKyAgfCBgUEFSVElBTF9T T0ZUIC0+IDB4MDAwMDAwMTBMCi0rICB8IGBQQVJUSUFMX0hBUkQgLT4gMHgwMDAwMDAyMEwKLSsg IHwgYERGQV9SRVNUQVJUIC0+IDB4MDAwMDAwNDBMCi0rICB8IGBERkFfU0hPUlRFU1QgLT4gMHgw MDAwMDA4MEwKLSsgIHwgYE5PX0pJVCAtPiAweDAwMDAyMDAwTAotKyAgfCBgQ09QWV9NQVRDSEVE X1NVQkpFQ1QgLT4gMHgwMDAwNDAwMEwKLSsgIHwgYEVOREFOQ0hPUkVEIC0+IDB4MjAwMDAwMDBM Ci0rICB8IGBOT19VVEZfQ0hFQ0sgLT4gMHg0MDAwMDAwMEwKLSsgIHwgYEFOQ0hPUkVEIC0+IDB4 ODAwMDAwMDBMCi0rCi0rbGV0IGNvbGxfaXJmbGFnIGlyZmxhZyBmbGFnID0gSW50NjQubG9nb3Ig KGludF9vZl9yZmxhZyBmbGFnKSBpcmZsYWcKLStsZXQgcmZsYWdzIGZsYWdzID0gTGlzdC5mb2xk X2xlZnQgY29sbF9pcmZsYWcgMEwgZmxhZ3MKLSsKLStsZXQgcmZsYWdfb2ZfaW50ID0gZnVuY3Rp b24KLSsgIHwgMHgwMDAwMDAwMUwgLT4gYE5PVEJPTAotKyAgfCAweDAwMDAwMDAyTCAtPiBgTk9U RU9MCi0rICB8IDB4MDAwMDAwMDRMIC0+IGBOT1RFTVBUWQotKyAgfCAweDAwMDAwMDA4TCAtPiBg Tk9URU1QVFlfQVRTVEFSVAotKyAgfCAweDAwMDAwMDEwTCAtPiBgUEFSVElBTF9TT0ZUCi0rICB8 IDB4MDAwMDAwMjBMIC0+IGBQQVJUSUFMX0hBUkQKLSsgIHwgMHgwMDAwMDA0MEwgLT4gYERGQV9S RVNUQVJUCi0rICB8IDB4MDAwMDAwODBMIC0+IGBERkFfU0hPUlRFU1QKLSsgIHwgMHgwMDAwMjAw MEwgLT4gYE5PX0pJVAotKyAgfCAweDAwMDA0MDAwTCAtPiBgQ09QWV9NQVRDSEVEX1NVQkpFQ1QK LSsgIHwgMHgyMDAwMDAwMEwgLT4gYEVOREFOQ0hPUkVECi0rICB8IDB4NDAwMDAwMDBMIC0+IGBO T19VVEZfQ0hFQ0sKLSsgIHwgMHg4MDAwMDAwMEwgLT4gYEFOQ0hPUkVECi0rICB8IF8gLT4gZmFp bHdpdGggIlBjcmUyLnJmbGFnX2xpc3Q6IHVua25vd24gcnVudGltZSBmbGFnIgotKwotK2xldCBh bGxfcmZsYWdzID0KLSsgIFsKLSsgICAgMHgwMDAwMDAwMUw7Ci0rICAgIDB4MDAwMDAwMDJMOwot KyAgICAweDAwMDAwMDA0TDsKLSsgICAgMHgwMDAwMDAwOEw7Ci0rICAgIDB4MDAwMDAwMTBMOwot KyAgICAweDAwMDAwMDIwTDsKLSsgICAgMHgwMDAwMDA0MEw7Ci0rICAgIDB4MDAwMDAwODBMOwot KyAgICAweDAwMDAyMDAwTDsKLSsgICAgMHgwMDAwNDAwMEw7Ci0rICAgIDB4MjAwMDAwMDBMOwot KyAgICAweDQwMDAwMDAwTDsKLSsgICAgMHg4MDAwMDAwMEw7Ci0rICBdCi0rCi0rbGV0IHJmbGFn X2xpc3QgaXJmbGFncyA9Ci0rICBsZXQgY29sbCBmbGFnX2xpc3QgZmxhZyA9Ci0rICAgIGlmIElu dDY0LmVxdWFsIChJbnQ2NC5sb2dhbmQgaXJmbGFncyBmbGFnKSAwTCB0aGVuIGZsYWdfbGlzdAot KyAgICBlbHNlIHJmbGFnX29mX2ludCBmbGFnIDo6IGZsYWdfbGlzdAotKyAgaW4KLSsgIExpc3Qu Zm9sZF9sZWZ0IGNvbGwgW10gYWxsX3JmbGFncwotKwotKygqIEluZm9ybWF0aW9uIG9uIHRoZSBQ Q1JFMi1jb25maWd1cmF0aW9uIChidWlsZC10aW1lIG9wdGlvbnMpICopCi0rCi0rZXh0ZXJuYWwg cGNyZTJfdmVyc2lvbiA6IHVuaXQgLT4gc3RyaW5nID0gInBjcmUyX3ZlcnNpb25fc3R1YiIKLSsK LStleHRlcm5hbCBwY3JlMl9jb25maWdfdW5pY29kZSA6IHVuaXQgLT4gYm9vbCA9ICJwY3JlMl9j b25maWdfdW5pY29kZV9zdHViIgotK1tAQG5vYWxsb2NdCi0rCi0rZXh0ZXJuYWwgcGNyZTJfY29u ZmlnX25ld2xpbmUgOiB1bml0IC0+IGNoYXIgPSAicGNyZTJfY29uZmlnX25ld2xpbmVfc3R1YiIK LStbQEBub2FsbG9jXQotKwotK2V4dGVybmFsIHBjcmUyX2NvbmZpZ19saW5rX3NpemUgOiB1bml0 IC0+IChpbnRbQHVudGFnZ2VkXSkKLSsgID0gInBjcmUyX2NvbmZpZ19saW5rX3NpemVfc3R1Yl9i YyIgInBjcmUyX2NvbmZpZ19saW5rX3NpemVfc3R1YiIKLStbQEBub2FsbG9jXQotKwotK2V4dGVy bmFsIHBjcmUyX2NvbmZpZ19tYXRjaF9saW1pdCA6IHVuaXQgLT4gKGludFtAdW50YWdnZWRdKQot KyAgPSAicGNyZTJfY29uZmlnX21hdGNoX2xpbWl0X3N0dWJfYmMiICJwY3JlMl9jb25maWdfbWF0 Y2hfbGltaXRfc3R1YiIKLStbQEBub2FsbG9jXQotKwotK2V4dGVybmFsIHBjcmUyX2NvbmZpZ19k ZXB0aF9saW1pdCA6IHVuaXQgLT4gKGludFtAdW50YWdnZWRdKQotKyAgPSAicGNyZTJfY29uZmln X2RlcHRoX2xpbWl0X3N0dWJfYmMiICJwY3JlMl9jb25maWdfZGVwdGhfbGltaXRfc3R1YiIKLStb QEBub2FsbG9jXQotKwotK2V4dGVybmFsIHBjcmUyX2NvbmZpZ19zdGFja3JlY3Vyc2UgOiB1bml0 IC0+IGJvb2wKLSsgID0gInBjcmUyX2NvbmZpZ19zdGFja3JlY3Vyc2Vfc3R1YiIKLStbQEBub2Fs bG9jXQotKwotK2xldCB2ZXJzaW9uID0gcGNyZTJfdmVyc2lvbiAoKQotK2xldCBjb25maWdfdW5p Y29kZSA9IHBjcmUyX2NvbmZpZ191bmljb2RlICgpCi0rbGV0IGNvbmZpZ19uZXdsaW5lID0gcGNy ZTJfY29uZmlnX25ld2xpbmUgKCkKLStsZXQgY29uZmlnX2xpbmtfc2l6ZSA9IHBjcmUyX2NvbmZp Z19saW5rX3NpemUgKCkKLStsZXQgY29uZmlnX21hdGNoX2xpbWl0ID0gcGNyZTJfY29uZmlnX21h dGNoX2xpbWl0ICgpCi0rbGV0IGNvbmZpZ19kZXB0aF9saW1pdCA9IHBjcmUyX2NvbmZpZ19kZXB0 aF9saW1pdCAoKQotK2xldCBjb25maWdfc3RhY2tyZWN1cnNlID0gcGNyZTJfY29uZmlnX3N0YWNr cmVjdXJzZSAoKQotKwotKygqIEluZm9ybWF0aW9uIG9uIHBhdHRlcm5zICopCi0rCi0rdHlwZSBm aXJzdGNvZGV1bml0X2luZm8gPSBbIGBDaGFyIG9mIGNoYXIgfCBgU3RhcnRfb25seSB8IGBBTkNI T1JFRCBdCi0rdHlwZSByZWdleHAKLSsKLStleHRlcm5hbCBvcHRpb25zIDogcmVnZXhwIC0+IChp Y2ZsYWdbQHVuYm94ZWRdKQotKyAgPSAicGNyZTJfYXJnb3B0aW9uc19zdHViX2JjIiAicGNyZTJf YXJnb3B0aW9uc19zdHViIgotKwotK2V4dGVybmFsIHNpemUgOiByZWdleHAgLT4gKGludFtAdW50 YWdnZWRdKQotKyAgPSAicGNyZTJfc2l6ZV9zdHViX2JjIiAicGNyZTJfc2l6ZV9zdHViIgotKwot K2V4dGVybmFsIGNhcHR1cmVjb3VudCA6IHJlZ2V4cCAtPiAoaW50W0B1bnRhZ2dlZF0pCi0rICA9 ICJwY3JlMl9jYXB0dXJlY291bnRfc3R1Yl9iYyIgInBjcmUyX2NhcHR1cmVjb3VudF9zdHViIgot KwotK2V4dGVybmFsIGJhY2tyZWZtYXggOiByZWdleHAgLT4gKGludFtAdW50YWdnZWRdKQotKyAg PSAicGNyZTJfYmFja3JlZm1heF9zdHViX2JjIiAicGNyZTJfYmFja3JlZm1heF9zdHViIgotKwot K2V4dGVybmFsIG5hbWVjb3VudCA6IHJlZ2V4cCAtPiAoaW50W0B1bnRhZ2dlZF0pCi0rICA9ICJw Y3JlMl9uYW1lY291bnRfc3R1Yl9iYyIgInBjcmUyX25hbWVjb3VudF9zdHViIgotKwotK2V4dGVy bmFsIG5hbWVlbnRyeXNpemUgOiByZWdleHAgLT4gKGludFtAdW50YWdnZWRdKQotKyAgPSAicGNy ZTJfbmFtZWVudHJ5c2l6ZV9zdHViX2JjIiAicGNyZTJfbmFtZWVudHJ5c2l6ZV9zdHViIgotKwot K2V4dGVybmFsIG5hbWVzIDogcmVnZXhwIC0+IHN0cmluZyBhcnJheSA9ICJwY3JlMl9uYW1lc19z dHViIgotKwotK2V4dGVybmFsIGZpcnN0Y29kZXVuaXQgOiByZWdleHAgLT4gZmlyc3Rjb2RldW5p dF9pbmZvCi0rICA9ICJwY3JlMl9maXJzdGNvZGV1bml0X3N0dWIiCi0rCi0rZXh0ZXJuYWwgbGFz dGNvZGV1bml0IDogcmVnZXhwIC0+IGNoYXIgb3B0aW9uID0gInBjcmUyX2xhc3Rjb2RldW5pdF9z dHViIgotKwotKygqIENvbXBpbGF0aW9uIG9mIHBhdHRlcm5zICopCi0rCi0rdHlwZSBjaHRhYmxl cwotKwotK2V4dGVybmFsIG1ha2V0YWJsZXMgOiB1bml0IC0+IGNodGFibGVzID0gInBjcmUyX21h a2V0YWJsZXNfc3R1YiIKLSsKLStleHRlcm5hbCBjb21waWxlIDogKGljZmxhZ1tAdW5ib3hlZF0p IC0+IGNodGFibGVzIG9wdGlvbiAtPiBzdHJpbmcgLT4gcmVnZXhwCi0rICA9ICJwY3JlMl9jb21w aWxlX3N0dWJfYmMiICJwY3JlMl9jb21waWxlX3N0dWIiCi0rCi0rKCogZXh0ZXJuYWwgZ2V0X21h dGNoX2xpbWl0IDogcmVnZXhwIC0+IGludCBvcHRpb24gPQotKyAgICJwY3JlMl9nZXRfbWF0Y2hf bGltaXRfc3R1YiIgKikKLSsKLSsoKiBJbnRlcm5hbCB1c2Ugb25seSEgKikKLStleHRlcm5hbCBz ZXRfaW1wX21hdGNoX2xpbWl0IDogcmVnZXhwIC0+IChpbnRbQHVudGFnZ2VkXSkgLT4gcmVnZXhw Ci0rICA9ICJwY3JlMl9zZXRfaW1wX21hdGNoX2xpbWl0X3N0dWJfYmMiICJwY3JlMl9zZXRfaW1w X21hdGNoX2xpbWl0X3N0dWIiCi0rW0BAbm9hbGxvY10KLSsKLSsoKiBleHRlcm5hbCBnZXRfZGVw dGhfbGltaXQgOiByZWdleHAgLT4gaW50IG9wdGlvbiA9Ci0rICAgInBjcmUyX2dldF9kZXB0aF9s aW1pdF9zdHViIiAqKQotKwotKygqIEludGVybmFsIHVzZSBvbmx5ISAqKQotK2V4dGVybmFsIHNl dF9pbXBfZGVwdGhfbGltaXQgOiByZWdleHAgLT4gKGludFtAdW50YWdnZWRdKSAtPiByZWdleHAK LSsgID0gInBjcmUyX3NldF9pbXBfZGVwdGhfbGltaXRfc3R1Yl9iYyIgInBjcmUyX3NldF9pbXBf ZGVwdGhfbGltaXRfc3R1YiIKLStbQEBub2FsbG9jXQotKwotKygqIFRPRE8gaW1wbGVtZW50IGpp dCB1c2luZyBuZXcgcGNyZTJfaml0X2NvbXBpbGUgYXBpICopCi0rbGV0IHJlZ2V4cAotKyAgICAo KiA/KGppdF9jb21waWxlID0gZmFsc2UpICopCi0rICAgID9saW1pdCA/ZGVwdGhfbGltaXQgPyhp ZmxhZ3MgPSAwTCkgP2ZsYWdzID9jaHRhYmxlcyBwYXQgPQotKyAgbGV0IHJleCA9Ci0rICAgIG1h dGNoIGZsYWdzIHdpdGgKLSsgICAgfCBTb21lIGZsYWdfbGlzdCAtPiBjb21waWxlIChjZmxhZ3Mg ZmxhZ19saXN0KSBjaHRhYmxlcyBwYXQKLSsgICAgfCBfIC0+IGNvbXBpbGUgaWZsYWdzIGNodGFi bGVzIHBhdAotKyAgaW4KLSsgIGxldCByZXggPQotKyAgICBtYXRjaCBsaW1pdCB3aXRoIE5vbmUg LT4gcmV4IHwgU29tZSBsaW0gLT4gc2V0X2ltcF9tYXRjaF9saW1pdCByZXggbGltCi0rICBpbgot KyAgbWF0Y2ggZGVwdGhfbGltaXQgd2l0aCBOb25lIC0+IHJleCB8IFNvbWUgbGltIC0+IHNldF9p bXBfZGVwdGhfbGltaXQgcmV4IGxpbQotKwotK2xldCByZWdleHBfb3IgKCogP2ppdF9jb21waWxl ICopID9saW1pdCA/ZGVwdGhfbGltaXQgPyhpZmxhZ3MgPSAwTCkgP2ZsYWdzCi0rICAgID9jaHRh YmxlcyBwYXRzID0KLSsgIGxldCBjaGVjayBwYXQgPQotKyAgICB0cnkgaWdub3JlIChyZWdleHAg fmlmbGFncyA/ZmxhZ3MgP2NodGFibGVzIHBhdCkKLSsgICAgd2l0aCBFcnJvciBlcnJvciAtPiBy YWlzZSAoUmVnZXhwX29yIChwYXQsIGVycm9yKSkKLSsgIGluCi0rICBMaXN0Lml0ZXIgY2hlY2sg cGF0czsKLSsgIGxldCBiaWdfcGF0ID0KLSsgICAgbGV0IGNudiBwYXQgPSAiKD86IiBeIHBhdCBe ICIpIiBpbgotKyAgICBTdHJpbmcuY29uY2F0ICJ8IiAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBj bnYgcGF0cykpCi0rICBpbgotKyAgcmVnZXhwICgqID9qaXRfY29tcGlsZSAqKSA/bGltaXQgP2Rl cHRoX2xpbWl0IH5pZmxhZ3MgP2ZsYWdzID9jaHRhYmxlcyBiaWdfcGF0Ci0rCi0rbGV0IGJ5dGVz X3Vuc2FmZV9ibGl0X3N0cmluZyBzdHIgc3RyX29mcyBidHMgYnRzX29mcyBsZW4gPQotKyAgbGV0 IHN0cl9idHMgPSBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIHN0ciBpbgotKyAgQnl0ZXMudW5zYWZl X2JsaXQgc3RyX2J0cyBzdHJfb2ZzIGJ0cyBidHNfb2ZzIGxlbgotKwotK2xldCBzdHJpbmdfdW5z YWZlX3N1YiBzdHIgb2ZzIGxlbiA9Ci0rICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpbgot KyAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN0ciBvZnMgcmVzIDAgbGVuOwotKyAgQnl0ZXMu dW5zYWZlX3RvX3N0cmluZyByZXMKLSsKLStsZXQgcXVvdGUgcyA9Ci0rICBsZXQgbGVuID0gU3Ry aW5nLmxlbmd0aCBzIGluCi0rICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChsZW4gbHNsIDEpIGlu Ci0rICBsZXQgcG9zID0gcmVmIDAgaW4KLSsgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvCi0rICAg IG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoCi0rICAgIHwgKCdcXCcgfCAnXicgfCAn JCcgfCAnLicgfCAnWycgfCAnfCcgfCAnKCcgfCAnKScgfCAnPycgfCAnKicgfCAnKycgfCAneycp Ci0rICAgICAgYXMgYyAtPgotKyAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyAnXFwn OwotKyAgICAgICAgaW5jciBwb3M7Ci0rICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9z IGM7Ci0rICAgICAgICBpbmNyIHBvcwotKyAgICB8IGMgLT4KLSsgICAgICAgIEJ5dGVzLnVuc2Fm ZV9zZXQgYnVmICFwb3MgYzsKLSsgICAgICAgIGluY3IgcG9zCi0rICBkb25lOwotKyAgc3RyaW5n X3Vuc2FmZV9zdWIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSAwICFwb3MKLSsKLSsoKiBN YXRjaGluZyBvZiBwYXR0ZXJucyBhbmQgc3VicGF0dGVybiBleHRyYWN0aW9uICopCi0rCi0rKCog RGVmYXVsdCByZWd1bGFyIGV4cHJlc3Npb24gd2hlbiBub25lIGlzIHByb3ZpZGVkIGJ5IHRoZSB1 c2VyICopCi0rbGV0IGRlZl9yZXggPSByZWdleHAgKCogfmppdF9jb21waWxlOnRydWUgKikgIlxc cysiCi0rCi0rdHlwZSBzdWJzdHJpbmdzID0gc3RyaW5nICogaW50IGFycmF5Ci0rCi0rdHlwZSBj YWxsb3V0X2RhdGEgPSB7Ci0rICBjYWxsb3V0X251bWJlciA6IGludDsKLSsgIHN1YnN0cmluZ3Mg OiBzdWJzdHJpbmdzOwotKyAgc3RhcnRfbWF0Y2ggOiBpbnQ7Ci0rICBjdXJyZW50X3Bvc2l0aW9u IDogaW50OwotKyAgY2FwdHVyZV90b3AgOiBpbnQ7Ci0rICBjYXB0dXJlX2xhc3QgOiBpbnQ7Ci0r ICBwYXR0ZXJuX3Bvc2l0aW9uIDogaW50OwotKyAgbmV4dF9pdGVtX2xlbmd0aCA6IGludDsKLSt9 Ci0rCi0rdHlwZSBjYWxsb3V0ID0gY2FsbG91dF9kYXRhIC0+IHVuaXQKLSsKLStsZXQgZ2V0X3N1 YmplY3QgKHN1YmosIF8pID0gc3ViagotK2xldCBudW1fb2Zfc3VicyAoXywgb3ZlY3RvcikgPSBB cnJheS5sZW5ndGggb3ZlY3RvciAvIDMKLSsKLStsZXQgZ2V0X29mZnNldF9zdGFydCBvdmVjdG9y IHN0cl9udW0gPQotKyAgaWYgc3RyX251bSA8IDAgfHwgc3RyX251bSA+PSBBcnJheS5sZW5ndGgg b3ZlY3RvciAvIDMgdGhlbgotKyAgICBpbnZhbGlkX2FyZyAiUGNyZTIuZ2V0X29mZnNldF9zdGFy dDogaWxsZWdhbCBvZmZzZXQiOwotKyAgbGV0IG9mZnNldCA9IHN0cl9udW0gbHNsIDEgaW4KLSsg IChvZmZzZXQsIEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciBvZmZzZXQpCi0rCi0rbGV0IGdldF9z dWJzdHJpbmdfYXV4IChzdWJqLCBvdmVjdG9yKSBvZmZzZXQgc3RhcnQgPQotKyAgaWYgc3RhcnQg PCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kCi0rICBlbHNlCi0rICAgIHN0cmluZ191bnNhZmVfc3Vi IHN1Ymogc3RhcnQgKEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAob2Zmc2V0ICsgMSkgLSBzdGFy dCkKLSsKLStsZXQgZ2V0X3N1YnN0cmluZyAoKF8sIG92ZWN0b3IpIGFzIHN1YnN0cmluZ3MpIHN0 cl9udW0gPQotKyAgbGV0IG9mZnNldCwgc3RhcnQgPSBnZXRfb2Zmc2V0X3N0YXJ0IG92ZWN0b3Ig c3RyX251bSBpbgotKyAgZ2V0X3N1YnN0cmluZ19hdXggc3Vic3RyaW5ncyBvZmZzZXQgc3RhcnQK LSsKLStsZXQgZ2V0X3N1YnN0cmluZ19vZnMgKF9zdWJqLCBvdmVjdG9yKSBzdHJfbnVtID0KLSsg IGxldCBvZmZzZXQsIHN0YXJ0ID0gZ2V0X29mZnNldF9zdGFydCBvdmVjdG9yIHN0cl9udW0gaW4K LSsgIGlmIHN0YXJ0IDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZAotKyAgZWxzZSAoc3RhcnQsIEFy cmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAob2Zmc2V0ICsgMSkpCi0rCi0rbGV0IHVuc2FmZV9nZXRf c3Vic3RyaW5nICgoXywgb3ZlY3RvcikgYXMgc3Vic3RyaW5ncykgc3RyX251bSA9Ci0rICBsZXQg b2Zmc2V0ID0gc3RyX251bSBsc2wgMSBpbgotKyAgdHJ5IGdldF9zdWJzdHJpbmdfYXV4IHN1YnN0 cmluZ3Mgb2Zmc2V0IChBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3Igb2Zmc2V0KQotKyAgd2l0aCBO b3RfZm91bmQgLT4gIiIKLSsKLStsZXQgZ2V0X3N1YnN0cmluZ3MgPyhmdWxsX21hdGNoID0gdHJ1 ZSkgKChfLCBvdmVjdG9yKSBhcyBzdWJzdHJpbmdzKSA9Ci0rICBpZiBmdWxsX21hdGNoIHRoZW4K LSsgICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIG92ZWN0b3IgLyAzKSAodW5zYWZlX2dldF9z dWJzdHJpbmcgc3Vic3RyaW5ncykKLSsgIGVsc2UKLSsgICAgbGV0IGxlbiA9IChBcnJheS5sZW5n dGggb3ZlY3RvciAvIDMpIC0gMSBpbgotKyAgICBBcnJheS5pbml0IGxlbiAoZnVuIG4gLT4gdW5z YWZlX2dldF9zdWJzdHJpbmcgc3Vic3RyaW5ncyAobiArIDEpKQotKwotK2xldCB1bnNhZmVfZ2V0 X29wdF9zdWJzdHJpbmcgKChfLCBvdmVjdG9yKSBhcyBzdWJzdHJpbmdzKSBzdHJfbnVtID0KLSsg IGxldCBvZmZzZXQgPSBzdHJfbnVtIGxzbCAxIGluCi0rICB0cnkKLSsgICAgbGV0IHN0YXJ0ID0g QXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIG9mZnNldCBpbgotKyAgICBsZXQgc3RyID0gZ2V0X3N1 YnN0cmluZ19hdXggc3Vic3RyaW5ncyBvZmZzZXQgc3RhcnQgaW4KLSsgICAgU29tZSBzdHIKLSsg IHdpdGggTm90X2ZvdW5kIC0+IE5vbmUKLSsKLStsZXQgZ2V0X29wdF9zdWJzdHJpbmdzID8oZnVs bF9tYXRjaCA9IHRydWUpICgoXywgb3ZlY3RvcikgYXMgc3Vic3RyaW5ncykgPQotKyAgaWYgZnVs bF9tYXRjaCB0aGVuCi0rICAgIEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCBvdmVjdG9yIC8gMykg KHVuc2FmZV9nZXRfb3B0X3N1YnN0cmluZyBzdWJzdHJpbmdzKQotKyAgZWxzZQotKyAgICBsZXQg bGVuID0gKEFycmF5Lmxlbmd0aCBvdmVjdG9yIC8gMykgLSAxIGluCi0rICAgIEFycmF5LmluaXQg bGVuIChmdW4gbiAtPiB1bnNhZmVfZ2V0X29wdF9zdWJzdHJpbmcgc3Vic3RyaW5ncyAobiArIDEp KQotKwotK2V4dGVybmFsIGdldF9zdHJpbmdudW1iZXIgOiByZWdleHAgLT4gc3RyaW5nIC0+IChp bnRbQHVudGFnZ2VkXSkKLSsgID0gInBjcmUyX3N1YnN0cmluZ19udW1iZXJfZnJvbV9uYW1lX3N0 dWJfYmMiCi0rICAgICJwY3JlMl9zdWJzdHJpbmdfbnVtYmVyX2Zyb21fbmFtZV9zdHViIgotKwot K2xldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHN1YnN0cmluZ3MgPQotKyAgZ2V0X3N1 YnN0cmluZyBzdWJzdHJpbmdzIChnZXRfc3RyaW5nbnVtYmVyIHJleCBuYW1lKQotKwotK2xldCBn ZXRfbmFtZWRfc3Vic3RyaW5nX29mcyByZXggbmFtZSBzdWJzdHJpbmdzID0KLSsgIGdldF9zdWJz dHJpbmdfb2ZzIHN1YnN0cmluZ3MgKGdldF9zdHJpbmdudW1iZXIgcmV4IG5hbWUpCi0rCi0rZXh0 ZXJuYWwgdW5zYWZlX3BjcmUyX21hdGNoIDoKLSsgIChpcmZsYWdbQHVuYm94ZWRdKSAtPgotKyAg cmVnZXhwIC0+Ci0rICBwb3M6KGludFtAdW50YWdnZWRdKSAtPgotKyAgc3Vial9zdGFydDooaW50 W0B1bnRhZ2dlZF0pIC0+Ci0rICBzdWJqOnN0cmluZyAtPgotKyAgaW50IGFycmF5IC0+Ci0rICBj YWxsb3V0IG9wdGlvbiAtPgotKyAgdW5pdCA9ICJwY3JlMl9tYXRjaF9zdHViX2JjIiAicGNyZTJf bWF0Y2hfc3R1YiIKLSsKLStsZXQgbWFrZV9vdmVjdG9yIHJleCA9Ci0rICBsZXQgc3ViZ3JvdXBz MSA9IGNhcHR1cmVjb3VudCByZXggKyAxIGluCi0rICBsZXQgc3ViZ3JvdXBzMiA9IHN1Ymdyb3Vw czEgbHNsIDEgaW4KLSsgIChzdWJncm91cHMyLCBBcnJheS5tYWtlIChzdWJncm91cHMxICsgc3Vi Z3JvdXBzMikgMCkKLSsKLStleHRlcm5hbCB1bnNhZmVfcGNyZTJfZGZhX21hdGNoIDoKLSsgIChp cmZsYWdbQHVuYm94ZWRdKSAtPgotKyAgcmVnZXhwIC0+Ci0rICBwb3M6KGludFtAdW50YWdnZWRd KSAtPgotKyAgc3Vial9zdGFydDooaW50W0B1bnRhZ2dlZF0pIC0+Ci0rICBzdWJqOnN0cmluZyAt PgotKyAgaW50IGFycmF5IC0+Ci0rICBjYWxsb3V0IG9wdGlvbiAtPgotKyAgd29ya3NwYWNlOmlu dCBhcnJheSAtPgotKyAgdW5pdCA9ICJwY3JlMl9kZmFfbWF0Y2hfc3R1Yl9iYyIgInBjcmUyX21h dGNoX3N0dWIwIgotKwotK2xldCBwY3JlMl9kZmFfbWF0Y2ggPyhpZmxhZ3MgPSAwTCkgP2ZsYWdz ID8ocmV4ID0gZGVmX3JleCkgP3BhdCA/KHBvcyA9IDApCi0rICAgID9jYWxsb3V0ID8od29ya3Nw YWNlID0gQXJyYXkubWFrZSAyMCAwKSBzdWJqID0KLSsgIGxldCByZXggPSBtYXRjaCBwYXQgd2l0 aCBTb21lIHN0ciAtPiByZWdleHAgc3RyIHwgXyAtPiByZXggaW4KLSsgIGxldCBpZmxhZ3MgPSBt YXRjaCBmbGFncyB3aXRoIFNvbWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxhZ3Mg aW4KLSsgIGxldCBfLCBvdmVjdG9yID0gbWFrZV9vdmVjdG9yIHJleCBpbgotKyAgdW5zYWZlX3Bj cmUyX2RmYV9tYXRjaCBpZmxhZ3MgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6MCB+c3ViaiBvdmVjdG9y IGNhbGxvdXQKLSsgICAgfndvcmtzcGFjZTsKLSsgIG92ZWN0b3IKLSsKLStsZXQgcGNyZTJfbWF0 Y2ggPyhpZmxhZ3MgPSAwTCkgP2ZsYWdzID8ocmV4ID0gZGVmX3JleCkgP3BhdCA/KHBvcyA9IDAp ID9jYWxsb3V0Ci0rICAgIHN1YmogPQotKyAgbGV0IHJleCA9IG1hdGNoIHBhdCB3aXRoIFNvbWUg c3RyIC0+IHJlZ2V4cCBzdHIgfCBfIC0+IHJleCBpbgotKyAgbGV0IGlmbGFncyA9IG1hdGNoIGZs YWdzIHdpdGggU29tZSBmbGFncyAtPiByZmxhZ3MgZmxhZ3MgfCBfIC0+IGlmbGFncyBpbgotKyAg bGV0IF8sIG92ZWN0b3IgPSBtYWtlX292ZWN0b3IgcmV4IGluCi0rICB1bnNhZmVfcGNyZTJfbWF0 Y2ggaWZsYWdzIHJleCB+cG9zIH5zdWJqX3N0YXJ0OjAgfnN1Ymogb3ZlY3RvciBjYWxsb3V0Owot KyAgb3ZlY3RvcgotKwotK2xldCBleGVjID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9j YWxsb3V0IHN1YmogPQotKyAgKHN1YmosIHBjcmUyX21hdGNoID9pZmxhZ3MgP2ZsYWdzID9yZXgg P3BhdCA/cG9zID9jYWxsb3V0IHN1YmopCi0rCi0rbGV0IG5leHRfbWF0Y2ggP2lmbGFncyA/Zmxh Z3MgP3JleCA/cGF0ID8ocG9zID0gMCkgP2NhbGxvdXQgKHN1YmosIG92ZWN0b3IpID0KLSsgIGxl dCBwb3MgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSArIHBvcyBpbgotKyAgbGV0IHN1Ympf bGVuID0gU3RyaW5nLmxlbmd0aCBzdWJqIGluCi0rICBpZiBwb3MgPCAwIHx8IHBvcyA+IHN1Ympf bGVuIHRoZW4KLSsgICAgaW52YWxpZF9hcmcgIlBjcmUyLm5leHRfbWF0Y2g6IGlsbGVnYWwgb2Zm c2V0IjsKLSsgIChzdWJqLCBwY3JlMl9tYXRjaCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgfnBv cyA/Y2FsbG91dCBzdWJqKQotKwotK2xldCByZWMgY29weV9sc3QgYXIgbiA9IGZ1bmN0aW9uCi0r ICB8IFtdIC0+IGFyCi0rICB8IGggOjogdCAtPgotKyAgICAgIEFycmF5LnVuc2FmZV9zZXQgYXIg biBoOwotKyAgICAgIGNvcHlfbHN0IGFyIChuIC0gMSkgdAotKwotK2xldCBleGVjX2FsbCA/KGlm bGFncyA9IDBMKSA/ZmxhZ3MgPyhyZXggPSBkZWZfcmV4KSA/cGF0ID9wb3MgP2NhbGxvdXQgc3Vi aiA9Ci0rICBsZXQgcmV4ID0gbWF0Y2ggcGF0IHdpdGggU29tZSBzdHIgLT4gcmVnZXhwIHN0ciB8 IF8gLT4gcmV4IGluCi0rICBsZXQgaWZsYWdzID0gbWF0Y2ggZmxhZ3Mgd2l0aCBTb21lIGZsYWdz IC0+IHJmbGFncyBmbGFncyB8IF8gLT4gaWZsYWdzIGluCi0rICBsZXQgKChfLCBvdmVjdG9yKSBh cyBzc3RycykgPSBleGVjIH5pZmxhZ3MgfnJleCA/cG9zID9jYWxsb3V0IHN1YmogaW4KLSsgIGxl dCBudWxsX2ZsYWdzID0gSW50NjQubG9nb3IgaWZsYWdzIDB4MDAwMDAwMDRMIGluCi0rICAoKiBg Tk9URU1QVFkgKikKLSsgIGxldCBzdWJqX2xlbiA9IFN0cmluZy5sZW5ndGggc3ViaiBpbgotKyAg bGV0IHJlYyBsb29wIHBvcyAoKHN1YmosIG92ZWN0b3IpIGFzIHNzdHJzKSBuIGxzdCA9Ci0rICAg IGxldCBtYXliZV9vdmVjdG9yID0KLSsgICAgICB0cnkKLSsgICAgICAgIGxldCBmaXJzdCA9IEFy cmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGluCi0rICAgICAgICBpZiBmaXJzdCA9IHBvcyAmJiBB cnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSA9IHBvcyB0aGVuCi0rICAgICAgICAgIGlmIHBvcyA9 IHN1YmpfbGVuIHRoZW4gTm9uZQotKyAgICAgICAgICBlbHNlIFNvbWUgKHBjcmUyX21hdGNoIH5p ZmxhZ3M6bnVsbF9mbGFncyB+cmV4IH5wb3MgP2NhbGxvdXQgc3ViaikKLSsgICAgICAgIGVsc2Ug U29tZSAocGNyZTJfbWF0Y2ggfmlmbGFncyB+cmV4IH5wb3MgP2NhbGxvdXQgc3ViaikKLSsgICAg ICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lCi0rICAgIGluCi0rICAgIG1hdGNoIG1heWJlX292ZWN0 b3Igd2l0aAotKyAgICB8IFNvbWUgb3ZlY3RvciAtPgotKyAgICAgICAgbGV0IG5ld19wb3MgPSBB cnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSBpbgotKyAgICAgICAgbG9vcCBuZXdfcG9zIChzdWJq LCBvdmVjdG9yKSAobiArIDEpIChzc3RycyA6OiBsc3QpCi0rICAgIHwgTm9uZSAtPiBjb3B5X2xz dCAoQXJyYXkubWFrZSAobiArIDEpIHNzdHJzKSAobiAtIDEpIGxzdAotKyAgaW4KLSsgIGxvb3Ag KEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxKSBzc3RycyAwIFtdCi0rCi0rbGV0IGV4dHJhY3Qg P2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2Z1bGxfbWF0Y2ggP2NhbGxvdXQgc3ViaiA9 Ci0rICBnZXRfc3Vic3RyaW5ncyA/ZnVsbF9tYXRjaCAoZXhlYyA/aWZsYWdzID9mbGFncyA/cmV4 ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJqKQotKwotK2xldCBleHRyYWN0X29wdCA/aWZsYWdzID9m bGFncyA/cmV4ID9wYXQgP3BvcyA/ZnVsbF9tYXRjaCA/Y2FsbG91dCBzdWJqID0KLSsgIGdldF9v cHRfc3Vic3RyaW5ncyA/ZnVsbF9tYXRjaAotKyAgICAoZXhlYyA/aWZsYWdzID9mbGFncyA/cmV4 ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJqKQotKwotK2xldCBleHRyYWN0X2FsbCA/aWZsYWdzID9m bGFncyA/cmV4ID9wYXQgP3BvcyA/ZnVsbF9tYXRjaCA/Y2FsbG91dCBzdWJqID0KLSsgIGxldCBt YW55X3NzdHJzID0gZXhlY19hbGwgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxv dXQgc3ViaiBpbgotKyAgQXJyYXkubWFwIChnZXRfc3Vic3RyaW5ncyA/ZnVsbF9tYXRjaCkgbWFu eV9zc3RycwotKwotK2xldCBleHRyYWN0X2FsbF9vcHQgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0 ID9wb3MgP2Z1bGxfbWF0Y2ggP2NhbGxvdXQgc3ViaiA9Ci0rICBsZXQgbWFueV9zc3RycyA9IGV4 ZWNfYWxsID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IHN1YmogaW4KLSsg IEFycmF5Lm1hcCAoZ2V0X29wdF9zdWJzdHJpbmdzID9mdWxsX21hdGNoKSBtYW55X3NzdHJzCi0r Ci0rbGV0IHBtYXRjaCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJq ID0KLSsgIHRyeQotKyAgICBpZ25vcmUgKHBjcmUyX21hdGNoID9pZmxhZ3MgP2ZsYWdzID9yZXgg P3BhdCA/cG9zID9jYWxsb3V0IHN1YmopOwotKyAgICB0cnVlCi0rICB3aXRoIE5vdF9mb3VuZCAt PiBmYWxzZQotKwotKygqIFN0cmluZyBzdWJzdGl0dXRpb24gKikKLSsKLSsoKiBFbGVtZW50cyBv ZiBhIHN1YnN0aXR1dGlvbiBwYXR0ZXJuICopCi0rdHlwZSBzdWJzdCA9Ci0rICB8IFN1YnN0U3Ry aW5nIG9mIGludCAqIGludCAoKiBEZW5vdGVzIGEgc3Vic3RyaW5nIGluIHRoZSBzdWJzdGl0dXRp b24gKikKLSsgIHwgQmFja3JlZiBvZiBpbnQgKCogbnRoIGJhY2tyZWZlcmVuY2UgKCQwIGlzIHBy b2dyYW0gbmFtZSEpICopCi0rICB8IE1hdGNoICgqIFRoZSB3aG9sZSBtYXRjaGVkIHN0cmluZyAq KQotKyAgfCBQcmVNYXRjaCAoKiBUaGUgc3RyaW5nIGJlZm9yZSB0aGUgbWF0Y2ggKikKLSsgIHwg UG9zdE1hdGNoICgqIFRoZSBzdHJpbmcgYWZ0ZXIgdGhlIG1hdGNoICopCi0rICB8IExhc3RQYXJl bk1hdGNoICgqIFRoZSBsYXN0IG1hdGNoZWQgZ3JvdXAgKikKLSsKLSsoKiBJbmZvcm1hdGlvbiBv biBzdWJzdGl0dXRpb24gcGF0dGVybnMgKikKLSt0eXBlIHN1YnN0aXR1dGlvbiA9Ci0rICBzdHJp bmcgKCogVGhlIHN1YnN0aXR1dGlvbiBzdHJpbmcgKikKLSsgICogaW50ICgqIEhpZ2hlc3QgZ3Jv dXAgbnVtYmVyIG9mIGJhY2tyZWZlcmVuY2VzICopCi0rICAqIGJvb2wgKCogTWFrZXMgdXNlIG9m ICJMYXN0UGFyZW5NYXRjaCIgKikKLSsgICogc3Vic3QgbGlzdCAoKiBUaGUgbGlzdCBvZiBzdWJz dGl0dXRpb24gZWxlbWVudHMgKikKLSsKLSsoKiBPbmx5IHVzZWQgaW50ZXJuYWxseSBpbiAic3Vi c3QiICopCi0rZXhjZXB0aW9uIEZvdW5kQXQgb2YgaW50Ci0rCi0rbGV0IHplcm8gPSBDaGFyLmNv ZGUgJzAnCi0rCi0rbGV0IHN1YnN0IHN0ciA9Ci0rICBsZXQgbWF4X2JyID0gcmVmIDAgaW4KLSsg IGxldCB3aXRoX2xwID0gcmVmIGZhbHNlIGluCi0rICBsZXQgbGl4ID0gU3RyaW5nLmxlbmd0aCBz dHIgLSAxIGluCi0rICBsZXQgcmVjIGxvb3AgYWNjIG4gPQotKyAgICBpZiBsaXggPCBuIHRoZW4g YWNjCi0rICAgIGVsc2UKLSsgICAgICB0cnkKLSsgICAgICAgIGZvciBpID0gbiB0byBsaXggZG8K LSsgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgc3RyIGkgPSAnJCcgdGhlbiByYWlzZSAo Rm91bmRBdCBpKQotKyAgICAgICAgZG9uZTsKLSsgICAgICAgIFN1YnN0U3RyaW5nIChuLCBsaXgg LSBuICsgMSkgOjogYWNjCi0rICAgICAgd2l0aCBGb3VuZEF0IGkgLT4gKAotKyAgICAgICAgaWYg aSA9IGxpeCB0aGVuIFN1YnN0U3RyaW5nIChuLCBsaXggLSBuICsgMSkgOjogYWNjCi0rICAgICAg ICBlbHNlCi0rICAgICAgICAgIGxldCBpMSA9IGkgKyAxIGluCi0rICAgICAgICAgIGxldCBhY2Mg PSBpZiBuID0gaSB0aGVuIGFjYyBlbHNlIFN1YnN0U3RyaW5nIChuLCBpIC0gbikgOjogYWNjIGlu Ci0rICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0ciBpMSB3aXRoCi0rICAgICAg ICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+ICgKLSsgICAgICAgICAgICAgIGxldCBzdWJwYXRfbnIg PSByZWYgKENoYXIuY29kZSBjIC0gemVybykgaW4KLSsgICAgICAgICAgICAgIHRyeQotKyAgICAg ICAgICAgICAgICBmb3IgaiA9IGkxICsgMSB0byBsaXggZG8KLSsgICAgICAgICAgICAgICAgICBs ZXQgYyA9IFN0cmluZy51bnNhZmVfZ2V0IHN0ciBqIGluCi0rICAgICAgICAgICAgICAgICAgaWYg YyA+PSAnMCcgJiYgYyA8PSAnOScgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgc3VicGF0X25y IDo9ICgxMCAqICFzdWJwYXRfbnIpICsgQ2hhci5jb2RlIGMgLSB6ZXJvCi0rICAgICAgICAgICAg ICAgICAgZWxzZSByYWlzZSAoRm91bmRBdCBqKQotKyAgICAgICAgICAgICAgICBkb25lOwotKyAg ICAgICAgICAgICAgICBtYXhfYnIgOj0gbWF4ICFzdWJwYXRfbnIgIW1heF9icjsKLSsgICAgICAg ICAgICAgICAgQmFja3JlZiAhc3VicGF0X25yIDo6IGFjYwotKyAgICAgICAgICAgICAgd2l0aCBG b3VuZEF0IGogLT4KLSsgICAgICAgICAgICAgICAgbWF4X2JyIDo9IG1heCAhc3VicGF0X25yICFt YXhfYnI7Ci0rICAgICAgICAgICAgICAgIGxvb3AgKEJhY2tyZWYgIXN1YnBhdF9uciA6OiBhY2Mp IGopCi0rICAgICAgICAgIHwgJyEnIC0+IGxvb3AgYWNjIChpMSArIDEpCi0rICAgICAgICAgIHwg JyQnIC0+IGxvb3AgKFN1YnN0U3RyaW5nIChpMSwgMSkgOjogYWNjKSAoaTEgKyAxKQotKyAgICAg ICAgICB8ICcmJyAtPiBsb29wIChNYXRjaCA6OiBhY2MpIChpMSArIDEpCi0rICAgICAgICAgIHwg J2AnIC0+IGxvb3AgKFByZU1hdGNoIDo6IGFjYykgKGkxICsgMSkKLSsgICAgICAgICAgfCAnXCcn IC0+IGxvb3AgKFBvc3RNYXRjaCA6OiBhY2MpIChpMSArIDEpCi0rICAgICAgICAgIHwgJysnIC0+ Ci0rICAgICAgICAgICAgICB3aXRoX2xwIDo9IHRydWU7Ci0rICAgICAgICAgICAgICBsb29wIChM YXN0UGFyZW5NYXRjaCA6OiBhY2MpIChpMSArIDEpCi0rICAgICAgICAgIHwgXyAtPiBsb29wIGFj YyBpMSkKLSsgIGluCi0rICBsZXQgc3Vic3RfbHN0ID0gbG9vcCBbXSAwIGluCi0rICAoc3RyLCAh bWF4X2JyLCAhd2l0aF9scCwgc3Vic3RfbHN0KQotKwotK2xldCBkZWZfc3Vic3QgPSBzdWJzdCAi IgotKwotKygqIENhbGN1bGF0ZXMgYSBsaXN0IG9mIHR1cGxlcyAoc3RyLCBvZmZzZXQsIGxlbikg d2hpY2ggY29udGFpbiBzdWJzdHJpbmdzIHRvIGJlCi0rICAgY29waWVkIG9uIHN1YnN0aXR1dGlv bnMuIEludGVybmFsIHVzZSBvbmx5ISAqKQotK2xldCBjYWxjX3RyYW5zX2xzdCBzdWJncm91cHMy IG92ZWN0b3Igc3ViaiB0ZW1wbCBzdWJzdF9sc3QgPQotKyAgbGV0IHByZWZpeF9sZW4gPSBBcnJh eS51bnNhZmVfZ2V0IG92ZWN0b3IgMCBpbgotKyAgbGV0IGxhc3QgPSBBcnJheS51bnNhZmVfZ2V0 IG92ZWN0b3IgMSBpbgotKyAgbGV0IGNvbGwgKChyZXNfbGVuLCB0cmFuc19sc3QpIGFzIGFjY3Up ID0KLSsgICAgbGV0IHJldHVybl9sc3QgKChfc3RyLCBfaXgsIGxlbikgYXMgZWwpID0KLSsgICAg ICBpZiBsZW4gPSAwIHRoZW4gYWNjdSBlbHNlIChyZXNfbGVuICsgbGVuLCBlbCA6OiB0cmFuc19s c3QpCi0rICAgIGluCi0rICAgIGZ1bmN0aW9uCi0rICAgIHwgU3Vic3RTdHJpbmcgKGl4LCBsZW4p IC0+IHJldHVybl9sc3QgKHRlbXBsLCBpeCwgbGVuKQotKyAgICB8IEJhY2tyZWYgMCAtPgotKyAg ICAgICAgbGV0IHByb2dfbmFtZSA9IFN5cy5hcmd2LigwKSBpbgotKyAgICAgICAgcmV0dXJuX2xz dCAocHJvZ19uYW1lLCAwLCBTdHJpbmcubGVuZ3RoIHByb2dfbmFtZSkKLSsgICAgfCBCYWNrcmVm IG4gLT4KLSsgICAgICAgIGxldCBvZmZzZXQgPSBuIGxzbCAxIGluCi0rICAgICAgICBsZXQgc3Rh cnQgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3Igb2Zmc2V0IGluCi0rICAgICAgICBsZXQgbGVu ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIChvZmZzZXQgKyAxKSAtIHN0YXJ0IGluCi0rICAg ICAgICByZXR1cm5fbHN0IChzdWJqLCBzdGFydCwgbGVuKQotKyAgICB8IE1hdGNoIC0+IHJldHVy bl9sc3QgKHN1YmosIHByZWZpeF9sZW4sIGxhc3QgLSBwcmVmaXhfbGVuKQotKyAgICB8IFByZU1h dGNoIC0+IHJldHVybl9sc3QgKHN1YmosIDAsIHByZWZpeF9sZW4pCi0rICAgIHwgUG9zdE1hdGNo IC0+IHJldHVybl9sc3QgKHN1YmosIGxhc3QsIFN0cmluZy5sZW5ndGggc3ViaiAtIGxhc3QpCi0r ICAgIHwgTGFzdFBhcmVuTWF0Y2ggLT4KLSsgICAgICAgIGxldCBzdWJncm91cHMyXzIgPSBzdWJn cm91cHMyIC0gMiBpbgotKyAgICAgICAgbGV0IHBvcyA9IHJlZiBzdWJncm91cHMyXzIgaW4KLSsg ICAgICAgIGxldCBpeCA9IHJlZiAoQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIHN1Ymdyb3VwczJf MikgaW4KLSsgICAgICAgIHdoaWxlICFpeCA8IDAgZG8KLSsgICAgICAgICAgbGV0IHBvc18yID0g IXBvcyAtIDIgaW4KLSsgICAgICAgICAgcG9zIDo9IHBvc18yOwotKyAgICAgICAgICBpeCA6PSBB cnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgcG9zXzIKLSsgICAgICAgIGRvbmU7Ci0rICAgICAgICBy ZXR1cm5fbHN0IChzdWJqLCAhaXgsIEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAoIXBvcyArIDEp IC0gIWl4KQotKyAgaW4KLSsgIExpc3QuZm9sZF9sZWZ0IGNvbGwgKDAsIFtdKSBzdWJzdF9sc3QK LSsKLStsZXQgcmVwbGFjZSA/KGlmbGFncyA9IDBMKSA/ZmxhZ3MgPyhyZXggPSBkZWZfcmV4KSA/ cGF0ID8ocG9zID0gMCkKLSsgICAgPyhpdGVtcGwgPSBkZWZfc3Vic3QpID90ZW1wbCA/Y2FsbG91 dCBzdWJqID0KLSsgIGxldCByZXggPSBtYXRjaCBwYXQgd2l0aCBTb21lIHN0ciAtPiByZWdleHAg c3RyIHwgXyAtPiByZXggaW4KLSsgIGxldCBpZmxhZ3MgPSBtYXRjaCBmbGFncyB3aXRoIFNvbWUg ZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxhZ3MgaW4KLSsgIGxldCB0ZW1wbCwgbWF4 X2JyLCB3aXRoX2xwLCBzdWJzdF9sc3QgPQotKyAgICBtYXRjaCB0ZW1wbCB3aXRoIFNvbWUgc3Ry IC0+IHN1YnN0IHN0ciB8IF8gLT4gaXRlbXBsCi0rICBpbgotKyAgbGV0IHN1YmpfbGVuID0gU3Ry aW5nLmxlbmd0aCBzdWJqIGluCi0rICBpZiBwb3MgPCAwIHx8IHBvcyA+IHN1YmpfbGVuIHRoZW4g aW52YWxpZF9hcmcgIlBjcmUyLnJlcGxhY2U6IGlsbGVnYWwgb2Zmc2V0IjsKLSsgIGxldCBzdWJn cm91cHMyLCBvdmVjdG9yID0gbWFrZV9vdmVjdG9yIHJleCBpbgotKyAgbGV0IG5zdWJzID0gKHN1 Ymdyb3VwczIgbHNyIDEpIC0gMSBpbgotKyAgaWYgbWF4X2JyID4gbnN1YnMgdGhlbgotKyAgICBm YWlsd2l0aCAiUGNyZTIucmVwbGFjZTogYmFja3JlZmVyZW5jZSBkZW5vdGVzIG5vbmV4aXN0ZW50 IHN1YnBhdHRlcm4iOwotKyAgaWYgd2l0aF9scCAmJiBuc3VicyA9IDAgdGhlbiBmYWlsd2l0aCAi UGNyZTIucmVwbGFjZTogbm8gYmFja3JlZmVyZW5jZXMiOwotKyAgbGV0IHJlYyBsb29wIGZ1bGxf bGVuIHRyYW5zX2xzdHMgY3VyX3BvcyA9Ci0rICAgIGlmCi0rICAgICAgY3VyX3BvcyA+IHN1Ympf bGVuCi0rICAgICAgfHwKLSsgICAgICB0cnkKLSsgICAgICAgIHVuc2FmZV9wY3JlMl9tYXRjaCBp ZmxhZ3MgcmV4IH5wb3M6Y3VyX3BvcyB+c3Vial9zdGFydDowIH5zdWJqIG92ZWN0b3IKLSsgICAg ICAgICAgY2FsbG91dDsKLSsgICAgICAgIGZhbHNlCi0rICAgICAgd2l0aCBOb3RfZm91bmQgLT4g dHJ1ZQotKyAgICB0aGVuICgKLSsgICAgICBsZXQgcG9zdGZpeF9sZW4gPSBtYXggKHN1YmpfbGVu IC0gY3VyX3BvcykgMCBpbgotKyAgICAgIGxldCBsZWZ0ID0gcG9zICsgZnVsbF9sZW4gaW4KLSsg ICAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChsZWZ0ICsgcG9zdGZpeF9sZW4pIGluCi0rICAg ICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1YmogMCByZXMgMCBwb3M7Ci0rICAgICAgYnl0 ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1YmogY3VyX3BvcyByZXMgbGVmdCBwb3N0Zml4X2xlbjsK LSsgICAgICBsZXQgaW5uZXJfY29sbCBvZnMgKHRlbXBsLCBpeCwgbGVuKSA9Ci0rICAgICAgICBi eXRlc191bnNhZmVfYmxpdF9zdHJpbmcgdGVtcGwgaXggcmVzIG9mcyBsZW47Ci0rICAgICAgICBv ZnMgKyBsZW4KLSsgICAgICBpbgotKyAgICAgIGxldCBjb2xsIG9mcyAocmVzX2xlbiwgdHJhbnNf bHN0KSA9Ci0rICAgICAgICBsZXQgbmV3X29mcyA9IG9mcyAtIHJlc19sZW4gaW4KLSsgICAgICAg IGxldCBfID0gTGlzdC5mb2xkX2xlZnQgaW5uZXJfY29sbCBuZXdfb2ZzIHRyYW5zX2xzdCBpbgot KyAgICAgICAgbmV3X29mcwotKyAgICAgIGluCi0rICAgICAgbGV0IF8gPSBMaXN0LmZvbGRfbGVm dCBjb2xsIGxlZnQgdHJhbnNfbHN0cyBpbgotKyAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcg cmVzKQotKyAgICBlbHNlCi0rICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVj dG9yIDAgaW4KLSsgICAgICBsZXQgbGVuID0gZmlyc3QgLSBjdXJfcG9zIGluCi0rICAgICAgbGV0 ICgocmVzX2xlbiwgXykgYXMgdHJhbnNfbHN0X2VsKSA9Ci0rICAgICAgICBjYWxjX3RyYW5zX2xz dCBzdWJncm91cHMyIG92ZWN0b3Igc3ViaiB0ZW1wbCBzdWJzdF9sc3QKLSsgICAgICBpbgotKyAg ICAgIGxldCB0cmFuc19sc3RzID0KLSsgICAgICAgIGlmIGxlbiA+IDAgdGhlbgotKyAgICAgICAg ICB0cmFuc19sc3RfZWwgOjogKGxlbiwgWyAoc3ViaiwgY3VyX3BvcywgbGVuKSBdKSA6OiB0cmFu c19sc3RzCi0rICAgICAgICBlbHNlIHRyYW5zX2xzdF9lbCA6OiB0cmFuc19sc3RzCi0rICAgICAg aW4KLSsgICAgICBsZXQgZnVsbF9sZW4gPSBmdWxsX2xlbiArIGxlbiArIHJlc19sZW4gaW4KLSsg ICAgICBsZXQgbmV4dCA9IGZpcnN0ICsgMSBpbgotKyAgICAgIGxldCBsYXN0ID0gQXJyYXkudW5z YWZlX2dldCBvdmVjdG9yIDEgaW4KLSsgICAgICBpZiBsYXN0IDwgbmV4dCB0aGVuCi0rICAgICAg ICBpZiBmaXJzdCA8IHN1YmpfbGVuIHRoZW4KLSsgICAgICAgICAgbGV0IG5ld190cmFuc19sc3Rz ID0KLSsgICAgICAgICAgICAoMSwgWyAoc3ViaiwgY3VyX3BvcyArIGxlbiwgMSkgXSkgOjogdHJh bnNfbHN0cwotKyAgICAgICAgICBpbgotKyAgICAgICAgICBsb29wIChmdWxsX2xlbiArIDEpIG5l d190cmFuc19sc3RzIG5leHQKLSsgICAgICAgIGVsc2UgbG9vcCBmdWxsX2xlbiB0cmFuc19sc3Rz IG5leHQKLSsgICAgICBlbHNlIGxvb3AgZnVsbF9sZW4gdHJhbnNfbHN0cyBsYXN0Ci0rICBpbgot KyAgbG9vcCAwIFtdIHBvcwotKwotK2xldCBxcmVwbGFjZSA/KGlmbGFncyA9IDBMKSA/ZmxhZ3Mg PyhyZXggPSBkZWZfcmV4KSA/cGF0ID8ocG9zID0gMCkKLSsgICAgPyh0ZW1wbCA9ICIiKSA/Y2Fs bG91dCBzdWJqID0KLSsgIGxldCByZXggPSBtYXRjaCBwYXQgd2l0aCBTb21lIHN0ciAtPiByZWdl eHAgc3RyIHwgXyAtPiByZXggaW4KLSsgIGxldCBpZmxhZ3MgPSBtYXRjaCBmbGFncyB3aXRoIFNv bWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxhZ3MgaW4KLSsgIGxldCBzdWJqX2xl biA9IFN0cmluZy5sZW5ndGggc3ViaiBpbgotKyAgaWYgcG9zIDwgMCB8fCBwb3MgPiBzdWJqX2xl biB0aGVuIGludmFsaWRfYXJnICJQY3JlMi5xcmVwbGFjZTogaWxsZWdhbCBvZmZzZXQiOwotKyAg bGV0IHRlbXBsX2xlbiA9IFN0cmluZy5sZW5ndGggdGVtcGwgaW4KLSsgIGxldCBfLCBvdmVjdG9y ID0gbWFrZV9vdmVjdG9yIHJleCBpbgotKyAgbGV0IHJlYyBsb29wIGZ1bGxfbGVuIHN1YnN0X2xz dCBjdXJfcG9zID0KLSsgICAgaWYKLSsgICAgICBjdXJfcG9zID4gc3Vial9sZW4KLSsgICAgICB8 fAotKyAgICAgIHRyeQotKyAgICAgICAgdW5zYWZlX3BjcmUyX21hdGNoIGlmbGFncyByZXggfnBv czpjdXJfcG9zIH5zdWJqX3N0YXJ0OjAgfnN1Ymogb3ZlY3RvcgotKyAgICAgICAgICBjYWxsb3V0 OwotKyAgICAgICAgZmFsc2UKLSsgICAgICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlCi0rICAgIHRo ZW4gKAotKyAgICAgIGxldCBwb3N0Zml4X2xlbiA9IG1heCAoc3Vial9sZW4gLSBjdXJfcG9zKSAw IGluCi0rICAgICAgbGV0IGxlZnQgPSBwb3MgKyBmdWxsX2xlbiBpbgotKyAgICAgIGxldCByZXMg PSBCeXRlcy5jcmVhdGUgKGxlZnQgKyBwb3N0Zml4X2xlbikgaW4KLSsgICAgICBieXRlc191bnNh ZmVfYmxpdF9zdHJpbmcgc3ViaiAwIHJlcyAwIHBvczsKLSsgICAgICBieXRlc191bnNhZmVfYmxp dF9zdHJpbmcgc3ViaiBjdXJfcG9zIHJlcyBsZWZ0IHBvc3RmaXhfbGVuOwotKyAgICAgIGxldCBj b2xsIG9mcyA9IGZ1bmN0aW9uCi0rICAgICAgICB8IFNvbWUgKHN1YnN0ciwgaXgsIGxlbikgLT4K LSsgICAgICAgICAgICBsZXQgbmV3X29mcyA9IG9mcyAtIGxlbiBpbgotKyAgICAgICAgICAgIGJ5 dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBzdWJzdHIgaXggcmVzIG5ld19vZnMgbGVuOwotKyAgICAg ICAgICAgIG5ld19vZnMKLSsgICAgICAgIHwgTm9uZSAtPgotKyAgICAgICAgICAgIGxldCBuZXdf b2ZzID0gb2ZzIC0gdGVtcGxfbGVuIGluCi0rICAgICAgICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRf c3RyaW5nIHRlbXBsIDAgcmVzIG5ld19vZnMgdGVtcGxfbGVuOwotKyAgICAgICAgICAgIG5ld19v ZnMKLSsgICAgICBpbgotKyAgICAgIGxldCBfID0gTGlzdC5mb2xkX2xlZnQgY29sbCBsZWZ0IHN1 YnN0X2xzdCBpbgotKyAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzKQotKyAgICBlbHNl Ci0rICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDAgaW4KLSsgICAg ICBsZXQgbGVuID0gZmlyc3QgLSBjdXJfcG9zIGluCi0rICAgICAgbGV0IHN1YnN0X2xzdCA9Ci0r ICAgICAgICBpZiBsZW4gPiAwIHRoZW4gTm9uZSA6OiBTb21lIChzdWJqLCBjdXJfcG9zLCBsZW4p IDo6IHN1YnN0X2xzdAotKyAgICAgICAgZWxzZSBOb25lIDo6IHN1YnN0X2xzdAotKyAgICAgIGlu Ci0rICAgICAgbGV0IGxhc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSBpbgotKyAgICAg IGxldCBmdWxsX2xlbiA9IGZ1bGxfbGVuICsgbGVuICsgdGVtcGxfbGVuIGluCi0rICAgICAgbGV0 IG5leHQgPSBmaXJzdCArIDEgaW4KLSsgICAgICBpZiBsYXN0IDwgbmV4dCB0aGVuCi0rICAgICAg ICBpZiBmaXJzdCA8IHN1YmpfbGVuIHRoZW4KLSsgICAgICAgICAgbG9vcCAoZnVsbF9sZW4gKyAx KSAoU29tZSAoc3ViaiwgY3VyX3BvcyArIGxlbiwgMSkgOjogc3Vic3RfbHN0KSBuZXh0Ci0rICAg ICAgICBlbHNlIGxvb3AgZnVsbF9sZW4gc3Vic3RfbHN0IG5leHQKLSsgICAgICBlbHNlIGxvb3Ag ZnVsbF9sZW4gc3Vic3RfbHN0IGxhc3QKLSsgIGluCi0rICBsb29wIDAgW10gcG9zCi0rCi0rbGV0 IHN1YnN0aXR1dGVfc3Vic3RyaW5ncyA/KGlmbGFncyA9IDBMKSA/ZmxhZ3MgPyhyZXggPSBkZWZf cmV4KSA/cGF0ID8ocG9zID0gMCkKLSsgICAgP2NhbGxvdXQgfnN1YnN0IHN1YmogPQotKyAgbGV0 IHJleCA9IG1hdGNoIHBhdCB3aXRoIFNvbWUgc3RyIC0+IHJlZ2V4cCBzdHIgfCBfIC0+IHJleCBp bgotKyAgbGV0IGlmbGFncyA9IG1hdGNoIGZsYWdzIHdpdGggU29tZSBmbGFncyAtPiByZmxhZ3Mg ZmxhZ3MgfCBfIC0+IGlmbGFncyBpbgotKyAgbGV0IHN1YmpfbGVuID0gU3RyaW5nLmxlbmd0aCBz dWJqIGluCi0rICBpZiBwb3MgPCAwIHx8IHBvcyA+IHN1YmpfbGVuIHRoZW4KLSsgICAgaW52YWxp ZF9hcmcgIlBjcmUyLnN1YnN0aXR1dGU6IGlsbGVnYWwgb2Zmc2V0IjsKLSsgIGxldCBfLCBvdmVj dG9yID0gbWFrZV9vdmVjdG9yIHJleCBpbgotKyAgbGV0IHJlYyBsb29wIGZ1bGxfbGVuIHN1YnN0 X2xzdCBjdXJfcG9zID0KLSsgICAgaWYKLSsgICAgICBjdXJfcG9zID4gc3Vial9sZW4KLSsgICAg ICB8fAotKyAgICAgIHRyeQotKyAgICAgICAgdW5zYWZlX3BjcmUyX21hdGNoIGlmbGFncyByZXgg fnBvczpjdXJfcG9zIH5zdWJqX3N0YXJ0OjAgfnN1Ymogb3ZlY3RvcgotKyAgICAgICAgICBjYWxs b3V0OwotKyAgICAgICAgZmFsc2UKLSsgICAgICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlCi0rICAg IHRoZW4gKAotKyAgICAgIGxldCBwb3N0Zml4X2xlbiA9IG1heCAoc3Vial9sZW4gLSBjdXJfcG9z KSAwIGluCi0rICAgICAgbGV0IGxlZnQgPSBwb3MgKyBmdWxsX2xlbiBpbgotKyAgICAgIGxldCBy ZXMgPSBCeXRlcy5jcmVhdGUgKGxlZnQgKyBwb3N0Zml4X2xlbikgaW4KLSsgICAgICBieXRlc191 bnNhZmVfYmxpdF9zdHJpbmcgc3ViaiAwIHJlcyAwIHBvczsKLSsgICAgICBieXRlc191bnNhZmVf YmxpdF9zdHJpbmcgc3ViaiBjdXJfcG9zIHJlcyBsZWZ0IHBvc3RmaXhfbGVuOwotKyAgICAgIGxl dCBjb2xsIG9mcyAodGVtcGwsIGl4LCBsZW4pID0KLSsgICAgICAgIGxldCBuZXdfb2ZzID0gb2Zz IC0gbGVuIGluCi0rICAgICAgICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgdGVtcGwgaXggcmVz IG5ld19vZnMgbGVuOwotKyAgICAgICAgbmV3X29mcwotKyAgICAgIGluCi0rICAgICAgbGV0IF8g PSBMaXN0LmZvbGRfbGVmdCBjb2xsIGxlZnQgc3Vic3RfbHN0IGluCi0rICAgICAgQnl0ZXMudW5z YWZlX3RvX3N0cmluZyByZXMpCi0rICAgIGVsc2UKLSsgICAgICBsZXQgZmlyc3QgPSBBcnJheS51 bnNhZmVfZ2V0IG92ZWN0b3IgMCBpbgotKyAgICAgIGxldCBsZW4gPSBmaXJzdCAtIGN1cl9wb3Mg aW4KLSsgICAgICBsZXQgdGVtcGwgPSBzdWJzdCAoc3Viaiwgb3ZlY3RvcikgaW4KLSsgICAgICBs ZXQgdGVtcGxfbGVuID0gU3RyaW5nLmxlbmd0aCB0ZW1wbCBpbgotKyAgICAgIGxldCBzdWJzdF9s c3QgPQotKyAgICAgICAgaWYgbGVuID4gMCB0aGVuCi0rICAgICAgICAgICh0ZW1wbCwgMCwgdGVt cGxfbGVuKSA6OiAoc3ViaiwgY3VyX3BvcywgbGVuKSA6OiBzdWJzdF9sc3QKLSsgICAgICAgIGVs c2UgKHRlbXBsLCAwLCB0ZW1wbF9sZW4pIDo6IHN1YnN0X2xzdAotKyAgICAgIGluCi0rICAgICAg bGV0IGxhc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSBpbgotKyAgICAgIGxldCBmdWxs X2xlbiA9IGZ1bGxfbGVuICsgbGVuICsgdGVtcGxfbGVuIGluCi0rICAgICAgbGV0IG5leHQgPSBm aXJzdCArIDEgaW4KLSsgICAgICBpZiBsYXN0IDwgbmV4dCB0aGVuCi0rICAgICAgICBpZiBmaXJz dCA8IHN1YmpfbGVuIHRoZW4KLSsgICAgICAgICAgbG9vcCAoZnVsbF9sZW4gKyAxKSAoKHN1Ymos IGN1cl9wb3MgKyBsZW4sIDEpIDo6IHN1YnN0X2xzdCkgbmV4dAotKyAgICAgICAgZWxzZSBsb29w IGZ1bGxfbGVuIHN1YnN0X2xzdCBuZXh0Ci0rICAgICAgZWxzZSBsb29wIGZ1bGxfbGVuIHN1YnN0 X2xzdCBsYXN0Ci0rICBpbgotKyAgbG9vcCAwIFtdIHBvcwotKwotK2xldCBzdWJzdGl0dXRlID9p ZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IH5zdWJzdDpzdHJfc3Vic3Qgc3Vi aiA9Ci0rICBsZXQgc3Vic3QgKHN1YmosIG92ZWN0b3IpID0KLSsgICAgbGV0IGZpcnN0ID0gQXJy YXkudW5zYWZlX2dldCBvdmVjdG9yIDAgaW4KLSsgICAgbGV0IGxhc3QgPSBBcnJheS51bnNhZmVf Z2V0IG92ZWN0b3IgMSBpbgotKyAgICBzdHJfc3Vic3QgKHN0cmluZ191bnNhZmVfc3ViIHN1Ymog Zmlyc3QgKGxhc3QgLSBmaXJzdCkpCi0rICBpbgotKyAgc3Vic3RpdHV0ZV9zdWJzdHJpbmdzID9p ZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IH5zdWJzdCBzdWJqCi0rCi0rbGV0 IHJlcGxhY2VfZmlyc3QgPyhpZmxhZ3MgPSAwTCkgP2ZsYWdzID8ocmV4ID0gZGVmX3JleCkgP3Bh dCA/KHBvcyA9IDApCi0rICAgID8oaXRlbXBsID0gZGVmX3N1YnN0KSA/dGVtcGwgP2NhbGxvdXQg c3ViaiA9Ci0rICBsZXQgcmV4ID0gbWF0Y2ggcGF0IHdpdGggU29tZSBzdHIgLT4gcmVnZXhwIHN0 ciB8IF8gLT4gcmV4IGluCi0rICBsZXQgaWZsYWdzID0gbWF0Y2ggZmxhZ3Mgd2l0aCBTb21lIGZs YWdzIC0+IHJmbGFncyBmbGFncyB8IF8gLT4gaWZsYWdzIGluCi0rICBsZXQgdGVtcGwsIG1heF9i ciwgd2l0aF9scCwgc3Vic3RfbHN0ID0KLSsgICAgbWF0Y2ggdGVtcGwgd2l0aCBTb21lIHN0ciAt PiBzdWJzdCBzdHIgfCBfIC0+IGl0ZW1wbAotKyAgaW4KLSsgIGxldCBzdWJncm91cHMyLCBvdmVj dG9yID0gbWFrZV9vdmVjdG9yIHJleCBpbgotKyAgbGV0IG5zdWJzID0gKHN1Ymdyb3VwczIgbHNy IDEpIC0gMSBpbgotKyAgaWYgbWF4X2JyID4gbnN1YnMgdGhlbgotKyAgICBmYWlsd2l0aCAiUGNy ZTIucmVwbGFjZV9maXJzdDogYmFja3JlZmVyZW5jZSBkZW5vdGVzIG5vbmV4aXN0ZW50IHN1YnBh dHRlcm4iOwotKyAgaWYgd2l0aF9scCAmJiBuc3VicyA9IDAgdGhlbiBmYWlsd2l0aCAiUGNyZTIu cmVwbGFjZV9maXJzdDogbm8gYmFja3JlZmVyZW5jZXMiOwotKyAgdHJ5Ci0rICAgIHVuc2FmZV9w Y3JlMl9tYXRjaCBpZmxhZ3MgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6MCB+c3ViaiBvdmVjdG9yIGNh bGxvdXQ7Ci0rICAgIGxldCByZXNfbGVuLCB0cmFuc19sc3QgPQotKyAgICAgIGNhbGNfdHJhbnNf bHN0IHN1Ymdyb3VwczIgb3ZlY3RvciBzdWJqIHRlbXBsIHN1YnN0X2xzdAotKyAgICBpbgotKyAg ICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMCBpbgotKyAgICBsZXQgbGFz dCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGluCi0rICAgIGxldCByZXN0ID0gU3RyaW5n Lmxlbmd0aCBzdWJqIC0gbGFzdCBpbgotKyAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChmaXJz dCArIHJlc19sZW4gKyByZXN0KSBpbgotKyAgICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgc3Vi aiAwIHJlcyAwIGZpcnN0OwotKyAgICBsZXQgY29sbCBvZnMgKHRlbXBsLCBpeCwgbGVuKSA9Ci0r ICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHRlbXBsIGl4IHJlcyBvZnMgbGVuOwotKyAg ICAgIG9mcyArIGxlbgotKyAgICBpbgotKyAgICBsZXQgb2ZzID0gTGlzdC5mb2xkX2xlZnQgY29s bCBmaXJzdCB0cmFuc19sc3QgaW4KLSsgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1Ymog bGFzdCByZXMgb2ZzIHJlc3Q7Ci0rICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzCi0rICB3 aXRoIE5vdF9mb3VuZCAtPiBzdWJqCi0rCi0rbGV0IHFyZXBsYWNlX2ZpcnN0ID8oaWZsYWdzID0g MEwpID9mbGFncyA/KHJleCA9IGRlZl9yZXgpID9wYXQgPyhwb3MgPSAwKQotKyAgICA/KHRlbXBs ID0gIiIpID9jYWxsb3V0IHN1YmogPQotKyAgbGV0IHJleCA9IG1hdGNoIHBhdCB3aXRoIFNvbWUg c3RyIC0+IHJlZ2V4cCBzdHIgfCBfIC0+IHJleCBpbgotKyAgbGV0IGlmbGFncyA9IG1hdGNoIGZs YWdzIHdpdGggU29tZSBmbGFncyAtPiByZmxhZ3MgZmxhZ3MgfCBfIC0+IGlmbGFncyBpbgotKyAg bGV0IF8sIG92ZWN0b3IgPSBtYWtlX292ZWN0b3IgcmV4IGluCi0rICB0cnkKLSsgICAgdW5zYWZl X3BjcmUyX21hdGNoIGlmbGFncyByZXggfnBvcyB+c3Vial9zdGFydDowIH5zdWJqIG92ZWN0b3Ig Y2FsbG91dDsKLSsgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDAgaW4K LSsgICAgbGV0IGxhc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSBpbgotKyAgICBsZXQg bGVuID0gU3RyaW5nLmxlbmd0aCB0ZW1wbCBpbgotKyAgICBsZXQgcmVzdCA9IFN0cmluZy5sZW5n dGggc3ViaiAtIGxhc3QgaW4KLSsgICAgbGV0IHBvc3RmaXhfc3RhcnQgPSBmaXJzdCArIGxlbiBp bgotKyAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChwb3N0Zml4X3N0YXJ0ICsgcmVzdCkgaW4K LSsgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1YmogMCByZXMgMCBmaXJzdDsKLSsgICAg Ynl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHRlbXBsIDAgcmVzIGZpcnN0IGxlbjsKLSsgICAgYnl0 ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1YmogbGFzdCByZXMgcG9zdGZpeF9zdGFydCByZXN0Owot KyAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcwotKyAgd2l0aCBOb3RfZm91bmQgLT4gc3Vi agotKwotK2xldCBzdWJzdGl0dXRlX3N1YnN0cmluZ3NfZmlyc3QgPyhpZmxhZ3MgPSAwTCkgP2Zs YWdzID8ocmV4ID0gZGVmX3JleCkgP3BhdAotKyAgICA/KHBvcyA9IDApID9jYWxsb3V0IH5zdWJz dCBzdWJqID0KLSsgIGxldCByZXggPSBtYXRjaCBwYXQgd2l0aCBTb21lIHN0ciAtPiByZWdleHAg c3RyIHwgXyAtPiByZXggaW4KLSsgIGxldCBpZmxhZ3MgPSBtYXRjaCBmbGFncyB3aXRoIFNvbWUg ZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxhZ3MgaW4KLSsgIGxldCBfLCBvdmVjdG9y ID0gbWFrZV9vdmVjdG9yIHJleCBpbgotKyAgdHJ5Ci0rICAgIHVuc2FmZV9wY3JlMl9tYXRjaCBp ZmxhZ3MgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6MCB+c3ViaiBvdmVjdG9yIGNhbGxvdXQ7Ci0rICAg IGxldCBzdWJqX2xlbiA9IFN0cmluZy5sZW5ndGggc3ViaiBpbgotKyAgICBsZXQgcHJlZml4X2xl biA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGluCi0rICAgIGxldCBsYXN0ID0gQXJyYXku dW5zYWZlX2dldCBvdmVjdG9yIDEgaW4KLSsgICAgbGV0IHRlbXBsID0gc3Vic3QgKHN1YmosIG92 ZWN0b3IpIGluCi0rICAgIGxldCBwb3N0Zml4X2xlbiA9IHN1YmpfbGVuIC0gbGFzdCBpbgotKyAg ICBsZXQgdGVtcGxfbGVuID0gU3RyaW5nLmxlbmd0aCB0ZW1wbCBpbgotKyAgICBsZXQgcG9zdGZp eF9zdGFydCA9IHByZWZpeF9sZW4gKyB0ZW1wbF9sZW4gaW4KLSsgICAgbGV0IHJlcyA9IEJ5dGVz LmNyZWF0ZSAocG9zdGZpeF9zdGFydCArIHBvc3RmaXhfbGVuKSBpbgotKyAgICBieXRlc191bnNh ZmVfYmxpdF9zdHJpbmcgc3ViaiAwIHJlcyAwIHByZWZpeF9sZW47Ci0rICAgIGJ5dGVzX3Vuc2Fm ZV9ibGl0X3N0cmluZyB0ZW1wbCAwIHJlcyBwcmVmaXhfbGVuIHRlbXBsX2xlbjsKLSsgICAgYnl0 ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1YmogbGFzdCByZXMgcG9zdGZpeF9zdGFydCBwb3N0Zml4 X2xlbjsKLSsgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXMKLSsgIHdpdGggTm90X2ZvdW5k IC0+IHN1YmoKLSsKLStsZXQgc3Vic3RpdHV0ZV9maXJzdCA/aWZsYWdzID9mbGFncyA/cmV4ID9w YXQgP3BvcyA/Y2FsbG91dCB+c3Vic3Q6c3RyX3N1YnN0Ci0rICAgIHN1YmogPQotKyAgbGV0IHN1 YnN0IChzdWJqLCBvdmVjdG9yKSA9Ci0rICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQg b3ZlY3RvciAwIGluCi0rICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEg aW4KLSsgICAgc3RyX3N1YnN0IChzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIGZpcnN0IChsYXN0IC0g Zmlyc3QpKQotKyAgaW4KLSsgIHN1YnN0aXR1dGVfc3Vic3RyaW5nc19maXJzdCA/aWZsYWdzID9m bGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCB+c3Vic3Qgc3ViagotKwotKygqIFNwbGl0dGlu ZyAqKQotKwotK2xldCBpbnRlcm5hbF9wc3BsaXQgZmxhZ3MgcmV4IG1heCBwb3MgY2FsbG91dCBz dWJqID0KLSsgIGxldCBzdWJqX2xlbiA9IFN0cmluZy5sZW5ndGggc3ViaiBpbgotKyAgaWYgc3Vi al9sZW4gPSAwIHRoZW4gW10KLSsgIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFsgc3ViaiBdCi0rICBl bHNlCi0rICAgIGxldCBzdWJncm91cHMyLCBvdmVjdG9yID0gbWFrZV9vdmVjdG9yIHJleCBpbgot KwotKyAgICAoKiBBZGRzIGNvbnRlbnRzIG9mIHN1Ymdyb3VwcyB0byB0aGUgc3RyaW5nIGFjY3Vt dWxhdG9yICopCi0rICAgIGxldCBoYW5kbGVfc3ViZ3JvdXBzIHN0cnMgPQotKyAgICAgIGxldCBz dHJzID0gcmVmIHN0cnMgaW4KLSsgICAgICBsZXQgaSA9IHJlZiAyIGluCi0rICAgICAgd2hpbGUg IWkgPCBzdWJncm91cHMyIGRvCi0rICAgICAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0 IG92ZWN0b3IgIWkgaW4KLSsgICAgICAgIGluY3IgaTsKLSsgICAgICAgIGxldCBsYXN0ID0gQXJy YXkudW5zYWZlX2dldCBvdmVjdG9yICFpIGluCi0rICAgICAgICBsZXQgc3RyID0KLSsgICAgICAg ICAgaWYgZmlyc3QgPCAwIHRoZW4gIiIgZWxzZSBzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIGZpcnN0 IChsYXN0IC0gZmlyc3QpCi0rICAgICAgICBpbgotKyAgICAgICAgc3RycyA6PSBzdHIgOjogIXN0 cnM7Ci0rICAgICAgICBpbmNyIGkKLSsgICAgICBkb25lOwotKyAgICAgICFzdHJzCi0rICAgIGlu Ci0rCi0rICAgICgqIFBlcmZvcm1zIHRoZSByZWN1cnNpdmUgc3BsaXQgKikKLSsgICAgbGV0IHJl YyBsb29wIHN0cnMgY250IHBvcyBwcmVtYXRjaCA9Ci0rICAgICAgbGV0IGxlbiA9IHN1YmpfbGVu IC0gcG9zIGluCi0rICAgICAgaWYgbGVuIDwgMCB0aGVuIHN0cnMKLSsgICAgICBlbHNlIGlmCi0r ICAgICAgICAoKiBDaGVja3MgdGVybWluYXRpb24gZHVlIHRvIG1heCByZXN0cmljdGlvbiAqKQot KyAgICAgICAgY250ID0gMAotKyAgICAgIHRoZW4KLSsgICAgICAgIGlmCi0rICAgICAgICAgIHBy ZW1hdGNoCi0rICAgICAgICAgICYmCi0rICAgICAgICAgIHRyeQotKyAgICAgICAgICAgIHVuc2Fm ZV9wY3JlMl9tYXRjaCBmbGFncyByZXggfnBvcyB+c3Vial9zdGFydDpwb3MgfnN1Ymogb3ZlY3Rv cgotKyAgICAgICAgICAgICAgY2FsbG91dDsKLSsgICAgICAgICAgICB0cnVlCi0rICAgICAgICAg IHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlCi0rICAgICAgICB0aGVuCi0rICAgICAgICAgIGxldCBs YXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4KLSsgICAgICAgICAgbGV0IHN0cnMg PSBoYW5kbGVfc3ViZ3JvdXBzIHN0cnMgaW4KLSsgICAgICAgICAgc3RyaW5nX3Vuc2FmZV9zdWIg c3ViaiBsYXN0IChzdWJqX2xlbiAtIGxhc3QpIDo6IHN0cnMKLSsgICAgICAgIGVsc2Ugc3RyaW5n X3Vuc2FmZV9zdWIgc3ViaiBwb3MgbGVuIDo6IHN0cnMKLSsgICAgICAgICAgKCogQ2FsY3VsYXRl cyBuZXh0IGFjY3VtdWxhdG9yIHN0YXRlIGZvciBzcGxpdHRpbmcgKikKLSsgICAgICBlbHNlIGlm Ci0rICAgICAgICB0cnkKLSsgICAgICAgICAgdW5zYWZlX3BjcmUyX21hdGNoIGZsYWdzIHJleCB+ cG9zIH5zdWJqX3N0YXJ0OnBvcyB+c3ViaiBvdmVjdG9yCi0rICAgICAgICAgICAgY2FsbG91dDsK LSsgICAgICAgICAgZmFsc2UKLSsgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWUKLSsgICAg ICB0aGVuIHN0cmluZ191bnNhZmVfc3ViIHN1YmogcG9zIGxlbiA6OiBzdHJzCi0rICAgICAgZWxz ZQotKyAgICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDAgaW4KLSsg ICAgICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4KLSsgICAgICAg IGlmIGZpcnN0ID0gcG9zIHRoZW4KLSsgICAgICAgICAgaWYgbGFzdCA9IHBvcyB0aGVuCi0rICAg ICAgICAgICAgbGV0IHN0cnMgPSBpZiBwcmVtYXRjaCB0aGVuIGhhbmRsZV9zdWJncm91cHMgc3Ry cyBlbHNlIHN0cnMgaW4KLSsgICAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gIiIgOjogc3Rycwot KyAgICAgICAgICAgIGVsc2UgaWYKLSsgICAgICAgICAgICAgIHRyeQotKyAgICAgICAgICAgICAg ICB1bnNhZmVfcGNyZTJfbWF0Y2gKLSsgICAgICAgICAgICAgICAgICAoKiBgQU5DSE9SRUQgfCBg Tk9URU1QVFkgKikKLSsgICAgICAgICAgICAgICAgICAoSW50NjQubG9nb3IgZmxhZ3MgMHg4MDAw MDAwNEwpCi0rICAgICAgICAgICAgICAgICAgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6cG9zIH5zdWJq IG92ZWN0b3IgY2FsbG91dDsKLSsgICAgICAgICAgICAgICAgdHJ1ZQotKyAgICAgICAgICAgICAg d2l0aCBOb3RfZm91bmQgLT4gZmFsc2UKLSsgICAgICAgICAgICB0aGVuCi0rICAgICAgICAgICAg ICBsZXQgbmV3X3N0cnMgPSBoYW5kbGVfc3ViZ3JvdXBzICgiIiA6OiBzdHJzKSBpbgotKyAgICAg ICAgICAgICAgbG9vcCBuZXdfc3RycyAoY250IC0gMSkgKEFycmF5LnVuc2FmZV9nZXQgb3ZlY3Rv ciAxKSBmYWxzZQotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgIGxldCBuZXdfc3Ry cyA9IHN0cmluZ191bnNhZmVfc3ViIHN1YmogcG9zIDEgOjogc3RycyBpbgotKyAgICAgICAgICAg ICAgbG9vcCBuZXdfc3RycyAoY250IC0gMSkgKHBvcyArIDEpIHRydWUKLSsgICAgICAgICAgZWxz ZSBpZiBwcmVtYXRjaCB0aGVuIGxvb3AgKGhhbmRsZV9zdWJncm91cHMgc3RycykgY250IGxhc3Qg ZmFsc2UKLSsgICAgICAgICAgZWxzZSBsb29wIChoYW5kbGVfc3ViZ3JvdXBzICgiIiA6OiBzdHJz KSkgKGNudCAtIDEpIGxhc3QgZmFsc2UKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgbGV0IG5l d19zdHJzID0gc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBwb3MgKGZpcnN0IC0gcG9zKSA6OiBzdHJz IGluCi0rICAgICAgICAgIGxvb3AgKGhhbmRsZV9zdWJncm91cHMgbmV3X3N0cnMpIChjbnQgLSAx KSBsYXN0IGZhbHNlCi0rICAgIGluCi0rICAgIGxvb3AgW10gKG1heCAtIDEpIHBvcyBmYWxzZQot KwotK2xldCByZWMgc3RyaXBfYWxsX2VtcHR5ID0gZnVuY3Rpb24gIiIgOjogdCAtPiBzdHJpcF9h bGxfZW1wdHkgdCB8IGwgLT4gbAotKwotK2V4dGVybmFsIGlzc3BhY2UgOiBjaGFyIC0+IGJvb2wg PSAicGNyZTJfaXNzcGFjZV9zdHViIiBbQEBub2FsbG9jXQotKwotK2xldCByZWMgZmluZF9ub19z cGFjZSBpeCBsZW4gc3RyID0KLSsgIGlmIGl4ID0gbGVuIHx8IG5vdCAoaXNzcGFjZSAoU3RyaW5n LnVuc2FmZV9nZXQgc3RyIGl4KSkgdGhlbiBpeAotKyAgZWxzZSBmaW5kX25vX3NwYWNlIChpeCAr IDEpIGxlbiBzdHIKLSsKLStsZXQgc3BsaXQgPyhpZmxhZ3MgPSAwTCkgP2ZsYWdzID9yZXggP3Bh dCA/KHBvcyA9IDApID8obWF4ID0gMCkgP2NhbGxvdXQgc3ViaiA9Ci0rICBsZXQgaWZsYWdzID0g bWF0Y2ggZmxhZ3Mgd2l0aCBTb21lIGZsYWdzIC0+IHJmbGFncyBmbGFncyB8IF8gLT4gaWZsYWdz IGluCi0rICBsZXQgcmVzID0KLSsgICAgbWF0Y2ggKHBhdCwgcmV4KSB3aXRoCi0rICAgIHwgU29t ZSBzdHIsIF8gLT4gaW50ZXJuYWxfcHNwbGl0IGlmbGFncyAocmVnZXhwIHN0cikgbWF4IHBvcyBj YWxsb3V0IHN1YmoKLSsgICAgfCBfLCBTb21lIHJleCAtPiBpbnRlcm5hbF9wc3BsaXQgaWZsYWdz IHJleCBtYXggcG9zIGNhbGxvdXQgc3ViagotKyAgICB8IF8gLT4KLSsgICAgICAgICgqIHNwZWNp YWwgY2FzZSBmb3IgUGVybC1zcGxpdHRpbmcgc2VtYW50aWNzICopCi0rICAgICAgICBsZXQgbGVu ID0gU3RyaW5nLmxlbmd0aCBzdWJqIGluCi0rICAgICAgICBpZiBwb3MgPiBsZW4gfHwgcG9zIDwg MCB0aGVuIGZhaWx3aXRoICJQY3JlMi5zcGxpdDogaWxsZWdhbCBvZmZzZXQiOwotKyAgICAgICAg bGV0IG5ld19wb3MgPSBmaW5kX25vX3NwYWNlIHBvcyBsZW4gc3ViaiBpbgotKyAgICAgICAgaW50 ZXJuYWxfcHNwbGl0IGlmbGFncyBkZWZfcmV4IG1heCBuZXdfcG9zIGNhbGxvdXQgc3ViagotKyAg aW4KLSsgIExpc3QucmV2IChpZiBtYXggPSAwIHRoZW4gc3RyaXBfYWxsX2VtcHR5IHJlcyBlbHNl IHJlcykKLSsKLStsZXQgYXNwbGl0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9tYXgg P2NhbGxvdXQgc3ViaiA9Ci0rICBBcnJheS5vZl9saXN0IChzcGxpdCA/aWZsYWdzID9mbGFncyA/ cmV4ID9wYXQgP3BvcyA/bWF4ID9jYWxsb3V0IHN1YmopCi0rCi0rKCogRnVsbCBzcGxpdHRpbmcg KikKLSsKLSt0eXBlIHNwbGl0X3Jlc3VsdCA9Ci0rICB8IFRleHQgb2Ygc3RyaW5nCi0rICB8IERl bGltIG9mIHN0cmluZwotKyAgfCBHcm91cCBvZiBpbnQgKiBzdHJpbmcKLSsgIHwgTm9Hcm91cAot KwotK2xldCByZWMgc3RyaXBfYWxsX2VtcHR5X2Z1bGwgPSBmdW5jdGlvbgotKyAgfCBEZWxpbSBf IDo6IHJlc3QgLT4gc3RyaXBfYWxsX2VtcHR5X2Z1bGwgcmVzdAotKyAgfCBsIC0+IGwKLSsKLSts ZXQgZnVsbF9zcGxpdCA/KGlmbGFncyA9IDBMKSA/ZmxhZ3MgPyhyZXggPSBkZWZfcmV4KSA/cGF0 ID8ocG9zID0gMCkgPyhtYXggPSAwKQotKyAgICA/Y2FsbG91dCBzdWJqID0KLSsgIGxldCByZXgg PSBtYXRjaCBwYXQgd2l0aCBTb21lIHN0ciAtPiByZWdleHAgc3RyIHwgXyAtPiByZXggaW4KLSsg IGxldCBpZmxhZ3MgPSBtYXRjaCBmbGFncyB3aXRoIFNvbWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdz IHwgXyAtPiBpZmxhZ3MgaW4KLSsgIGxldCBzdWJqX2xlbiA9IFN0cmluZy5sZW5ndGggc3ViaiBp bgotKyAgaWYgc3Vial9sZW4gPSAwIHRoZW4gW10KLSsgIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFsg VGV4dCBzdWJqIF0KLSsgIGVsc2UKLSsgICAgbGV0IHN1Ymdyb3VwczIsIG92ZWN0b3IgPSBtYWtl X292ZWN0b3IgcmV4IGluCi0rCi0rICAgICgqIEFkZHMgY29udGVudHMgb2Ygc3ViZ3JvdXBzIHRv IHRoZSBzdHJpbmcgYWNjdW11bGF0b3IgKikKLSsgICAgbGV0IGhhbmRsZV9zdWJncm91cHMgc3Ry cyA9Ci0rICAgICAgbGV0IHN0cnMgPSByZWYgc3RycyBpbgotKyAgICAgIGxldCBpID0gcmVmIDIg aW4KLSsgICAgICB3aGlsZSAhaSA8IHN1Ymdyb3VwczIgZG8KLSsgICAgICAgIGxldCBncm91cF9u ciA9ICFpIGxzciAxIGluCi0rICAgICAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92 ZWN0b3IgIWkgaW4KLSsgICAgICAgIGluY3IgaTsKLSsgICAgICAgIGxldCBsYXN0ID0gQXJyYXku dW5zYWZlX2dldCBvdmVjdG9yICFpIGluCi0rICAgICAgICBsZXQgc3RyID0KLSsgICAgICAgICAg aWYgZmlyc3QgPCAwIHRoZW4gTm9Hcm91cAotKyAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAg bGV0IGdyb3VwX3N0ciA9IHN0cmluZ191bnNhZmVfc3ViIHN1YmogZmlyc3QgKGxhc3QgLSBmaXJz dCkgaW4KLSsgICAgICAgICAgICBHcm91cCAoZ3JvdXBfbnIsIGdyb3VwX3N0cikKLSsgICAgICAg IGluCi0rICAgICAgICBzdHJzIDo9IHN0ciA6OiAhc3RyczsKLSsgICAgICAgIGluY3IgaQotKyAg ICAgIGRvbmU7Ci0rICAgICAgIXN0cnMKLSsgICAgaW4KLSsKLSsgICAgKCogUGVyZm9ybXMgdGhl IHJlY3Vyc2l2ZSBzcGxpdCAqKQotKyAgICBsZXQgcmVjIGxvb3Agc3RycyBjbnQgcG9zIHByZW1h dGNoID0KLSsgICAgICBsZXQgbGVuID0gc3Vial9sZW4gLSBwb3MgaW4KLSsgICAgICBpZiBsZW4g PCAwIHRoZW4gc3RycwotKyAgICAgIGVsc2UgaWYKLSsgICAgICAgICgqIENoZWNrcyB0ZXJtaW5h dGlvbiBkdWUgdG8gbWF4IHJlc3RyaWN0aW9uICopCi0rICAgICAgICBjbnQgPSAwCi0rICAgICAg dGhlbgotKyAgICAgICAgaWYKLSsgICAgICAgICAgcHJlbWF0Y2gKLSsgICAgICAgICAgJiYKLSsg ICAgICAgICAgdHJ5Ci0rICAgICAgICAgICAgdW5zYWZlX3BjcmUyX21hdGNoIGlmbGFncyByZXgg fnBvcyB+c3Vial9zdGFydDpwb3MgfnN1Ymogb3ZlY3RvcgotKyAgICAgICAgICAgICAgY2FsbG91 dDsKLSsgICAgICAgICAgICB0cnVlCi0rICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNl Ci0rICAgICAgICB0aGVuCi0rICAgICAgICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQg b3ZlY3RvciAwIGluCi0rICAgICAgICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVj dG9yIDEgaW4KLSsgICAgICAgICAgbGV0IGRlbGltID0gRGVsaW0gKHN0cmluZ191bnNhZmVfc3Vi IHN1YmogZmlyc3QgKGxhc3QgLSBmaXJzdCkpIGluCi0rICAgICAgICAgIFRleHQgKHN0cmluZ191 bnNhZmVfc3ViIHN1YmogbGFzdCAoc3Vial9sZW4gLSBsYXN0KSkKLSsgICAgICAgICAgOjogaGFu ZGxlX3N1Ymdyb3VwcyAoZGVsaW0gOjogc3RycykKLSsgICAgICAgIGVsc2UgaWYgbGVuID0gMCB0 aGVuIHN0cnMKLSsgICAgICAgIGVsc2UgVGV4dCAoc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBwb3Mg bGVuKSA6OiBzdHJzCi0rICAgICAgICAgICgqIENhbGN1bGF0ZXMgbmV4dCBhY2N1bXVsYXRvciBz dGF0ZSBmb3Igc3BsaXR0aW5nICopCi0rICAgICAgZWxzZSBpZgotKyAgICAgICAgdHJ5Ci0rICAg ICAgICAgIHVuc2FmZV9wY3JlMl9tYXRjaCBpZmxhZ3MgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6cG9z IH5zdWJqIG92ZWN0b3IKLSsgICAgICAgICAgICBjYWxsb3V0OwotKyAgICAgICAgICBmYWxzZQot KyAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZQotKyAgICAgIHRoZW4KLSsgICAgICAgIGlm IGxlbiA9IDAgdGhlbiBzdHJzIGVsc2UgVGV4dCAoc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBwb3Mg bGVuKSA6OiBzdHJzCi0rICAgICAgZWxzZQotKyAgICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5z YWZlX2dldCBvdmVjdG9yIDAgaW4KLSsgICAgICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dl dCBvdmVjdG9yIDEgaW4KLSsgICAgICAgIGlmIGZpcnN0ID0gcG9zIHRoZW4KLSsgICAgICAgICAg aWYgbGFzdCA9IHBvcyB0aGVuCi0rICAgICAgICAgICAgaWYgbGVuID0gMCB0aGVuIGhhbmRsZV9z dWJncm91cHMgKERlbGltICIiIDo6IHN0cnMpCi0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAg ICAgICAgbGV0IGVtcHR5X2dyb3VwcyA9IGhhbmRsZV9zdWJncm91cHMgW10gaW4KLSsgICAgICAg ICAgICAgIGlmCi0rICAgICAgICAgICAgICAgIHRyeQotKyAgICAgICAgICAgICAgICAgIHVuc2Fm ZV9wY3JlMl9tYXRjaAotKyAgICAgICAgICAgICAgICAgICAgKCogYEFOQ0hPUkVEIHwgYE5PVEVN UFRZICopCi0rICAgICAgICAgICAgICAgICAgICAoSW50NjQubG9nb3IgaWZsYWdzIDB4ODAwMDAw MDRMKQotKyAgICAgICAgICAgICAgICAgICAgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6cG9zIH5zdWJq IG92ZWN0b3IgY2FsbG91dDsKLSsgICAgICAgICAgICAgICAgICB0cnVlCi0rICAgICAgICAgICAg ICAgIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlCi0rICAgICAgICAgICAgICB0aGVuCi0rICAgICAg ICAgICAgICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGluCi0rICAg ICAgICAgICAgICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4KLSsg ICAgICAgICAgICAgICAgbGV0IGRlbGltID0KLSsgICAgICAgICAgICAgICAgICBEZWxpbSAoc3Ry aW5nX3Vuc2FmZV9zdWIgc3ViaiBmaXJzdCAobGFzdCAtIGZpcnN0KSkKLSsgICAgICAgICAgICAg ICAgaW4KLSsgICAgICAgICAgICAgICAgbGV0IG5ld19zdHJzID0KLSsgICAgICAgICAgICAgICAg ICBsZXQgdG1wX3N0cnMgPQotKyAgICAgICAgICAgICAgICAgICAgaWYgcHJlbWF0Y2ggdGhlbiBz dHJzIGVsc2UgZW1wdHlfZ3JvdXBzIEAgKERlbGltICIiIDo6IHN0cnMpCi0rICAgICAgICAgICAg ICAgICAgaW4KLSsgICAgICAgICAgICAgICAgICBoYW5kbGVfc3ViZ3JvdXBzIChkZWxpbSA6OiB0 bXBfc3RycykKLSsgICAgICAgICAgICAgICAgaW4KLSsgICAgICAgICAgICAgICAgbG9vcCBuZXdf c3RycyAoY250IC0gMSkgbGFzdCBmYWxzZQotKyAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAg ICAgICAgICBsZXQgbmV3X3N0cnMgPQotKyAgICAgICAgICAgICAgICAgIChUZXh0IChzdHJpbmdf dW5zYWZlX3N1YiBzdWJqIHBvcyAxKSA6OiBlbXB0eV9ncm91cHMpCi0rICAgICAgICAgICAgICAg ICAgQCAoRGVsaW0gIiIgOjogc3RycykKLSsgICAgICAgICAgICAgICAgaW4KLSsgICAgICAgICAg ICAgICAgbG9vcCBuZXdfc3RycyAoY250IC0gMSkgKHBvcyArIDEpIHRydWUKLSsgICAgICAgICAg ZWxzZQotKyAgICAgICAgICAgIGxldCBkZWxpbSA9IERlbGltIChzdHJpbmdfdW5zYWZlX3N1YiBz dWJqIGZpcnN0IChsYXN0IC0gZmlyc3QpKSBpbgotKyAgICAgICAgICAgIGxvb3AgKGhhbmRsZV9z dWJncm91cHMgKGRlbGltIDo6IHN0cnMpKSBjbnQgbGFzdCBmYWxzZQotKyAgICAgICAgZWxzZQot KyAgICAgICAgICBsZXQgZGVsaW0gPSBEZWxpbSAoc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBmaXJz dCAobGFzdCAtIGZpcnN0KSkgaW4KLSsgICAgICAgICAgbGV0IHByZV9zdHJzID0KLSsgICAgICAg ICAgICBUZXh0IChzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIHBvcyAoZmlyc3QgLSBwb3MpKSA6OiBz dHJzCi0rICAgICAgICAgIGluCi0rICAgICAgICAgIGxvb3AgKGhhbmRsZV9zdWJncm91cHMgKGRl bGltIDo6IHByZV9zdHJzKSkgKGNudCAtIDEpIGxhc3QgZmFsc2UKLSsgICAgaW4KLSsgICAgbGV0 IHJlcyA9IGxvb3AgW10gKG1heCAtIDEpIHBvcyB0cnVlIGluCi0rICAgIExpc3QucmV2IChpZiBt YXggPSAwIHRoZW4gc3RyaXBfYWxsX2VtcHR5X2Z1bGwgcmVzIGVsc2UgcmVzKQotKwotKygqIEFk ZGl0aW9uYWwgY29udmVuaWVuY2UgZnVuY3Rpb25zIHVzZWZ1bCBpbiBjb21iaW5hdGlvbiB3aXRo IHRoaXMgbGlicmFyeSAqKQotKwotK2xldCBmb3JlYWNoX2xpbmUgPyhpYyA9IHN0ZGluKSBmID0K LSsgIHRyeQotKyAgICB3aGlsZSB0cnVlIGRvCi0rICAgICAgZiAoaW5wdXRfbGluZSBpYykKLSsg ICAgZG9uZQotKyAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKQotKwotK2xldCBmb3JlYWNoX2ZpbGUg ZmlsZW5hbWVzIGYgPQotKyAgbGV0IGRvX3dpdGhfZmlsZSBmaWxlbmFtZSA9Ci0rICAgIGxldCBm aWxlID0gb3Blbl9pbiBmaWxlbmFtZSBpbgotKyAgICB0cnkKLSsgICAgICBmIGZpbGVuYW1lIGZp bGU7Ci0rICAgICAgY2xvc2VfaW4gZmlsZQotKyAgICB3aXRoIGV4biAtPgotKyAgICAgIGNsb3Nl X2luIGZpbGU7Ci0rICAgICAgcmFpc2UgZXhuCi0rICBpbgotKyAgTGlzdC5pdGVyIGRvX3dpdGhf ZmlsZSBmaWxlbmFtZXMKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xp Yi9wY3JlMi5tbGkgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9wY3JlMi5tbGkKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmE2MWJjZDg1NwotLS0tIC9kZXYv bnVsbAotKysrIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvcGNyZTIubWxpCi1AQCAt MCwwICsxLDEwNjggQEAKLSsoKiBQQ1JFMi1PQ0FNTCAtIFBlcmwgQ29tcGF0aWJpbGl0eSBSZWd1 bGFyIEV4cHJlc3Npb25zIGZvciBPQ2FtbAotKwotKyAgIENvcHlyaWdodCDCqSAxOTk5LSBNYXJr dXMgTW90dGwgPG1hcmt1cy5tb3R0bEBnbWFpbC5jb20+Ci0rCi0rICAgVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQg dW5kZXIKLSsgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsg ICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKLSsgICBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUwotKyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUKLSsgICBkZXRhaWxzLgot KwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0rICAgNTEg RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQSAq KQotKwotKygqKiBQZXJsIENvbXBhdGliaWxpdHkgUmVndWxhciBFeHByZXNzaW9ucyBmb3IgT0Nh bWwKLSsKLSsgICAge2UgJSVWRVJTSU9OJSUgLSB7ezolJVBLR19IT01FUEFHRSUlfSBob21lcGFn ZX19ICopCi0rCi0rKCoqIHsxIEV4Y2VwdGlvbnN9ICopCi0rCi0rdHlwZSBlcnJvciA9Ci0rICB8 IFBhcnRpYWwgICgqKiBTdHJpbmcgb25seSBtYXRjaGVkIHRoZSBwYXR0ZXJuIHBhcnRpYWxseSAq KQotKyAgfCBCYWRQYXR0ZXJuIG9mIHN0cmluZyAqIGludAotKyAgICAgICgqKiBbQmFkUGF0dGVy biAobXNnLCBwb3MpXSByZWd1bGFyIGV4cHJlc3Npb24gaXMgbWFsZm9ybWVkLiBUaGUgcmVhc29u IGlzCi0rICAgICAgICAgIGluIFttc2ddLCB0aGUgcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIHRo ZSBwYXR0ZXJuIGluIFtwb3NdLiAqKQotKyAgfCBCYWRVVEYgICgqKiBVVEYgc3RyaW5nIGJlaW5n IG1hdGNoZWQgaXMgaW52YWxpZCAqKQotKyAgfCBCYWRVVEZPZmZzZXQKLSsgICAgICAoKiogR2V0 cyByYWlzZWQgd2hlbiBhIFVURiBzdHJpbmcgYmVpbmcgbWF0Y2hlZCB3aXRoIG9mZnNldCBpcyBp bnZhbGlkLiAqKQotKyAgfCBNYXRjaExpbWl0Ci0rICAgICAgKCoqIE1heGltdW0gYWxsb3dlZCBu dW1iZXIgb2YgbWF0Y2ggYXR0ZW1wdHMgd2l0aCBiYWNrdHJhY2tpbmcgb3IKLSsgICAgICAgICAg cmVjdXJzaW9uIGlzIHJlYWNoZWQgZHVyaW5nIG1hdGNoaW5nLiBBTEwgRlVOQ1RJT05TIENBTExJ TkcgVEhFCi0rICAgICAgICAgIE1BVENISU5HIEVOR0lORSBNQVkgUkFJU0UgSVQhISEgKikKLSsg IHwgRGVwdGhMaW1pdAotKyAgfCBXb3Jrc3BhY2VTaXplCi0rICAgICAgKCoqIFJhaXNlZCBieSB7 IXBjcmUyX2RmYV9tYXRjaH0gd2hlbiB0aGUgcHJvdmlkZWQgd29ya3NwYWNlIGFycmF5IGlzIHRv bwotKyAgICAgICAgICBzbWFsbC4gU2VlIGRvY3VtZW50aW9uIG9uIHshcGNyZTJfZGZhX21hdGNo fSBmb3IgZGV0YWlscyBvbiB3b3Jrc3BhY2UKLSsgICAgICAgICAgYXJyYXkgc2l6aW5nLiAqKQot KyAgfCBJbnRlcm5hbEVycm9yIG9mIHN0cmluZwotKyAgICAgICgqKiBbSW50ZXJuYWxFcnJvciBt c2ddIEMtbGlicmFyeSBleGhpYml0cyB1bmtub3duL3VuZGVmaW5lZCBiZWhhdmlvdXIuCi0rICAg ICAgICAgIFRoZSByZWFzb24gaXMgaW4gW21zZ10uICopCi0rCi0rZXhjZXB0aW9uIEVycm9yIG9m IGVycm9yCi0rKCoqIEV4Y2VwdGlvbiBpbmRpY2F0aW5nIFBDUkUgZXJyb3JzLiAqKQotKwotK2V4 Y2VwdGlvbiBCYWNrdHJhY2sKLSsoKiogW0JhY2t0cmFja10gdXNlZCBpbiBjYWxsb3V0IGZ1bmN0 aW9ucyB0byBmb3JjZSBiYWNrdHJhY2tpbmcuICopCi0rCi0rZXhjZXB0aW9uIFJlZ2V4cF9vciBv ZiBzdHJpbmcgKiBlcnJvcgotKygqKiBbUmVnZXhwX29yIChwYXQsIGVycm9yKV0gZ2V0cyByYWlz ZWQgZm9yIHN1Yi1wYXR0ZXJuIFtwYXRdIGJ5IFtyZWdleHBfb3JdIGlmCi0rICAgIGl0IGZhaWxl ZCB0byBjb21waWxlLiAqKQotKwotKygqKiB7MSBDb21waWxhdGlvbiBhbmQgcnVudGltZSBmbGFn cyBhbmQgdGhlaXIgY29udmVyc2lvbiBmdW5jdGlvbnN9ICopCi0rCi0rdHlwZSBpY2ZsYWcKLSso KiogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgY29tcGlsYXRpb24gZmxhZ3MgKikKLSsKLSth bmQgaXJmbGFnCi0rKCoqIEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHJ1bnRpbWUgZmxhZ3Mg KikKLSsKLSthbmQgY2ZsYWcgPQotKyAgWyBgQUxMT1dfRU1QVFlfQ0xBU1MgICgqKiBBbGxvdyBl bXB0eSBjbGFzc2VzICopCi0rICB8IGBBTFRfQlNVWCAgKCoqIEFsdGVybmF0aXZlIGhhbmRsaW5n IG9mIFx1LCBcVSwgYW5kIFx4ICopCi0rICB8IGBBTFRfQ0lSQ1VNRkxFWCAgKCoqIEFsdGVybmF0 aXZlIGhhbmRsaW5nIG9mIF4gaW4gbXVsdGlsaW5lIG1vZGUgKikKLSsgIHwgYEFMVF9WRVJCTkFN RVMgICgqKiBQcm9jZXNzIGJhY2tzbGFzaGVzIGluIHZlcmIgbmFtZXMgKikKLSsgIHwgYEFOQ0hP UkVEICAoKiogUGF0dGVybiBtYXRjaGVzIG9ubHkgYXQgc3RhcnQgb2Ygc3RyaW5nICopCi0rICB8 IGBBVVRPX0NBTExPVVQKLSsgICAgKCoqIEF1dG9tYXRpY2FsbHkgaW5zZXJ0cyBjYWxsb3V0cyB3 aXRoIGlkIDI1NSBiZWZvcmUgZWFjaCBwYXR0ZXJuIGl0ZW0gKikKLSsgIHwgYENBU0VMRVNTICAo KiogQ2FzZSBpbnNlbnNpdGl2ZSBtYXRjaGluZyAqKQotKyAgfCBgRE9MTEFSX0VORE9OTFkgICgq KiAnJCcgaW4gcGF0dGVybiBtYXRjaGVzIG9ubHkgYXQgZW5kIG9mIHN0cmluZyAqKQotKyAgfCBg RE9UQUxMICAoKiogJy4nIG1hdGNoZXMgYWxsIGNoYXJhY3RlcnMgKG5ld2xpbmVzLCB0b28pICop Ci0rICB8IGBEVVBOQU1FUyAgKCoqIEFsbG93IGR1cGxpY2F0ZSBuYW1lcyBmb3Igc3VicGF0dGVy bnMgKikKLSsgIHwgYEVOREFOQ0hPUkVEICAoKiogUGF0dGVybiBjYW4gbWF0Y2ggb25seSBhdCBl bmQgb2Ygc3ViamVjdCAqKQotKyAgfCBgRVhURU5ERUQKLSsgICAgKCoqIElnbm9yZXMgd2hpdGVz cGFjZSBhbmQgUEVSTC1jb21tZW50cy4gQmVoYXZlcyBsaWtlIHRoZSAnL3gnLW9wdGlvbiBpbgot KyAgICAgICAgUEVSTCAqKQotKyAgfCBgRVhURU5ERURfTU9SRQotKyAgfCBgRklSU1RMSU5FICAo KiogVW5hbmNob3JlZCBwYXR0ZXJucyBtdXN0IG1hdGNoIGJlZm9yZS9hdCBmaXJzdCBOTCAqKQot KyAgfCBgTElURVJBTCAgKCoqIFBhdHRlcm4gY2hhcmFjdGVycyBhcmUgYWxsIGxpdGVyYWwgKikK LSsgIHwgYE1BVENIX0lOVkFMSURfVVRGICAoKiogRW5hYmxlIHN1cHBvcnQgZm9yIG1hdGNoaW5n IGludmFsaWQgVVRGICopCi0rICB8IGBNQVRDSF9VTlNFVF9CQUNLUkVGICAoKiogTWF0Y2ggdW5z ZXQgYmFja3JlZmVyZW5jZXMgKikKLSsgIHwgYE1VTFRJTElORQotKyAgICAoKiogJ14nIGFuZCAn JCcgbWF0Y2ggYmVmb3JlL2FmdGVyIG5ld2xpbmVzLCBub3QganVzdCBhdCB0aGUgYmVnaW5uaW5n L2VuZAotKyAgICAgICAgb2YgYSBzdHJpbmcgKikKLSsgIHwgYE5FVkVSX0JBQ0tTTEFTSF9DICAo KiogTG9jayBvdXQgdGhlIHVzZSBvZiBcQyBpbiBwYXR0ZXJucyAqKQotKyAgfCBgTkVWRVJfVUNQ ICAoKiogTG9jayBvdXQgVUNQLCBlLmcuIHZpYSAoXCpVQ1ApICopCi0rICB8IGBORVZFUl9VVEYg ICgqKiBMb2NrIG91dCBVVEYsIGUuZy4gdmlhIChcKlVURikgKikKLSsgIHwgYE5PX0FVVE9fQ0FQ VFVSRSAgKCoqIERpc2FibGVzIHRoZSB1c2Ugb2YgbnVtYmVyZWQgY2FwdHVyaW5nIHBhcmVudGhl c2VzICopCi0rICB8IGBOT19BVVRPX1BPU1NFU1MgICgqKiBEaXNhYmxlIGF1dG8tcG9zc2Vzc2lm aWNhdGlvbiAqKQotKyAgfCBgTk9fRE9UU1RBUl9BTkNIT1IgICgqKiBEaXNhYmxlIGF1dG9tYXRp YyBhbmNob3JpbmcgZm9yIC4qICopCi0rICB8IGBOT19TVEFSVF9PUFRJTUlaRSAgKCoqIERpc2Fi bGUgbWF0Y2gtdGltZSBzdGFydCBvcHRpbWl6YXRpb25zICopCi0rICB8IGBOT19VVEZfQ0hFQ0sK LSsgICAgKCoqIERvIG5vdCBjaGVjayB0aGUgcGF0dGVybiBmb3IgVVRGIHZhbGlkaXR5IChvbmx5 IHJlbGV2YW50IGlmIFVURiBpcyBzZXQpCi0rICAgICAgICBXQVJOSU5HOiB3aXRoIHRoaXMgZmxh ZyBlbmFibGVkLCBpbnZhbGlkIFVURiBzdHJpbmdzIG1heSBjYXVzZSBhIGNyYXNoLAotKyAgICAg ICAgbG9vcCwgb3IgZ2l2ZSBpbmNvcnJlY3QgcmVzdWx0cyAqKQotKyAgfCBgVUNQICAoKiogVXNl IFVuaWNvZGUgcHJvcGVydGllcyBmb3IgXGQsIFx3LCBldGMuICopCi0rICB8IGBVTkdSRUVEWSAg KCoqIFF1YW50aWZpZXJzIG5vdCBncmVlZHkgYW55bW9yZSwgb25seSBpZiBmb2xsb3dlZCBieSAn PycgKikKLSsgIHwgYFVTRV9PRkZTRVRfTElNSVQgICgqKiBFbmFibGUgb2Zmc2V0IGxpbWl0IGZv ciB1bmFuY2hvcmVkIG1hdGNoaW5nICopCi0rICB8IGBVVEYgICgqKiBUcmVhdCBwYXR0ZXJuIGFu ZCBzdWJqZWN0cyBhcyBVVEYgc3RyaW5ncyAqKSBdCi0rKCoqIENvbXBpbGF0aW9uIGZsYWdzICop Ci0rCi0rdmFsIGNmbGFncyA6IGNmbGFnIGxpc3QgLT4gaWNmbGFnCi0rKCoqIFtjZmxhZ3MgY2Zs YWdfbGlzdF0gY29udmVydHMgYSBsaXN0IG9mIGNvbXBpbGF0aW9uIGZsYWdzIHRvIHRoZWlyIGlu dGVybmFsCi0rICAgIHJlcHJlc2VudGF0aW9uLiAqKQotKwotK3ZhbCBjZmxhZ19saXN0IDogaWNm bGFnIC0+IGNmbGFnIGxpc3QKLSsoKiogW2NmbGFnX2xpc3QgY2ZsYWdzXSBjb252ZXJ0cyBpbnRl cm5hbCByZXByZXNlbnRhdGlvbiBvZiBjb21waWxhdGlvbiBmbGFncyB0bwotKyAgICBhIGxpc3Qu ICopCi0rCi0rdHlwZSByZmxhZyA9Ci0rICBbIGBBTkNIT1JFRCAgKCoqIE1hdGNoIG9ubHkgYXQg dGhlIGZpcnN0IHBvc2l0aW9uICopCi0rICB8IGBDT1BZX01BVENIRURfU1VCSkVDVCAgKCoqIE9u IHN1Y2Nlc3MsIG1ha2UgYSBwcml2YXRlIHN1YmplY3QgY29weSAqKQotKyAgfCBgREZBX1JFU1RB UlQKLSsgICAgKCoqIENhdXNlcyBtYXRjaGluZyB0byBwcm9jZWVkIHByZXN1bWluZyB0aGUgc3Vi amVjdCBzdHJpbmcgaXMgZnVydGhlciB0bwotKyAgICAgICAgb25lIHBhcnRpYWxseSBtYXRjaGVk IHByZXZpb3VzbHkgdXNpbmcgdGhlIHNhbWUgaW50LWFycmF5IHdvcmtpbmcgc2V0LgotKyAgICAg ICAgTWF5IG9ubHkgYmUgdXNlZCB3aXRoIHshcGNyZTJfZGZhX21hdGNofSBvciB7IXVuc2FmZV9w Y3JlMl9kZmFfbWF0Y2h9LAotKyAgICAgICAgYW5kIHNob3VsZCBhbHdheXMgYmUgcGFpcmVkIHdp dGggW2BQQVJUSUFMXS4gKikKLSsgIHwgYERGQV9TSE9SVEVTVCAgKCoqIFJldHVybiBvbmx5IHRo ZSBzaG9ydGVzdCBtYXRjaCAqKQotKyAgfCBgRU5EQU5DSE9SRUQgICgqKiBQYXR0ZXJuIGNhbiBt YXRjaCBvbmx5IGF0IGVuZCBvZiBzdWJqZWN0ICopCi0rICB8IGBOT1RCT0wgICgqKiBCZWdpbm5p bmcgb2Ygc3RyaW5nIGlzIG5vdCB0cmVhdGVkIGFzIGJlZ2lubmluZyBvZiBsaW5lICopCi0rICB8 IGBOT1RFT0wgICgqKiBFbmQgb2Ygc3RyaW5nIGlzIG5vdCB0cmVhdGVkIGFzIGVuZCBvZiBsaW5l ICopCi0rICB8IGBOT1RFTVBUWSAgKCoqIEFuIGVtcHR5IHN0cmluZyBpcyBub3QgYSB2YWxpZCBt YXRjaCAqKQotKyAgfCBgTk9URU1QVFlfQVRTVEFSVAotKyAgICAoKiogQW4gZW1wdHkgc3RyaW5n IGF0IHRoZSBzdGFydCBvZiB0aGUgc3ViamVjdCBpcyBub3QgYSB2YWxpZCBtYXRjaCAqKQotKyAg fCBgTk9fSklUICAoKiogRG8gbm90IHVzZSBKSVQgbWF0Y2hpbmcgKikKLSsgIHwgYE5PX1VURl9D SEVDSwotKyAgICAoKiogRG8gbm90IGNoZWNrIHRoZSBzdWJqZWN0IGZvciBVVEYgdmFsaWRpdHkg KG9ubHkgcmVsZXZhbnQgaWYgUENSRTJfVVRGCi0rICAgICAgICB3YXMgc2V0IGF0IGNvbXBpbGUg dGltZSkgKikKLSsgIHwgYFBBUlRJQUxfSEFSRAotKyAgICAoKiogVGhyb3cgUGNyZTIuUGFydGlh bCBmb3IgYSBwYXJ0aWFsIG1hdGNoIGV2ZW4gaWYgdGhlcmUgaXMgYSBmdWxsIG1hdGNoICopCi0r ICB8IGBQQVJUSUFMX1NPRlQKLSsgICAgKCoqIFRocm93IFBjcmUyLlBhcnRpYWwgZm9yIGEgcGFy dGlhbCBtYXRjaCBpZiBubyBmdWxsIG1hdGNoZXMgYXJlIGZvdW5kICopCi0rICBdCi0rKCoqIFJ1 bnRpbWUgZmxhZ3MgKikKLSsKLSt2YWwgcmZsYWdzIDogcmZsYWcgbGlzdCAtPiBpcmZsYWcKLSso KiogW3JmbGFncyByZmxhZ19saXN0XSBjb252ZXJ0cyBhIGxpc3Qgb2YgcnVudGltZSBmbGFncyB0 byB0aGVpciBpbnRlcm5hbAotKyAgICByZXByZXNlbnRhdGlvbi4gKikKLSsKLSt2YWwgcmZsYWdf bGlzdCA6IGlyZmxhZyAtPiByZmxhZyBsaXN0Ci0rKCoqIFtyZmxhZ19saXN0IHJmbGFnc10gY29u dmVydHMgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgcnVudGltZSBmbGFncyB0byBhCi0rICAg IGxpc3QuICopCi0rCi0rKCoqIHsxIEluZm9ybWF0aW9uIG9uIHRoZSBQQ1JFMi1jb25maWd1cmF0 aW9uIChidWlsZC10aW1lIG9wdGlvbnMpfSAqKQotKwotKygqKiBWZXJzaW9uIGluZm9ybWF0aW9u ICopCi0rdmFsIHZlcnNpb24gOiBzdHJpbmcKLSsoKiogVmVyc2lvbiBvZiB0aGUgUENSRTItQy1s aWJyYXJ5ICopCi0rCi0rdmFsIGNvbmZpZ191bmljb2RlIDogYm9vbAotKygqKiBJbmRpY2F0ZXMg d2hldGhlciB1bmljb2RlIHN1cHBvcnQgaXMgZW5hYmxlZCAqKQotKwotK3ZhbCBjb25maWdfbmV3 bGluZSA6IGNoYXIKLSsoKiogQ2hhcmFjdGVyIHVzZWQgYXMgbmV3bGluZSAqKQotKwotK3ZhbCBj b25maWdfbGlua19zaXplIDogaW50Ci0rKCoqIE51bWJlciBvZiBieXRlcyB1c2VkIGZvciBpbnRl cm5hbCBsaW5rYWdlIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKikKLSsKLSt2YWwgY29uZmlnX21h dGNoX2xpbWl0IDogaW50Ci0rKCoqIERlZmF1bHQgbGltaXQgZm9yIGNhbGxzIHRvIGludGVybmFs IG1hdGNoaW5nIGZ1bmN0aW9uICopCi0rCi0rdmFsIGNvbmZpZ19kZXB0aF9saW1pdCA6IGludAot KygqKiBEZWZhdWx0IGxpbWl0IGZvciBkZXB0aCBvZiBuZXN0ZWQgYmFja3RyYWNraW5nICopCi0r Ci0rdmFsIGNvbmZpZ19zdGFja3JlY3Vyc2UgOiBib29sCi0rKCoqIEluZGljYXRlcyB1c2Ugb2Yg c3RhY2sgcmVjdXJzaW9uIGluIG1hdGNoaW5nIGZ1bmN0aW9uICopCi0rCi0rKCoqIHsxIEluZm9y bWF0aW9uIG9uIHBhdHRlcm5zfSAqKQotKwotK3R5cGUgZmlyc3Rjb2RldW5pdF9pbmZvID0KLSsg IFsgYENoYXIgb2YgY2hhciAgKCoqIEZpeGVkIGZpcnN0IGNoYXJhY3RlciAqKQotKyAgfCBgU3Rh cnRfb25seSAgKCoqIFBhdHRlcm4gbWF0Y2hlcyBhdCBiZWdpbm5pbmcgYW5kIGVuZCBvZiBuZXds aW5lcyAqKQotKyAgfCBgQU5DSE9SRUQgICgqKiBQYXR0ZXJuIGlzIGFuY2hvcmVkICopIF0KLSso KiogSW5mb3JtYXRpb24gb24gbWF0Y2hpbmcgb2YgImZpcnN0IGNoYXJzIiBpbiBwYXR0ZXJucyAq KQotKwotK3R5cGUgcmVnZXhwCi0rKCoqIENvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKikK LSsKLSt2YWwgb3B0aW9ucyA6IHJlZ2V4cCAtPiBpY2ZsYWcKLSsoKiogW29wdGlvbnMgcmVnZXhw XQotKwotKyAgICBAcmV0dXJuIGNvbXBpbGF0aW9uIGZsYWdzIG9mIFtyZWdleHBdLiAqKQotKwot K3ZhbCBzaXplIDogcmVnZXhwIC0+IGludAotKygqKiBbc2l6ZSByZWdleHBdCi0rCi0rICAgIEBy ZXR1cm4gbWVtb3J5IHNpemUgb2YgW3JlZ2V4cF0uICopCi0rCi0rdmFsIGNhcHR1cmVjb3VudCA6 IHJlZ2V4cCAtPiBpbnQKLSsoKiogW2NhcHR1cmVjb3VudCByZWdleHBdCi0rCi0rICAgIEByZXR1 cm4gbnVtYmVyIG9mIGNhcHR1cmluZyBzdWJwYXR0ZXJucyBpbiBbcmVnZXhwXS4gKikKLSsKLSt2 YWwgYmFja3JlZm1heCA6IHJlZ2V4cCAtPiBpbnQKLSsoKiogW2JhY2tyZWZtYXggcmVnZXhwXQot KwotKyAgICBAcmV0dXJuIG51bWJlciBvZiBoaWdoZXN0IGJhY2tyZWZlcmVuY2UgaW4gW3JlZ2V4 cF0uICopCi0rCi0rdmFsIG5hbWVjb3VudCA6IHJlZ2V4cCAtPiBpbnQKLSsoKiogW25hbWVjb3Vu dCByZWdleHBdCi0rCi0rICAgIEByZXR1cm4gbnVtYmVyIG9mIG5hbWVkIHN1YnBhdHRlcm5zIGlu IFtyZWdleHBdLiAqKQotKwotK3ZhbCBuYW1lZW50cnlzaXplIDogcmVnZXhwIC0+IGludAotKygq KiBbbmFtZWVudHJ5c2l6ZSByZWdleHBdCi0rCi0rICAgIEByZXR1cm4gc2l6ZSBvZiBsb25nZXN0 IG5hbWUgb2YgbmFtZWQgc3VicGF0dGVybnMgaW4gW3JlZ2V4cF0gKyAzLiAqKQotKwotK3ZhbCBu YW1lcyA6IHJlZ2V4cCAtPiBzdHJpbmcgYXJyYXkKLSsoKiogW25hbWVzIHJlZ2V4XQotKwotKyAg ICBAcmV0dXJuIGFycmF5IG9mIG5hbWVzIG9mIG5hbWVkIHN1YnN0cmluZ3MgaW4gW3JlZ2V4cF0u ICopCi0rCi0rdmFsIGZpcnN0Y29kZXVuaXQgOiByZWdleHAgLT4gZmlyc3Rjb2RldW5pdF9pbmZv Ci0rKCoqIFtmaXJzdGNvZGV1bml0IHJlZ2V4cF0KLSsKLSsgICAgQHJldHVybiBmaXJzdGNvZGV1 bml0IGluZm8gb24gW3JlZ2V4cF0uICopCi0rCi0rdmFsIGxhc3Rjb2RldW5pdCA6IHJlZ2V4cCAt PiBjaGFyIG9wdGlvbgotKygqKiBbbGFzdGNvZGV1bml0IHJlZ2V4cF0KLSsKLSsgICAgQHJldHVy bgotKyAgICAgIHNvbWUgbGFzdCBtYXRjaGluZyBjaGFyYWN0ZXIgb2YgW3JlZ2V4cF0gaWYgYXZh aWxhYmxlLCBbTm9uZV0gb3RoZXJ3aXNlLgotKyopCi0rCi0rdmFsIGdldF9zdHJpbmdudW1iZXIg OiByZWdleHAgLT4gc3RyaW5nIC0+IGludAotKygqKiBbZ2V0X3N0cmluZ251bWJlciByZXggbmFt ZV0KLSsKLSsgICAgQHJldHVybgotKyAgICAgIHRoZSBpbmRleCBvZiB0aGUgbmFtZWQgc3Vic3Ry aW5nIFtuYW1lXSBpbiByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0uIFRoaXMKLSsgICAgICBpbmRl eCBjYW4gdGhlbiBiZSB1c2VkIHdpdGggW2dldF9zdWJzdHJpbmddLgotKwotKyAgICBAcmFpc2Ug SW52YWxpZF9hcmcgaWYgdGhlcmUgaXMgbm8gc3VjaCBuYW1lZCBzdWJzdHJpbmcuICopCi0rCi0r KCogdmFsIGdldF9tYXRjaF9saW1pdCA6IHJlZ2V4cCAtPiBpbnQgb3B0aW9uICopCi0rKCoqIFtn ZXRfbWF0Y2hfbGltaXQgcmV4XQotKwotKyAgICBAcmV0dXJuIHNvbWUgbWF0Y2ggbGltaXQgb2Yg cmVndWxhciBleHByZXNzaW9uIFtyZXhdIG9yIFtOb25lXS4gKikKLSsKLSsoKiB2YWwgZ2V0X2Rl cHRoX2xpbWl0IDogcmVnZXhwIC0+IGludCBvcHRpb24gKikKLSsoKiogW2dldF9kZXB0aF9saW1p dCByZXhdCi0rCi0rICAgIEByZXR1cm4gc29tZSBkZXB0aCBsaW1pdCBvZiByZWd1bGFyIGV4cHJl c3Npb24gW3JleF0gb3IgW05vbmVdLiAqKQotKwotKygqKiB7MSBDb21waWxhdGlvbiBvZiBwYXR0 ZXJuc30gKikKLSsKLSt0eXBlIGNodGFibGVzCi0rKCoqIEFsdGVybmF0aXZlIHNldCBvZiBjaGFy IHRhYmxlcyBmb3IgcGF0dGVybiBtYXRjaGluZyAqKQotKwotK3ZhbCBtYWtldGFibGVzIDogdW5p dCAtPiBjaHRhYmxlcwotKygqKiBHZW5lcmF0ZXMgbmV3IHNldCBvZiBjaGFyIHRhYmxlcyBmb3Ig dGhlIGN1cnJlbnQgbG9jYWxlLiAqKQotKwotK3ZhbCByZWdleHAgOgotKyAgP2xpbWl0OgotKyAg ICAoKiA/aml0X2NvbXBpbGUgOiBib29sIC0+ICopCi0rICAgIGludCAtPgotKyAgP2RlcHRoX2xp bWl0OmludCAtPgotKyAgP2lmbGFnczppY2ZsYWcgLT4KLSsgID9mbGFnczpjZmxhZyBsaXN0IC0+ Ci0rICA/Y2h0YWJsZXM6Y2h0YWJsZXMgLT4KLSsgIHN0cmluZyAtPgotKyAgcmVnZXhwCi0rKCoq IFtyZWdleHAgP2xpbWl0ID9kZXB0aF9saW1pdCA/aWZsYWdzID9mbGFncyA/Y2h0YWJsZXMgcGF0 dGVybl0gY29tcGlsZXMKLSsgICAgW3BhdHRlcm5dIHdpdGggW2ZsYWdzXSB3aGVuIGdpdmVuLCB3 aXRoIFtpZmxhZ3NdIG90aGVyd2lzZSwgYW5kIHdpdGggY2hhcgotKyAgICB0YWJsZXMgW2NodGFi bGVzXS4gSWYgW2xpbWl0XSBpcyBzcGVjaWZpZWQsIHRoaXMgc2V0cyBhIGxpbWl0IHRvIHRoZSBh bW91bnQKLSsgICAgb2YgcmVjdXJzaW9uIGFuZCBiYWNrdHJhY2tpbmcgKG9ubHkgbG93ZXIgdGhh biB0aGUgYnVpbHRpbiBkZWZhdWx0ISkuIElmCi0rICAgIHRoaXMgbGltaXQgaXMgZXhjZWVkZWQs IFtNYXRjaExpbWl0XSB3aWxsIGJlIHJhaXNlZCBkdXJpbmcgbWF0Y2hpbmcuCi0rCi0rICAgIEBw YXJhbSBsaW1pdCBkZWZhdWx0ID0gbm8gZXh0cmEgbGltaXQgb3RoZXIgdGhhbiBkZWZhdWx0Ci0r ICAgIEBwYXJhbSBkZXB0aF9saW1pdCBkZWZhdWx0ID0gbm8gZXh0cmEgZGVwdGhfbGltaXQgb3Ro ZXIgdGhhbiBkZWZhdWx0Ci0rICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZs YWdzCi0rICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gY2h0 YWJsZXMgZGVmYXVsdCA9IGJ1aWx0aW4gY2hhciB0YWJsZXMKLSsKLSsgICAgQHJldHVybiB0aGUg cmVndWxhciBleHByZXNzaW9uLgotKwotKyAgICBGb3IgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBv biBob3cgeW91IGNhbiBzcGVjaWZ5IFBFUkwtc3R5bGUgcmVndWxhcgotKyAgICBleHByZXNzaW9u cyAoPSBwYXR0ZXJucyksIHBsZWFzZSBjb25zdWx0IHRoZSBQQ1JFMi1kb2N1bWVudGF0aW9uICgi bWFuCi0rICAgIHBjcmUycGF0dGVybiIpIG9yIFBFUkwtbWFudWFscy4KLSsgICAgQHNlZSA8aHR0 cDovL3d3dy5wZXJsLmNvbT4gd3d3LnBlcmwuY29tICopCi0rCi0rdmFsIHJlZ2V4cF9vciA6Ci0r ICA/bGltaXQ6Ci0rICAgICgqID9qaXRfY29tcGlsZSA6IGJvb2wgLT4gKikKLSsgICAgaW50IC0+ Ci0rICA/ZGVwdGhfbGltaXQ6aW50IC0+Ci0rICA/aWZsYWdzOmljZmxhZyAtPgotKyAgP2ZsYWdz OmNmbGFnIGxpc3QgLT4KLSsgID9jaHRhYmxlczpjaHRhYmxlcyAtPgotKyAgc3RyaW5nIGxpc3Qg LT4KLSsgIHJlZ2V4cAotKygqKiBbcmVnZXhwX29yID9saW1pdCA/ZGVwdGhfbGltaXQgP2lmbGFn cyA/ZmxhZ3MgP2NodGFibGVzIHBhdHRlcm5zXSBsaWtlCi0rICAgIHshdmFsLXJlZ2V4cH0sIGJ1 dCBjb21iaW5lcyBbcGF0dGVybnNdIGFzIGFsdGVybmF0aXZlcyAob3ItcGF0dGVybnMpIGludG8K LSsgICAgb25lIHJlZ3VsYXIgZXhwcmVzc2lvbi4gKikKLSsKLSt2YWwgcXVvdGUgOiBzdHJpbmcg LT4gc3RyaW5nCi0rKCoqIFtxdW90ZSBzdHJdCi0rCi0rICAgIEByZXR1cm4gdGhlIHF1b3RlZCBz dHJpbmcgb2YgW3N0cl0uICopCi0rCi0rKCoqIHsxIFN1YnBhdHRlcm4gZXh0cmFjdGlvbn0gKikK LSsKLSt0eXBlIHN1YnN0cmluZ3MKLSsoKiogSW5mb3JtYXRpb24gb24gc3Vic3RyaW5ncyBhZnRl ciBwYXR0ZXJuIG1hdGNoaW5nICopCi0rCi0rdmFsIGdldF9zdWJqZWN0IDogc3Vic3RyaW5ncyAt PiBzdHJpbmcKLSsoKiogW2dldF9zdWJqZWN0IHN1YnN0cmluZ3NdCi0rCi0rICAgIEByZXR1cm4g dGhlIHN1YmplY3Qgc3RyaW5nIG9mIFtzdWJzdHJpbmdzXS4gKikKLSsKLSt2YWwgbnVtX29mX3N1 YnMgOiBzdWJzdHJpbmdzIC0+IGludAotKygqKiBbbnVtX29mX3N1YnMgc3Vic3RyaW5nc10KLSsK LSsgICAgQHJldHVybiBudW1iZXIgb2Ygc3RyaW5ncyBpbiBbc3Vic3RyaW5nc10gKHdob2xlIG1h dGNoIGluY2x1c2l2ZSkuICopCi0rCi0rdmFsIGdldF9zdWJzdHJpbmcgOiBzdWJzdHJpbmdzIC0+ IGludCAtPiBzdHJpbmcKLSsoKiogW2dldF9zdWJzdHJpbmcgc3Vic3RyaW5ncyBuXQotKwotKyAg ICBAcmV0dXJuIHRoZSBbbl10aCBzdWJzdHJpbmcgKDAgaXMgd2hvbGUgbWF0Y2gpIG9mIFtzdWJz dHJpbmdzXS4KLSsKLSsgICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQKLSsgICAgICBpZiBbbl0g aXMgbm90IGluIHRoZSByYW5nZSBvZiB0aGUgbnVtYmVyIG9mIHN1YnN0cmluZ3MuCi0rICAgIEBy YWlzZSBOb3RfZm91bmQKLSsgICAgICBpZiB0aGUgY29ycmVzcG9uZGluZyBzdWJwYXR0ZXJuIGRp ZCBub3QgY2FwdHVyZSBhIHN1YnN0cmluZy4gKikKLSsKLSt2YWwgZ2V0X3N1YnN0cmluZ19vZnMg OiBzdWJzdHJpbmdzIC0+IGludCAtPiBpbnQgKiBpbnQKLSsoKiogW2dldF9zdWJzdHJpbmdfb2Zz IHN1YnN0cmluZ3Mgbl0KLSsKLSsgICAgQHJldHVybgotKyAgICAgIHRoZSBvZmZzZXQgdHVwbGUg b2YgdGhlIFtuXXRoIHN1YnN0cmluZyBvZiBbc3Vic3RyaW5nc10gKDAgaXMgd2hvbGUKLSsgICAg ICBtYXRjaCkuCi0rCi0rICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50Ci0rICAgICAgaWYgW25d IGlzIG5vdCBpbiB0aGUgcmFuZ2Ugb2YgdGhlIG51bWJlciBvZiBzdWJzdHJpbmdzLgotKyAgICBA cmFpc2UgTm90X2ZvdW5kCi0rICAgICAgaWYgdGhlIGNvcnJlc3BvbmRpbmcgc3VicGF0dGVybiBk aWQgbm90IGNhcHR1cmUgYSBzdWJzdHJpbmcuICopCi0rCi0rdmFsIGdldF9zdWJzdHJpbmdzIDog P2Z1bGxfbWF0Y2g6Ym9vbCAtPiBzdWJzdHJpbmdzIC0+IHN0cmluZyBhcnJheQotKygqKiBbZ2V0 X3N1YnN0cmluZ3MgP2Z1bGxfbWF0Y2ggc3Vic3RyaW5nc10KLSsKLSsgICAgQHJldHVybgotKyAg ICAgIHRoZSBhcnJheSBvZiBzdWJzdHJpbmdzIGluIFtzdWJzdHJpbmdzXS4gSXQgaW5jbHVkZXMg dGhlIGZ1bGwgbWF0Y2ggYXQKLSsgICAgICBpbmRleCAwIHdoZW4gW2Z1bGxfbWF0Y2hdIGlzIFt0 cnVlXSwgdGhlIGNhcHR1cmVkIHN1YnN0cmluZ3Mgb25seSB3aGVuIGl0Ci0rICAgICAgaXMgW2Zh bHNlXS4gSWYgYSBzdWJwYXR0ZXJuIGRpZCBub3QgY2FwdHVyZSBhIHN1YnN0cmluZywgdGhlIGVt cHR5IHN0cmluZwotKyAgICAgIGlzIHJldHVybmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0 aW9uIGluc3RlYWQuCi0rCi0rICAgIEBwYXJhbSBmdWxsX21hdGNoIGRlZmF1bHQgPSB0cnVlICop Ci0rCi0rdmFsIGdldF9vcHRfc3Vic3RyaW5ncyA6ID9mdWxsX21hdGNoOmJvb2wgLT4gc3Vic3Ry aW5ncyAtPiBzdHJpbmcgb3B0aW9uIGFycmF5Ci0rKCoqIFtnZXRfb3B0X3N1YnN0cmluZ3MgP2Z1 bGxfbWF0Y2ggc3Vic3RyaW5nc10KLSsKLSsgICAgQHJldHVybgotKyAgICAgIHRoZSBhcnJheSBv ZiBvcHRpb25hbCBzdWJzdHJpbmdzIGluIFtzdWJzdHJpbmdzXS4gSXQgaW5jbHVkZXMKLSsgICAg ICBbU29tZSBmdWxsX21hdGNoX3N0cl0gYXQgaW5kZXggMCB3aGVuIFtmdWxsX21hdGNoXSBpcyBb dHJ1ZV0sCi0rICAgICAgW1NvbWUgY2FwdHVyZWRfc3Vic3RyaW5nc10gb25seSB3aGVuIGl0IGlz IFtmYWxzZV0uIElmIGEgc3VicGF0dGVybiBkaWQKLSsgICAgICBub3QgY2FwdHVyZSBhIHN1YnN0 cmluZywgW05vbmVdIGlzIHJldHVybmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aW9uCi0r ICAgICAgaW5zdGVhZC4KLSsKLSsgICAgQHBhcmFtIGZ1bGxfbWF0Y2ggZGVmYXVsdCA9IHRydWUg KikKLSsKLSt2YWwgZ2V0X25hbWVkX3N1YnN0cmluZyA6IHJlZ2V4cCAtPiBzdHJpbmcgLT4gc3Vi c3RyaW5ncyAtPiBzdHJpbmcKLSsoKiogW2dldF9uYW1lZF9zdWJzdHJpbmcgcmV4IG5hbWUgc3Vi c3RyaW5nc10KLSsKLSsgICAgQHJldHVybgotKyAgICAgIHRoZSBuYW1lZCBzdWJzdHJpbmcgW25h bWVdIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBhbmQgW3N1YnN0cmluZ3NdLgotKwotKyAg ICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGVyZSBpcyBubyBzdWNoIG5hbWVkIHN1YnN0 cmluZy4KLSsgICAgQHJhaXNlIE5vdF9mb3VuZAotKyAgICAgIGlmIHRoZSBjb3JyZXNwb25kaW5n IHN1YnBhdHRlcm4gZGlkIG5vdCBjYXB0dXJlIGEgc3Vic3RyaW5nLiAqKQotKwotK3ZhbCBnZXRf bmFtZWRfc3Vic3RyaW5nX29mcyA6IHJlZ2V4cCAtPiBzdHJpbmcgLT4gc3Vic3RyaW5ncyAtPiBp bnQgKiBpbnQKLSsoKiogW2dldF9uYW1lZF9zdWJzdHJpbmdfb2ZzIHJleCBuYW1lIHN1YnN0cmlu Z3NdCi0rCi0rICAgIEByZXR1cm4KLSsgICAgICB0aGUgb2Zmc2V0IHR1cGxlIG9mIHRoZSBuYW1l ZCBzdWJzdHJpbmcgW25hbWVdIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XQotKyAgICAgIGFu ZCBbc3Vic3RyaW5nc10uCi0rCi0rICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZXJl IGlzIG5vIHN1Y2ggbmFtZWQgc3Vic3RyaW5nLgotKyAgICBAcmFpc2UgTm90X2ZvdW5kCi0rICAg ICAgaWYgdGhlIGNvcnJlc3BvbmRpbmcgc3VicGF0dGVybiBkaWQgbm90IGNhcHR1cmUgYSBzdWJz dHJpbmcuICopCi0rCi0rKCoqIHsxIENhbGxvdXRzfSAqKQotKwotK3R5cGUgY2FsbG91dF9kYXRh ID0gewotKyAgY2FsbG91dF9udW1iZXIgOiBpbnQ7ICAoKiogQ2FsbG91dCBudW1iZXIgKikKLSsg IHN1YnN0cmluZ3MgOiBzdWJzdHJpbmdzOyAgKCoqIFN1YnN0cmluZ3MgbWF0Y2hlZCBzbyBmYXIg KikKLSsgIHN0YXJ0X21hdGNoIDogaW50OyAgKCoqIFN1YmplY3Qgc3RhcnQgb2Zmc2V0IG9mIGN1 cnJlbnQgbWF0Y2ggYXR0ZW1wdCAqKQotKyAgY3VycmVudF9wb3NpdGlvbiA6IGludDsgICgqKiBT dWJqZWN0IG9mZnNldCBvZiBjdXJyZW50IG1hdGNoIHBvaW50ZXIgKikKLSsgIGNhcHR1cmVfdG9w IDogaW50OyAgKCoqIE51bWJlciBvZiB0aGUgaGlnaGVzdCBjYXB0dXJlZCBzdWJzdHJpbmcgc28g ZmFyICopCi0rICBjYXB0dXJlX2xhc3QgOiBpbnQ7ICAoKiogTnVtYmVyIG9mIHRoZSBtb3N0IHJl Y2VudGx5IGNhcHR1cmVkIHN1YnN0cmluZyAqKQotKyAgcGF0dGVybl9wb3NpdGlvbiA6IGludDsg ICgqKiBPZmZzZXQgb2YgbmV4dCBtYXRjaCBpdGVtIGluIHBhdHRlcm4gc3RyaW5nICopCi0rICBu ZXh0X2l0ZW1fbGVuZ3RoIDogaW50OyAgKCoqIExlbmd0aCBvZiBuZXh0IG1hdGNoIGl0ZW0gaW4g cGF0dGVybiBzdHJpbmcgKikKLSt9Ci0rCi0rKCoqIFR5cGUgb2YgY2FsbG91dCBmdW5jdGlvbnMg KikKLSt0eXBlIGNhbGxvdXQgPSBjYWxsb3V0X2RhdGEgLT4gdW5pdAotKygqKiBDYWxsb3V0cyBh cmUgcmVmZXJyZWQgdG8gaW4gcGF0dGVybnMgYXMgIig/Q24pIiB3aGVyZSAibiIgaXMgYQotKyAg ICBbY2FsbG91dF9udW1iZXJdIHJhbmdpbmcgZnJvbSAwIHRvIDI1NS4gU3Vic3RyaW5ncyBjYXB0 dXJlZCBzbyBmYXIgYXJlCi0rICAgIGFjY2Vzc2libGUgYXMgdXN1YWwgdmlhIFtzdWJzdHJpbmdz XS4gWW91IHdpbGwgaGF2ZSB0byBjb25zaWRlcgotKyAgICBbY2FwdHVyZV90b3BdIGFuZCBbY2Fw dHVyZV9sYXN0XSB0byBrbm93IGFib3V0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHZhbGlkCi0rICAg IHN1YnN0cmluZ3MuCi0rCi0rICAgIEJ5IHJhaXNpbmcgZXhjZXB0aW9uIFtCYWNrdHJhY2tdIHdp dGhpbiBhIGNhbGxvdXQgZnVuY3Rpb24sIHRoZSB1c2VyIGNhbgotKyAgICBmb3JjZSB0aGUgcGF0 dGVybiBtYXRjaGluZyBlbmdpbmUgdG8gYmFja3RyYWNrIHRvIG90aGVyIHBvc3NpYmxlIHNvbHV0 aW9ucy4KLSsgICAgT3RoZXIgZXhjZXB0aW9ucyB3aWxsIHRlcm1pbmF0ZSBtYXRjaGluZyBpbW1l ZGlhdGVseSBhbmQgcmV0dXJuIGNvbnRyb2wgdG8KLSsgICAgT0NhbWwuICopCi0rCi0rKCoqIHsx IE1hdGNoaW5nIG9mIHBhdHRlcm5zIGFuZCBzdWJwYXR0ZXJuIGV4dHJhY3Rpb259ICopCi0rCi0r dmFsIHBjcmUyX21hdGNoIDoKLSsgID9pZmxhZ3M6aXJmbGFnIC0+Ci0rICA/ZmxhZ3M6cmZsYWcg bGlzdCAtPgotKyAgP3JleDpyZWdleHAgLT4KLSsgID9wYXQ6c3RyaW5nIC0+Ci0rICA/cG9zOmlu dCAtPgotKyAgP2NhbGxvdXQ6Y2FsbG91dCAtPgotKyAgc3RyaW5nIC0+Ci0rICBpbnQgYXJyYXkK LSsoKiogW3BjcmUyX21hdGNoID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0 IHN1YmpdCi0rCi0rICAgIEByZXR1cm4KLSsgICAgICBhbiBhcnJheSBvZiBvZmZzZXRzIHRoYXQg ZGVzY3JpYmUgdGhlIHBvc2l0aW9uIG9mIG1hdGNoZWQgc3VicGF0dGVybnMgaW4KLSsgICAgICB0 aGUgc3RyaW5nIFtzdWJqXSBzdGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXSB3aXRoIHBhdHRlcm4g W3BhdF0gd2hlbgotKyAgICAgIGdpdmVuLCByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gb3RoZXJ3 aXNlLiBUaGUgYXJyYXkgYWxzbyBjb250YWlucwotKyAgICAgIGFkZGl0aW9uYWwgd29ya3NwYWNl IG5lZWRlZCBieSB0aGUgbWF0Y2ggZW5naW5lLiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwKLSsg ICAgICB0aGUgcHJlY29tcGlsZWQgW2lmbGFnc10gb3RoZXJ3aXNlLiBDYWxsb3V0cyBhcmUgaGFu ZGxlZCBieSBbY2FsbG91dF0uCi0rCi0rICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4 dHJhIGZsYWdzCi0rICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFy YW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLSsgICAgQHBhcmFtIHBhdCBkZWZh dWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAwCi0rICAgIEBwYXJhbSBj YWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91dHMKLSsKLSsgICAgQHJhaXNlIE5vdF9mb3Vu ZCBpZiBwYXR0ZXJuIGRvZXMgbm90IG1hdGNoLiAqKQotKwotK3ZhbCBwY3JlMl9kZmFfbWF0Y2gg OgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/cmV4 OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9wb3M6aW50IC0+Ci0rICA/Y2FsbG91 dDpjYWxsb3V0IC0+Ci0rICA/d29ya3NwYWNlOmludCBhcnJheSAtPgotKyAgc3RyaW5nIC0+Ci0r ICBpbnQgYXJyYXkKLSsoKiogW3BjcmUyX2RmYV9tYXRjaCA/aWZsYWdzID9mbGFncyA/cmV4ID9w YXQgP3BvcyA/Y2FsbG91dCA/d29ya3NwYWNlIHN1YmpdCi0rICAgIGludm9rZXMgdGhlICJhbHRl cm5hdGl2ZSIgREZBIG1hdGNoaW5nIGZ1bmN0aW9uLgotKwotKyAgICBAcmV0dXJuCi0rICAgICAg YW4gYXJyYXkgb2Ygb2Zmc2V0cyB0aGF0IGRlc2NyaWJlIHRoZSBwb3NpdGlvbiBvZiBtYXRjaGVk IHN1YnBhdHRlcm5zIGluCi0rICAgICAgdGhlIHN0cmluZyBbc3Vial0gc3RhcnRpbmcgYXQgcG9z aXRpb24gW3Bvc10gd2l0aCBwYXR0ZXJuIFtwYXRdIHdoZW4KLSsgICAgICBnaXZlbiwgcmVndWxh ciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZS4gVGhlIGFycmF5IGFsc28gY29udGFpbnMKLSsg ICAgICBhZGRpdGlvbmFsIHdvcmtzcGFjZSBuZWVkZWQgYnkgdGhlIG1hdGNoIGVuZ2luZS4gVXNl cyBbZmxhZ3NdIHdoZW4gZ2l2ZW4sCi0rICAgICAgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90 aGVyd2lzZS4gUmVxdWlyZXMgYSBzdWZmaWNpZW50bHktbGFyZ2UKLSsgICAgICBbd29ya3NwYWNl XSBhcnJheS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotKwotKyAgICBOb3Rl IHRoYXQgdGhlIHJldHVybmVkIGFycmF5IG9mIG9mZnNldHMgYXJlIHF1aXRlIGRpZmZlcmVudCBm cm9tIHRob3NlCi0rICAgIHJldHVybmVkIGJ5IHshcGNyZTJfbWF0Y2h9IGV0IGFsLiBUaGUgbW90 aXZhdGluZyB1c2UgY2FzZSBmb3IgdGhlIERGQSBtYXRjaAotKyAgICBmdW5jdGlvbiBpcyB0byBi ZSBhYmxlIHRvIHJlc3RhcnQgYSBwYXJ0aWFsIG1hdGNoIHdpdGggTiBhZGRpdGlvbmFsIGlucHV0 Ci0rICAgIHNlZ21lbnRzLiBCZWNhdXNlIHRoZSBtYXRjaCBmdW5jdGlvbi93b3Jrc3BhY2UgZG9l cyBub3Qgc3RvcmUgc2VnbWVudHMgc2VlbgotKyAgICBwcmV2aW91c2x5LCB0aGUgb2Zmc2V0cyBy ZXR1cm5lZCB3aGVuIGEgbWF0Y2ggY29tcGxldGVzIHdpbGwgcmVmZXIgb25seSB0bwotKyAgICB0 aGUgbWF0Y2hpbmcgcG9ydGlvbiBvZiB0aGUgbGFzdCBzdWJqZWN0IHN0cmluZyBwcm92aWRlZC4g VGh1cywgcmV0dXJuZWQKLSsgICAgb2Zmc2V0cyBmcm9tIHRoaXMgZnVuY3Rpb24gc2hvdWxkIG5v dCBiZSB1c2VkIHRvIHN1cHBvcnQgZXh0cmFjdGluZyBjYXB0dXJlZAotKyAgICBzdWJtYXRjaGVz LiBJZiB5b3UgbmVlZCB0byBjYXB0dXJlIHN1Ym1hdGNoZXMgZnJvbSBhIHNlcmllcyBvZiBpbnB1 dHMKLSsgICAgaW5jcmVtZW50YWxseSBtYXRjaGVkIHdpdGggdGhpcyBmdW5jdGlvbiwgeW91J2xs IG5lZWQgdG8gY29uY2F0ZW5hdGUgdGhvc2UKLSsgICAgaW5wdXRzIHRoYXQgeWllbGQgYSBzdWNj ZXNzZnVsIG1hdGNoIGhlcmUgYW5kIHJlLXJ1biB0aGUgc2FtZSBwYXR0ZXJuCi0rICAgIGFnYWlu c3QgdGhhdCBzaW5nbGUgc3ViamVjdCBzdHJpbmcuCi0rCi0rICAgIEFzaWRlIGZyb20gYW4gYWJz b2x1dGUgbWluaW11bSBvZiBbMjBdLCBQQ1JFIGRvZXMgbm90IHByb3ZpZGUgYW55IGd1aWRhbmNl Ci0rICAgIHJlZ2FyZGluZyB0aGUgc2l6ZSBvZiB3b3Jrc3BhY2UgYXJyYXkgbmVlZGVkIGJ5IGFu eSBnaXZlbiBwYXR0ZXJuLgotKyAgICBUaGVyZWZvcmUsIGl0IGlzIHdpc2UgdG8gYXBwcm9wcmlh dGVseSBoYW5kbGUgdGhlIHBvc3NpYmxlIFtXb3Jrc3BhY2VTaXplXQotKyAgICBlcnJvci4gSWYg cmFpc2VkLCB5b3UgY2FuIGFsbG9jYXRlIGEgbmV3LCBsYXJnZXIgd29ya3NwYWNlIGFycmF5IGFu ZCBiZWdpbgotKyAgICB0aGUgREZBIG1hdGNoaW5nIHByb2Nlc3MgYWdhaW4uCi0rCi0rICAgIEBw YXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0rICAgIEBwYXJhbSBmbGFncyBk ZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRl c3BhY2UKLSsgICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcG9z IGRlZmF1bHQgPSAwCi0rICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91 dHMKLSsgICAgQHBhcmFtIHdvcmtzcGFjZSBkZWZhdWx0ID0gZnJlc2ggYXJyYXkgb2YgbGVuZ3Ro IFsyMF0KLSsKLSsgICAgQHJhaXNlIE5vdF9mb3VuZCBpZiB0aGUgcGF0dGVybiBtYXRjaCBoYXMg ZmFpbGVkCi0rICAgIEByYWlzZSBFcnJvcgotKyAgICAgIFBhcnRpYWwgaWYgdGhlIHBhdHRlcm4g aGFzIG1hdGNoZWQgcGFydGlhbGx5OyBhIHN1YnNlcXVlbnQgZXhlYyBjYWxsIHdpdGgKLSsgICAg ICB0aGUgc2FtZSBwYXR0ZXJuIGFuZCB3b3Jrc3BhY2UgKGFkZGluZyB0aGUgW0RGQV9SRVNUQVJU XSBmbGFnKSBiZSBtYWRlIHRvCi0rICAgICAgZWl0aGVyIGZ1cnRoZXIgYWR2YW5jZSBvciBjb21w bGV0ZSB0aGUgcGFydGlhbCBtYXRjaC4KLSsgICAgQHJhaXNlIEVycm9yCi0rICAgICAgV29ya3Nw YWNlU2l6ZSBpZiB0aGUgd29ya3NwYWNlIGFycmF5IGlzIHRvbyBzbWFsbCB0byBhY2NvbW1vZGF0 ZSB0aGUgREZBCi0rICAgICAgc3RhdGUgcmVxdWlyZWQgYnkgdGhlIHN1cHBsaWVkIHBhdHRlcm4g KikKLSsKLSt2YWwgZXhlYyA6Ci0rICA/aWZsYWdzOmlyZmxhZyAtPgotKyAgP2ZsYWdzOnJmbGFn IGxpc3QgLT4KLSsgID9yZXg6cmVnZXhwIC0+Ci0rICA/cGF0OnN0cmluZyAtPgotKyAgP3Bvczpp bnQgLT4KLSsgID9jYWxsb3V0OmNhbGxvdXQgLT4KLSsgIHN0cmluZyAtPgotKyAgc3Vic3RyaW5n cwotKygqKiBbZXhlYyA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJq XQotKwotKyAgICBAcmV0dXJuCi0rICAgICAgc3Vic3RyaW5nIGluZm9ybWF0aW9uIG9uIHN0cmlu ZyBbc3Vial0gc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10gd2l0aAotKyAgICAgIHBhdHRlcm4g W3BhdF0gd2hlbiBnaXZlbiwgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZS4gVXNl cyBbZmxhZ3NdCi0rICAgICAgd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90 aGVyd2lzZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkKLSsgICAgICBbY2FsbG91dF0uCi0rCi0r ICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0rICAgIEBwYXJhbSBm bGFncyBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVz IHdoaXRlc3BhY2UKLSsgICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFy YW0gcG9zIGRlZmF1bHQgPSAwCi0rICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUg Y2FsbG91dHMKLSsKLSsgICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBwYXR0ZXJuIGRvZXMgbm90IG1h dGNoLiAqKQotKwotK3ZhbCBleGVjX2FsbCA6Ci0rICA/aWZsYWdzOmlyZmxhZyAtPgotKyAgP2Zs YWdzOnJmbGFnIGxpc3QgLT4KLSsgID9yZXg6cmVnZXhwIC0+Ci0rICA/cGF0OnN0cmluZyAtPgot KyAgP3BvczppbnQgLT4KLSsgID9jYWxsb3V0OmNhbGxvdXQgLT4KLSsgIHN0cmluZyAtPgotKyAg c3Vic3RyaW5ncyBhcnJheQotKygqKiBbZXhlY19hbGwgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0 ID9wb3MgP2NhbGxvdXQgc3Vial0KLSsKLSsgICAgQHJldHVybgotKyAgICAgIGFuIGFycmF5IG9m IHN1YnN0cmluZyBpbmZvcm1hdGlvbiBvZiBhbGwgbWF0Y2hpbmcgc3Vic3RyaW5ncyBpbiBzdHJp bmcKLSsgICAgICBbc3Vial0gc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10gd2l0aCBwYXR0ZXJu IFtwYXRdIHdoZW4gZ2l2ZW4sIHJlZ3VsYXIKLSsgICAgICBleHByZXNzaW9uIFtyZXhdIG90aGVy d2lzZS4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2ZW4sIHRoZSBwcmVjb21waWxlZAotKyAgICAgIFtp ZmxhZ3NdIG90aGVyd2lzZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotKwot KyAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFyYW0g ZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hl cyB3aGl0ZXNwYWNlCi0rICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBh cmFtIHBvcyBkZWZhdWx0ID0gMAotKyAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3Jl IGNhbGxvdXRzCi0rCi0rICAgIEByYWlzZSBOb3RfZm91bmQgaWYgcGF0dGVybiBkb2VzIG5vdCBt YXRjaC4gKikKLSsKLSt2YWwgbmV4dF9tYXRjaCA6Ci0rICA/aWZsYWdzOmlyZmxhZyAtPgotKyAg P2ZsYWdzOnJmbGFnIGxpc3QgLT4KLSsgID9yZXg6cmVnZXhwIC0+Ci0rICA/cGF0OnN0cmluZyAt PgotKyAgP3BvczppbnQgLT4KLSsgID9jYWxsb3V0OmNhbGxvdXQgLT4KLSsgIHN1YnN0cmluZ3Mg LT4KLSsgIHN1YnN0cmluZ3MKLSsoKiogW25leHRfbWF0Y2ggP2lmbGFncyA/ZmxhZ3MgP3JleCA/ cGF0ID9wb3MgP2NhbGxvdXQgc3Vic3Ryc10KLSsKLSsgICAgQHJldHVybgotKyAgICAgIHN1YnN0 cmluZyBpbmZvcm1hdGlvbiBvbiB0aGUgbWF0Y2ggdGhhdCBmb2xsb3dzIG9uIHRoZSBsYXN0IG1h dGNoIGRlbm90ZWQKLSsgICAgICBieSBbc3Vic3Ryc10sIGp1bXBpbmcgb3ZlciBbcG9zXSBjaGFy YWN0ZXJzIChhbHNvIGJhY2t3YXJkcyEpLCB1c2luZwotKyAgICAgIHBhdHRlcm4gW3BhdF0gd2hl biBnaXZlbiwgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZS4gVXNlcyBbZmxhZ3Nd Ci0rICAgICAgd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90aGVyd2lzZS4g Q2FsbG91dHMgYXJlIGhhbmRsZWQgYnkKLSsgICAgICBbY2FsbG91dF0uCi0rCi0rICAgIEBwYXJh bSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0rICAgIEBwYXJhbSBmbGFncyBkZWZh dWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3Bh Y2UKLSsgICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcG9zIGRl ZmF1bHQgPSAwCi0rICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91dHMK LSsKLSsgICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBwYXR0ZXJuIGRvZXMgbm90IG1hdGNoLgotKyAg ICBAcmFpc2UgSW52YWxpZF9hcmcKLSsgICAgICBpZiBbcG9zXSBsZXQgbWF0Y2hpbmcgc3RhcnQg b3V0c2lkZSBvZiB0aGUgc3ViamVjdCBzdHJpbmcuICopCi0rCi0rdmFsIGV4dHJhY3QgOgotKyAg P2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4 cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9wb3M6aW50IC0+Ci0rICA/ZnVsbF9tYXRjaDpi b29sIC0+Ci0rICA/Y2FsbG91dDpjYWxsb3V0IC0+Ci0rICBzdHJpbmcgLT4KLSsgIHN0cmluZyBh cnJheQotKygqKiBbZXh0cmFjdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/ZnVsbF9t YXRjaCA/Y2FsbG91dCBzdWJqXQotKwotKyAgICBAcmV0dXJuCi0rICAgICAgdGhlIGFycmF5IG9m IHN1YnN0cmluZ3MgdGhhdCBtYXRjaCBbc3Vial0gc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10s Ci0rICAgICAgdXNpbmcgcGF0dGVybiBbcGF0XSB3aGVuIGdpdmVuLCByZWd1bGFyIGV4cHJlc3Np b24gW3JleF0gb3RoZXJ3aXNlLiBVc2VzCi0rICAgICAgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUg cHJlY29tcGlsZWQgW2lmbGFnc10gb3RoZXJ3aXNlLiBJdCBpbmNsdWRlcyB0aGUKLSsgICAgICBm dWxsIG1hdGNoIGF0IGluZGV4IDAgd2hlbiBbZnVsbF9tYXRjaF0gaXMgW3RydWVdLCB0aGUgY2Fw dHVyZWQgc3Vic3RyaW5ncwotKyAgICAgIG9ubHkgd2hlbiBpdCBpcyBbZmFsc2VdLiBDYWxsb3V0 cyBhcmUgaGFuZGxlZCBieSBbY2FsbG91dF0uIElmIGEKLSsgICAgICBzdWJwYXR0ZXJuIGRpZCBu b3QgY2FwdHVyZSBhIHN1YnN0cmluZywgdGhlIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpbgot KyAgICAgIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aW9uIGluc3RlYWQuCi0rCi0rICAgIEBwYXJh bSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0rICAgIEBwYXJhbSBmbGFncyBkZWZh dWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3Bh Y2UKLSsgICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcG9zIGRl ZmF1bHQgPSAwCi0rICAgIEBwYXJhbSBmdWxsX21hdGNoIGRlZmF1bHQgPSB0cnVlCi0rICAgIEBw YXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91dHMKLSsKLSsgICAgQHJhaXNlIE5v dF9mb3VuZCBpZiBwYXR0ZXJuIGRvZXMgbm90IG1hdGNoLiAqKQotKwotK3ZhbCBleHRyYWN0X29w dCA6Ci0rICA/aWZsYWdzOmlyZmxhZyAtPgotKyAgP2ZsYWdzOnJmbGFnIGxpc3QgLT4KLSsgID9y ZXg6cmVnZXhwIC0+Ci0rICA/cGF0OnN0cmluZyAtPgotKyAgP3BvczppbnQgLT4KLSsgID9mdWxs X21hdGNoOmJvb2wgLT4KLSsgID9jYWxsb3V0OmNhbGxvdXQgLT4KLSsgIHN0cmluZyAtPgotKyAg c3RyaW5nIG9wdGlvbiBhcnJheQotKygqKiBbZXh0cmFjdF9vcHQgP2lmbGFncyA/ZmxhZ3MgP3Jl eCA/cGF0ID9wb3MgP2Z1bGxfbWF0Y2ggP2NhbGxvdXQgc3Vial0KLSsKLSsgICAgQHJldHVybgot KyAgICAgIHRoZSBhcnJheSBvZiBvcHRpb25hbCBzdWJzdHJpbmdzIHRoYXQgbWF0Y2ggW3N1Ympd IHN0YXJ0aW5nIGF0IHBvc2l0aW9uCi0rICAgICAgW3Bvc10sIHVzaW5nIHBhdHRlcm4gW3BhdF0g d2hlbiBnaXZlbiwgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZS4KLSsgICAgICBV c2VzIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90aGVyd2lz ZS4gSXQgaW5jbHVkZXMKLSsgICAgICBbU29tZSBmdWxsX21hdGNoX3N0cl0gYXQgaW5kZXggMCB3 aGVuIFtmdWxsX21hdGNoXSBpcyBbdHJ1ZV0sCi0rICAgICAgW1NvbWUgY2FwdHVyZWQtc3Vic3Ry aW5nc10gb25seSB3aGVuIGl0IGlzIFtmYWxzZV0uIENhbGxvdXRzIGFyZSBoYW5kbGVkCi0rICAg ICAgYnkgW2NhbGxvdXRdLiBJZiBhIHN1YnBhdHRlcm4gZGlkIG5vdCBjYXB0dXJlIGEgc3Vic3Ry aW5nLCBbTm9uZV0gaXMKLSsgICAgICByZXR1cm5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBwb3Np dGlvbiBpbnN0ZWFkLgotKwotKyAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBm bGFncwotKyAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJl eCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0rICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9 IGlnbm9yZWQKLSsgICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotKyAgICBAcGFyYW0gZnVsbF9t YXRjaCBkZWZhdWx0ID0gdHJ1ZQotKyAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3Jl IGNhbGxvdXRzCi0rCi0rICAgIEByYWlzZSBOb3RfZm91bmQgaWYgcGF0dGVybiBkb2VzIG5vdCBt YXRjaC4gKikKLSsKLSt2YWwgZXh0cmFjdF9hbGwgOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsg ID9mbGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcg LT4KLSsgID9wb3M6aW50IC0+Ci0rICA/ZnVsbF9tYXRjaDpib29sIC0+Ci0rICA/Y2FsbG91dDpj YWxsb3V0IC0+Ci0rICBzdHJpbmcgLT4KLSsgIHN0cmluZyBhcnJheSBhcnJheQotKygqKiBbZXh0 cmFjdF9hbGwgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2Z1bGxfbWF0Y2ggP2NhbGxv dXQgc3Vial0KLSsKLSsgICAgQHJldHVybgotKyAgICAgIGFuIGFycmF5IG9mIGFycmF5cyBvZiBh bGwgbWF0Y2hpbmcgc3Vic3RyaW5ncyB0aGF0IG1hdGNoIFtzdWJqXSBzdGFydGluZwotKyAgICAg IGF0IHBvc2l0aW9uIFtwb3NdLCB1c2luZyBwYXR0ZXJuIFtwYXRdIHdoZW4gZ2l2ZW4sIHJlZ3Vs YXIgZXhwcmVzc2lvbgotKyAgICAgIFtyZXhdIG90aGVyd2lzZS4gVXNlcyBbZmxhZ3NdIHdoZW4g Z2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXQotKyAgICAgIG90aGVyd2lzZS4gSXQgaW5j bHVkZXMgdGhlIGZ1bGwgbWF0Y2ggYXQgaW5kZXggMCBvZiB0aGUgZXh0cmFjdGVkIHN0cmluZwot KyAgICAgIGFycmF5cyB3aGVuIFtmdWxsX21hdGNoXSBpcyBbdHJ1ZV0sIHRoZSBjYXB0dXJlZCBz dWJzdHJpbmdzIG9ubHkgd2hlbiBpdAotKyAgICAgIGlzIFtmYWxzZV0uIENhbGxvdXRzIGFyZSBo YW5kbGVkIGJ5IFtjYWxsb3V0XS4KLSsKLSsgICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0gbm8g ZXh0cmEgZmxhZ3MKLSsgICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBw YXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQotKyAgICBAcGFyYW0gcGF0IGRl ZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSBwb3MgZGVmYXVsdCA9IDAKLSsgICAgQHBhcmFt IGZ1bGxfbWF0Y2ggZGVmYXVsdCA9IHRydWUKLSsgICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9 IGlnbm9yZSBjYWxsb3V0cwotKwotKyAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIHBhdHRlcm4gZG9l cyBub3QgbWF0Y2guICopCi0rCi0rdmFsIGV4dHJhY3RfYWxsX29wdCA6Ci0rICA/aWZsYWdzOmly ZmxhZyAtPgotKyAgP2ZsYWdzOnJmbGFnIGxpc3QgLT4KLSsgID9yZXg6cmVnZXhwIC0+Ci0rICA/ cGF0OnN0cmluZyAtPgotKyAgP3BvczppbnQgLT4KLSsgID9mdWxsX21hdGNoOmJvb2wgLT4KLSsg ID9jYWxsb3V0OmNhbGxvdXQgLT4KLSsgIHN0cmluZyAtPgotKyAgc3RyaW5nIG9wdGlvbiBhcnJh eSBhcnJheQotKygqKiBbZXh0cmFjdF9hbGxfb3B0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/ cG9zID9mdWxsX21hdGNoID9jYWxsb3V0IHN1YmpdCi0rCi0rICAgIEByZXR1cm4KLSsgICAgICBh biBhcnJheSBvZiBhcnJheXMgb2YgYWxsIG9wdGlvbmFsIG1hdGNoaW5nIHN1YnN0cmluZ3MgdGhh dCBtYXRjaCBbc3Vial0KLSsgICAgICBzdGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXSwgdXNpbmcg cGF0dGVybiBbcGF0XSB3aGVuIGdpdmVuLCByZWd1bGFyCi0rICAgICAgZXhwcmVzc2lvbiBbcmV4 XSBvdGhlcndpc2UuIFVzZXMgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUgcHJlY29tcGlsZWQKLSsg ICAgICBbaWZsYWdzXSBvdGhlcndpc2UuIEl0IGluY2x1ZGVzIFtTb21lIGZ1bGxfbWF0Y2hfc3Ry XSBhdCBpbmRleCAwIG9mIHRoZQotKyAgICAgIGV4dHJhY3RlZCBzdHJpbmcgYXJyYXlzIHdoZW4g W2Z1bGxfbWF0Y2hdIGlzIFt0cnVlXSwKLSsgICAgICBbU29tZSBjYXB0dXJlZF9zdWJzdHJpbmdz XSBvbmx5IHdoZW4gaXQgaXMgW2ZhbHNlXS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQKLSsgICAgICBi eSBbY2FsbG91dF0uIElmIGEgc3VicGF0dGVybiBkaWQgbm90IGNhcHR1cmUgYSBzdWJzdHJpbmcs IFtOb25lXSBpcwotKyAgICAgIHJldHVybmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aW9u IGluc3RlYWQuCi0rCi0rICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdz Ci0rICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcmV4IGRl ZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLSsgICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdu b3JlZAotKyAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAwCi0rICAgIEBwYXJhbSBmdWxsX21hdGNo IGRlZmF1bHQgPSB0cnVlCi0rICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2Fs bG91dHMKLSsKLSsgICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBwYXR0ZXJuIGRvZXMgbm90IG1hdGNo LiAqKQotKwotK3ZhbCBwbWF0Y2ggOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpy ZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9w b3M6aW50IC0+Ci0rICA/Y2FsbG91dDpjYWxsb3V0IC0+Ci0rICBzdHJpbmcgLT4KLSsgIGJvb2wK LSsoKiogW3BtYXRjaCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJq XQotKwotKyAgICBAcmV0dXJuCi0rICAgICAgW3RydWVdIGlmIFtzdWJqXSBpcyBtYXRjaGVkIGJ5 IHBhdHRlcm4gW3BhdF0gd2hlbiBnaXZlbiwgcmVndWxhcgotKyAgICAgIGV4cHJlc3Npb24gW3Jl eF0gb3RoZXJ3aXNlLCBzdGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXS4gVXNlcyBbZmxhZ3NdIHdo ZW4KLSsgICAgICBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90aGVyd2lzZS4gQ2Fs bG91dHMgYXJlIGhhbmRsZWQgYnkKLSsgICAgICBbY2FsbG91dF0uCi0rCi0rICAgIEBwYXJhbSBp ZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0rICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0 ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UK LSsgICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcG9zIGRlZmF1 bHQgPSAwCi0rICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91dHMgKikK LSsKLSsoKiogezEgU3RyaW5nIHN1YnN0aXR1dGlvbn0gKikKLSsKLSt0eXBlIHN1YnN0aXR1dGlv bgotKygqKiBJbmZvcm1hdGlvbiBvbiBzdWJzdGl0dXRpb24gcGF0dGVybnMgKikKLSsKLSt2YWwg c3Vic3QgOiBzdHJpbmcgLT4gc3Vic3RpdHV0aW9uCi0rKCoqIFtzdWJzdCBzdHJdIGNvbnZlcnRz IHRoZSBzdHJpbmcgW3N0cl0gcmVwcmVzZW50aW5nIGEgc3Vic3RpdHV0aW9uIHBhdHRlcm4gdG8K LSsgICAgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uCi0rCi0rICAgIFRoZSBjb250ZW50cyBv ZiB0aGUgc3Vic3RpdHV0aW9uIHN0cmluZyBbc3RyXSBjYW4gYmUgbm9ybWFsIHRleHQgbWl4ZWQg d2l0aAotKyAgICBhbnkgb2YgdGhlIGZvbGxvd2luZyAobW9zdGx5IGFzIGluIFBFUkwpOgotKwot KyAgICAtIHtlICRcWzAtOVxdK30gLSBhICIkIiBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhbiBh cmJpdHJhcnkgbnVtYmVyLiAiJDAiCi0rICAgICAgc3RhbmRzIGZvciB0aGUgbmFtZSBvZiB0aGUg ZXhlY3V0YWJsZSwgYW55IG90aGVyIG51bWJlciBmb3IgdGhlIG4tdGgKLSsgICAgICBiYWNrcmVm ZXJlbmNlLgotKyAgICAtIHtlICQmfSAtIHRoZSB3aG9sZSBtYXRjaGVkIHBhdHRlcm4KLSsgICAg LSB7ZSAkYH0gLSB0aGUgdGV4dCBiZWZvcmUgdGhlIG1hdGNoCi0rICAgIC0ge2UgJCd9IC0gdGhl IHRleHQgYWZ0ZXIgdGhlIG1hdGNoCi0rICAgIC0ge2UgJCt9IC0gdGhlIGxhc3QgZ3JvdXAgdGhh dCBtYXRjaGVkCi0rICAgIC0ge2UgJCR9IC0gYSBzaW5nbGUgIiQiCi0rICAgIC0ge2UgJCF9IC0g ZGVsaW1pdGVyIHdoaWNoIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgc3Vic3RpdHV0aW9uLiBDYW4g YmUgdXNlZAotKyAgICAgIHRvIHBhcnQgIiRbMC05XSsiIGZyb20gYW4gaW1tZWRpYXRlbHkgZm9s bG93aW5nIG90aGVyIG51bWJlci4gKikKLSsKLSt2YWwgcmVwbGFjZSA6Ci0rICA/aWZsYWdzOmly ZmxhZyAtPgotKyAgP2ZsYWdzOnJmbGFnIGxpc3QgLT4KLSsgID9yZXg6cmVnZXhwIC0+Ci0rICA/ cGF0OnN0cmluZyAtPgotKyAgP3BvczppbnQgLT4KLSsgID9pdGVtcGw6c3Vic3RpdHV0aW9uIC0+ Ci0rICA/dGVtcGw6c3RyaW5nIC0+Ci0rICA/Y2FsbG91dDpjYWxsb3V0IC0+Ci0rICBzdHJpbmcg LT4KLSsgIHN0cmluZwotKygqKiBbcmVwbGFjZSA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3Bv cyA/aXRlbXBsID90ZW1wbCA/Y2FsbG91dCBzdWJqXQotKyAgICByZXBsYWNlcyBhbGwgc3Vic3Ry aW5ncyBvZiBbc3Vial0gbWF0Y2hpbmcgcGF0dGVybiBbcGF0XSB3aGVuIGdpdmVuLCByZWd1bGFy Ci0rICAgIGV4cHJlc3Npb24gW3JleF0gb3RoZXJ3aXNlLCBzdGFydGluZyBhdCBwb3NpdGlvbiBb cG9zXSB3aXRoIHRoZSBzdWJzdGl0dXRpb24KLSsgICAgc3RyaW5nIFt0ZW1wbF0gd2hlbiBnaXZl biwgW2l0ZW1wbF0gb3RoZXJ3aXNlLiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhlCi0rICAg IHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90aGVyd2lzZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkg W2NhbGxvdXRdLgotKwotKyAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFn cwotKyAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJleCBk ZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0rICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGln bm9yZWQKLSsgICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotKyAgICBAcGFyYW0gaXRlbXBsIGRl ZmF1bHQgPSBlbXB0eSBzdHJpbmcKLSsgICAgQHBhcmFtIHRlbXBsIGRlZmF1bHQgPSBpZ25vcmVk Ci0rICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91dHMKLSsKLSsgICAg QHJhaXNlIEZhaWx1cmUgaWYgdGhlcmUgYXJlIGJhY2tyZWZlcmVuY2VzIHRvIG5vbmV4aXN0ZW50 IHN1YnBhdHRlcm5zLiAqKQotKwotK3ZhbCBxcmVwbGFjZSA6Ci0rICA/aWZsYWdzOmlyZmxhZyAt PgotKyAgP2ZsYWdzOnJmbGFnIGxpc3QgLT4KLSsgID9yZXg6cmVnZXhwIC0+Ci0rICA/cGF0OnN0 cmluZyAtPgotKyAgP3BvczppbnQgLT4KLSsgID90ZW1wbDpzdHJpbmcgLT4KLSsgID9jYWxsb3V0 OmNhbGxvdXQgLT4KLSsgIHN0cmluZyAtPgotKyAgc3RyaW5nCi0rKCoqIFtxcmVwbGFjZSA/aWZs YWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/dGVtcGwgP2NhbGxvdXQgc3Vial0gcmVwbGFjZXMg YWxsCi0rICAgIHN1YnN0cmluZ3Mgb2YgW3N1YmpdIG1hdGNoaW5nIHBhdHRlcm4gW3BhdF0gd2hl biBnaXZlbiwgcmVndWxhciBleHByZXNzaW9uCi0rICAgIFtyZXhdIG90aGVyd2lzZSwgc3RhcnRp bmcgYXQgcG9zaXRpb24gW3Bvc10gd2l0aCB0aGUgc3RyaW5nIFt0ZW1wbF0uIFVzZXMKLSsgICAg W2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUgcHJlY29tcGlsZWQgW2lmbGFnc10gb3RoZXJ3aXNlLiBD YWxsb3V0cyBhcmUgaGFuZGxlZAotKyAgICBieSBbY2FsbG91dF0uCi0rCi0rICAgIEBwYXJhbSBp ZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0rICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0 ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UK LSsgICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcG9zIGRlZmF1 bHQgPSAwCi0rICAgIEBwYXJhbSB0ZW1wbCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0g Y2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzICopCi0rCi0rdmFsIHN1YnN0aXR1dGVf c3Vic3RyaW5ncyA6Ci0rICA/aWZsYWdzOmlyZmxhZyAtPgotKyAgP2ZsYWdzOnJmbGFnIGxpc3Qg LT4KLSsgID9yZXg6cmVnZXhwIC0+Ci0rICA/cGF0OnN0cmluZyAtPgotKyAgP3BvczppbnQgLT4K LSsgID9jYWxsb3V0OmNhbGxvdXQgLT4KLSsgIHN1YnN0OihzdWJzdHJpbmdzIC0+IHN0cmluZykg LT4KLSsgIHN0cmluZyAtPgotKyAgc3RyaW5nCi0rKCoqIFtzdWJzdGl0dXRlX3N1YnN0cmluZ3Mg P2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgfnN1YnN0IHN1YmpdCi0rICAg IHJlcGxhY2VzIGFsbCBzdWJzdHJpbmdzIG9mIFtzdWJqXSBtYXRjaGluZyBwYXR0ZXJuIFtwYXRd IHdoZW4gZ2l2ZW4sIHJlZ3VsYXIKLSsgICAgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UsIHN0 YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdIHdpdGggdGhlIHJlc3VsdCBvZgotKyAgICBmdW5jdGlv biBbc3Vic3RdIGFwcGxpZWQgdG8gdGhlIHN1YnN0cmluZ3Mgb2YgdGhlIG1hdGNoLiBVc2VzIFtm bGFnc10gd2hlbgotKyAgICBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90aGVyd2lz ZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkKLSsgICAgW2NhbGxvdXRdLgotKwotKyAgICBAcGFy YW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFyYW0gZmxhZ3MgZGVm YXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNw YWNlCi0rICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHBvcyBk ZWZhdWx0ID0gMAotKyAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRz ICopCi0rCi0rdmFsIHN1YnN0aXR1dGUgOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFn czpyZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsg ID9wb3M6aW50IC0+Ci0rICA/Y2FsbG91dDpjYWxsb3V0IC0+Ci0rICBzdWJzdDooc3RyaW5nIC0+ IHN0cmluZykgLT4KLSsgIHN0cmluZyAtPgotKyAgc3RyaW5nCi0rKCoqIFtzdWJzdGl0dXRlID9p ZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IH5zdWJzdCBzdWJqXSByZXBsYWNl cyBhbGwKLSsgICAgc3Vic3RyaW5ncyBvZiBbc3Vial0gbWF0Y2hpbmcgcGF0dGVybiBbcGF0XSB3 aGVuIGdpdmVuLCByZWd1bGFyIGV4cHJlc3Npb24KLSsgICAgW3JleF0gb3RoZXJ3aXNlLCBzdGFy dGluZyBhdCBwb3NpdGlvbiBbcG9zXSB3aXRoIHRoZSByZXN1bHQgb2YgZnVuY3Rpb24KLSsgICAg W3N1YnN0XSBhcHBsaWVkIHRvIHRoZSBtYXRjaC4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2ZW4sIHRo ZSBwcmVjb21waWxlZAotKyAgICBbaWZsYWdzXSBvdGhlcndpc2UuIENhbGxvdXRzIGFyZSBoYW5k bGVkIGJ5IFtjYWxsb3V0XS4KLSsKLSsgICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0 cmEgZmxhZ3MKLSsgICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJh bSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQotKyAgICBAcGFyYW0gcGF0IGRlZmF1 bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSBwb3MgZGVmYXVsdCA9IDAKLSsgICAgQHBhcmFtIGNh bGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cyAqKQotKwotK3ZhbCByZXBsYWNlX2ZpcnN0 IDoKLSsgID9pZmxhZ3M6aXJmbGFnIC0+Ci0rICA/ZmxhZ3M6cmZsYWcgbGlzdCAtPgotKyAgP3Jl eDpyZWdleHAgLT4KLSsgID9wYXQ6c3RyaW5nIC0+Ci0rICA/cG9zOmludCAtPgotKyAgP2l0ZW1w bDpzdWJzdGl0dXRpb24gLT4KLSsgID90ZW1wbDpzdHJpbmcgLT4KLSsgID9jYWxsb3V0OmNhbGxv dXQgLT4KLSsgIHN0cmluZyAtPgotKyAgc3RyaW5nCi0rKCoqIFtyZXBsYWNlX2ZpcnN0ID9pZmxh Z3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9pdGVtcGwgP3RlbXBsID9jYWxsb3V0IHN1YmpdCi0r ICAgIHJlcGxhY2VzIHRoZSBmaXJzdCBzdWJzdHJpbmcgb2YgW3N1YmpdIG1hdGNoaW5nIHBhdHRl cm4gW3BhdF0gd2hlbiBnaXZlbiwKLSsgICAgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVy d2lzZSwgc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10gd2l0aCB0aGUKLSsgICAgc3Vic3RpdHV0 aW9uIHN0cmluZyBbdGVtcGxdIHdoZW4gZ2l2ZW4sIFtpdGVtcGxdIG90aGVyd2lzZS4gVXNlcyBb ZmxhZ3NdCi0rICAgIHdoZW4gZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndp c2UuIENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5Ci0rICAgIFtjYWxsb3V0XS4KLSsKLSsgICAgQHBh cmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLSsgICAgQHBhcmFtIGZsYWdzIGRl ZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVz cGFjZQotKyAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSBwb3Mg ZGVmYXVsdCA9IDAKLSsgICAgQHBhcmFtIGl0ZW1wbCBkZWZhdWx0ID0gZW1wdHkgc3RyaW5nCi0r ICAgIEBwYXJhbSB0ZW1wbCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gY2FsbG91dCBk ZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0rCi0rICAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZXJl IGFyZSBiYWNrcmVmZXJlbmNlcyB0byBub25leGlzdGVudCBzdWJwYXR0ZXJucy4gKikKLSsKLSt2 YWwgcXJlcGxhY2VfZmlyc3QgOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpyZmxh ZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9wb3M6 aW50IC0+Ci0rICA/dGVtcGw6c3RyaW5nIC0+Ci0rICA/Y2FsbG91dDpjYWxsb3V0IC0+Ci0rICBz dHJpbmcgLT4KLSsgIHN0cmluZwotKygqKiBbcXJlcGxhY2VfZmlyc3QgP2lmbGFncyA/ZmxhZ3Mg P3JleCA/cGF0ID9wb3MgP3RlbXBsID9jYWxsb3V0IHN1YmpdIHJlcGxhY2VzCi0rICAgIHRoZSBm aXJzdCBzdWJzdHJpbmcgb2YgW3N1YmpdIG1hdGNoaW5nIHBhdHRlcm4gW3BhdF0gd2hlbiBnaXZl biwgcmVndWxhcgotKyAgICBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZSwgc3RhcnRpbmcgYXQg cG9zaXRpb24gW3Bvc10gd2l0aCB0aGUgc3RyaW5nCi0rICAgIFt0ZW1wbF0uIFVzZXMgW2ZsYWdz XSB3aGVuIGdpdmVuLCB0aGUgcHJlY29tcGlsZWQgW2lmbGFnc10gb3RoZXJ3aXNlLgotKyAgICBD YWxsb3V0cyBhcmUgaGFuZGxlZCBieSBbY2FsbG91dF0uCi0rCi0rICAgIEBwYXJhbSBpZmxhZ3Mg ZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0rICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdu b3JlZAotKyAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLSsgICAg QHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAw Ci0rICAgIEBwYXJhbSB0ZW1wbCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gY2FsbG91 dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzICopCi0rCi0rdmFsIHN1YnN0aXR1dGVfc3Vic3Ry aW5nc19maXJzdCA6Ci0rICA/aWZsYWdzOmlyZmxhZyAtPgotKyAgP2ZsYWdzOnJmbGFnIGxpc3Qg LT4KLSsgID9yZXg6cmVnZXhwIC0+Ci0rICA/cGF0OnN0cmluZyAtPgotKyAgP3BvczppbnQgLT4K LSsgID9jYWxsb3V0OmNhbGxvdXQgLT4KLSsgIHN1YnN0OihzdWJzdHJpbmdzIC0+IHN0cmluZykg LT4KLSsgIHN0cmluZyAtPgotKyAgc3RyaW5nCi0rKCoqIFtzdWJzdGl0dXRlX3N1YnN0cmluZ3Nf Zmlyc3QgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgfnN1YnN0Ci0rICAg ICBzdWJqXSByZXBsYWNlcyB0aGUgZmlyc3Qgc3Vic3RyaW5nIG9mIFtzdWJqXSBtYXRjaGluZyBw YXR0ZXJuIFtwYXRdIHdoZW4KLSsgICAgZ2l2ZW4sIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBv dGhlcndpc2UsIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdIHdpdGgKLSsgICAgdGhlIHJlc3Vs dCBvZiBmdW5jdGlvbiBbc3Vic3RdIGFwcGxpZWQgdG8gdGhlIHN1YnN0cmluZ3Mgb2YgdGhlIG1h dGNoLiBVc2VzCi0rICAgIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxh Z3NdIG90aGVyd2lzZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQKLSsgICAgYnkgW2NhbGxvdXRdLgot KwotKyAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFy YW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0 Y2hlcyB3aGl0ZXNwYWNlCi0rICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAg QHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotKyAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdu b3JlIGNhbGxvdXRzICopCi0rCi0rdmFsIHN1YnN0aXR1dGVfZmlyc3QgOgotKyAgP2lmbGFnczpp cmZsYWcgLT4KLSsgID9mbGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAg P3BhdDpzdHJpbmcgLT4KLSsgID9wb3M6aW50IC0+Ci0rICA/Y2FsbG91dDpjYWxsb3V0IC0+Ci0r ICBzdWJzdDooc3RyaW5nIC0+IHN0cmluZykgLT4KLSsgIHN0cmluZyAtPgotKyAgc3RyaW5nCi0r KCoqIFtzdWJzdGl0dXRlX2ZpcnN0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxs b3V0IH5zdWJzdCBzdWJqXQotKyAgICByZXBsYWNlcyB0aGUgZmlyc3Qgc3Vic3RyaW5nIG9mIFtz dWJqXSBtYXRjaGluZyBwYXR0ZXJuIFtwYXRdIHdoZW4gZ2l2ZW4sCi0rICAgIHJlZ3VsYXIgZXhw cmVzc2lvbiBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdIHdpdGgg dGhlCi0rICAgIHJlc3VsdCBvZiBmdW5jdGlvbiBbc3Vic3RdIGFwcGxpZWQgdG8gdGhlIG1hdGNo LiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwKLSsgICAgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3Nd IG90aGVyd2lzZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotKwotKyAgICBA cGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFyYW0gZmxhZ3Mg ZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0 ZXNwYWNlCi0rICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHBv cyBkZWZhdWx0ID0gMAotKyAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxv dXRzICopCi0rCi0rKCoqIHsxIFNwbGl0dGluZ30gKikKLSsKLSt2YWwgc3BsaXQgOgotKyAgP2lm bGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAt PgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9wb3M6aW50IC0+Ci0rICA/bWF4OmludCAtPgotKyAg P2NhbGxvdXQ6Y2FsbG91dCAtPgotKyAgc3RyaW5nIC0+Ci0rICBzdHJpbmcgbGlzdAotKygqKiBb c3BsaXQgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP21heCA/Y2FsbG91dCBzdWJqXSBz cGxpdHMgW3N1YmpdIGludG8KLSsgICAgYSBsaXN0IG9mIGF0IG1vc3QgW21heF0gc3RyaW5ncywg dXNpbmcgYXMgZGVsaW1pdGVyIHBhdHRlcm4gW3BhdF0gd2hlbgotKyAgICBnaXZlbiwgcmVndWxh ciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZSwgc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10u IFVzZXMKLSsgICAgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUgcHJlY29tcGlsZWQgW2lmbGFnc10g b3RoZXJ3aXNlLiBJZiBbbWF4XSBpcyB6ZXJvLAotKyAgICB0cmFpbGluZyBlbXB0eSBmaWVsZHMg YXJlIHN0cmlwcGVkLiBJZiBpdCBpcyBuZWdhdGl2ZSwgaXQgaXMgdHJlYXRlZCBhcwotKyAgICBh cmJpdHJhcmlseSBsYXJnZS4gSWYgbmVpdGhlciBbcGF0XSBub3IgW3JleF0gYXJlIHNwZWNpZmll ZCwgbGVhZGluZwotKyAgICB3aGl0ZXNwYWNlIHdpbGwgYmUgc3RyaXBwZWQhIFNob3VsZCBiZWhh dmUgZXhhY3RseSBhcyBpbiBQRVJMLiBDYWxsb3V0cyBhcmUKLSsgICAgaGFuZGxlZCBieSBbY2Fs bG91dF0uCi0rCi0rICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0r ICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcmV4IGRlZmF1 bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLSsgICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3Jl ZAotKyAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAwCi0rICAgIEBwYXJhbSBtYXggZGVmYXVsdCA9 IDAKLSsgICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cyAqKQotKwot K3ZhbCBhc3BsaXQgOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpyZmxhZyBsaXN0 IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9wb3M6aW50IC0+ Ci0rICA/bWF4OmludCAtPgotKyAgP2NhbGxvdXQ6Y2FsbG91dCAtPgotKyAgc3RyaW5nIC0+Ci0r ICBzdHJpbmcgYXJyYXkKLSsoKiogW2FzcGxpdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3Bv cyA/bWF4ID9jYWxsb3V0IHN1YmpdIHNhbWUgYXMKLSsgICAgeyFQY3JlMi5zcGxpdH0gYnV0IHJl dHVybiBhbiBhcnJheSBpbnN0ZWFkIG9mIGEgbGlzdC4gKikKLSsKLSsoKiogUmVzdWx0IG9mIGEg eyFQY3JlMi5mdWxsX3NwbGl0fSAqKQotK3R5cGUgc3BsaXRfcmVzdWx0ID0KLSsgIHwgVGV4dCBv ZiBzdHJpbmcgICgqKiBUZXh0IHBhcnQgb2Ygc3BsaXQgc3RyaW5nICopCi0rICB8IERlbGltIG9m IHN0cmluZyAgKCoqIERlbGltaXRlciBwYXJ0IG9mIHNwbGl0IHN0cmluZyAqKQotKyAgfCBHcm91 cCBvZiBpbnQgKiBzdHJpbmcKLSsgICAgICAoKiogU3ViZ3JvdXAgb2YgbWF0Y2hlZCBkZWxpbWl0 ZXIgKHN1Ymdyb3VwX25yLCBzdWJncm91cF9zdHIpICopCi0rICB8IE5vR3JvdXAgICgqKiBVbm1h dGNoZWQgc3ViZ3JvdXAgKikKLSsKLSt2YWwgZnVsbF9zcGxpdCA6Ci0rICA/aWZsYWdzOmlyZmxh ZyAtPgotKyAgP2ZsYWdzOnJmbGFnIGxpc3QgLT4KLSsgID9yZXg6cmVnZXhwIC0+Ci0rICA/cGF0 OnN0cmluZyAtPgotKyAgP3BvczppbnQgLT4KLSsgID9tYXg6aW50IC0+Ci0rICA/Y2FsbG91dDpj YWxsb3V0IC0+Ci0rICBzdHJpbmcgLT4KLSsgIHNwbGl0X3Jlc3VsdCBsaXN0Ci0rKCoqIFtmdWxs X3NwbGl0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9tYXggP2NhbGxvdXQgc3Vial0g c3BsaXRzIFtzdWJqXQotKyAgICBpbnRvIGEgbGlzdCBvZiBhdCBtb3N0IFttYXhdIGVsZW1lbnRz IG9mIHR5cGUgInNwbGl0X3Jlc3VsdCIsIHVzaW5nIGFzCi0rICAgIGRlbGltaXRlciBwYXR0ZXJu IFtwYXRdIHdoZW4gZ2l2ZW4sIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UsCi0r ICAgIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdLiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwg dGhlIHByZWNvbXBpbGVkCi0rICAgIFtpZmxhZ3NdIG90aGVyd2lzZS4gSWYgW21heF0gaXMgemVy bywgdHJhaWxpbmcgZW1wdHkgZmllbGRzIGFyZSBzdHJpcHBlZC4gSWYKLSsgICAgaXQgaXMgbmVn YXRpdmUsIGl0IGlzIHRyZWF0ZWQgYXMgYXJiaXRyYXJpbHkgbGFyZ2UuIFNob3VsZCBiZWhhdmUg ZXhhY3RseSBhcwotKyAgICBpbiBQRVJMLiBDYWxsb3V0cyBhcmUgaGFuZGxlZCBieSBbY2FsbG91 dF0uCi0rCi0rICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0rICAg IEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcmV4IGRlZmF1bHQg PSBtYXRjaGVzIHdoaXRlc3BhY2UKLSsgICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAot KyAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAwCi0rICAgIEBwYXJhbSBtYXggZGVmYXVsdCA9IDAK LSsgICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cyAqKQotKwotKygq KiB7MSBBZGRpdGlvbmFsIGNvbnZlbmllbmNlIGZ1bmN0aW9uc30gKikKLSsKLSt2YWwgZm9yZWFj aF9saW5lIDogP2ljOmluX2NoYW5uZWwgLT4gKHN0cmluZyAtPiB1bml0KSAtPiB1bml0Ci0rKCoq IFtmb3JlYWNoX2xpbmUgP2ljIGZdIGFwcGxpZXMgW2ZdIHRvIGVhY2ggbGluZSBpbiBpbmNoYW5u ZWwgW2ljXSB1bnRpbCB0aGUKLSsgICAgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4KLSsKLSsgICAg QHBhcmFtIGljIGRlZmF1bHQgPSBzdGRpbiAqKQotKwotK3ZhbCBmb3JlYWNoX2ZpbGUgOiBzdHJp bmcgbGlzdCAtPiAoc3RyaW5nIC0+IGluX2NoYW5uZWwgLT4gdW5pdCkgLT4gdW5pdAotKygqKiBb Zm9yZWFjaF9maWxlIGZpbGVuYW1lcyBmXSBvcGVucyBlYWNoIGZpbGUgaW4gdGhlIGxpc3QgW2Zp bGVuYW1lc10gZm9yIGlucHV0Ci0rICAgIGFuZCBhcHBsaWVzIFtmXSB0byBlYWNoIGZpbGVuYW1l IGFuZCB0aGUgY29ycmVzcG9uZGluZyBjaGFubmVsLiBDaGFubmVscyBhcmUKLSsgICAgY2xvc2Vk IGFmdGVyIGVhY2ggb3BlcmF0aW9uIChldmVuIHdoZW4gZXhjZXB0aW9ucyBvY2N1ciAtIHRoZXkg Z2V0IHJlcmFpc2VkCi0rICAgIGFmdGVyd2FyZHMhKS4gKikKLSsKLSsoKiogezEge2IgVU5TQUZF IFNUVUZGIC0gVVNFIFdJVEggQ0FVVElPTiF9fSAqKQotKwotK3ZhbCB1bnNhZmVfcGNyZTJfbWF0 Y2ggOgotKyAgaXJmbGFnIC0+Ci0rICByZWdleHAgLT4KLSsgIHBvczppbnQgLT4KLSsgIHN1Ympf c3RhcnQ6aW50IC0+Ci0rICBzdWJqOnN0cmluZyAtPgotKyAgaW50IGFycmF5IC0+Ci0rICBjYWxs b3V0IG9wdGlvbiAtPgotKyAgdW5pdAotKygqKiBbdW5zYWZlX3BjcmVfZXhlYyBmbGFncyByZXgg fnBvcyB+c3Vial9zdGFydCB+c3ViaiBvZmZzZXRfdmVjdG9yIGNhbGxvdXRdLgotKyAgICBZb3Ug c2hvdWxkIHJlYWQgdGhlIEMtc291cmNlIHRvIGtub3cgd2hhdCBoYXBwZW5zLiBJZiB5b3UgZG8g bm90IHVuZGVyc3RhbmQKLSsgICAgaXQgLSB7YiBkb24ndCB1c2UgdGhpcyBmdW5jdGlvbiF9ICop Ci0rCi0rdmFsIG1ha2Vfb3ZlY3RvciA6IHJlZ2V4cCAtPiBpbnQgKiBpbnQgYXJyYXkKLSsoKiog W21ha2Vfb3ZlY3RvciByZWdleHBdIGNhbGN1bGF0ZXMgdGhlIHR1cGxlIChzdWJncm91cHMyLCBv dmVjdG9yKSB3aGljaCBpcwotKyAgICB0aGUgbnVtYmVyIG9mIHN1Ymdyb3VwIG9mZnNldHMgYW5k IHRoZSBvZmZzZXQgYXJyYXkuICopCi0rCi0rdmFsIHVuc2FmZV9wY3JlMl9kZmFfbWF0Y2ggOgot KyAgaXJmbGFnIC0+Ci0rICByZWdleHAgLT4KLSsgIHBvczppbnQgLT4KLSsgIHN1Ympfc3RhcnQ6 aW50IC0+Ci0rICBzdWJqOnN0cmluZyAtPgotKyAgaW50IGFycmF5IC0+Ci0rICBjYWxsb3V0IG9w dGlvbiAtPgotKyAgd29ya3NwYWNlOmludCBhcnJheSAtPgotKyAgdW5pdAotKygqKiBbdW5zYWZl X3BjcmVfZGZhX2V4ZWMgZmxhZ3MgcmV4IH5wb3MgfnN1Ympfc3RhcnQgfnN1Ymogb2Zmc2V0X3Zl Y3RvciBjYWxsb3V0Ci0rICAgICB+d29ya3BhY2VdLiBZb3Ugc2hvdWxkIHJlYWQgdGhlIEMtc291 cmNlIHRvIGtub3cgd2hhdCBoYXBwZW5zLiBJZiB5b3UgZG8KLSsgICAgbm90IHVuZGVyc3RhbmQg aXQgLSB7YiBkb24ndCB1c2UgdGhpcyBmdW5jdGlvbiF9ICopCi1kaWZmIC0tZ2l0IGEvYnVuZGxl cy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvcGNyZTJfc3R1YnMuYyBiL2J1bmRsZXMvcGNyZTIvcGNy ZTItb2NhbWwvbGliL3BjcmUyX3N0dWJzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwMDAuLmM5MjNhZTI5YQotLS0tIC9kZXYvbnVsbAotKysrIGIvYnVuZGxlcy9wY3JlMi9w Y3JlMi1vY2FtbC9saWIvcGNyZTJfc3R1YnMuYwotQEAgLTAsMCArMSw4MDcgQEAKLSsvKgotKyAg IFBDUkUyLU9DQU1MIC0gUGVybCBDb21wYXRpYmlsaXR5IFJlZ3VsYXIgRXhwcmVzc2lvbnMgZm9y IE9DYW1sCi0rCi0rICAgQ29weXJpZ2h0IMKpIDE5OTktIE1hcmt1cyBNb3R0bCA8bWFya3VzLm1v dHRsQGdtYWlsLmNvbT4KLSsKLSsgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24g Mi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKwotKyAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsg ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKLSsqLwotKwotKyNpZiBkZWZp bmVkKF9XSU4zMikKLSsjZGVmaW5lIHNucHJpbnRmIF9zbnByaW50ZgotKyNpZiBkZWZpbmVkKF9E TEwpCi0rI2RlZmluZSBQQ1JFZXh0ZXJuIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotKyNlbHNlCi0r I2RlZmluZSBQQ1JFZXh0ZXJuCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQoX1dJ TjY0KQotK3R5cGVkZWYgbG9uZyBsb25nICpjYW1sX2ludF9wdHI7Ci0rI2Vsc2UKLSt0eXBlZGVm IGxvbmcgKmNhbWxfaW50X3B0cjsKLSsjZW5kaWYKLSsKLSsjaWYgX19HTlVDX18gPj0gMwotKyNk ZWZpbmUgX191bnVzZWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKLSsjZWxzZQotKyNkZWZpbmUg X191bnVzZWQKLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjaW5jbHVkZSA8c3Rk aW8uaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2luY2x1ZGUgPGNhbWwvYWxsb2MuaD4K LSsjaW5jbHVkZSA8Y2FtbC9jYWxsYmFjay5oPgotKyNpbmNsdWRlIDxjYW1sL2N1c3RvbS5oPgot KyNpbmNsdWRlIDxjYW1sL2ZhaWwuaD4KLSsjaW5jbHVkZSA8Y2FtbC9tZW1vcnkuaD4KLSsjaW5j bHVkZSA8Y2FtbC9tbHZhbHVlcy5oPgotKyNpbmNsdWRlIDxjYW1sL3ZlcnNpb24uaD4KLSsKLSsj aWYgKE9DQU1MX1ZFUlNJT05fTUFKT1IgPT0gNCkgJiYgKE9DQU1MX1ZFUlNJT05fTUlOT1IgPCAx MikKLSsjZGVmaW5lIFZhbF9ub25lIChWYWxfbG9uZygwKSkKLSsjZGVmaW5lIFNvbWVfdmFsKHYp IEZpZWxkKHYsIDApCi0rI2RlZmluZSBUYWdfc29tZSAwCi0rI2RlZmluZSBJc19ub25lKHYpICgo dikgPT0gVmFsX25vbmUpCi0rI2RlZmluZSBJc19zb21lKHYpIElzX2Jsb2NrKHYpCi0rCi0rQ0FN TGV4cG9ydCBzdGF0aWMgdmFsdWUgY2FtbF9hbGxvY19zb21lKHZhbHVlIHYpIHsKLSsgIENBTUxw YXJhbTEodik7Ci0rICB2YWx1ZSBzb21lID0gY2FtbF9hbGxvY19zbWFsbCgxLCAwKTsKLSsgIEZp ZWxkKHNvbWUsIDApID0gdjsKLSsgIENBTUxyZXR1cm4oc29tZSk7Ci0rfQotKyNlbmRpZgotKwot KyNkZWZpbmUgUENSRTJfQ09ERV9VTklUX1dJRFRIIDgKLSsKLSsjaW5jbHVkZSA8cGNyZTIuaD4K LSsKLSt0eXBlZGVmIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNoYXJ0YWJsZXM7IC8qIFR5cGUgb2Yg Y2hhcnRhYmxlIHNldHMgKi8KLSsKLSsvKiBDb250ZW50cyBvZiBjYWxsb3V0IGRhdGEgKi8KLStz dHJ1Y3QgY29kIHsKLSsgIGxvbmcgc3Vial9zdGFydDsgICAgICAgLyogU3RhcnQgb2Ygc3ViamVj dCBzdHJpbmcgKi8KLSsgIHZhbHVlICp2X3N1YnN0cmluZ3NfcDsgLyogUG9pbnRlciB0byBzdWJz dHJpbmdzIG1hdGNoZWQgc28gZmFyICovCi0rICB2YWx1ZSAqdl9jb2ZfcDsgICAgICAgIC8qIFBv aW50ZXIgdG8gY2FsbG91dCBmdW5jdGlvbiAqLwotKyAgdmFsdWUgdl9leG47ICAgICAgICAgICAv KiBQb3NzaWJsZSBleGNlcHRpb24gcmFpc2VkIGJ5IGNhbGxvdXQgZnVuY3Rpb24gKi8KLSt9Owot KwotKy8qIENhY2hlIGZvciBleGNlcHRpb25zICovCi0rc3RhdGljIGNvbnN0IHZhbHVlICpwY3Jl Ml9leGNfRXJyb3IgPSBOVUxMOyAgICAgLyogRXhjZXB0aW9uIFtFcnJvcl0gKi8KLStzdGF0aWMg Y29uc3QgdmFsdWUgKnBjcmUyX2V4Y19CYWNrdHJhY2sgPSBOVUxMOyAvKiBFeGNlcHRpb24gW0Jh Y2t0cmFja10gKi8KLSsKLSsvKiBDYWNoZSBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMgKi8KLStz dGF0aWMgdmFsdWUgdmFyX1N0YXJ0X29ubHk7IC8qIFZhcmlhbnQgW2BTdGFydF9vbmx5XSAqLwot K3N0YXRpYyB2YWx1ZSB2YXJfQU5DSE9SRUQ7ICAgLyogVmFyaWFudCBbYEFOQ0hPUkVEXSAqLwot K3N0YXRpYyB2YWx1ZSB2YXJfQ2hhcjsgICAgICAgLyogVmFyaWFudCBbYENoYXIgY2hhcl0gKi8K LSsKLSsvKiBEYXRhIGFzc29jaWF0ZWQgd2l0aCBPQ2FtbCB2YWx1ZXMgb2YgUENSRSByZWd1bGFy IGV4cHJlc3Npb24gKi8KLStzdHJ1Y3QgcGNyZTJfb2NhbWxfcmVnZXhwIHsKLSsgIHBjcmUyX2Nv ZGUgKnJleDsKLSsgIHBjcmUyX21hdGNoX2NvbnRleHQgKm1jb250ZXh0OwotK307Ci0rCi0rI2Rl ZmluZSBQY3JlMl9vY2FtbF9yZWdleHBfdmFsKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICgoc3RydWN0IHBjcmUyX29jYW1sX3JlZ2V4cCAqKURh dGFfY3VzdG9tX3ZhbCh2KSkKLSsKLSsjZGVmaW5lIGdldF9yZXgodikgUGNyZTJfb2NhbWxfcmVn ZXhwX3ZhbCh2KS0+cmV4Ci0rI2RlZmluZSBnZXRfbWNvbnRleHQodikgUGNyZTJfb2NhbWxfcmVn ZXhwX3ZhbCh2KS0+bWNvbnRleHQKLSsKLSsjZGVmaW5lIHNldF9yZXgodiwgcikgUGNyZTJfb2Nh bWxfcmVnZXhwX3ZhbCh2KS0+cmV4ID0gcgotKyNkZWZpbmUgc2V0X21jb250ZXh0KHYsIGMpIFBj cmUyX29jYW1sX3JlZ2V4cF92YWwodiktPm1jb250ZXh0ID0gYwotKwotKy8qIERhdGEgYXNzb2Np YXRlZCB3aXRoIE9DYW1sIHZhbHVlcyBvZiBQQ1JFIHRhYmxlcyAqLwotK3N0cnVjdCBwY3JlMl9v Y2FtbF90YWJsZXMgewotKyAgY2hhcnRhYmxlcyB0YWJsZXM7Ci0rfTsKLSsKLSsjZGVmaW5lIFBj cmUyX29jYW1sX3RhYmxlc192YWwodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgKChzdHJ1Y3QgcGNyZTJfb2NhbWxfdGFibGVzICopRGF0YV9jdXN0 b21fdmFsKHYpKQotKwotKyNkZWZpbmUgZ2V0X3RhYmxlcyh2KSBQY3JlMl9vY2FtbF90YWJsZXNf dmFsKHYpLT50YWJsZXMKLSsjZGVmaW5lIHNldF90YWJsZXModiwgdCkgUGNyZTJfb2NhbWxfdGFi bGVzX3ZhbCh2KS0+dGFibGVzID0gdAotKwotKy8qIENvbnZlcnRzIHN1YmplY3Qgb2Zmc2V0cyBm cm9tIEMtaW50ZWdlcnMgdG8gT0NhbWwtSW50ZWdlcnMuCi0rCi0rICAgVGhpcyBpcyBhIGJpdCB0 cmlja3ksIGJlY2F1c2UgdGhlcmUgYXJlIDMyLSBhbmQgNjQtYml0IHBsYXRmb3JtcyBhcm91bmQK LSsgICBhbmQgT0NhbWwgY2hvb3NlcyB0aGUgbGFyZ2VyIHBvc3NpYmlsaXR5IGZvciByZXByZXNl bnRpbmcgaW50ZWdlcnMgd2hlbgotKyAgIGF2YWlsYWJsZSAoYWxzbyBpbiBhcnJheXMpIC0gbm90 IHNvIHRoZSBQQ1JFIQotKyovCi0rc3RhdGljIGlubGluZSB2b2lkIGNvcHlfb3ZlY3Rvcihsb25n IHN1Ympfc3RhcnQsIGNvbnN0IHNpemVfdCAqb3ZlY19zcmMsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjYW1sX2ludF9wdHIgb3ZlY19kc3QsIHVpbnQzMl90IHN1Ymdyb3VwczIp IHsKLSsgIGlmIChzdWJqX3N0YXJ0ID09IDApCi0rICAgIHdoaWxlIChzdWJncm91cHMyLS0pIHsK LSsgICAgICAqb3ZlY19kc3QgPSAoKm92ZWNfc3JjID09IFBDUkUyX1VOU0VUKSA/IFZhbF9pbnQo LTEpIDogVmFsX2ludCgqb3ZlY19zcmMpOwotKyAgICAgIC0tb3ZlY19zcmM7Ci0rICAgICAgLS1v dmVjX2RzdDsKLSsgICAgfQotKyAgZWxzZQotKyAgICB3aGlsZSAoc3ViZ3JvdXBzMi0tKSB7Ci0r ICAgICAgKm92ZWNfZHN0ID0gKCpvdmVjX3NyYyA9PSBQQ1JFMl9VTlNFVCkgPyBWYWxfaW50KC0x KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogVmFsX2xv bmcoKm92ZWNfc3JjICsgc3Vial9zdGFydCk7Ci0rICAgICAgLS1vdmVjX3NyYzsKLSsgICAgICAt LW92ZWNfZHN0OwotKyAgICB9Ci0rfQotKwotKy8qIENhbGxvdXQgaGFuZGxlciAqLwotK3N0YXRp YyBpbnQgcGNyZTJfY2FsbG91dF9oYW5kbGVyKHBjcmUyX2NhbGxvdXRfYmxvY2sgKmNiLCBzdHJ1 Y3QgY29kICpjb2QpIHsKLSsgIGlmIChjb2QgIT0gTlVMTCkgewotKyAgICAvKiBDYWxsb3V0IGlz IGF2YWlsYWJsZSAqLwotKyAgICB2YWx1ZSB2X3JlczsKLSsKLSsgICAgLyogU2V0IHVwIHBhcmFt ZXRlciBhcnJheSAqLwotKyAgICB2YWx1ZSB2X2NhbGxvdXRfZGF0YSA9IGNhbWxfYWxsb2Nfc21h bGwoOCwgMCk7Ci0rCi0rICAgIGNvbnN0IHZhbHVlIHZfc3Vic3RyaW5ncyA9ICpjb2QtPnZfc3Vi c3RyaW5nc19wOwotKwotKyAgICBjb25zdCB1aW50MzJfdCBjYXB0dXJlX3RvcCA9IGNiLT5jYXB0 dXJlX3RvcDsKLSsgICAgdWludDMyX3Qgc3ViZ3JvdXBzMiA9IGNhcHR1cmVfdG9wIDw8IDE7Ci0r ICAgIGNvbnN0IHVpbnQzMl90IHN1Ymdyb3VwczJfMSA9IHN1Ymdyb3VwczIgLSAxOwotKwotKyAg ICBjb25zdCBzaXplX3QgKm92ZWNfc3JjID0gY2ItPm9mZnNldF92ZWN0b3IgKyBzdWJncm91cHMy XzE7Ci0rICAgIGNhbWxfaW50X3B0ciBvdmVjX2RzdCA9Ci0rICAgICAgICAoY2FtbF9pbnRfcHRy KSZGaWVsZChGaWVsZCh2X3N1YnN0cmluZ3MsIDEpLCAwKSArIHN1Ymdyb3VwczJfMTsKLSsgICAg bG9uZyBzdWJqX3N0YXJ0ID0gY29kLT5zdWJqX3N0YXJ0OwotKwotKyAgICBjb3B5X292ZWN0b3Io c3Vial9zdGFydCwgb3ZlY19zcmMsIG92ZWNfZHN0LCBzdWJncm91cHMyKTsKLSsKLSsgICAgRmll bGQodl9jYWxsb3V0X2RhdGEsIDApID0gVmFsX2ludChjYi0+Y2FsbG91dF9udW1iZXIpOwotKyAg ICBGaWVsZCh2X2NhbGxvdXRfZGF0YSwgMSkgPSB2X3N1YnN0cmluZ3M7Ci0rICAgIEZpZWxkKHZf Y2FsbG91dF9kYXRhLCAyKSA9IFZhbF9pbnQoY2ItPnN0YXJ0X21hdGNoICsgc3Vial9zdGFydCk7 Ci0rICAgIEZpZWxkKHZfY2FsbG91dF9kYXRhLCAzKSA9IFZhbF9pbnQoY2ItPmN1cnJlbnRfcG9z aXRpb24gKyBzdWJqX3N0YXJ0KTsKLSsgICAgRmllbGQodl9jYWxsb3V0X2RhdGEsIDQpID0gVmFs X2ludChjYXB0dXJlX3RvcCk7Ci0rICAgIEZpZWxkKHZfY2FsbG91dF9kYXRhLCA1KSA9IFZhbF9p bnQoY2ItPmNhcHR1cmVfbGFzdCk7Ci0rICAgIEZpZWxkKHZfY2FsbG91dF9kYXRhLCA2KSA9IFZh bF9pbnQoY2ItPnBhdHRlcm5fcG9zaXRpb24pOwotKyAgICBGaWVsZCh2X2NhbGxvdXRfZGF0YSwg NykgPSBWYWxfaW50KGNiLT5uZXh0X2l0ZW1fbGVuZ3RoKTsKLSsKLSsgICAgLyogUGVyZm9ybSBj YWxsb3V0ICovCi0rICAgIHZfcmVzID0gY2FtbF9jYWxsYmFja19leG4oKmNvZC0+dl9jb2ZfcCwg dl9jYWxsb3V0X2RhdGEpOwotKwotKyAgICBpZiAoSXNfZXhjZXB0aW9uX3Jlc3VsdCh2X3Jlcykp IHsKLSsgICAgICAvKiBDYWxsb3V0IHJhaXNlZCBhbiBleGNlcHRpb24gKi8KLSsgICAgICBjb25z dCB2YWx1ZSB2X2V4biA9IEV4dHJhY3RfZXhjZXB0aW9uKHZfcmVzKTsKLSsgICAgICBpZiAoRmll bGQodl9leG4sIDApID09ICpwY3JlMl9leGNfQmFja3RyYWNrKQotKyAgICAgICAgcmV0dXJuIDE7 Ci0rICAgICAgY29kLT52X2V4biA9IHZfZXhuOwotKyAgICAgIHJldHVybiBQQ1JFMl9FUlJPUl9D QUxMT1VUOwotKyAgICB9Ci0rICB9Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogRmV0Y2hl cyB0aGUgbmFtZWQgT0NhbWwtdmFsdWVzICsgY2FjaGVzIHRoZW0gYW5kCi0rICAgY2FsY3VsYXRl cyArIGNhY2hlcyB0aGUgdmFyaWFudCBoYXNoIHZhbHVlcyAqLwotK0NBTUxwcmltIHZhbHVlIHBj cmUyX29jYW1sX2luaXQodmFsdWUgX191bnVzZWQgdl91bml0KSB7Ci0rICBwY3JlMl9leGNfRXJy b3IgPSBjYW1sX25hbWVkX3ZhbHVlKCJQY3JlMi5FcnJvciIpOwotKyAgcGNyZTJfZXhjX0JhY2t0 cmFjayA9IGNhbWxfbmFtZWRfdmFsdWUoIlBjcmUyLkJhY2t0cmFjayIpOwotKwotKyAgdmFyX1N0 YXJ0X29ubHkgPSBjYW1sX2hhc2hfdmFyaWFudCgiU3RhcnRfb25seSIpOwotKyAgdmFyX0FOQ0hP UkVEID0gY2FtbF9oYXNoX3ZhcmlhbnQoIkFOQ0hPUkVEIik7Ci0rICB2YXJfQ2hhciA9IGNhbWxf aGFzaF92YXJpYW50KCJDaGFyIik7Ci0rCi0rICByZXR1cm4gVmFsX3VuaXQ7Ci0rfQotKwotKy8q IEZpbmFsaXppbmcgZGVhbGxvY2F0aW9uIGZ1bmN0aW9uIGZvciBjaGFydGFibGUgc2V0cyAqLwot K3N0YXRpYyB2b2lkIHBjcmUyX2RlYWxsb2NfdGFibGVzKHZhbHVlIHZfdGFibGVzKSB7Ci0rI2lm IFBDUkUyX01JTk9SID49IDM0Ci0rICBwY3JlMl9tYWtldGFibGVzX2ZyZWUoTlVMTCwgZ2V0X3Rh Ymxlcyh2X3RhYmxlcykpOwotKyNlbHNlCi0rICBmcmVlKCh2b2lkICopZ2V0X3RhYmxlcyh2X3Rh YmxlcykpOwotKyNlbmRpZgotK30KLSsKLSsvKiBGaW5hbGl6aW5nIGRlYWxsb2NhdGlvbiBmdW5j dGlvbiBmb3IgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9ucyAqLwotK3N0YXRpYyB2b2lkIHBj cmUyX2RlYWxsb2NfcmVnZXhwKHZhbHVlIHZfcmV4KSB7Ci0rICBwY3JlMl9jb2RlX2ZyZWUoZ2V0 X3JleCh2X3JleCkpOwotKyAgcGNyZTJfbWF0Y2hfY29udGV4dF9mcmVlKGdldF9tY29udGV4dCh2 X3JleCkpOwotK30KLSsKLSsvKiBSYWlzaW5nIGV4Y2VwdGlvbnMgKi8KLSsKLStDQU1Mbm9yZXR1 cm5fc3RhcnQgc3RhdGljIGlubGluZSB2b2lkCi0rcmFpc2VfcGNyZTJfZXJyb3IodmFsdWUgdl9h cmcpIENBTUxub3JldHVybl9lbmQ7Ci0rCi0rQ0FNTG5vcmV0dXJuX3N0YXJ0IHN0YXRpYyBpbmxp bmUgdm9pZCByYWlzZV9wYXJ0aWFsKHZvaWQpIENBTUxub3JldHVybl9lbmQ7Ci0rCi0rQ0FNTG5v cmV0dXJuX3N0YXJ0IHN0YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9iYWRfdXRmKHZvaWQpIENBTUxu b3JldHVybl9lbmQ7Ci0rCi0rQ0FNTG5vcmV0dXJuX3N0YXJ0IHN0YXRpYyBpbmxpbmUgdm9pZAot K3JhaXNlX2JhZF91dGZfb2Zmc2V0KHZvaWQpIENBTUxub3JldHVybl9lbmQ7Ci0rCi0rQ0FNTG5v cmV0dXJuX3N0YXJ0IHN0YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9tYXRjaF9saW1pdCh2b2lkKSBD QU1Mbm9yZXR1cm5fZW5kOwotKwotK0NBTUxub3JldHVybl9zdGFydCBzdGF0aWMgaW5saW5lIHZv aWQgcmFpc2VfZGVwdGhfbGltaXQodm9pZCkgQ0FNTG5vcmV0dXJuX2VuZDsKLSsKLStDQU1Mbm9y ZXR1cm5fc3RhcnQgc3RhdGljIGlubGluZSB2b2lkCi0rcmFpc2Vfd29ya3NwYWNlX3NpemUodm9p ZCkgQ0FNTG5vcmV0dXJuX2VuZDsKLSsKLStDQU1Mbm9yZXR1cm5fc3RhcnQgc3RhdGljIGlubGlu ZSB2b2lkCi0rcmFpc2VfYmFkX3BhdHRlcm4oaW50IGNvZGUsIHNpemVfdCBwb3MpIENBTUxub3Jl dHVybl9lbmQ7Ci0rCi0rQ0FNTG5vcmV0dXJuX3N0YXJ0IHN0YXRpYyBpbmxpbmUgdm9pZAotK3Jh aXNlX2ludGVybmFsX2Vycm9yKGNoYXIgKm1zZykgQ0FNTG5vcmV0dXJuX2VuZDsKLSsKLStzdGF0 aWMgaW5saW5lIHZvaWQgcmFpc2VfcGNyZTJfZXJyb3IodmFsdWUgdl9hcmcpIHsKLSsgIGNhbWxf cmFpc2Vfd2l0aF9hcmcoKnBjcmUyX2V4Y19FcnJvciwgdl9hcmcpOwotK30KLSsKLStzdGF0aWMg aW5saW5lIHZvaWQgcmFpc2VfcGFydGlhbCh2b2lkKSB7IHJhaXNlX3BjcmUyX2Vycm9yKFZhbF9p bnQoMCkpOyB9Ci0rc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX2JhZF91dGYodm9pZCkgeyByYWlz ZV9wY3JlMl9lcnJvcihWYWxfaW50KDEpKTsgfQotK3N0YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9i YWRfdXRmX29mZnNldCh2b2lkKSB7IHJhaXNlX3BjcmUyX2Vycm9yKFZhbF9pbnQoMikpOyB9Ci0r c3RhdGljIGlubGluZSB2b2lkIHJhaXNlX21hdGNoX2xpbWl0KHZvaWQpIHsgcmFpc2VfcGNyZTJf ZXJyb3IoVmFsX2ludCgzKSk7IH0KLStzdGF0aWMgaW5saW5lIHZvaWQgcmFpc2VfZGVwdGhfbGlt aXQodm9pZCkgeyByYWlzZV9wY3JlMl9lcnJvcihWYWxfaW50KDQpKTsgfQotK3N0YXRpYyBpbmxp bmUgdm9pZCByYWlzZV93b3Jrc3BhY2Vfc2l6ZSh2b2lkKSB7IHJhaXNlX3BjcmUyX2Vycm9yKFZh bF9pbnQoNSkpOyB9Ci0rCi0rLyogVGhlIGxlbmd0aCBvZiBtc2dfYnVmIGluIHRoaXMgZnVuY3Rp b24gaXMgY2hvc2VuIHRvIGJlIGxhcmdlciB0aGFuCi0rICAgYW55IGV4aXN0aW5nIGVycm9yLW1l c3NhZ2UgaW4gcGNyZTJfZXJyb3IuYy4gIEN1cnJlbnRseSAoRmViIDI1LCAyMDI1LCBHaXQKLSsg ICBjb21taXQgMDg4MGE2YzMzYTUxZTJkZmRlZDg4NjRhNmJjYzhhZTRlOWE5MGY4OSksICB0aGUg bG9uZ2VzdCBlcnJvci1tZXNzYWdlCi0rICAgaXMgYWJvdXQgMTEwIGNoYXJzLiAgVW5jb21mb3J0 YWJseSBjbG9zZSB0byAxMjgsIHNvIEkgZG91YmxlZCB0aGUgbGVuZ3RoIHRvCi0rICAgMjU2Lgot KyovCi0rCi0rc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX2JhZF9wYXR0ZXJuKGludCBjb2RlLCBz aXplX3QgcG9zKSB7Ci0rICBDQU1McGFyYW0wKCk7Ci0rICBDQU1MbG9jYWwyKHZfbXNnLCB2X2Fy Zyk7Ci0rICBjaGFyIG1zZ19idWZbMTI4XTsKLSsgIHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlKGNv ZGUsIChQQ1JFMl9VQ0hBUiAqKW1zZ19idWYsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAo c2l6ZW9mIG1zZ19idWYpIC8gKHNpemVvZihQQ1JFMl9VQ0hBUikpKTsKLSsgIHZfbXNnID0gY2Ft bF9jb3B5X3N0cmluZyhtc2dfYnVmKTsKLSsgIHZfYXJnID0gY2FtbF9hbGxvY19zbWFsbCgyLCAw KTsKLSsgIEZpZWxkKHZfYXJnLCAwKSA9IHZfbXNnOwotKyAgRmllbGQodl9hcmcsIDEpID0gVmFs X2ludChwb3MpOwotKyAgcmFpc2VfcGNyZTJfZXJyb3Iodl9hcmcpOwotKyAgQ0FNTG5vcmV0dXJu OwotK30KLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgcmFpc2VfaW50ZXJuYWxfZXJyb3IoY2hhciAq bXNnKSB7Ci0rICBDQU1McGFyYW0wKCk7Ci0rICBDQU1MbG9jYWwxKHZfbXNnKTsKLSsgIHZhbHVl IHZfYXJnOwotKyAgdl9tc2cgPSBjYW1sX2NvcHlfc3RyaW5nKG1zZyk7Ci0rICB2X2FyZyA9IGNh bWxfYWxsb2Nfc21hbGwoMSwgMSk7Ci0rICBGaWVsZCh2X2FyZywgMCkgPSB2X21zZzsKLSsgIHJh aXNlX3BjcmUyX2Vycm9yKHZfYXJnKTsKLSsgIENBTUxub3JldHVybjsKLSt9Ci0rCi0rLyogUENS RSBwYXR0ZXJuIGNvbXBpbGF0aW9uICovCi0rCi0rc3RhdGljIHN0cnVjdCBjdXN0b21fb3BlcmF0 aW9ucyByZWdleHBfb3BzID0gewotKyAgICAicGNyZTJfb2NhbWxfcmVnZXhwIiwgICAgICAgcGNy ZTJfZGVhbGxvY19yZWdleHAsCi0rICAgIGN1c3RvbV9jb21wYXJlX2RlZmF1bHQsICAgICBjdXN0 b21faGFzaF9kZWZhdWx0LAotKyAgICBjdXN0b21fc2VyaWFsaXplX2RlZmF1bHQsICAgY3VzdG9t X2Rlc2VyaWFsaXplX2RlZmF1bHQsCi0rICAgIGN1c3RvbV9jb21wYXJlX2V4dF9kZWZhdWx0LCBj dXN0b21fZml4ZWRfbGVuZ3RoX2RlZmF1bHR9OwotKwotKy8qIE1ha2VzIGNvbXBpbGVkIHJlZ3Vs YXIgZXhwcmVzc2lvbiBmcm9tIGNvbXBpbGF0aW9uIG9wdGlvbnMsIGFuIG9wdGlvbmFsCi0rICAg dmFsdWUgb2YgY2hhcnRhYmxlcyBhbmQgdGhlIHBhdHRlcm4gc3RyaW5nICovCi0rCi0rQ0FNTHBy aW0gdmFsdWUgcGNyZTJfY29tcGlsZV9zdHViKGludDY0X3Qgdl9vcHQsIHZhbHVlIHZfdGFibGVz LCB2YWx1ZSB2X3BhdCkgewotKyAgdmFsdWUgdl9yZXg7IC8qIEZpbmFsIHJlc3VsdCAtPiB2YWx1 ZSBvZiB0eXBlIFtyZWdleHBdICovCi0rICBzaXplX3QgcmVnZXhwX3NpemUsIG9jYW1sX3JlZ2V4 cF9zaXplID0gc2l6ZW9mKHN0cnVjdCBwY3JlMl9vY2FtbF9yZWdleHApOwotKyAgaW50IGVycm9y X2NvZGUgPSAwOyAgIC8qIGVycm9yIGNvZGUgZm9yIHBvdGVudGlhbCBlcnJvciAqLwotKyAgc2l6 ZV90IGVycm9yX29mcyA9IDA7IC8qIG9mZnNldCBpbiB0aGUgcGF0dGVybiBhdCB3aGljaCBlcnJv ciBvY2N1cnJlZCAqLwotKyAgc2l6ZV90IGxlbmd0aCA9IGNhbWxfc3RyaW5nX2xlbmd0aCh2X3Bh dCk7Ci0rCi0rICBwY3JlMl9jb21waWxlX2NvbnRleHQgKmNjb250ZXh0ID0gTlVMTDsKLSsgIC8q IElmIHZfdGFibGVzID0gW05vbmVdLCB0aGVuIHBvaW50ZXIgdG8gdGFibGVzIGlzIE5VTEwsIG90 aGVyd2lzZQotKyAgICAgc2V0IGl0IHRvIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZSAqLwotKyAgaWYg KElzX3NvbWUodl90YWJsZXMpKSB7Ci0rICAgIGNjb250ZXh0ID0gcGNyZTJfY29tcGlsZV9jb250 ZXh0X2NyZWF0ZShOVUxMKTsKLSsgICAgcGNyZTJfc2V0X2NoYXJhY3Rlcl90YWJsZXMoY2NvbnRl eHQsIGdldF90YWJsZXMoRmllbGQodl90YWJsZXMsIDApKSk7Ci0rICB9Ci0rCi0rICAvKiBDb21w aWxlcyB0aGUgcGF0dGVybiAqLwotKyAgcGNyZTJfY29kZSAqcmVnZXhwID0gcGNyZTJfY29tcGls ZSgoUENSRTJfU1BUUilTdHJpbmdfdmFsKHZfcGF0KSwgbGVuZ3RoLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2X29wdCwgJmVycm9yX2NvZGUsICZlcnJvcl9vZnMsIGNj b250ZXh0KTsKLSsKLSsgIHBjcmUyX2NvbXBpbGVfY29udGV4dF9mcmVlKGNjb250ZXh0KTsKLSsK LSsgIC8qIFJhaXNlcyBhcHByb3ByaWF0ZSBleGNlcHRpb24gd2l0aCBbQmFkUGF0dGVybl0gaWYg dGhlIHBhdHRlcm4KLSsgICAgIGNvdWxkIG5vdCBiZSBjb21waWxlZCAqLwotKyAgaWYgKHJlZ2V4 cCA9PSBOVUxMKQotKyAgICByYWlzZV9iYWRfcGF0dGVybihlcnJvcl9jb2RlLCBlcnJvcl9vZnMp OwotKwotKyAgLyogSXQncyB1bmtub3duIGF0IHRoaXMgcG9pbnQgd2hldGhlciBKSVQgY29tcGls YXRpb24gaXMgZ29pbmcgdG8gYmUgdXNlZCwKLSsgICAgIGJ1dCB3ZSBoYXZlIHRvIGRlY2lkZSBv biBhIHNpemUuICBUZXN0cyB3aXRoIHNvbWUgc2ltcGxlIHBhdHRlcm5zIGluZGljYXRlCi0rICAg ICBhIHJvdWdobHkgNTAlIGluY3JlYXNlIGluIHNpemUgd2hlbiBzdHVkeWluZyB3aXRob3V0IEpJ VC4gIEEgZmFjdG9yIG9mIHR3bwotKyAgICAgdGltZXMgaGVuY2Ugc2VlbXMgbGlrZSBhIHJlYXNv bmFibGUgYm91bmQgdG8gdXNlIGhlcmUuICovCi0rICBwY3JlMl9wYXR0ZXJuX2luZm8ocmVnZXhw LCBQQ1JFMl9JTkZPX1NJWkUsICZyZWdleHBfc2l6ZSk7Ci0rICB2X3JleCA9Ci0rICAgICAgY2Ft bF9hbGxvY19jdXN0b21fbWVtKCZyZWdleHBfb3BzLCBvY2FtbF9yZWdleHBfc2l6ZSwgMiAqIHJl Z2V4cF9zaXplKTsKLSsKLSsgIHNldF9yZXgodl9yZXgsIHJlZ2V4cCk7Ci0rICBzZXRfbWNvbnRl eHQodl9yZXgsIHBjcmUyX21hdGNoX2NvbnRleHRfY3JlYXRlKE5VTEwpKTsKLSsKLSsgIHJldHVy biB2X3JleDsKLSt9Ci0rCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJfY29tcGlsZV9zdHViX2JjKHZh bHVlIHZfb3B0LCB2YWx1ZSB2X3RhYmxlcywgdmFsdWUgdl9wYXQpIHsKLSsgIHJldHVybiBwY3Jl Ml9jb21waWxlX3N0dWIoSW50NjRfdmFsKHZfb3B0KSwgdl90YWJsZXMsIHZfcGF0KTsKLSt9Ci0r Ci0rLyogR2V0cyB0aGUgZGVwdGggbGltaXQgb2YgYSByZWd1bGFyIGV4cHJlc3Npb24gaWYgaXQg ZXhpc3RzICovCi0rLyogQ0FNTHByaW0gdmFsdWUgcGNyZTJfZ2V0X2RlcHRoX2xpbWl0X3N0dWIo dmFsdWUgdl9yZXgpOyAqLwotKwotKy8qIEdldHMgdGhlIG1hdGNoIGxpbWl0IG9mIGEgcmVndWxh ciBleHByZXNzaW9uIGlmIGl0IGV4aXN0cyAqLwotKy8qIENBTUxwcmltIHZhbHVlIHBjcmUyX2dl dF9tYXRjaF9saW1pdF9zdHViKHZhbHVlIHZfcmV4KTsgKi8KLSsKLSsvKiBTZXRzIGEgbWF0Y2gg bGltaXQgZm9yIGEgcmVndWxhciBleHByZXNzaW9uIGltcGVyYXRpdmVseSAqLwotKwotK0NBTUxw cmltIHZhbHVlIHBjcmUyX3NldF9pbXBfbWF0Y2hfbGltaXRfc3R1Yih2YWx1ZSB2X3JleCwgaW50 bmF0IHZfbGltKSB7Ci0rICBwY3JlMl9tYXRjaF9jb250ZXh0ICptY29udGV4dCA9IGdldF9tY29u dGV4dCh2X3JleCk7Ci0rICBwY3JlMl9zZXRfbWF0Y2hfbGltaXQobWNvbnRleHQsIHZfbGltKTsK LSsgIHJldHVybiB2X3JleDsKLSt9Ci0rCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJfc2V0X2ltcF9t YXRjaF9saW1pdF9zdHViX2JjKHZhbHVlIHZfcmV4LCB2YWx1ZSB2X2xpbSkgewotKyAgcmV0dXJu IHBjcmUyX3NldF9pbXBfbWF0Y2hfbGltaXRfc3R1Yih2X3JleCwgSW50X3ZhbCh2X2xpbSkpOwot K30KLSsKLSsvKiBTZXRzIGEgZGVwdGggbGltaXQgZm9yIGEgcmVndWxhciBleHByZXNzaW9uIGlt cGVyYXRpdmVseSAqLwotKwotK0NBTUxwcmltIHZhbHVlIHBjcmUyX3NldF9pbXBfZGVwdGhfbGlt aXRfc3R1Yih2YWx1ZSB2X3JleCwgaW50bmF0IHZfbGltKSB7Ci0rICBwY3JlMl9tYXRjaF9jb250 ZXh0ICptY29udGV4dCA9IGdldF9tY29udGV4dCh2X3JleCk7Ci0rICBwY3JlMl9zZXRfZGVwdGhf bGltaXQobWNvbnRleHQsIHZfbGltKTsKLSsgIHJldHVybiB2X3JleDsKLSt9Ci0rCi0rQ0FNTHBy aW0gdmFsdWUgcGNyZTJfc2V0X2ltcF9kZXB0aF9saW1pdF9zdHViX2JjKHZhbHVlIHZfcmV4LCB2 YWx1ZSB2X2xpbSkgewotKyAgcmV0dXJuIHBjcmUyX3NldF9pbXBfZGVwdGhfbGltaXRfc3R1Yih2 X3JleCwgSW50X3ZhbCh2X2xpbSkpOwotK30KLSsKLSsvKiBQZXJmb3JtcyB0aGUgY2FsbCB0byB0 aGUgcGNyZTJfcGF0dGVybl9pbmZvIGZ1bmN0aW9uICovCi0rc3RhdGljIGlubGluZSBpbnQgcGNy ZTJfcGF0dGVybl9pbmZvX3N0dWIodmFsdWUgdl9yZXgsIGludCB3aGF0LCB2b2lkICp3aGVyZSkg ewotKyAgcmV0dXJuIHBjcmUyX3BhdHRlcm5faW5mbyhnZXRfcmV4KHZfcmV4KSwgd2hhdCwgd2hl cmUpOwotK30KLSsKLSsvKiBTb21lIHN0dWJzIGZvciBpbmZvLWZ1bmN0aW9ucyAqLwotKwotKy8q IEdlbmVyaWMgbWFjcm8gZm9yIGdldHRpbmcgaW50ZWdlciByZXN1bHRzIGZyb20gcGNyZTJfcGF0 dGVybl9pbmZvICovCi0rI2RlZmluZSBNQUtFX0lOVE5BVF9JTkZPKHRwLCBuYW1lLCBvcHRpb24p ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIENBTUxwcmltIGludG5h dCBwY3JlMl8jI25hbWUjI19zdHViKHZhbHVlIHZfcmV4KSB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgICB0cCBvcHRpb25zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGNvbnN0IGludCByZXQgPSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgICAgIHBjcmUyX3BhdHRlcm5faW5mb19zdHViKHZfcmV4LCBQQ1JFMl9JTkZPXyMj b3B0aW9uLCAmb3B0aW9ucyk7ICAgICAgICAgXAotKyAgICBpZiAocmV0ICE9IDApICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0r ICAgICAgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBjcmUyXyMjbmFtZSMjX3N0dWIiKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgcmV0dXJuIG9wdGlvbnM7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgfSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIENBTUxwcmlt IHZhbHVlIHBjcmUyXyMjbmFtZSMjX3N0dWJfYmModmFsdWUgdl9yZXgpIHsgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICByZXR1cm4gVmFsX2ludChwY3JlMl8jI25hbWUjI19zdHViKHZf cmV4KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICB9Ci0rCi0rTUFLRV9J TlROQVRfSU5GTyhzaXplX3QsIHNpemUsIFNJWkUpCi0rTUFLRV9JTlROQVRfSU5GTyhpbnQsIGNh cHR1cmVjb3VudCwgQ0FQVFVSRUNPVU5UKQotK01BS0VfSU5UTkFUX0lORk8oaW50LCBiYWNrcmVm bWF4LCBCQUNLUkVGTUFYKQotK01BS0VfSU5UTkFUX0lORk8oaW50LCBuYW1lY291bnQsIE5BTUVD T1VOVCkKLStNQUtFX0lOVE5BVF9JTkZPKGludCwgbmFtZWVudHJ5c2l6ZSwgTkFNRUVOVFJZU0la RSkKLSsKLStDQU1McHJpbSBpbnQ2NF90IHBjcmUyX2FyZ29wdGlvbnNfc3R1Yih2YWx1ZSB2X3Jl eCkgewotKyAgdWludDMyX3Qgb3B0aW9uczsKLSsgIGNvbnN0IGludCByZXQgPQotKyAgICAgIHBj cmUyX3BhdHRlcm5faW5mb19zdHViKHZfcmV4LCBQQ1JFMl9JTkZPX0FSR09QVElPTlMsICZvcHRp b25zKTsKLSsgIGlmIChyZXQgIT0gMCkKLSsgICAgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBjcmUy X2FyZ29wdGlvbnNfc3R1YiIpOwotKyAgcmV0dXJuIChpbnQ2NF90KW9wdGlvbnM7Ci0rfQotKwot K0NBTUxwcmltIHZhbHVlIHBjcmUyX2FyZ29wdGlvbnNfc3R1Yl9iYyh2YWx1ZSB2X3JleCkgewot KyAgQ0FNTHBhcmFtMSh2X3JleCk7Ci0rICBDQU1McmV0dXJuKGNhbWxfY29weV9pbnQ2NChwY3Jl Ml9hcmdvcHRpb25zX3N0dWIodl9yZXgpKSk7Ci0rfQotKwotK0NBTUxwcmltIHZhbHVlIHBjcmUy X2ZpcnN0Y29kZXVuaXRfc3R1Yih2YWx1ZSB2X3JleCkgewotKyAgdWludDMyX3QgZmlyc3Rjb2Rl dHlwZTsKLSsgIGNvbnN0IGludCByZXQgPQotKyAgICAgIHBjcmUyX3BhdHRlcm5faW5mb19zdHVi KHZfcmV4LCBQQ1JFMl9JTkZPX0ZJUlNUQ09ERVRZUEUsICZmaXJzdGNvZGV0eXBlKTsKLSsKLSsg IGlmIChyZXQgIT0gMCkKLSsgICAgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBjcmUyX2ZpcnN0Y29k ZXVuaXRfc3R1YiIpOwotKwotKyAgc3dpdGNoIChmaXJzdGNvZGV0eXBlKSB7Ci0rICBjYXNlIDI6 Ci0rICAgIHJldHVybiB2YXJfU3RhcnRfb25seTsKLSsgICAgYnJlYWs7IC8qIFtgU3RhcnRfb25s eV0gKi8KLSsgIGNhc2UgMDoKLSsgICAgcmV0dXJuIHZhcl9BTkNIT1JFRDsKLSsgICAgYnJlYWs7 IC8qIFtgQU5DSE9SRURdICovCi0rICBjYXNlIDE6IHsKLSsgICAgdWludDMyX3QgZmlyc3Rjb2Rl dW5pdDsKLSsgICAgY29uc3QgaW50IHJldCA9IHBjcmUyX3BhdHRlcm5faW5mb19zdHViKHZfcmV4 LCBQQ1JFMl9JTkZPX0ZJUlNUQ09ERVVOSVQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmZmlyc3Rjb2RldW5pdCk7Ci0rICAgIGlmIChyZXQgIT0gMCkKLSsg ICAgICByYWlzZV9pbnRlcm5hbF9lcnJvcigicGNyZTJfZmlyc3Rjb2RldW5pdF9zdHViIik7Ci0r Ci0rICAgIHZhbHVlIHZfZmlyc3RieXRlOwotKyAgICAvKiBBbGxvY2F0ZXMgdGhlIG5vbi1jb25z dGFudCBjb25zdHJ1Y3RvciBbYENoYXIgb2YgY2hhcl0gYW5kIGZpbGxzCi0rICAgICAgIGluIHRo ZSBhcHByb3ByaWF0ZSB2YWx1ZSAqLwotKyAgICB2X2ZpcnN0Ynl0ZSA9IGNhbWxfYWxsb2Nfc21h bGwoMiwgMCk7Ci0rICAgIEZpZWxkKHZfZmlyc3RieXRlLCAwKSA9IHZhcl9DaGFyOwotKyAgICBG aWVsZCh2X2ZpcnN0Ynl0ZSwgMSkgPSBWYWxfaW50KGZpcnN0Y29kZXVuaXQpOwotKwotKyAgICBy ZXR1cm4gdl9maXJzdGJ5dGU7Ci0rICAgIGJyZWFrOwotKyAgfQotKyAgZGVmYXVsdDogLyogU2hv dWxkIG5vdCBoYXBwZW4gKi8KLSsgICAgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBjcmUyX2ZpcnN0 Y29kZXVuaXRfc3R1YiIpOwotKyAgfQotK30KLSsKLStDQU1McHJpbSB2YWx1ZSBwY3JlMl9sYXN0 Y29kZXVuaXRfc3R1Yih2YWx1ZSB2X3JleCkgewotKyAgdWludDMyX3QgbGFzdGNvZGV0eXBlOwot KyAgY29uc3QgaW50IHJldCA9Ci0rICAgICAgcGNyZTJfcGF0dGVybl9pbmZvX3N0dWIodl9yZXgs IFBDUkUyX0lORk9fTEFTVENPREVUWVBFLCAmbGFzdGNvZGV0eXBlKTsKLSsKLSsgIGlmIChyZXQg IT0gMCkKLSsgICAgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBjcmUyX2xhc3Rjb2RldW5pdF9zdHVi Iik7Ci0rCi0rICBpZiAobGFzdGNvZGV0eXBlID09IDApCi0rICAgIHJldHVybiBWYWxfbm9uZTsK LSsgIGlmIChsYXN0Y29kZXR5cGUgIT0gMSkKLSsgICAgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBj cmUyX2xhc3Rjb2RldW5pdF9zdHViIik7Ci0rICBlbHNlIHsKLSsgICAgdWludDMyX3QgbGFzdGNv ZGV1bml0OwotKyAgICBjb25zdCBpbnQgcmV0ID0KLSsgICAgICAgIHBjcmUyX3BhdHRlcm5faW5m b19zdHViKHZfcmV4LCBQQ1JFMl9JTkZPX0xBU1RDT0RFVU5JVCwgJmxhc3Rjb2RldW5pdCk7Ci0r ICAgIGlmIChyZXQgIT0gMCkKLSsgICAgICByYWlzZV9pbnRlcm5hbF9lcnJvcigicGNyZTJfbGFz dGNvZGV1bml0X3N0dWIiKTsKLSsgICAgcmV0dXJuIGNhbWxfYWxsb2Nfc29tZShWYWxfaW50KGxh c3Rjb2RldW5pdCkpOwotKyAgfQotK30KLSsKLStDQU1Mbm9yZXR1cm5fc3RhcnQgc3RhdGljIGlu bGluZSB2b2lkCi0raGFuZGxlX21hdGNoX2Vycm9yKGNoYXIgKmxvYywgY29uc3QgaW50IHJldCkg Q0FNTG5vcmV0dXJuX2VuZDsKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgaGFuZGxlX21hdGNoX2Vy cm9yKGNoYXIgKmxvYywgY29uc3QgaW50IHJldCkgewotKyAgc3dpdGNoIChyZXQpIHsKLSsgIC8q IERlZGljYXRlZCBleGNlcHRpb25zICovCi0rICBjYXNlIFBDUkUyX0VSUk9SX05PTUFUQ0g6Ci0r ICAgIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7Ci0rICBjYXNlIFBDUkUyX0VSUk9SX1BBUlRJQUw6 Ci0rICAgIHJhaXNlX3BhcnRpYWwoKTsKLSsgIGNhc2UgUENSRTJfRVJST1JfTUFUQ0hMSU1JVDoK LSsgICAgcmFpc2VfbWF0Y2hfbGltaXQoKTsKLSsgIGNhc2UgUENSRTJfRVJST1JfQkFEVVRGT0ZG U0VUOgotKyAgICByYWlzZV9iYWRfdXRmX29mZnNldCgpOwotKyAgY2FzZSBQQ1JFMl9FUlJPUl9E RVBUSExJTUlUOgotKyAgICByYWlzZV9kZXB0aF9saW1pdCgpOwotKyAgY2FzZSBQQ1JFMl9FUlJP Ul9ERkFfV1NTSVpFOgotKyAgICByYWlzZV93b3Jrc3BhY2Vfc2l6ZSgpOwotKyAgZGVmYXVsdDog ewotKyAgICBpZiAoUENSRTJfRVJST1JfVVRGOF9FUlIyMSA8PSByZXQgJiYgcmV0IDw9IFBDUkUy X0VSUk9SX1VURjhfRVJSMSkKLSsgICAgICByYWlzZV9iYWRfdXRmKCk7Ci0rICAgIC8qIFVua25v d24gZXJyb3IgKi8KLSsgICAgY2hhciBlcnJfYnVmWzEwMF07Ci0rICAgIHNucHJpbnRmKGVycl9i dWYsIDEwMCwgIiVzOiB1bmhhbmRsZWQgUENSRTIgZXJyb3IgY29kZTogJWQiLCBsb2MsIHJldCk7 Ci0rICAgIHJhaXNlX2ludGVybmFsX2Vycm9yKGVycl9idWYpOwotKyAgfQotKyAgfQotK30KLSsK LStzdGF0aWMgaW5saW5lIHZvaWQgaGFuZGxlX3BjcmUyX21hdGNoX3Jlc3VsdChzaXplX3QgKm92 ZWMsIHZhbHVlIHZfb3ZlYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplX3Qgb3ZlY19sZW4sIGxvbmcgc3Vial9zdGFydCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByZXQpIHsKLSsgIGNhbWxf aW50X3B0ciBvY2FtbF9vdmVjID0gKGNhbWxfaW50X3B0cikmRmllbGQodl9vdmVjLCAwKTsKLSsg IGNvbnN0IHVpbnQzMl90IHN1Ymdyb3VwczIgPSByZXQgKiAyOwotKyAgY29uc3QgdWludDMyX3Qg c3ViZ3JvdXBzMl8xID0gc3ViZ3JvdXBzMiAtIDE7Ci0rICBjb25zdCBzaXplX3QgKm92ZWNfc3Jj ID0gb3ZlYyArIHN1Ymdyb3VwczJfMTsKLSsgIGNhbWxfaW50X3B0ciBvdmVjX2NsZWFyX3N0b3Ag PSBvY2FtbF9vdmVjICsgKG92ZWNfbGVuICogMikgLyAzOwotKyAgY2FtbF9pbnRfcHRyIG92ZWNf ZHN0ID0gb2NhbWxfb3ZlYyArIHN1Ymdyb3VwczJfMTsKLSsgIGNvcHlfb3ZlY3RvcihzdWJqX3N0 YXJ0LCBvdmVjX3NyYywgb3ZlY19kc3QsIHN1Ymdyb3VwczIpOwotKyAgd2hpbGUgKCsrb3ZlY19k c3QgPCBvdmVjX2NsZWFyX3N0b3ApCi0rICAgICpvdmVjX2RzdCA9IC0xOwotK30KLSsKLSsvKiBF eGVjdXRlcyBhIHBhdHRlcm4gbWF0Y2ggd2l0aCBydW50aW1lIG9wdGlvbnMsIGEgcmVndWxhciBl eHByZXNzaW9uLCBhCi0rICAgbWF0Y2hpbmcgcG9zaXRpb24sIHRoZSBzdGFydCBvZiB0aGUgc3Vi amVjdCBzdHJpbmcsIGEgc3ViamVjdCBzdHJpbmcsCi0rICAgYSBudW1iZXIgb2Ygc3ViZ3JvdXAg b2Zmc2V0cywgYW4gb2Zmc2V0IHZlY3RvciBhbmQgYW4gb3B0aW9uYWwgY2FsbG91dAotKyAgIGZ1 bmN0aW9uICovCi0rCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJfbWF0Y2hfc3R1YjAoaW50NjRfdCB2 X29wdCwgdmFsdWUgdl9yZXgsIGludG5hdCB2X3BvcywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnRuYXQgdl9zdWJqX3N0YXJ0LCB2YWx1ZSB2X3N1YmosCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgdl9vdmVjLCB2YWx1ZSB2X21heWJlX2NvZiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSB2X3dvcmtzcGFjZSkgewot KyAgaW50IHJldDsKLSsgIGludCBpc19kZmEgPSB2X3dvcmtzcGFjZSAhPSAodmFsdWUpTlVMTDsK LSsgIGxvbmcgcG9zID0gdl9wb3MsIHN1Ympfc3RhcnQgPSB2X3N1Ympfc3RhcnQ7Ci0rICBzaXpl X3Qgb3ZlY19sZW4gPSBXb3NpemVfdmFsKHZfb3ZlYyksIGxlbiA9IGNhbWxfc3RyaW5nX2xlbmd0 aCh2X3N1YmopOwotKwotKyAgaWYgKHBvcyA+IChsb25nKWxlbiB8fCBwb3MgPCBzdWJqX3N0YXJ0 KQotKyAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoIlBjcmUyLnBjcmUyX21hdGNoX3N0dWI6IGls bGVnYWwgcG9zaXRpb24iKTsKLSsKLSsgIGlmIChzdWJqX3N0YXJ0ID4gKGxvbmcpbGVuIHx8IHN1 Ympfc3RhcnQgPCAwKQotKyAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoIlBjcmUyLnBjcmUyX21h dGNoX3N0dWI6IGlsbGVnYWwgc3ViamVjdCBzdGFydCIpOwotKwotKyAgcG9zIC09IHN1Ympfc3Rh cnQ7Ci0rICBsZW4gLT0gc3Vial9zdGFydDsKLSsKLSsgIHsKLSsgICAgY29uc3QgcGNyZTJfY29k ZSAqY29kZSA9IGdldF9yZXgodl9yZXgpOyAgICAgICAgICAgICAvKiBDb21waWxlZCBwYXR0ZXJu ICovCi0rICAgIHBjcmUyX21hdGNoX2NvbnRleHQgKm1jb250ZXh0ID0gZ2V0X21jb250ZXh0KHZf cmV4KTsgLyogTWF0Y2ggY29udGV4dCAqLwotKyAgICBQQ1JFMl9TUFRSIG9jYW1sX3N1YmogPQot KyAgICAgICAgKFBDUkUyX1NQVFIpU3RyaW5nX3ZhbCh2X3N1YmopICsgc3Vial9zdGFydDsgLyog U3ViamVjdCBzdHJpbmcgKi8KLSsKLSsgICAgcGNyZTJfbWF0Y2hfZGF0YSAqbWF0Y2hfZGF0YSA9 Ci0rICAgICAgICBwY3JlMl9tYXRjaF9kYXRhX2NyZWF0ZV9mcm9tX3BhdHRlcm4oY29kZSwgTlVM TCk7Ci0rCi0rICAgIC8qIFNwZWNpYWwgY2FzZSB3aGVuIG5vIGNhbGxvdXQgZnVuY3Rpb25zIHNw ZWNpZmllZCAqLwotKyAgICBpZiAoSXNfbm9uZSh2X21heWJlX2NvZikpIHsKLSsgICAgICAvKiBQ ZXJmb3JtcyB0aGUgbWF0Y2ggKi8KLSsgICAgICBpZiAoaXNfZGZhKQotKyAgICAgICAgcmV0ID0g cGNyZTJfZGZhX21hdGNoKGNvZGUsIG9jYW1sX3N1YmosIGxlbiwgcG9zLCB2X29wdCwgbWF0Y2hf ZGF0YSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtY29udGV4dCwgKGludCAqKSZG aWVsZCh2X3dvcmtzcGFjZSwgMCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29z aXplX3ZhbCh2X3dvcmtzcGFjZSkpOwotKyAgICAgIGVsc2UKLSsgICAgICAgIHJldCA9IHBjcmUy X21hdGNoKGNvZGUsIG9jYW1sX3N1YmosIGxlbiwgcG9zLCB2X29wdCwgbWF0Y2hfZGF0YSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIG1jb250ZXh0KTsKLSsKLSsgICAgICBzaXplX3QgKm92 ZWMgPSBwY3JlMl9nZXRfb3ZlY3Rvcl9wb2ludGVyKG1hdGNoX2RhdGEpOwotKwotKyAgICAgIGlm IChyZXQgPCAwKSB7Ci0rICAgICAgICBwY3JlMl9tYXRjaF9kYXRhX2ZyZWUobWF0Y2hfZGF0YSk7 Ci0rICAgICAgICBoYW5kbGVfbWF0Y2hfZXJyb3IoInBjcmUyX21hdGNoX3N0dWIiLCByZXQpOwot KyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICBoYW5kbGVfcGNyZTJfbWF0Y2hfcmVzdWx0KG92ZWMs IHZfb3ZlYywgb3ZlY19sZW4sIHN1Ympfc3RhcnQsIHJldCk7Ci0rICAgICAgfQotKyAgICB9Ci0r Ci0rICAgIC8qIFRoZXJlIGFyZSBjYWxsb3V0IGZ1bmN0aW9ucyAqLwotKyAgICBlbHNlIHsKLSsg ICAgICB2YWx1ZSB2X2NvZiA9IEZpZWxkKHZfbWF5YmVfY29mLCAwKTsKLSsgICAgICB2YWx1ZSB2 X3N1YnN0cmluZ3M7Ci0rICAgICAgUENSRTJfVUNIQVIgKnN1YmogPSBjYW1sX3N0YXRfYWxsb2Mo c2l6ZW9mKGNoYXIpICogbGVuKTsKLSsgICAgICBpbnQgd29ya3NwYWNlX2xlbiA9IDA7Ci0rICAg ICAgaW50ICp3b3Jrc3BhY2UgPSBOVUxMOwotKyAgICAgIHN0cnVjdCBjb2QgY29kID0gezAsICh2 YWx1ZSAqKU5VTEwsICh2YWx1ZSAqKU5VTEwsICh2YWx1ZSlOVUxMfTsKLSsgICAgICBwY3JlMl9t YXRjaF9jb250ZXh0ICpuZXdfbWNvbnRleHQgPSBwY3JlMl9tYXRjaF9jb250ZXh0X2NvcHkobWNv bnRleHQpOwotKwotKyAgICAgIHBjcmUyX3NldF9jYWxsb3V0KAotKyAgICAgICAgICBuZXdfbWNv bnRleHQsCi0rICAgICAgICAgIChpbnQgKCopKHBjcmUyX2NhbGxvdXRfYmxvY2tfOCAqLCB2b2lk ICopKSZwY3JlMl9jYWxsb3V0X2hhbmRsZXIsCi0rICAgICAgICAgICZjb2QpOwotKwotKyAgICAg IGNvZC5zdWJqX3N0YXJ0ID0gc3Vial9zdGFydDsKLSsgICAgICBtZW1jcHkoc3Viaiwgb2NhbWxf c3ViaiwgbGVuKTsKLSsKLSsgICAgICBCZWdpbl9yb290czQodl9yZXgsIHZfY29mLCB2X3N1YnN0 cmluZ3MsIHZfb3ZlYyk7Ci0rICAgICAgQmVnaW5fcm9vdHMxKHZfc3Viaik7Ci0rICAgICAgdl9z dWJzdHJpbmdzID0gY2FtbF9hbGxvY19zbWFsbCgyLCAwKTsKLSsgICAgICBFbmRfcm9vdHMoKTsK LSsKLSsgICAgICBGaWVsZCh2X3N1YnN0cmluZ3MsIDApID0gdl9zdWJqOwotKyAgICAgIEZpZWxk KHZfc3Vic3RyaW5ncywgMSkgPSB2X292ZWM7Ci0rCi0rICAgICAgY29kLnZfc3Vic3RyaW5nc19w ID0gJnZfc3Vic3RyaW5nczsKLSsgICAgICBjb2Qudl9jb2ZfcCA9ICZ2X2NvZjsKLSsKLSsgICAg ICBpZiAoaXNfZGZhKSB7Ci0rICAgICAgICB3b3Jrc3BhY2VfbGVuID0gV29zaXplX3ZhbCh2X3dv cmtzcGFjZSk7Ci0rICAgICAgICB3b3Jrc3BhY2UgPSBjYW1sX3N0YXRfYWxsb2Moc2l6ZW9mKGlu dCkgKiB3b3Jrc3BhY2VfbGVuKTsKLSsgICAgICAgIHJldCA9IHBjcmUyX2RmYV9tYXRjaChjb2Rl LCBzdWJqLCBsZW4sIHBvcywgdl9vcHQsIG1hdGNoX2RhdGEsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV3X21jb250ZXh0LCAoaW50ICopJkZpZWxkKHZfd29ya3NwYWNlLCAwKSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VfbGVuKTsKLSsgICAgICB9 IGVsc2UKLSsgICAgICAgIHJldCA9Ci0rICAgICAgICAgICAgcGNyZTJfbWF0Y2goY29kZSwgc3Vi aiwgbGVuLCBwb3MsIHZfb3B0LCBtYXRjaF9kYXRhLCBuZXdfbWNvbnRleHQpOwotKwotKyAgICAg IGNhbWxfc3RhdF9mcmVlKHN1YmopOwotKyAgICAgIEVuZF9yb290cygpOwotKwotKyAgICAgIHBj cmUyX21hdGNoX2NvbnRleHRfZnJlZShuZXdfbWNvbnRleHQpOwotKyAgICAgIHNpemVfdCAqb3Zl YyA9IHBjcmUyX2dldF9vdmVjdG9yX3BvaW50ZXIobWF0Y2hfZGF0YSk7Ci0rICAgICAgaWYgKHJl dCA8IDApIHsKLSsgICAgICAgIGlmIChpc19kZmEpCi0rICAgICAgICAgIGNhbWxfc3RhdF9mcmVl KHdvcmtzcGFjZSk7Ci0rICAgICAgICBwY3JlMl9tYXRjaF9kYXRhX2ZyZWUobWF0Y2hfZGF0YSk7 Ci0rICAgICAgICBpZiAocmV0ID09IFBDUkUyX0VSUk9SX0NBTExPVVQpCi0rICAgICAgICAgIGNh bWxfcmFpc2UoY29kLnZfZXhuKTsKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgaGFuZGxlX21h dGNoX2Vycm9yKCJwY3JlMl9tYXRjaF9zdHViKGNhbGxvdXQpIiwgcmV0KTsKLSsgICAgICB9IGVs c2UgewotKyAgICAgICAgaGFuZGxlX3BjcmUyX21hdGNoX3Jlc3VsdChvdmVjLCB2X292ZWMsIG92 ZWNfbGVuLCBzdWJqX3N0YXJ0LCByZXQpOwotKyAgICAgICAgaWYgKGlzX2RmYSkgewotKyAgICAg ICAgICBjYW1sX2ludF9wdHIgb2NhbWxfd29ya3NwYWNlX2RzdCA9Ci0rICAgICAgICAgICAgICAo Y2FtbF9pbnRfcHRyKSZGaWVsZCh2X3dvcmtzcGFjZSwgMCk7Ci0rICAgICAgICAgIGNvbnN0IGlu dCAqd29ya3NwYWNlX3NyYyA9IHdvcmtzcGFjZTsKLSsgICAgICAgICAgY29uc3QgaW50ICp3b3Jr c3BhY2Vfc3JjX3N0b3AgPSB3b3Jrc3BhY2UgKyB3b3Jrc3BhY2VfbGVuOwotKyAgICAgICAgICB3 aGlsZSAod29ya3NwYWNlX3NyYyAhPSB3b3Jrc3BhY2Vfc3JjX3N0b3ApIHsKLSsgICAgICAgICAg ICAqb2NhbWxfd29ya3NwYWNlX2RzdCA9ICp3b3Jrc3BhY2Vfc3JjOwotKyAgICAgICAgICAgIG9j YW1sX3dvcmtzcGFjZV9kc3QrKzsKLSsgICAgICAgICAgICB3b3Jrc3BhY2Vfc3JjKys7Ci0rICAg ICAgICAgIH0KLSsgICAgICAgICAgY2FtbF9zdGF0X2ZyZWUod29ya3NwYWNlKTsKLSsgICAgICAg IH0KLSsgICAgICB9Ci0rICAgIH0KLSsgICAgcGNyZTJfbWF0Y2hfZGF0YV9mcmVlKG1hdGNoX2Rh dGEpOwotKyAgfQotKwotKyAgcmV0dXJuIFZhbF91bml0OwotK30KLSsKLStDQU1McHJpbSB2YWx1 ZSBwY3JlMl9tYXRjaF9zdHViKGludDY0X3Qgdl9vcHQsIHZhbHVlIHZfcmV4LCBpbnRuYXQgdl9w b3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRuYXQgdl9zdWJqX3N0YXJ0 LCB2YWx1ZSB2X3N1YmosIHZhbHVlIHZfb3ZlYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZhbHVlIHZfbWF5YmVfY29mKSB7Ci0rICByZXR1cm4gcGNyZTJfbWF0Y2hfc3R1YjAo dl9vcHQsIHZfcmV4LCB2X3Bvcywgdl9zdWJqX3N0YXJ0LCB2X3N1YmosIHZfb3ZlYywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICB2X21heWJlX2NvZiwgKHZhbHVlKU5VTEwpOwotK30KLSsK LSsvKiBCeXRlLWNvZGUgaG9vayBmb3IgcGNyZTJfbWF0Y2hfc3R1YgotKyAgIE5lZWRlZCwgYmVj YXVzZSB0aGVyZSBhcmUgbW9yZSB0aGFuIDUgYXJndW1lbnRzICovCi0rQ0FNTHByaW0gdmFsdWUg cGNyZTJfbWF0Y2hfc3R1Yl9iYyh2YWx1ZSAqYXJndiwgaW50IF9fdW51c2VkIGFyZ24pIHsKLSsg IHJldHVybiBwY3JlMl9tYXRjaF9zdHViMChJbnQ2NF92YWwoYXJndlswXSksIGFyZ3ZbMV0sIElu dF92YWwoYXJndlsyXSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50X3ZhbChhcmd2 WzNdKSwgYXJndls0XSwgYXJndls1XSwgYXJndls2XSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAodmFsdWUpTlVMTCk7Ci0rfQotKwotKy8qIEJ5dGUtY29kZSBob29rIGZvciBwY3JlMl9k ZmFfbWF0Y2hfc3R1YgotKyAgIE5lZWRlZCwgYmVjYXVzZSB0aGVyZSBhcmUgbW9yZSB0aGFuIDUg YXJndW1lbnRzICovCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJfZGZhX21hdGNoX3N0dWJfYmModmFs dWUgKmFyZ3YsIGludCBfX3VudXNlZCBhcmduKSB7Ci0rICByZXR1cm4gcGNyZTJfbWF0Y2hfc3R1 YjAoSW50NjRfdmFsKGFyZ3ZbMF0pLCBhcmd2WzFdLCBJbnRfdmFsKGFyZ3ZbMl0pLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIEludF92YWwoYXJndlszXSksIGFyZ3ZbNF0sIGFyZ3ZbNV0s IGFyZ3ZbNl0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndls3XSk7Ci0rfQotKwot K3N0YXRpYyBzdHJ1Y3QgY3VzdG9tX29wZXJhdGlvbnMgdGFibGVzX29wcyA9IHsKLSsgICAgInBj cmUyX29jYW1sX3RhYmxlcyIsICAgICAgIHBjcmUyX2RlYWxsb2NfdGFibGVzLAotKyAgICBjdXN0 b21fY29tcGFyZV9kZWZhdWx0LCAgICAgY3VzdG9tX2hhc2hfZGVmYXVsdCwKLSsgICAgY3VzdG9t X3NlcmlhbGl6ZV9kZWZhdWx0LCAgIGN1c3RvbV9kZXNlcmlhbGl6ZV9kZWZhdWx0LAotKyAgICBj dXN0b21fY29tcGFyZV9leHRfZGVmYXVsdCwgY3VzdG9tX2ZpeGVkX2xlbmd0aF9kZWZhdWx0fTsK LSsKLSsvKiBHZW5lcmF0ZXMgYSBuZXcgc2V0IG9mIGNoYXJ0YWJsZXMgZm9yIHRoZSBjdXJyZW50 IGxvY2FsZSAoc2VlIG1hbgotKyAgIHBhZ2Ugb2YgUENSRSAqLwotK0NBTUxwcmltIHZhbHVlIHBj cmUyX21ha2V0YWJsZXNfc3R1Yih2YWx1ZSBfX3VudXNlZCB2X3VuaXQpIHsKLSsgIC8qIEFjY29y ZGluZyB0byB0ZXN0aW5nIHdpdGggYG1hbGxvY19zaXplYCwgaXQgc2VlbXMgdGhhdCBhIHR5cGlj YWwgc2V0IG9mCi0rICAgICB0YWJsZXMgd2lsbCByZXF1aXJlIGFib3V0IDE1MzYgYnl0ZXMgb2Yg bWVtb3J5LiAgVGhpcyBtYXkgb3IgbWF5IG5vdAotKyAgICAgYmUgdHJ1ZSBvbiBvdGhlciBwbGF0 Zm9ybXMgb3IgZm9yIGFsbCB2ZXJzaW9ucyBvZiBQQ1JFLiAgU2luY2UgdGhlcmUKLSsgICAgIGlz IGFwcGFyZW50bHkgbm8gcmVsaWFibGUgd2F5IG9mIGZpbmRpbmcgb3V0LCAxNTM2IGlzIHByb2Jh Ymx5IGEgZ29vZAotKyAgICAgZGVmYXVsdCB2YWx1ZS4gKi8KLSsgIHNpemVfdCB0YWJsZXNfc2l6 ZSA9IHNpemVvZihzdHJ1Y3QgcGNyZTJfb2NhbWxfdGFibGVzKTsKLSsgIGNvbnN0IHZhbHVlIHZf dGFibGVzID0gY2FtbF9hbGxvY19jdXN0b21fbWVtKCZ0YWJsZXNfb3BzLCB0YWJsZXNfc2l6ZSwg MTUzNik7Ci0rICBzZXRfdGFibGVzKHZfdGFibGVzLCBwY3JlMl9tYWtldGFibGVzKE5VTEwpKTsK LSsgIHJldHVybiB2X3RhYmxlczsKLSt9Ci0rCi0rLyogV3JhcHMgYXJvdW5kIHRoZSBpc3NwYWNl LWZ1bmN0aW9uICovCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJfaXNzcGFjZV9zdHViKHZhbHVlIHZf YykgewotKyAgcmV0dXJuIFZhbF9ib29sKGlzc3BhY2UoSW50X3ZhbCh2X2MpKSk7Ci0rfQotKwot Ky8qIFJldHVybnMgbnVtYmVyIG9mIHN1YnN0cmluZyBhc3NvY2lhdGVkIHdpdGggYSBuYW1lICov Ci0rCi0rQ0FNTHByaW0gaW50bmF0IHBjcmUyX3N1YnN0cmluZ19udW1iZXJfZnJvbV9uYW1lX3N0 dWIodmFsdWUgdl9yZXgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFsdWUgdl9uYW1lKSB7Ci0rICBjb25zdCBpbnQgcmV0ID0gcGNyZTJf c3Vic3RyaW5nX251bWJlcl9mcm9tX25hbWUoCi0rICAgICAgZ2V0X3JleCh2X3JleCksIChQQ1JF Ml9TUFRSKVN0cmluZ192YWwodl9uYW1lKSk7Ci0rICBpZiAocmV0ID09IFBDUkUyX0VSUk9SX05P U1VCU1RSSU5HKQotKyAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoIk5hbWVkIHN0cmluZyBub3Qg Zm91bmQiKTsKLSsKLSsgIHJldHVybiByZXQ7Ci0rfQotKwotK0NBTUxwcmltIHZhbHVlIHBjcmUy X3N1YnN0cmluZ19udW1iZXJfZnJvbV9uYW1lX3N0dWJfYmModmFsdWUgdl9yZXgsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSB2 X25hbWUpIHsKLSsgIHJldHVybiBWYWxfaW50KHBjcmUyX3N1YnN0cmluZ19udW1iZXJfZnJvbV9u YW1lX3N0dWIodl9yZXgsIHZfbmFtZSkpOwotK30KLSsKLSsvKiBSZXR1cm5zIGFycmF5IG9mIG5h bWVzIG9mIG5hbWVkIHN1YnN0cmluZ3MgaW4gYSByZWdleHAgKi8KLStDQU1McHJpbSB2YWx1ZSBw Y3JlMl9uYW1lc19zdHViKHZhbHVlIHZfcmV4KSB7Ci0rICBDQU1McGFyYW0xKHZfcmV4KTsKLSsg IENBTUxsb2NhbDEodl9yZXMpOwotKyAgdWludDMyX3QgbmFtZV9jb3VudDsKLSsgIHVpbnQzMl90 IGVudHJ5X3NpemU7Ci0rICBjb25zdCBjaGFyICp0YmxfcHRyOwotKyAgdWludDMyX3QgaTsKLSsK LSsgIGludCByZXQgPSBwY3JlMl9wYXR0ZXJuX2luZm9fc3R1Yih2X3JleCwgUENSRTJfSU5GT19O QU1FQ09VTlQsICZuYW1lX2NvdW50KTsKLSsgIGlmIChyZXQgIT0gMCkKLSsgICAgcmFpc2VfaW50 ZXJuYWxfZXJyb3IoInBjcmUyX25hbWVzX3N0dWI6IG5hbWVjb3VudCIpOwotKwotKyAgcmV0ID0g cGNyZTJfcGF0dGVybl9pbmZvX3N0dWIodl9yZXgsIFBDUkUyX0lORk9fTkFNRUVOVFJZU0laRSwg JmVudHJ5X3NpemUpOwotKyAgaWYgKHJldCAhPSAwKQotKyAgICByYWlzZV9pbnRlcm5hbF9lcnJv cigicGNyZTJfbmFtZXNfc3R1YjogbmFtZWVudHJ5c2l6ZSIpOwotKwotKyAgcmV0ID0gcGNyZTJf cGF0dGVybl9pbmZvX3N0dWIodl9yZXgsIFBDUkUyX0lORk9fTkFNRVRBQkxFLCAmdGJsX3B0cik7 Ci0rICBpZiAocmV0ICE9IDApCi0rICAgIHJhaXNlX2ludGVybmFsX2Vycm9yKCJwY3JlMl9uYW1l c19zdHViOiBuYW1ldGFibGUiKTsKLSsKLSsgIHZfcmVzID0gY2FtbF9hbGxvYyhuYW1lX2NvdW50 LCAwKTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBuYW1lX2NvdW50OyArK2kpIHsKLSsgICAgdmFs dWUgdl9uYW1lID0gY2FtbF9jb3B5X3N0cmluZyh0YmxfcHRyICsgMik7Ci0rICAgIFN0b3JlX2Zp ZWxkKHZfcmVzLCBpLCB2X25hbWUpOwotKyAgICB0YmxfcHRyICs9IGVudHJ5X3NpemU7Ci0rICB9 Ci0rCi0rICBDQU1McmV0dXJuKHZfcmVzKTsKLSt9Ci0rCi0rLyogR2VuZXJpYyBzdHViIGZvciBn ZXR0aW5nIGludGVnZXIgcmVzdWx0cyBmcm9tIHBjcmUyX2NvbmZpZyAqLwotK3N0YXRpYyBpbmxp bmUgaW50IHBjcmUyX2NvbmZpZ19pbnQoaW50IHdoYXQpIHsKLSsgIGludCByZXQ7Ci0rICBwY3Jl Ml9jb25maWcod2hhdCwgKHZvaWQgKikmcmV0KTsKLSsgIHJldHVybiByZXQ7Ci0rfQotKwotKy8q IEdlbmVyaWMgc3R1YiBmb3IgZ2V0dGluZyBsb25nIGludGVnZXIgcmVzdWx0cyBmcm9tIHBjcmUy X2NvbmZpZyAqLwotK3N0YXRpYyBpbmxpbmUgbG9uZyBwY3JlMl9jb25maWdfbG9uZyhpbnQgd2hh dCkgewotKyAgbG9uZyByZXQ7Ci0rICBwY3JlMl9jb25maWcod2hhdCwgKHZvaWQgKikmcmV0KTsK LSsgIHJldHVybiByZXQ7Ci0rfQotKwotKy8qIFNvbWUgc3R1YnMgZm9yIGNvbmZpZy1mdW5jdGlv bnMgKi8KLSsKLSsvKiBNYWtlcyBPQ2FtbC1zdHJpbmcgZnJvbSBQQ1JFLXZlcnNpb24gKi8KLStD QU1McHJpbSB2YWx1ZSBwY3JlMl92ZXJzaW9uX3N0dWIodmFsdWUgX191bnVzZWQgdl91bml0KSB7 Ci0rICBDQU1McGFyYW0xKHZfdW5pdCk7Ci0rICBDQU1MbG9jYWwxKHZfdmVyc2lvbik7Ci0rICB2 X3ZlcnNpb24gPSBjYW1sX2FsbG9jX3N0cmluZygzMik7Ci0rCi0rICBwY3JlMl9jb25maWcoUENS RTJfQ09ORklHX1ZFUlNJT04sICh2b2lkICopU3RyaW5nX3ZhbCh2X3ZlcnNpb24pKTsKLSsKLSsg IENBTUxyZXR1cm4odl92ZXJzaW9uKTsKLSt9Ci0rCi0rLyogUmV0dXJucyBib29sZWFuIGluZGlj YXRpbmcgdW5pY29kZSBzdXBwb3J0ICovCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJfY29uZmlnX3Vu aWNvZGVfc3R1Yih2YWx1ZSBfX3VudXNlZCB2X3VuaXQpIHsKLSsgIHJldHVybiBWYWxfYm9vbChw Y3JlMl9jb25maWdfaW50KFBDUkUyX0NPTkZJR19VTklDT0RFKSk7Ci0rfQotKwotKy8qIFJldHVy bnMgY2hhcmFjdGVyIHVzZWQgYXMgbmV3bGluZSAqLwotK0NBTUxwcmltIHZhbHVlIHBjcmUyX2Nv bmZpZ19uZXdsaW5lX3N0dWIodmFsdWUgX191bnVzZWQgdl91bml0KSB7Ci0rICByZXR1cm4gVmFs X2ludChwY3JlMl9jb25maWdfaW50KFBDUkUyX0NPTkZJR19ORVdMSU5FKSk7Ci0rfQotKwotKy8q IFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgZm9yIGludGVybmFsIGxpbmthZ2Ugb2YgcmVn dWxhciBleHByZXNzaW9ucyAqLwotKwotK0NBTUxwcmltIGludG5hdCBwY3JlMl9jb25maWdfbGlu a19zaXplX3N0dWIodmFsdWUgX191bnVzZWQgdl91bml0KSB7Ci0rICByZXR1cm4gcGNyZTJfY29u ZmlnX2ludChQQ1JFMl9DT05GSUdfTElOS1NJWkUpOwotK30KLSsKLStDQU1McHJpbSB2YWx1ZSBw Y3JlMl9jb25maWdfbGlua19zaXplX3N0dWJfYmModmFsdWUgdl91bml0KSB7Ci0rICByZXR1cm4g VmFsX2ludChwY3JlMl9jb25maWdfbGlua19zaXplX3N0dWIodl91bml0KSk7Ci0rfQotKwotKy8q IFJldHVybnMgZGVmYXVsdCBsaW1pdCBmb3IgY2FsbHMgdG8gaW50ZXJuYWwgbWF0Y2hpbmcgZnVu Y3Rpb24gKi8KLSsKLStDQU1McHJpbSBpbnRuYXQgcGNyZTJfY29uZmlnX21hdGNoX2xpbWl0X3N0 dWIodmFsdWUgX191bnVzZWQgdl91bml0KSB7Ci0rICByZXR1cm4gcGNyZTJfY29uZmlnX2xvbmco UENSRTJfQ09ORklHX01BVENITElNSVQpOwotK30KLSsKLStDQU1McHJpbSB2YWx1ZSBwY3JlMl9j b25maWdfbWF0Y2hfbGltaXRfc3R1Yl9iYyh2YWx1ZSB2X3VuaXQpIHsKLSsgIHJldHVybiBWYWxf aW50KHBjcmUyX2NvbmZpZ19tYXRjaF9saW1pdF9zdHViKHZfdW5pdCkpOwotK30KLSsKLSsvKiBS ZXR1cm5zIGRlZmF1bHQgbGltaXQgZm9yIGRlcHRoIG9mIG5lc3RlZCBiYWNrdHJhY2tpbmcgICov Ci0rCi0rQ0FNTHByaW0gaW50bmF0IHBjcmUyX2NvbmZpZ19kZXB0aF9saW1pdF9zdHViKHZhbHVl IF9fdW51c2VkIHZfdW5pdCkgewotKyAgcmV0dXJuIHBjcmUyX2NvbmZpZ19sb25nKFBDUkUyX0NP TkZJR19ERVBUSExJTUlUKTsKLSt9Ci0rCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJfY29uZmlnX2Rl cHRoX2xpbWl0X3N0dWJfYmModmFsdWUgdl91bml0KSB7Ci0rICByZXR1cm4gVmFsX2ludChwY3Jl Ml9jb25maWdfZGVwdGhfbGltaXRfc3R1Yih2X3VuaXQpKTsKLSt9Ci0rCi0rLyogUmV0dXJucyBi b29sZWFuIGluZGljYXRpbmcgdXNlIG9mIHN0YWNrIHJlY3Vyc2lvbiAqLwotK0NBTUxwcmltIGlu dG5hdCBwY3JlMl9jb25maWdfc3RhY2tyZWN1cnNlX3N0dWIodmFsdWUgX191bnVzZWQgdl91bml0 KSB7Ci0rICByZXR1cm4gVmFsX2Jvb2wocGNyZTJfY29uZmlnX2ludChQQ1JFMl9DT05GSUdfU1RB Q0tSRUNVUlNFKSk7Ci0rfQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwv cGFfcHB4X3Rlc3QvTWFrZWZpbGUgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3BhX3BweF90 ZXN0L01ha2VmaWxlCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi5lMzVi YmMxZjEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvcGFf cHB4X3Rlc3QvTWFrZWZpbGUKLUBAIC0wLDAgKzEsMTEgQEAKLStOT1RfT0NBTUxGSU5EPW5vdC1v Y2FtbGZpbmQKLSsKLStib290c3RyYXA6IC4uL3Rlc3QvcGNyZTJfdGVzdHMubWwKLSsKLSsuLi90 ZXN0LyUubWw6ICUubWwKLSsJJChOT1RfT0NBTUxGSU5EKSBwcmVwcm9jZXNzIFwKLSsJCS1wYWNr YWdlIHBhX3BweF9yZWdleHAsY2FtbHA1LnByX28gLXBwb3B0IC1wYV9wcHhfcmVnZXhwLW5vc3Rh dGljIFwKLSsJCS1zeW50YXggY2FtbHA1byAkPCA+ICRALk5FVyAmJiBcCi0rCW12ICRALk5FVyAk QAotKwotKy5TVUZGSVhFUzogLm1sCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlMi9wY3JlMi1v Y2FtbC9wYV9wcHhfdGVzdC9wY3JlMl90ZXN0cy5tbCBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2Nh bWwvcGFfcHB4X3Rlc3QvcGNyZTJfdGVzdHMubWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwMDAuLjc5YzlhYzc2MwotLS0tIC9kZXYvbnVsbAotKysrIGIvYnVuZGxlcy9wY3Jl Mi9wY3JlMi1vY2FtbC9wYV9wcHhfdGVzdC9wY3JlMl90ZXN0cy5tbAotQEAgLTAsMCArMSwyNDkg QEAKLStvcGVuIE9Vbml0MgotKygqKnBwIC1zeW50YXggY2FtbHA1byAtcGFja2FnZSBwYV9wcHgu ZGVyaXZpbmdfcGx1Z2lucy5zdGQgKikKLSsKLStsZXQgdGVzdF9zcGVjaWFsX2NoYXJfcmVnZXhw cyBjdHh0ID0KLSsgICgpOwotKyAgYXNzZXJ0X2VxdWFsICJcbiIgKFslbWF0Y2gge3xcbiR8fSAv IHMgZXhjIHBjcmUyIHN0cmluZ3NdICJcbiIpOwotKyAgYXNzZXJ0X2VxdWFsICIiIChbJXN1YnN0 IHt8XG4rJHx9IC8ge3x8fSAvIHMgcGNyZTJdICJcblxuIikKLSsKLStsZXQgdGVzdF9wY3JlMl9z aW1wbGVfbWF0Y2ggY3R4dCA9Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVhbCAiYWJjIgotKyAgICAo UGNyZTIuZ2V0X3N1YnN0cmluZyAoWyVtYXRjaCAiYWJjIiAvIGV4YyByYXcgcGNyZTJdICJhYmMi KSAwKTsKLSsgIGFzc2VydF9lcXVhbCAoU29tZSAiYWJjIikgKFslbWF0Y2ggImFiYyIgLyBwY3Jl Ml0gImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFsIChTb21lICJhYmMiKSAoWyVtYXRjaCAiYWJjIiAv IHN0cmluZ3MgcGNyZTJdICJhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCB0cnVlIChbJW1hdGNoICJh YmMiIC8gcHJlZCBwY3JlMl0gImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFsIGZhbHNlIChbJW1hdGNo ICJhYmMiIC8gcHJlZCBwY3JlMl0gImFiZCIpOwotKyAgYXNzZXJ0X2VxdWFsIE5vbmUgKFslbWF0 Y2ggImFiYyIgLyBwY3JlMl0gImFiZCIpOwotKyAgYXNzZXJ0X3JhaXNlcyBOb3RfZm91bmQgKGZ1 biAoKSAtPiBbJW1hdGNoICJhYmMiIC8gZXhjIHBjcmUyXSAiYWJkIik7Ci0rICBhc3NlcnRfcmFp c2VzIE5vdF9mb3VuZCAoZnVuICgpIC0+IFslbWF0Y2ggImFiYyIgLyBleGMgc3RyaW5ncyBwY3Jl Ml0gImFiZCIpOwotKyAgYXNzZXJ0X2VxdWFsIE5vbmUgKFslbWF0Y2ggImFiYyIgLyBzdHJpbmdz IHBjcmUyXSAiYWJkIik7Ci0rICBhc3NlcnRfZXF1YWwgImFiYyIgKFslbWF0Y2ggImFiYyIgLyBl eGMgc3RyaW5ncyBwY3JlMl0gImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICgiYWJjIiwgU29tZSAi YiIpIChbJW1hdGNoICJhKGIpYyIgLyBleGMgc3RyaW5ncyBwY3JlMl0gImFiYyIpOwotKyAgYXNz ZXJ0X2VxdWFsICgiYWMiLCBOb25lKSAoWyVtYXRjaCAiYSg/OihiKT8pYyIgLyBleGMgc3RyaW5n cyBwY3JlMl0gImFjIik7Ci0rICBhc3NlcnRfZXF1YWwgImFiYyIKLSsgICAgKFBjcmUyLmdldF9z dWJzdHJpbmcgKFslbWF0Y2ggIkFCQyIgLyBleGMgcmF3IGkgcGNyZTJdICJhYmMiKSAwKTsKLSsg IGFzc2VydF9lcXVhbAotKyAgICAoImFiYyIsIFNvbWUgImEiLCBTb21lICJiIiwgU29tZSAiYyIp Ci0rICAgIChbJW1hdGNoICIoYSkoYikoYykiIC8gZXhjIHN0cmluZ3MgcGNyZTJdICJhYmMiKQot KwotK2xldCB0ZXN0X3BjcmUyX3NlbGVjdGl2ZV9tYXRjaCBjdHh0ID0KLSsgICgpOwotKyAgYXNz ZXJ0X2VxdWFsICgiYWJjIiwgU29tZSAiYiIpCi0rICAgIChbJW1hdGNoICJhKGIpYyIgLyBleGMg c3RyaW5ncyAoITAsIDEpIHBjcmUyXSAiYWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgKCJhYmMiLCAi YiIpCi0rICAgIChbJW1hdGNoICJhKGIpYyIgLyBleGMgc3RyaW5ncyAoITAsICExKSBwY3JlMl0g ImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICJiIiAoWyVtYXRjaCAiYShiKWMiIC8gZXhjIHN0cmlu Z3MgITEgcGNyZTJdICJhYmMiKTsKLSsgIGFzc2VydF9lcXVhbAotKyAgICAoU29tZSAoImFiYyIs ICJiIikpCi0rICAgIChbJW1hdGNoICJhKGIpYyIgLyBzdHJpbmdzICghMCwgITEpIHBjcmUyXSAi YWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgKCJhYyIsIE5vbmUpIChbJW1hdGNoICJhKGIpP2MiIC8g ZXhjIHN0cmluZ3MgKCEwLCAxKSBwY3JlMl0gImFjIik7Ci0rICBhc3NlcnRfcmFpc2VzIE5vdF9m b3VuZCAoZnVuIF8gLT4KLSsgICAgICBbJW1hdGNoICJhKGIpP2MiIC8gZXhjIHN0cmluZ3MgKCEw LCAhMSkgcGNyZTJdICJhYyIpOwotKyAgYXNzZXJ0X2VxdWFsIE5vbmUgKFslbWF0Y2ggImEoYik/ YyIgLyBzdHJpbmdzICghMCwgITEpIHBjcmUyXSAiYWMiKQotKwotK2xldCB0ZXN0X3BjcmUyX3Nl YXJjaCBjdHh0ID0KLSsgICgpOwotKyAgYXNzZXJ0X2VxdWFsICJhYmMiIChbJW1hdGNoICJhYmMi IC8gZXhjIHN0cmluZ3MgcGNyZTJdICJ6enphYmMiKTsKLSsgIGFzc2VydF9lcXVhbCBOb25lIChb JW1hdGNoICJeYWJjIiAvIHN0cmluZ3MgcGNyZTJdICJ6enphYmMiKQotKwotK2xldCBzaG93X3N0 cmluZ19vcHRpb24gPSBmdW5jdGlvbgotKyAgfCBOb25lIC0+ICJOb25lIgotKyAgfCBTb21lIHMg LT4gUHJpbnRmLnNwcmludGYgIlNvbWUgJXMiIHMKLSsKLStsZXQgdGVzdF9wY3JlMl9zaW5nbGUg Y3R4dCA9Ci0rICBsZXQgcHJpbnRlciA9IHNob3dfc3RyaW5nX29wdGlvbiBpbgotKyAgKCk7Ci0r ICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgTm9uZSAoWyVtYXRjaCAiLisiIC8gcGNyZTJdICJcblxu Iik7Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgTm9uZSAoWyVtYXRjaCAiLisiIC8gbSBwY3Jl MiBzdHJpbmdzXSAiXG5cbiIpOwotKwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyIE5vbmUgKFsl bWF0Y2ggIi4rIiAvIHBjcmUyIHN0cmluZ3NdICJcblxuIik7Ci0rICBhc3NlcnRfZXF1YWwgfnBy aW50ZXIgKFNvbWUgIlxuXG4iKSAoWyVtYXRjaCAiLisiIC8gcyBwY3JlMiBzdHJpbmdzXSAiXG5c biIpOwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyIE5vbmUgKFslbWF0Y2ggIi4rIiAvIG0gcGNy ZTIgc3RyaW5nc10gIlxuXG4iKTsKLSsKLSsgIGxldCBwcmludGVyIHggPSB4IGluCi0rICAoKTsK LSsgIGFzc2VydF9lcXVhbCB+cHJpbnRlciAiXG5cbiIgKFslbWF0Y2ggIi4rIiAvIHMgZXhjIHBj cmUyIHN0cmluZ3NdICJcblxuIik7Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgIjw8YWJjPj5c bmRlZiIKLSsgICAgKFslc3Vic3QgIi4rIiAvIHt8PDwkMD4+fH0gLyBwY3JlMl0gImFiY1xuZGVm Iik7Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgIjw8YWJjXG5kZWY+PiIKLSsgICAgKFslc3Vi c3QgIi4rIiAvIHt8PDwkMD4+fH0gLyBzIHBjcmUyXSAiYWJjXG5kZWYiKTsKLSsgIGFzc2VydF9l cXVhbCB+cHJpbnRlciAiPDxhYmM+PlxuZGVmIgotKyAgICAoWyVzdWJzdCAiLisiIC8ge3w8PCQw Pj58fSAvIG0gcGNyZTJdICJhYmNcbmRlZiIpOwotKwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVy ICI8PGFiYz4+XG5kZWYiCi0rICAgIChbJXN1YnN0ICIuKiIgLyB7fDw8JDA+Pnx9IC8gcGNyZTJd ICJhYmNcbmRlZiIpOwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyICI8PGFiYz4+PDw+PlxuPDxk ZWY+Pjw8Pj4iCi0rICAgIChbJXN1YnN0ICIuKiIgLyB7fDw8JDA+Pnx9IC8gZyBwY3JlMl0gImFi Y1xuZGVmIik7Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgIjw8YWJjPj5cbjw8ZGVmPj4iCi0r ICAgIChbJXN1YnN0ICIuKyIgLyB7fDw8JDA+Pnx9IC8gZyBwY3JlMl0gImFiY1xuZGVmIik7Ci0r ICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgIjw8YWJjPj5hXG5jPDxhZWM+PiIKLSsgICAgKFslc3Vi c3QgImEuYyIgLyB7fDw8JDA+Pnx9IC8gZyBwY3JlMl0gImFiY2FcbmNhZWMiKTsKLSsgIGFzc2Vy dF9lcXVhbCB+cHJpbnRlciAiPDxhYmM+Pjw8YVxuYz4+PDxhZWM+PiIKLSsgICAgKFslc3Vic3Qg ImEuYyIgLyB7fDw8JDA+Pnx9IC8gZyBzIHBjcmUyXSAiYWJjYVxuY2FlYyIpCi0rCi0rbGV0IHRl c3RfcGNyZTJfbXVsdGlsaW5lIGN0eHQgPQotKyAgKCk7Ci0rICBhc3NlcnRfZXF1YWwgKFNvbWUg ImJhciIpIChbJW1hdGNoICIuKyQiIC8gc3RyaW5ncyBwY3JlMl0gImZvb1xuYmFyIik7Ci0rICBh c3NlcnRfZXF1YWwgKFNvbWUgImZvbyIpIChbJW1hdGNoICIuKyQiIC8gbSBzdHJpbmdzIHBjcmUy XSAiZm9vXG5iYXIiKQotKwotK2xldCB0ZXN0X3BjcmUyX3NpbXBsZV9zcGxpdCBjdHh0ID0KLSsg ICgpOwotKyAgYXNzZXJ0X2VxdWFsIFsgImJiIiBdIChbJXNwbGl0ICJhIiAvIHBjcmUyXSAiYmIi KQotKwotK2xldCB0ZXN0X3BjcmUyX2RlbGltX3NwbGl0X3JhdyBjdHh0ID0KLSsgIGxldCBvcGVu IFBjcmUyIGluCi0rICAoKTsKLSsgIGFzc2VydF9lcXVhbAotKyAgICBbIERlbGltICJhIjsgVGV4 dCAiYiI7IERlbGltICJhIjsgVGV4dCAiYiIgXQotKyAgICAoWyVzcGxpdCAiYSIgLyBwY3JlMiBy YXddICJhYmFiYSIpOwotKyAgYXNzZXJ0X2VxdWFsCi0rICAgIFsgRGVsaW0gImEiOyBUZXh0ICJi IjsgRGVsaW0gImEiOyBEZWxpbSAiYSI7IFRleHQgImIiIF0KLSsgICAgKFslc3BsaXQgImEiIC8g cGNyZTIgcmF3XSAiYWJhYWJhIik7Ci0rICBhc3NlcnRfZXF1YWwKLSsgICAgWwotKyAgICAgIERl bGltICJhIjsKLSsgICAgICBOb0dyb3VwOwotKyAgICAgIFRleHQgImIiOwotKyAgICAgIERlbGlt ICJhYyI7Ci0rICAgICAgR3JvdXAgKDEsICJjIik7Ci0rICAgICAgVGV4dCAiYiI7Ci0rICAgICAg RGVsaW0gImEiOwotKyAgICAgIE5vR3JvdXA7Ci0rICAgIF0KLSsgICAgKFslc3BsaXQgImEoYyk/ IiAvIHBjcmUyIHJhd10gImFiYWNiYSIpOwotKyAgYXNzZXJ0X2VxdWFsCi0rICAgIFsKLSsgICAg ICBEZWxpbSAiYWMiOwotKyAgICAgIEdyb3VwICgxLCAiYyIpOwotKyAgICAgIFRleHQgImIiOwot KyAgICAgIERlbGltICJhYyI7Ci0rICAgICAgR3JvdXAgKDEsICJjIik7Ci0rICAgICAgVGV4dCAi YiI7Ci0rICAgICAgRGVsaW0gImFjIjsKLSsgICAgICBHcm91cCAoMSwgImMiKTsKLSsgICAgXQot KyAgICAoWyVzcGxpdCAiYShjKSIgLyBwY3JlMiByYXddICJhY2JhY2JhYyIpOwotKyAgYXNzZXJ0 X2VxdWFsCi0rICAgIFsKLSsgICAgICBEZWxpbSAiYWMiOwotKyAgICAgIEdyb3VwICgxLCAiYyIp OwotKyAgICAgIFRleHQgImIiOwotKyAgICAgIERlbGltICJhYyI7Ci0rICAgICAgR3JvdXAgKDEs ICJjIik7Ci0rICAgICAgVGV4dCAiYiI7Ci0rICAgICAgRGVsaW0gImFjIjsKLSsgICAgICBHcm91 cCAoMSwgImMiKTsKLSsgICAgXQotKyAgICAoWyVzcGxpdCAiYShjKSIgLyBwY3JlMiByYXddICJh Y2JhY2JhYyIpOwotKyAgYXNzZXJ0X2VxdWFsCi0rICAgIFsKLSsgICAgICBEZWxpbSAiYSI7Ci0r ICAgICAgTm9Hcm91cDsKLSsgICAgICBUZXh0ICJiIjsKLSsgICAgICBEZWxpbSAiYWMiOwotKyAg ICAgIEdyb3VwICgxLCAiYyIpOwotKyAgICAgIFRleHQgImIiOwotKyAgICAgIERlbGltICJhIjsK LSsgICAgICBOb0dyb3VwOwotKyAgICBdCi0rICAgIChbJXNwbGl0ICJhKGMpPyIgLyBwY3JlMiBy YXddICJhYmFjYmEiKTsKLSsgIGFzc2VydF9lcXVhbAotKyAgICBbIFRleHQgImFiIjsgRGVsaW0g IngiOyBHcm91cCAoMSwgIngiKTsgTm9Hcm91cDsgVGV4dCAiY2QiIF0KLSsgICAgKFslc3BsaXQg e3woeCl8KHUpfH0gLyByYXcgcGNyZTJdICJhYnhjZCIpOwotKyAgYXNzZXJ0X2VxdWFsCi0rICAg IFsKLSsgICAgICBUZXh0ICJhYiI7Ci0rICAgICAgRGVsaW0gIngiOwotKyAgICAgIEdyb3VwICgx LCAieCIpOwotKyAgICAgIE5vR3JvdXA7Ci0rICAgICAgVGV4dCAiY2QiOwotKyAgICAgIERlbGlt ICJ1IjsKLSsgICAgICBOb0dyb3VwOwotKyAgICAgIEdyb3VwICgyLCAidSIpOwotKyAgICBdCi0r ICAgIChbJXNwbGl0IHt8KHgpfCh1KXx9IC8gcmF3IHBjcmUyXSAiYWJ4Y2R1IikKLSsKLStsZXQg dGVzdF9wY3JlMl9zdHJpbmdfcGF0dGVybiBjdHh0ID0KLSsgICgpOwotKyAgYXNzZXJ0X2VxdWFs ICIkYiIKLSsgICAgKFslcGF0dGVybiB7fCQkJDF8fSAvIHBjcmUyXSAoWyVtYXRjaCAiYShiKWMi IC8gZXhjIHBjcmUyIHJhd10gImFiYyIpKTsKLSsgIGFzc2VydF9lcXVhbCAiYiIKLSsgICAgKFsl cGF0dGVybiB7fCR7MDF9fH0gLyBwY3JlMl0gKFslbWF0Y2ggImEoYiljIiAvIGV4YyBwY3JlMiBy YXddICJhYmMiKSk7Ci0rICBhc3NlcnRfZXF1YWwgImJ4IgotKyAgICAobGV0IHMgPSAieCIgaW4K LSsgICAgIFslcGF0dGVybiB7fCR7MDF9JHtzfXx9IC8gcGNyZTJdIChbJW1hdGNoICJhKGIpYyIg LyBleGMgcGNyZTIgcmF3XSAiYWJjIikpOwotKyAgYXNzZXJ0X2VxdWFsIHt8ImJ4fH0KLSsgICAg KGxldCBzID0gIngiIGluCi0rICAgICBbJXBhdHRlcm4ge3wiJHswMX0ke3N9fH0gLyBwY3JlMl0g KFslbWF0Y2ggImEoYiljIiAvIGV4YyBwY3JlMiByYXddICJhYmMiKSk7Ci0rICBhc3NlcnRfZXF1 YWwge3wieHx9Ci0rICAgIChsZXQgcyA9ICJ4IiBpbgotKyAgICAgWyVwYXR0ZXJuIHt8IiR7c318 fSAvIHBjcmUyXSkKLSsKLStsZXQgdGVzdF9wY3JlMl9leHByX3BhdHRlcm4gY3R4dCA9Ci0rICAo KTsKLSsgIGFzc2VydF9lcXVhbCAiYWJjIgotKyAgICAoWyVwYXR0ZXJuICIkMCQiIC8gZSBwY3Jl Ml0gKFslbWF0Y2ggImFiYyIgLyBleGMgcGNyZTIgcmF3XSAiYWJjIikpOwotKyAgYXNzZXJ0X2Vx dWFsICJhYmN4IgotKyAgICAoWyVwYXR0ZXJuIHt8JDAkIF4gIngifH0gLyBlIHBjcmUyXSAoWyVt YXRjaCAiYWJjIiAvIGV4YyBwY3JlMiByYXddICJhYmMiKSk7Ci0rICBhc3NlcnRfZXF1YWwgImFi Y3giCi0rICAgIChsZXQgeCA9ICJ4IiBpbgotKyAgICAgWyVwYXR0ZXJuIHt8JDAkIF4geHx9IC8g ZSBwY3JlMl0gKFslbWF0Y2ggImFiYyIgLyBleGMgcGNyZTIgcmF3XSAiYWJjIikpOwotKyAgYXNz ZXJ0X2VxdWFsICJ4IgotKyAgICAobGV0IHggPSAieCIgaW4KLSsgICAgIFslcGF0dGVybiB7fCIi IF4geHx9IC8gZSBwY3JlMl0pCi0rCi0rbGV0IHRlc3RfcGNyZTJfc3Vic3QgY3R4dCA9Ci0rICAo KTsKLSsgIGFzc2VydF9lcXVhbCAiJGIiIChbJXN1YnN0ICJhKGIpYyIgLyB7fCQkJDF8fSAvIHBj cmUyXSAiYWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgIiRiIiAoWyVzdWJzdCAiQShCKUMiIC8ge3wk JCQxfH0gLyBpIHBjcmUyXSAiYWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgIiRiYWJjIiAoWyVzdWJz dCAiQShCKUMiIC8ge3wkJCQxfH0gLyBpIHBjcmUyXSAiYWJjYWJjIik7Ci0rICBhc3NlcnRfZXF1 YWwgIiRiJGIiIChbJXN1YnN0ICJBKEIpQyIgLyB7fCQkJDF8fSAvIGcgaSBwY3JlMl0gImFiY2Fi YyIpOwotKyAgYXNzZXJ0X2VxdWFsICIkYiRiIiAoWyVzdWJzdCAiQShCKUMiIC8ge3wiJCIgXiAk MSR8fSAvIGUgZyBpIHBjcmUyXSAiYWJjYWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgIiQkIiAoWyVz dWJzdCAiQShCKUMiIC8ge3wiJCJ8fSAvIGUgZyBpIHBjcmUyXSAiYWJjYWJjIik7Ci0rICBhc3Nl cnRfZXF1YWwgIiQkIiAoWyVzdWJzdCAiQShCKUMiIC8ge3wkJHx9IC8gZyBpIHBjcmUyXSAiYWJj YWJjIikKLSsKLStsZXQgdGVzdF9wY3JlMl9vY2FtbGZpbmRfYml0cyBjdHh0ID0KLSsgICgpOwot KyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyOnNob3dfc3RyaW5nX29wdGlvbiAoU29tZSAiLXN5bnRh eCBjYW1scDVvICIpCi0rICAgIChzbmQKLSsgICAgICAgKFslbWF0Y2gge3xeXChcKlwqcHAgKC4q PylcKlwpfH0gLyBleGMgc3RyaW5ncyBwY3JlMl0KLSsgICAgICAgICAge3woKipwcCAtc3ludGF4 IGNhbWxwNW8gKikKLSt8fSkpCi0rCi0rbGV0IHBjcmUyX2VudnN1YnN0IGVudmxvb2t1cCBzID0K LSsgIGxldCBmIHMxIHMyID0KLSsgICAgaWYgczEgPD4gIiIgdGhlbiBlbnZsb29rdXAgczEKLSsg ICAgZWxzZSBpZiBzMiA8PiAiIiB0aGVuIGVudmxvb2t1cCBzMgotKyAgICBlbHNlIGFzc2VydCBm YWxzZQotKyAgaW4KLSsKLSsgIFslc3Vic3Qge3woPzpcJFwoKFteKV0rKVwpfFwkXHsoW159XSsp XH0pfH0gLyB7fCBmICQxJCAkMiQgfH0gLyBnIGUgcGNyZTJdIHMKLSsKLStsZXQgdGVzdF9wY3Jl Ml9lbnZzdWJzdF92aWFfcmVwbGFjZSBjdHh0ID0KLSsgIGxldCBmID0gZnVuY3Rpb24KLSsgICAg fCAiQSIgLT4gInJlczEiCi0rICAgIHwgIkIiIC0+ICJyZXMyIgotKyAgICB8IF8gLT4gZmFpbHdp dGggInVuZXhwZWN0ZWQgYXJnIGluIGVudnN1YnN0IgotKyAgaW4KLSsgIGFzc2VydF9lcXVhbCAi Li4ucmVzMS4uLnJlczIuLi4iIChwY3JlMl9lbnZzdWJzdCBmIHt8Li4uJChBKS4uLiR7Qn0uLi58 fSkKLSsKLStsZXQgc3VpdGUgPQotKyAgIlRlc3QgcGFfcHB4X3JlZ2V4cCIKLSsgID46OjogWwot KyAgICAgICAgICJwY3JlMiBzaW1wbGVfbWF0Y2giID46OiB0ZXN0X3BjcmUyX3NpbXBsZV9tYXRj aDsKLSsgICAgICAgICAicGNyZTIgc2VsZWN0aXZlX21hdGNoIiA+OjogdGVzdF9wY3JlMl9zZWxl Y3RpdmVfbWF0Y2g7Ci0rICAgICAgICAgInBjcmUyIHNlYXJjaCIgPjo6IHRlc3RfcGNyZTJfc2Vh cmNoOwotKyAgICAgICAgICJwY3JlMiBzaW5nbGUiID46OiB0ZXN0X3BjcmUyX3NpbmdsZTsKLSsg ICAgICAgICAicGNyZTIgbXVsdGlsaW5lIiA+OjogdGVzdF9wY3JlMl9tdWx0aWxpbmU7Ci0rICAg ICAgICAgInBjcmUyIHNpbXBsZV9zcGxpdCIgPjo6IHRlc3RfcGNyZTJfc2ltcGxlX3NwbGl0Owot KyAgICAgICAgICJwY3JlMiBkZWxpbV9zcGxpdCByYXciID46OiB0ZXN0X3BjcmUyX2RlbGltX3Nw bGl0X3JhdzsKLSsgICAgICAgICAicGNyZTIgc3RyaW5nX3BhdHRlcm4iID46OiB0ZXN0X3BjcmUy X3N0cmluZ19wYXR0ZXJuOwotKyAgICAgICAgICJwY3JlMiBleHByX3BhdHRlcm4iID46OiB0ZXN0 X3BjcmUyX2V4cHJfcGF0dGVybjsKLSsgICAgICAgICAicGNyZTIgc3Vic3QiID46OiB0ZXN0X3Bj cmUyX3N1YnN0OwotKyAgICAgICAgICJwY3JlMiBvY2FtbGZpbmQgYml0cyIgPjo6IHRlc3RfcGNy ZTJfb2NhbWxmaW5kX2JpdHM7Ci0rICAgICAgICAgInBjcmUyIGVudnN1YnN0IHZpYSByZXBsYWNl IiA+OjogdGVzdF9wY3JlMl9lbnZzdWJzdF92aWFfcmVwbGFjZTsKLSsgICAgICAgICAicGNyZSBv bmx5X3JlZ2V4cHMiID46OiB0ZXN0X3NwZWNpYWxfY2hhcl9yZWdleHBzOwotKyAgICAgICBdCi0r Ci0rbGV0IF8gPSBpZiBub3QgIVN5cy5pbnRlcmFjdGl2ZSB0aGVuIHJ1bl90ZXN0X3R0X21haW4g c3VpdGUgZWxzZSAoKQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvcGNy ZTIub3BhbSBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvcGNyZTIub3BhbQotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uZjE5MWZjZDRkCi0tLS0gL2Rldi9udWxsCi0r KysgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3BjcmUyLm9wYW0KLUBAIC0wLDAgKzEsMzcg QEAKLSsjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgZHVuZSwgZWRpdCBkdW5lLXByb2plY3Qg aW5zdGVhZAotK29wYW0tdmVyc2lvbjogIjIuMCIKLSt2ZXJzaW9uOiAiOC4wLjQiCi0rc3lub3Bz aXM6Ci0rICAiQmluZGluZ3MgdG8gdGhlIFBlcmwgQ29tcGF0aWJpbGl0eSBSZWd1bGFyIEV4cHJl c3Npb25zIGxpYnJhcnkgKHZlcnNpb24gMikiCi0rZGVzY3JpcHRpb246ICIiIgotK3BjcmUyLW9j YW1sIG9mZmVycyBsaWJyYXJ5IGZ1bmN0aW9ucyBmb3Igc3RyaW5nIHBhdHRlcm4gbWF0Y2hpbmcg YW5kCi0rc3Vic3RpdHV0aW9uLCBzaW1pbGFyIHRvIHRoZSBmdW5jdGlvbmFsaXR5IG9mZmVyZWQg YnkgdGhlIFBlcmwgbGFuZ3VhZ2UuIiIiCi0rbWFpbnRhaW5lcjogWyJDaGV0IE11cnRoeSA8Y2hl dHNreUBnbWFpbC5jb20+Il0KLSthdXRob3JzOiBbIk1hcmt1cyBNb3R0bCA8bWFya3VzLm1vdHRs QGdtYWlsLmNvbT4iXQotK2xpY2Vuc2U6ICJMR1BMLTIuMS1vci1sYXRlciBXSVRIIE9DYW1sLUxH UEwtbGlua2luZy1leGNlcHRpb24iCi0raG9tZXBhZ2U6ICJodHRwczovL2dpdGh1Yi5jb20vY2Ft bHA1L3BjcmUyLW9jYW1sIgotK2J1Zy1yZXBvcnRzOiAiaHR0cHM6Ly9naXRodWIuY29tL2NhbWxw NS9wY3JlMi1vY2FtbC9pc3N1ZXMiCi0rZGVwZW5kczogWwotKyAgImR1bmUiIHs+PSAiMi43In0K LSsgICJvY2FtbCIgez49ICI0LjA4In0KLSsgICJkdW5lLWNvbXBpbGVkYiIKLSsgICJkdW5lLWNv bmZpZ3VyYXRvciIKLSsgICJjb25mLWxpYnBjcmUyLTgiIHtidWlsZH0KLSsgICJvdW5pdDIiIHt3 aXRoLXRlc3R9Ci0rICAib2RvYyIge3dpdGgtZG9jfQotK10KLStidWlsZDogWwotKyAgWyJkdW5l IiAic3Vic3QiXSB7ZGV2fQotKyAgWwotKyAgICAiZHVuZSIKLSsgICAgImJ1aWxkIgotKyAgICAi LXAiCi0rICAgIG5hbWUKLSsgICAgIi1qIgotKyAgICBqb2JzCi0rICAgICJAaW5zdGFsbCIKLSsg ICAgIkBydW50ZXN0IiB7d2l0aC10ZXN0fQotKyAgICAiQGRvYyIge3dpdGgtZG9jfQotKyAgXQot K10KLStkZXYtcmVwbzogImdpdCtodHRwczovL2dpdGh1Yi5jb20vY2FtbHA1L3BjcmUyLW9jYW1s LmdpdCIKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3Rlc3QvZHVuZSBi L2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvdGVzdC9kdW5lCi1uZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMDAwLi5hZjZmY2ZhNWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2J1bmRs ZXMvcGNyZTIvcGNyZTItb2NhbWwvdGVzdC9kdW5lCi1AQCAtMCwwICsxLDE0IEBACi0rKHRlc3QK LSsgKG5hbWUgb2xkX3BjcmUyX3Rlc3RzKQotKyAobW9kdWxlcyBPbGRfcGNyZTJfdGVzdHMpCi0r IChsaWJyYXJpZXMgcGNyZTIgb3VuaXQyKSkKLSsKLSsodGVzdAotKyAobmFtZSBwY3JlMl90ZXN0 cykKLSsgKG1vZHVsZXMgUGNyZTJfdGVzdHMpCi0rIChsaWJyYXJpZXMgcGNyZTIgb3VuaXQyKSkK LSsKLSsoZW52Ci0rIChkZXYKLSsgIChmbGFncwotKyAgICg6c3RhbmRhcmQgLXcgLTI3KSkpKQot ZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvdGVzdC9vbGRfcGNyZTJfdGVz dHMubWwgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3Rlc3Qvb2xkX3BjcmUyX3Rlc3RzLm1s Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi5lMWYyMWU0MzgKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvdGVzdC9vbGRfcGNyZTJf dGVzdHMubWwKLUBAIC0wLDAgKzEsMjQgQEAKLStvcGVuIE9Vbml0MgotK29wZW4gUGNyZTIKLSsK LStsZXQgc2ltcGxlX3Rlc3QgY3R4dCA9Ci0rICBhc3NlcnRfZXF1YWwgMCAwOwotKyAgYXNzZXJ0 X2VxdWFsCi0rICAgIFsgVGV4dCAiYWIiOyBEZWxpbSAieCI7IEdyb3VwICgxLCAieCIpOyBOb0dy b3VwOyBUZXh0ICJjZCIgXQotKyAgICAoZnVsbF9zcGxpdCB+cGF0OiIoeCl8KHUpIiAiYWJ4Y2Qi KTsKLSsgIGFzc2VydF9lcXVhbAotKyAgICBbCi0rICAgICAgVGV4dCAiYWIiOwotKyAgICAgIERl bGltICJ4IjsKLSsgICAgICBHcm91cCAoMSwgIngiKTsKLSsgICAgICBOb0dyb3VwOwotKyAgICAg IFRleHQgImNkIjsKLSsgICAgICBEZWxpbSAidSI7Ci0rICAgICAgTm9Hcm91cDsKLSsgICAgICBH cm91cCAoMiwgInUiKTsKLSsgICAgICBUZXh0ICJlZiI7Ci0rICAgIF0KLSsgICAgKGZ1bGxfc3Bs aXQgfnBhdDoiKHgpfCh1KSIgImFieGNkdWVmIikKLSsKLStsZXQgc3VpdGUgPSAiVGVzdCBwY3Jl IiA+Ojo6IFsgInNpbXBsZV90ZXN0IiA+Ojogc2ltcGxlX3Rlc3QgXQotK2xldCBfID0gaWYgbm90 ICFTeXMuaW50ZXJhY3RpdmUgdGhlbiBydW5fdGVzdF90dF9tYWluIHN1aXRlIGVsc2UgKCkKLWRp ZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3Rlc3QvcGNyZTJfdGVzdHMubWwg Yi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3Rlc3QvcGNyZTJfdGVzdHMubWwKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmZlNjAwODgxYQotLS0tIC9kZXYvbnVsbAot KysrIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC90ZXN0L3BjcmUyX3Rlc3RzLm1sCi1AQCAt MCwwICsxLDc0NiBAQAotK29wZW4gT1VuaXQyCi0rKCoqcHAgLXN5bnRheCBjYW1scDVvIC1wYWNr YWdlIHBhX3BweC5kZXJpdmluZ19wbHVnaW5zLnN0ZCAqKQotKwotK2xldCB0ZXN0X3NwZWNpYWxf Y2hhcl9yZWdleHBzIGN0eHQgPQotKyAgKCk7Ci0rICBhc3NlcnRfZXF1YWwgIlxuIgotKyAgICAo KGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOlsgYERPVEFMTCBdICJcXG4kIiBpbgot KyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAgICAgKGZ1biBfX2dfXyAtPiBQY3JlMi5nZXRf c3Vic3RyaW5nIF9fZ19fIDApCi0rICAgICAgICAgIChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9f c3Vial9fKSkKLSsgICAgICAgIlxuIik7Ci0rICBhc3NlcnRfZXF1YWwgIiIKLSsgICAgKFBjcmUy LnN1YnN0aXR1dGVfc3Vic3RyaW5nc19maXJzdAotKyAgICAgICB+cmV4OihQY3JlMi5yZWdleHAg fmZsYWdzOlsgYERPVEFMTCBdICJcXG4rJCIpCi0rICAgICAgIH5zdWJzdDooZnVuIF9fZ19fIC0+ IFN0cmluZy5jb25jYXQgIiIgW10pCi0rICAgICAgICJcblxuIikKLSsKLStsZXQgdGVzdF9wY3Jl Ml9zaW1wbGVfbWF0Y2ggY3R4dCA9Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVhbCAiYWJjIgotKyAg ICAoUGNyZTIuZ2V0X3N1YnN0cmluZwotKyAgICAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdl eHAgfmZsYWdzOltdICJhYmMiIGluCi0rICAgICAgICAgZnVuIF9fc3Vial9fIC0+IFBjcmUyLmV4 ZWMgfnJleDpfX3JlX18gX19zdWJqX18pCi0rICAgICAgICAgICJhYmMiKQotKyAgICAgICAwKTsK LSsgIGFzc2VydF9lcXVhbCAoU29tZSAiYWJjIikKLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIu cmVnZXhwIH5mbGFnczpbXSAiYWJjIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAg ICAgbWF0Y2gKLSsgICAgICAgICAgT3B0aW9uLm1hcAotKyAgICAgICAgICAgIChmdW4gX19nX18g LT4gUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwKQotKyAgICAgICAgICAgICh0cnkgU29tZSAo UGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSkK LSsgICAgICAgIHdpdGgKLSsgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lCi0r ICAgICAgICB8IHJ2IC0+IHJ2KQotKyAgICAgICAiYWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgKFNv bWUgImFiYyIpCi0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImFi YyIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4KLSsgICAgICAgIG1hdGNoCi0rICAgICAgICAg IE9wdGlvbi5tYXAKLSsgICAgICAgICAgICAoZnVuIF9fZ19fIC0+IFBjcmUyLmdldF9zdWJzdHJp bmcgX19nX18gMCkKLSsgICAgICAgICAgICAodHJ5IFNvbWUgKFBjcmUyLmV4ZWMgfnJleDpfX3Jl X18gX19zdWJqX18pIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUpCi0rICAgICAgICB3aXRoCi0rICAg ICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZQotKyAgICAgICAgfCBydiAtPiBydikK LSsgICAgICAgImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFsIHRydWUKLSsgICAgKChsZXQgX19yZV9f ID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYWJjIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAt PiBQY3JlMi5wbWF0Y2ggfnJleDpfX3JlX18gX19zdWJqX18pCi0rICAgICAgICJhYmMiKTsKLSsg IGFzc2VydF9lcXVhbCBmYWxzZQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZs YWdzOltdICJhYmMiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+IFBjcmUyLnBtYXRjaCB+cmV4 Ol9fcmVfXyBfX3N1YmpfXykKLSsgICAgICAgImFiZCIpOwotKyAgYXNzZXJ0X2VxdWFsIE5vbmUK LSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYWJjIiBpbgotKyAg ICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAgICAgbWF0Y2gKLSsgICAgICAgICAgT3B0aW9uLm1h cAotKyAgICAgICAgICAgIChmdW4gX19nX18gLT4gUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAw KQotKyAgICAgICAgICAgICh0cnkgU29tZSAoUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1Ympf Xykgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSkKLSsgICAgICAgIHdpdGgKLSsgICAgICAgIHwgZXhj ZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lCi0rICAgICAgICB8IHJ2IC0+IHJ2KQotKyAgICAgICAi YWJkIik7Ci0rICBhc3NlcnRfcmFpc2VzIE5vdF9mb3VuZCAoZnVuICgpIC0+Ci0rICAgICAgKGxl dCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhYmMiIGluCi0rICAgICAgIGZ1biBf X3N1YmpfXyAtPgotKyAgICAgICAgIChmdW4gX19nX18gLT4gUGNyZTIuZ2V0X3N1YnN0cmluZyBf X2dfXyAwKQotKyAgICAgICAgICAgKFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pKQot KyAgICAgICAgImFiZCIpOwotKyAgYXNzZXJ0X3JhaXNlcyBOb3RfZm91bmQgKGZ1biAoKSAtPgot KyAgICAgIChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYWJjIiBpbgotKyAg ICAgICBmdW4gX19zdWJqX18gLT4KLSsgICAgICAgICAoZnVuIF9fZ19fIC0+IFBjcmUyLmdldF9z dWJzdHJpbmcgX19nX18gMCkKLSsgICAgICAgICAgIChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9f c3Vial9fKSkKLSsgICAgICAgICJhYmQiKTsKLSsgIGFzc2VydF9lcXVhbCBOb25lCi0rICAgICgo bGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImFiYyIgaW4KLSsgICAgICBmdW4g X19zdWJqX18gLT4KLSsgICAgICAgIG1hdGNoCi0rICAgICAgICAgIE9wdGlvbi5tYXAKLSsgICAg ICAgICAgICAoZnVuIF9fZ19fIC0+IFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCkKLSsgICAg ICAgICAgICAodHJ5IFNvbWUgKFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pIHdpdGgg Tm90X2ZvdW5kIC0+IE5vbmUpCi0rICAgICAgICB3aXRoCi0rICAgICAgICB8IGV4Y2VwdGlvbiBO b3RfZm91bmQgLT4gTm9uZQotKyAgICAgICAgfCBydiAtPiBydikKLSsgICAgICAgImFiZCIpOwot KyAgYXNzZXJ0X2VxdWFsICJhYmMiCi0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ ZmxhZ3M6W10gImFiYyIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4KLSsgICAgICAgIChmdW4g X19nX18gLT4gUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwKQotKyAgICAgICAgICAoUGNyZTIu ZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykpCi0rICAgICAgICJhYmMiKTsKLSsgIGFzc2VydF9l cXVhbCAoImFiYyIsIFNvbWUgImIiKQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAg fmZsYWdzOltdICJhKGIpYyIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4KLSsgICAgICAgIChm dW4gX19nX18gLT4KLSsgICAgICAgICAgKCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAsCi0r ICAgICAgICAgICAgdHJ5IFNvbWUgKFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMSkgd2l0aCBO b3RfZm91bmQgLT4gTm9uZSApKQotKyAgICAgICAgICAoUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBf X3N1YmpfXykpCi0rICAgICAgICJhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCAoImFjIiwgTm9uZSkK LSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYSg/OihiKT8pYyIg aW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4KLSsgICAgICAgIChmdW4gX19nX18gLT4KLSsgICAg ICAgICAgKCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAsCi0rICAgICAgICAgICAgdHJ5IFNv bWUgKFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSAp KQotKyAgICAgICAgICAoUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykpCi0rICAgICAg ICJhYyIpOwotKyAgYXNzZXJ0X2VxdWFsICJhYmMiCi0rICAgIChQY3JlMi5nZXRfc3Vic3RyaW5n Ci0rICAgICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6WyBgQ0FTRUxFU1Mg XSAiQUJDIiBpbgotKyAgICAgICAgIGZ1biBfX3N1YmpfXyAtPiBQY3JlMi5leGVjIH5yZXg6X19y ZV9fIF9fc3Vial9fKQotKyAgICAgICAgICAiYWJjIikKLSsgICAgICAgMCk7Ci0rICBhc3NlcnRf ZXF1YWwKLSsgICAgKCJhYmMiLCBTb21lICJhIiwgU29tZSAiYiIsIFNvbWUgImMiKQotKyAgICAo KGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICIoYSkoYikoYykiIGluCi0rICAg ICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICAoZnVuIF9fZ19fIC0+Ci0rICAgICAgICAgICgg UGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwLAotKyAgICAgICAgICAgICh0cnkgU29tZSAoUGNy ZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKSwKLSsgICAg ICAgICAgICAodHJ5IFNvbWUgKFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMikgd2l0aCBOb3Rf Zm91bmQgLT4gTm9uZSksCi0rICAgICAgICAgICAgdHJ5IFNvbWUgKFBjcmUyLmdldF9zdWJzdHJp bmcgX19nX18gMykgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSApKQotKyAgICAgICAgICAoUGNyZTIu ZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykpCi0rICAgICAgICJhYmMiKQotKwotK2xldCB0ZXN0 X3BjcmUyX3NlbGVjdGl2ZV9tYXRjaCBjdHh0ID0KLSsgICgpOwotKyAgYXNzZXJ0X2VxdWFsICgi YWJjIiwgU29tZSAiYiIpCi0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6 W10gImEoYiljIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAgICAgKGZ1biBfX2df XyAtPgotKyAgICAgICAgICAoIFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCwKLSsgICAgICAg ICAgICB0cnkgU29tZSAoUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxKSB3aXRoIE5vdF9mb3Vu ZCAtPiBOb25lICkpCi0rICAgICAgICAgIChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9f KSkKLSsgICAgICAgImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICgiYWJjIiwgImIiKQotKyAgICAo KGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhKGIpYyIgaW4KLSsgICAgICBm dW4gX19zdWJqX18gLT4KLSsgICAgICAgIChmdW4gX19nX18gLT4KLSsgICAgICAgICAgKFBjcmUy LmdldF9zdWJzdHJpbmcgX19nX18gMCwgUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxKSkKLSsg ICAgICAgICAgKFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pKQotKyAgICAgICAiYWJj Iik7Ci0rICBhc3NlcnRfZXF1YWwgImIiCi0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4 cCB+ZmxhZ3M6W10gImEoYiljIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAgICAg KGZ1biBfX2dfXyAtPiBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDEpCi0rICAgICAgICAgIChQ Y3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKSkKLSsgICAgICAgImFiYyIpOwotKyAgYXNz ZXJ0X2VxdWFsCi0rICAgIChTb21lICgiYWJjIiwgImIiKSkKLSsgICAgKChsZXQgX19yZV9fID0g UGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYShiKWMiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+ Ci0rICAgICAgICBtYXRjaAotKyAgICAgICAgICBPcHRpb24ubWFwCi0rICAgICAgICAgICAgKGZ1 biBfX2dfXyAtPgotKyAgICAgICAgICAgICAgKFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCwg UGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxKSkKLSsgICAgICAgICAgICAodHJ5IFNvbWUgKFBj cmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUpCi0r ICAgICAgICB3aXRoCi0rICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZQotKyAg ICAgICAgfCBydiAtPiBydikKLSsgICAgICAgImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICgiYWMi LCBOb25lKQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhKGIp P2MiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICAoZnVuIF9fZ19fIC0+Ci0r ICAgICAgICAgICggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwLAotKyAgICAgICAgICAgIHRy eSBTb21lIChQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDEpIHdpdGggTm90X2ZvdW5kIC0+IE5v bmUgKSkKLSsgICAgICAgICAgKFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pKQotKyAg ICAgICAiYWMiKTsKLSsgIGFzc2VydF9yYWlzZXMgTm90X2ZvdW5kIChmdW4gXyAtPgotKyAgICAg IChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYShiKT9jIiBpbgotKyAgICAg ICBmdW4gX19zdWJqX18gLT4KLSsgICAgICAgICAoZnVuIF9fZ19fIC0+Ci0rICAgICAgICAgICAo UGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwLCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDEp KQotKyAgICAgICAgICAgKFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pKQotKyAgICAg ICAgImFjIik7Ci0rICBhc3NlcnRfZXF1YWwgTm9uZQotKyAgICAoKGxldCBfX3JlX18gPSBQY3Jl Mi5yZWdleHAgfmZsYWdzOltdICJhKGIpP2MiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+Ci0r ICAgICAgICBtYXRjaAotKyAgICAgICAgICBPcHRpb24ubWFwCi0rICAgICAgICAgICAgKGZ1biBf X2dfXyAtPgotKyAgICAgICAgICAgICAgKFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCwgUGNy ZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxKSkKLSsgICAgICAgICAgICAodHJ5IFNvbWUgKFBjcmUy LmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUpCi0rICAg ICAgICB3aXRoCi0rICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZQotKyAgICAg ICAgfCBydiAtPiBydikKLSsgICAgICAgImFjIikKLSsKLStsZXQgdGVzdF9wY3JlMl9zZWFyY2gg Y3R4dCA9Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVhbCAiYWJjIgotKyAgICAoKGxldCBfX3JlX18g PSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhYmMiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+ Ci0rICAgICAgICAoZnVuIF9fZ19fIC0+IFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCkKLSsg ICAgICAgICAgKFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pKQotKyAgICAgICAienp6 YWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgTm9uZQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5y ZWdleHAgfmZsYWdzOltdICJeYWJjIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAg ICAgbWF0Y2gKLSsgICAgICAgICAgT3B0aW9uLm1hcAotKyAgICAgICAgICAgIChmdW4gX19nX18g LT4gUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwKQotKyAgICAgICAgICAgICh0cnkgU29tZSAo UGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSkK LSsgICAgICAgIHdpdGgKLSsgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lCi0r ICAgICAgICB8IHJ2IC0+IHJ2KQotKyAgICAgICAienp6YWJjIikKLSsKLStsZXQgc2hvd19zdHJp bmdfb3B0aW9uID0gZnVuY3Rpb24KLSsgIHwgTm9uZSAtPiAiTm9uZSIKLSsgIHwgU29tZSBzIC0+ IFByaW50Zi5zcHJpbnRmICJTb21lICVzIiBzCi0rCi0rbGV0IHRlc3RfcGNyZTJfc2luZ2xlIGN0 eHQgPQotKyAgbGV0IHByaW50ZXIgPSBzaG93X3N0cmluZ19vcHRpb24gaW4KLSsgICgpOwotKyAg YXNzZXJ0X2VxdWFsIH5wcmludGVyIE5vbmUKLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVn ZXhwIH5mbGFnczpbXSAiLisiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICBt YXRjaAotKyAgICAgICAgICBPcHRpb24ubWFwCi0rICAgICAgICAgICAgKGZ1biBfX2dfXyAtPiBQ Y3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDApCi0rICAgICAgICAgICAgKHRyeSBTb21lIChQY3Jl Mi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKQotKyAg ICAgICAgd2l0aAotKyAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUKLSsgICAg ICAgIHwgcnYgLT4gcnYpCi0rICAgICAgICJcblxuIik7Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50 ZXIgTm9uZQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOlsgYE1VTFRJ TElORSBdICIuKyIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4KLSsgICAgICAgIG1hdGNoCi0r ICAgICAgICAgIE9wdGlvbi5tYXAKLSsgICAgICAgICAgICAoZnVuIF9fZ19fIC0+IFBjcmUyLmdl dF9zdWJzdHJpbmcgX19nX18gMCkKLSsgICAgICAgICAgICAodHJ5IFNvbWUgKFBjcmUyLmV4ZWMg fnJleDpfX3JlX18gX19zdWJqX18pIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUpCi0rICAgICAgICB3 aXRoCi0rICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZQotKyAgICAgICAgfCBy diAtPiBydikKLSsgICAgICAgIlxuXG4iKTsKLSsgIGFzc2VydF9lcXVhbCB+cHJpbnRlciBOb25l Ci0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gIi4rIiBpbgotKyAg ICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAgICAgbWF0Y2gKLSsgICAgICAgICAgT3B0aW9uLm1h cAotKyAgICAgICAgICAgIChmdW4gX19nX18gLT4gUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAw KQotKyAgICAgICAgICAgICh0cnkgU29tZSAoUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1Ympf Xykgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSkKLSsgICAgICAgIHdpdGgKLSsgICAgICAgIHwgZXhj ZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lCi0rICAgICAgICB8IHJ2IC0+IHJ2KQotKyAgICAgICAi XG5cbiIpOwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyIChTb21lICJcblxuIikKLSsgICAgKChs ZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbIGBET1RBTEwgXSAiLisiIGluCi0rICAg ICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICBtYXRjaAotKyAgICAgICAgICBPcHRpb24ubWFw Ci0rICAgICAgICAgICAgKGZ1biBfX2dfXyAtPiBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAp Ci0rICAgICAgICAgICAgKHRyeSBTb21lIChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9f KSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKQotKyAgICAgICAgd2l0aAotKyAgICAgICAgfCBleGNl cHRpb24gTm90X2ZvdW5kIC0+IE5vbmUKLSsgICAgICAgIHwgcnYgLT4gcnYpCi0rICAgICAgICJc blxuIik7Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgTm9uZQotKyAgICAoKGxldCBfX3JlX18g PSBQY3JlMi5yZWdleHAgfmZsYWdzOlsgYE1VTFRJTElORSBdICIuKyIgaW4KLSsgICAgICBmdW4g X19zdWJqX18gLT4KLSsgICAgICAgIG1hdGNoCi0rICAgICAgICAgIE9wdGlvbi5tYXAKLSsgICAg ICAgICAgICAoZnVuIF9fZ19fIC0+IFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCkKLSsgICAg ICAgICAgICAodHJ5IFNvbWUgKFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pIHdpdGgg Tm90X2ZvdW5kIC0+IE5vbmUpCi0rICAgICAgICB3aXRoCi0rICAgICAgICB8IGV4Y2VwdGlvbiBO b3RfZm91bmQgLT4gTm9uZQotKyAgICAgICAgfCBydiAtPiBydikKLSsgICAgICAgIlxuXG4iKTsK LSsgIGxldCBwcmludGVyIHggPSB4IGluCi0rICAoKTsKLSsgIGFzc2VydF9lcXVhbCB+cHJpbnRl ciAiXG5cbiIKLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbIGBET1RB TEwgXSAiLisiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICAoZnVuIF9fZ19f IC0+IFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCkKLSsgICAgICAgICAgKFBjcmUyLmV4ZWMg fnJleDpfX3JlX18gX19zdWJqX18pKQotKyAgICAgICAiXG5cbiIpOwotKyAgYXNzZXJ0X2VxdWFs IH5wcmludGVyICI8PGFiYz4+XG5kZWYiCi0rICAgIChQY3JlMi5zdWJzdGl0dXRlX3N1YnN0cmlu Z3NfZmlyc3QKLSsgICAgICAgfnJleDooUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiLisiKQotKyAg ICAgICB+c3Vic3Q6KGZ1biBfX2dfXyAtPgotKyAgICAgICAgIFN0cmluZy5jb25jYXQgIiIKLSsg ICAgICAgICAgIFsKLSsgICAgICAgICAgICAgIjw8IjsKLSsgICAgICAgICAgICAgKG1hdGNoIFBj cmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCB3aXRoCi0rICAgICAgICAgICAgIHwgZXhjZXB0aW9u IE5vdF9mb3VuZCAtPiAiIgotKyAgICAgICAgICAgICB8IHMgLT4gcyk7Ci0rICAgICAgICAgICAg ICI+PiI7Ci0rICAgICAgICAgICBdKQotKyAgICAgICAiYWJjXG5kZWYiKTsKLSsgIGFzc2VydF9l cXVhbCB+cHJpbnRlciAiPDxhYmNcbmRlZj4+IgotKyAgICAoUGNyZTIuc3Vic3RpdHV0ZV9zdWJz dHJpbmdzX2ZpcnN0Ci0rICAgICAgIH5yZXg6KFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6WyBgRE9UQUxM IF0gIi4rIikKLSsgICAgICAgfnN1YnN0OihmdW4gX19nX18gLT4KLSsgICAgICAgICBTdHJpbmcu Y29uY2F0ICIiCi0rICAgICAgICAgICBbCi0rICAgICAgICAgICAgICI8PCI7Ci0rICAgICAgICAg ICAgIChtYXRjaCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAgd2l0aAotKyAgICAgICAgICAg ICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gIiIKLSsgICAgICAgICAgICAgfCBzIC0+IHMpOwot KyAgICAgICAgICAgICAiPj4iOwotKyAgICAgICAgICAgXSkKLSsgICAgICAgImFiY1xuZGVmIik7 Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgIjw8YWJjPj5cbmRlZiIKLSsgICAgKFBjcmUyLnN1 YnN0aXR1dGVfc3Vic3RyaW5nc19maXJzdAotKyAgICAgICB+cmV4OihQY3JlMi5yZWdleHAgfmZs YWdzOlsgYE1VTFRJTElORSBdICIuKyIpCi0rICAgICAgIH5zdWJzdDooZnVuIF9fZ19fIC0+Ci0r ICAgICAgICAgU3RyaW5nLmNvbmNhdCAiIgotKyAgICAgICAgICAgWwotKyAgICAgICAgICAgICAi PDwiOwotKyAgICAgICAgICAgICAobWF0Y2ggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwIHdp dGgKLSsgICAgICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+ICIiCi0rICAgICAgICAg ICAgIHwgcyAtPiBzKTsKLSsgICAgICAgICAgICAgIj4+IjsKLSsgICAgICAgICAgIF0pCi0rICAg ICAgICJhYmNcbmRlZiIpOwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyICI8PGFiYz4+XG5kZWYi Ci0rICAgIChQY3JlMi5zdWJzdGl0dXRlX3N1YnN0cmluZ3NfZmlyc3QKLSsgICAgICAgfnJleDoo UGNyZTIucmVnZXhwIH5mbGFnczpbXSAiLioiKQotKyAgICAgICB+c3Vic3Q6KGZ1biBfX2dfXyAt PgotKyAgICAgICAgIFN0cmluZy5jb25jYXQgIiIKLSsgICAgICAgICAgIFsKLSsgICAgICAgICAg ICAgIjw8IjsKLSsgICAgICAgICAgICAgKG1hdGNoIFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18g MCB3aXRoCi0rICAgICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAiIgotKyAgICAg ICAgICAgICB8IHMgLT4gcyk7Ci0rICAgICAgICAgICAgICI+PiI7Ci0rICAgICAgICAgICBdKQot KyAgICAgICAiYWJjXG5kZWYiKTsKLSsgIGFzc2VydF9lcXVhbCB+cHJpbnRlciAiPDxhYmM+Pjw8 Pj5cbjw8ZGVmPj48PD4+IgotKyAgICAoUGNyZTIuc3Vic3RpdHV0ZV9zdWJzdHJpbmdzCi0rICAg ICAgIH5yZXg6KFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gIi4qIikKLSsgICAgICAgfnN1YnN0Oihm dW4gX19nX18gLT4KLSsgICAgICAgICBTdHJpbmcuY29uY2F0ICIiCi0rICAgICAgICAgICBbCi0r ICAgICAgICAgICAgICI8PCI7Ci0rICAgICAgICAgICAgIChtYXRjaCBQY3JlMi5nZXRfc3Vic3Ry aW5nIF9fZ19fIDAgd2l0aAotKyAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4g IiIKLSsgICAgICAgICAgICAgfCBzIC0+IHMpOwotKyAgICAgICAgICAgICAiPj4iOwotKyAgICAg ICAgICAgXSkKLSsgICAgICAgImFiY1xuZGVmIik7Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50ZXIg Ijw8YWJjPj5cbjw8ZGVmPj4iCi0rICAgIChQY3JlMi5zdWJzdGl0dXRlX3N1YnN0cmluZ3MKLSsg ICAgICAgfnJleDooUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiLisiKQotKyAgICAgICB+c3Vic3Q6 KGZ1biBfX2dfXyAtPgotKyAgICAgICAgIFN0cmluZy5jb25jYXQgIiIKLSsgICAgICAgICAgIFsK LSsgICAgICAgICAgICAgIjw8IjsKLSsgICAgICAgICAgICAgKG1hdGNoIFBjcmUyLmdldF9zdWJz dHJpbmcgX19nX18gMCB3aXRoCi0rICAgICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAt PiAiIgotKyAgICAgICAgICAgICB8IHMgLT4gcyk7Ci0rICAgICAgICAgICAgICI+PiI7Ci0rICAg ICAgICAgICBdKQotKyAgICAgICAiYWJjXG5kZWYiKTsKLSsgIGFzc2VydF9lcXVhbCB+cHJpbnRl ciAiPDxhYmM+PmFcbmM8PGFlYz4+IgotKyAgICAoUGNyZTIuc3Vic3RpdHV0ZV9zdWJzdHJpbmdz Ci0rICAgICAgIH5yZXg6KFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImEuYyIpCi0rICAgICAgIH5z dWJzdDooZnVuIF9fZ19fIC0+Ci0rICAgICAgICAgU3RyaW5nLmNvbmNhdCAiIgotKyAgICAgICAg ICAgWwotKyAgICAgICAgICAgICAiPDwiOwotKyAgICAgICAgICAgICAobWF0Y2ggUGNyZTIuZ2V0 X3N1YnN0cmluZyBfX2dfXyAwIHdpdGgKLSsgICAgICAgICAgICAgfCBleGNlcHRpb24gTm90X2Zv dW5kIC0+ICIiCi0rICAgICAgICAgICAgIHwgcyAtPiBzKTsKLSsgICAgICAgICAgICAgIj4+IjsK LSsgICAgICAgICAgIF0pCi0rICAgICAgICJhYmNhXG5jYWVjIik7Ci0rICBhc3NlcnRfZXF1YWwg fnByaW50ZXIgIjw8YWJjPj48PGFcbmM+Pjw8YWVjPj4iCi0rICAgIChQY3JlMi5zdWJzdGl0dXRl X3N1YnN0cmluZ3MKLSsgICAgICAgfnJleDooUGNyZTIucmVnZXhwIH5mbGFnczpbIGBET1RBTEwg XSAiYS5jIikKLSsgICAgICAgfnN1YnN0OihmdW4gX19nX18gLT4KLSsgICAgICAgICBTdHJpbmcu Y29uY2F0ICIiCi0rICAgICAgICAgICBbCi0rICAgICAgICAgICAgICI8PCI7Ci0rICAgICAgICAg ICAgIChtYXRjaCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAgd2l0aAotKyAgICAgICAgICAg ICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gIiIKLSsgICAgICAgICAgICAgfCBzIC0+IHMpOwot KyAgICAgICAgICAgICAiPj4iOwotKyAgICAgICAgICAgXSkKLSsgICAgICAgImFiY2FcbmNhZWMi KQotKwotK2xldCB0ZXN0X3BjcmUyX211bHRpbGluZSBjdHh0ID0KLSsgICgpOwotKyAgYXNzZXJ0 X2VxdWFsIChTb21lICJiYXIiKQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZs YWdzOltdICIuKyQiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICBtYXRjaAot KyAgICAgICAgICBPcHRpb24ubWFwCi0rICAgICAgICAgICAgKGZ1biBfX2dfXyAtPiBQY3JlMi5n ZXRfc3Vic3RyaW5nIF9fZ19fIDApCi0rICAgICAgICAgICAgKHRyeSBTb21lIChQY3JlMi5leGVj IH5yZXg6X19yZV9fIF9fc3Vial9fKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKQotKyAgICAgICAg d2l0aAotKyAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUKLSsgICAgICAgIHwg cnYgLT4gcnYpCi0rICAgICAgICJmb29cbmJhciIpOwotKyAgYXNzZXJ0X2VxdWFsIChTb21lICJm b28iKQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOlsgYE1VTFRJTElO RSBdICIuKyQiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICBtYXRjaAotKyAg ICAgICAgICBPcHRpb24ubWFwCi0rICAgICAgICAgICAgKGZ1biBfX2dfXyAtPiBQY3JlMi5nZXRf c3Vic3RyaW5nIF9fZ19fIDApCi0rICAgICAgICAgICAgKHRyeSBTb21lIChQY3JlMi5leGVjIH5y ZXg6X19yZV9fIF9fc3Vial9fKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKQotKyAgICAgICAgd2l0 aAotKyAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUKLSsgICAgICAgIHwgcnYg LT4gcnYpCi0rICAgICAgICJmb29cbmJhciIpCi0rCi0rbGV0IHRlc3RfcGNyZTJfc2ltcGxlX3Nw bGl0IGN0eHQgPQotKyAgKCk7Ci0rICBhc3NlcnRfZXF1YWwgWyAiYmIiIF0KLSsgICAgKChsZXQg X19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYSIgaW4KLSsgICAgICBmdW4gX19zdWJq X18gLT4gUGNyZTIuc3BsaXQgfnJleDpfX3JlX18gX19zdWJqX18pCi0rICAgICAgICJiYiIpCi0r Ci0rbGV0IHRlc3RfcGNyZTJfZGVsaW1fc3BsaXRfcmF3IGN0eHQgPQotKyAgbGV0IG9wZW4gUGNy ZTIgaW4KLSsgICgpOwotKyAgYXNzZXJ0X2VxdWFsCi0rICAgIFsgRGVsaW0gImEiOyBUZXh0ICJi IjsgRGVsaW0gImEiOyBUZXh0ICJiIiBdCi0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4 cCB+ZmxhZ3M6W10gImEiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+IFBjcmUyLmZ1bGxfc3Bs aXQgfnJleDpfX3JlX18gX19zdWJqX18pCi0rICAgICAgICJhYmFiYSIpOwotKyAgYXNzZXJ0X2Vx dWFsCi0rICAgIFsgRGVsaW0gImEiOyBUZXh0ICJiIjsgRGVsaW0gImEiOyBEZWxpbSAiYSI7IFRl eHQgImIiIF0KLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYSIg aW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4gUGNyZTIuZnVsbF9zcGxpdCB+cmV4Ol9fcmVfXyBf X3N1YmpfXykKLSsgICAgICAgImFiYWFiYSIpOwotKyAgYXNzZXJ0X2VxdWFsCi0rICAgIFsKLSsg ICAgICBEZWxpbSAiYSI7Ci0rICAgICAgTm9Hcm91cDsKLSsgICAgICBUZXh0ICJiIjsKLSsgICAg ICBEZWxpbSAiYWMiOwotKyAgICAgIEdyb3VwICgxLCAiYyIpOwotKyAgICAgIFRleHQgImIiOwot KyAgICAgIERlbGltICJhIjsKLSsgICAgICBOb0dyb3VwOwotKyAgICBdCi0rICAgICgobGV0IF9f cmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImEoYyk/IiBpbgotKyAgICAgIGZ1biBfX3N1 YmpfXyAtPiBQY3JlMi5mdWxsX3NwbGl0IH5yZXg6X19yZV9fIF9fc3Vial9fKQotKyAgICAgICAi YWJhY2JhIik7Ci0rICBhc3NlcnRfZXF1YWwKLSsgICAgWwotKyAgICAgIERlbGltICJhYyI7Ci0r ICAgICAgR3JvdXAgKDEsICJjIik7Ci0rICAgICAgVGV4dCAiYiI7Ci0rICAgICAgRGVsaW0gImFj IjsKLSsgICAgICBHcm91cCAoMSwgImMiKTsKLSsgICAgICBUZXh0ICJiIjsKLSsgICAgICBEZWxp bSAiYWMiOwotKyAgICAgIEdyb3VwICgxLCAiYyIpOwotKyAgICBdCi0rICAgICgobGV0IF9fcmVf XyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImEoYykiIGluCi0rICAgICAgZnVuIF9fc3Vial9f IC0+IFBjcmUyLmZ1bGxfc3BsaXQgfnJleDpfX3JlX18gX19zdWJqX18pCi0rICAgICAgICJhY2Jh Y2JhYyIpOwotKyAgYXNzZXJ0X2VxdWFsCi0rICAgIFsKLSsgICAgICBEZWxpbSAiYWMiOwotKyAg ICAgIEdyb3VwICgxLCAiYyIpOwotKyAgICAgIFRleHQgImIiOwotKyAgICAgIERlbGltICJhYyI7 Ci0rICAgICAgR3JvdXAgKDEsICJjIik7Ci0rICAgICAgVGV4dCAiYiI7Ci0rICAgICAgRGVsaW0g ImFjIjsKLSsgICAgICBHcm91cCAoMSwgImMiKTsKLSsgICAgXQotKyAgICAoKGxldCBfX3JlX18g PSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhKGMpIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAt PiBQY3JlMi5mdWxsX3NwbGl0IH5yZXg6X19yZV9fIF9fc3Vial9fKQotKyAgICAgICAiYWNiYWNi YWMiKTsKLSsgIGFzc2VydF9lcXVhbAotKyAgICBbCi0rICAgICAgRGVsaW0gImEiOwotKyAgICAg IE5vR3JvdXA7Ci0rICAgICAgVGV4dCAiYiI7Ci0rICAgICAgRGVsaW0gImFjIjsKLSsgICAgICBH cm91cCAoMSwgImMiKTsKLSsgICAgICBUZXh0ICJiIjsKLSsgICAgICBEZWxpbSAiYSI7Ci0rICAg ICAgTm9Hcm91cDsKLSsgICAgXQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZs YWdzOltdICJhKGMpPyIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4gUGNyZTIuZnVsbF9zcGxp dCB+cmV4Ol9fcmVfXyBfX3N1YmpfXykKLSsgICAgICAgImFiYWNiYSIpOwotKyAgYXNzZXJ0X2Vx dWFsCi0rICAgIFsgVGV4dCAiYWIiOyBEZWxpbSAieCI7IEdyb3VwICgxLCAieCIpOyBOb0dyb3Vw OyBUZXh0ICJjZCIgXQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltd ICIoeCl8KHUpIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPiBQY3JlMi5mdWxsX3NwbGl0IH5y ZXg6X19yZV9fIF9fc3Vial9fKQotKyAgICAgICAiYWJ4Y2QiKTsKLSsgIGFzc2VydF9lcXVhbAot KyAgICBbCi0rICAgICAgVGV4dCAiYWIiOwotKyAgICAgIERlbGltICJ4IjsKLSsgICAgICBHcm91 cCAoMSwgIngiKTsKLSsgICAgICBOb0dyb3VwOwotKyAgICAgIFRleHQgImNkIjsKLSsgICAgICBE ZWxpbSAidSI7Ci0rICAgICAgTm9Hcm91cDsKLSsgICAgICBHcm91cCAoMiwgInUiKTsKLSsgICAg XQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICIoeCl8KHUpIiBp bgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPiBQY3JlMi5mdWxsX3NwbGl0IH5yZXg6X19yZV9fIF9f c3Vial9fKQotKyAgICAgICAiYWJ4Y2R1IikKLSsKLStsZXQgdGVzdF9wY3JlMl9zdHJpbmdfcGF0 dGVybiBjdHh0ID0KLSsgICgpOwotKyAgYXNzZXJ0X2VxdWFsICIkYiIKLSsgICAgKChmdW4gX19n X18gLT4KLSsgICAgICAgU3RyaW5nLmNvbmNhdCAiIgotKyAgICAgICAgIFsKLSsgICAgICAgICAg ICIkIjsKLSsgICAgICAgICAgICIiOwotKyAgICAgICAgICAgKG1hdGNoIFBjcmUyLmdldF9zdWJz dHJpbmcgX19nX18gMSB3aXRoCi0rICAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4g IiIKLSsgICAgICAgICAgIHwgcyAtPiBzKTsKLSsgICAgICAgICBdKQotKyAgICAgICAoKGxldCBf X3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhKGIpYyIgaW4KLSsgICAgICAgICBmdW4g X19zdWJqX18gLT4gUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykKLSsgICAgICAgICAg ImFiYyIpKTsKLSsgIGFzc2VydF9lcXVhbCAiYiIKLSsgICAgKChmdW4gX19nX18gLT4KLSsgICAg ICAgU3RyaW5nLmNvbmNhdCAiIgotKyAgICAgICAgIFsKLSsgICAgICAgICAgIChtYXRjaCBQY3Jl Mi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAxIHdpdGgKLSsgICAgICAgICAgIHwgZXhjZXB0aW9uIE5v dF9mb3VuZCAtPiAiIgotKyAgICAgICAgICAgfCBzIC0+IHMpOwotKyAgICAgICAgIF0pCi0rICAg ICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImEoYiljIiBpbgotKyAg ICAgICAgIGZ1biBfX3N1YmpfXyAtPiBQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKQot KyAgICAgICAgICAiYWJjIikpOwotKyAgYXNzZXJ0X2VxdWFsICJieCIKLSsgICAgKGxldCBzID0g IngiIGluCi0rICAgICAoZnVuIF9fZ19fIC0+Ci0rICAgICAgIFN0cmluZy5jb25jYXQgIiIKLSsg ICAgICAgICBbCi0rICAgICAgICAgICAobWF0Y2ggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAw MSB3aXRoCi0rICAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gIiIKLSsgICAgICAg ICAgIHwgcyAtPiBzKTsKLSsgICAgICAgICAgICIiOwotKyAgICAgICAgICAgczsKLSsgICAgICAg ICBdKQotKyAgICAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhKGIp YyIgaW4KLSsgICAgICAgICBmdW4gX19zdWJqX18gLT4gUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBf X3N1YmpfXykKLSsgICAgICAgICAgImFiYyIpKTsKLSsgIGFzc2VydF9lcXVhbCAiXCJieCIKLSsg ICAgKGxldCBzID0gIngiIGluCi0rICAgICAoZnVuIF9fZ19fIC0+Ci0rICAgICAgIFN0cmluZy5j b25jYXQgIiIKLSsgICAgICAgICBbCi0rICAgICAgICAgICAiXCIiOwotKyAgICAgICAgICAgKG1h dGNoIFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMDEgd2l0aAotKyAgICAgICAgICAgfCBleGNl cHRpb24gTm90X2ZvdW5kIC0+ICIiCi0rICAgICAgICAgICB8IHMgLT4gcyk7Ci0rICAgICAgICAg ICAiIjsKLSsgICAgICAgICAgIHM7Ci0rICAgICAgICAgXSkKLSsgICAgICAgKChsZXQgX19yZV9f ID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYShiKWMiIGluCi0rICAgICAgICAgZnVuIF9fc3Vi al9fIC0+IFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pCi0rICAgICAgICAgICJhYmMi KSk7Ci0rICBhc3NlcnRfZXF1YWwgIlwieCIKLSsgICAgKGxldCBzID0gIngiIGluCi0rICAgICBT dHJpbmcuY29uY2F0ICIiIFsgIlwiIjsgcyBdKQotKwotK2xldCB0ZXN0X3BjcmUyX2V4cHJfcGF0 dGVybiBjdHh0ID0KLSsgICgpOwotKyAgYXNzZXJ0X2VxdWFsICJhYmMiCi0rICAgICgoZnVuIF9f Z19fIC0+Ci0rICAgICAgIG1hdGNoIFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCB3aXRoCi0r ICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAiIgotKyAgICAgICB8IHMgLT4gcykKLSsg ICAgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYWJjIiBpbgotKyAg ICAgICAgIGZ1biBfX3N1YmpfXyAtPiBQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKQot KyAgICAgICAgICAiYWJjIikpOwotKyAgYXNzZXJ0X2VxdWFsICJhYmN4IgotKyAgICAoKGZ1biBf X2dfXyAtPgotKyAgICAgICAobWF0Y2ggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwIHdpdGgK LSsgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+ICIiCi0rICAgICAgIHwgcyAtPiBzKQot KyAgICAgICBeICJ4IikKLSsgICAgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFn czpbXSAiYWJjIiBpbgotKyAgICAgICAgIGZ1biBfX3N1YmpfXyAtPiBQY3JlMi5leGVjIH5yZXg6 X19yZV9fIF9fc3Vial9fKQotKyAgICAgICAgICAiYWJjIikpOwotKyAgYXNzZXJ0X2VxdWFsICJh YmN4IgotKyAgICAobGV0IHggPSAieCIgaW4KLSsgICAgIChmdW4gX19nX18gLT4KLSsgICAgICAg KG1hdGNoIFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCB3aXRoCi0rICAgICAgIHwgZXhjZXB0 aW9uIE5vdF9mb3VuZCAtPiAiIgotKyAgICAgICB8IHMgLT4gcykKLSsgICAgICAgXiB4KQotKyAg ICAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhYmMiIGluCi0rICAg ICAgICAgZnVuIF9fc3Vial9fIC0+IFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pCi0r ICAgICAgICAgICJhYmMiKSk7Ci0rICBhc3NlcnRfZXF1YWwgIngiCi0rICAgIChsZXQgeCA9ICJ4 IiBpbgotKyAgICAgIiIgXiB4KQotKwotK2xldCB0ZXN0X3BjcmUyX3N1YnN0IGN0eHQgPQotKyAg KCk7Ci0rICBhc3NlcnRfZXF1YWwgIiRiIgotKyAgICAoUGNyZTIuc3Vic3RpdHV0ZV9zdWJzdHJp bmdzX2ZpcnN0Ci0rICAgICAgIH5yZXg6KFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImEoYiljIikK LSsgICAgICAgfnN1YnN0OihmdW4gX19nX18gLT4KLSsgICAgICAgICBTdHJpbmcuY29uY2F0ICIi Ci0rICAgICAgICAgICBbCi0rICAgICAgICAgICAgICIkIjsKLSsgICAgICAgICAgICAgIiI7Ci0r ICAgICAgICAgICAgIChtYXRjaCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDEgd2l0aAotKyAg ICAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gIiIKLSsgICAgICAgICAgICAgfCBz IC0+IHMpOwotKyAgICAgICAgICAgXSkKLSsgICAgICAgImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFs ICIkYiIKLSsgICAgKFBjcmUyLnN1YnN0aXR1dGVfc3Vic3RyaW5nc19maXJzdAotKyAgICAgICB+ cmV4OihQY3JlMi5yZWdleHAgfmZsYWdzOlsgYENBU0VMRVNTIF0gIkEoQilDIikKLSsgICAgICAg fnN1YnN0OihmdW4gX19nX18gLT4KLSsgICAgICAgICBTdHJpbmcuY29uY2F0ICIiCi0rICAgICAg ICAgICBbCi0rICAgICAgICAgICAgICIkIjsKLSsgICAgICAgICAgICAgIiI7Ci0rICAgICAgICAg ICAgIChtYXRjaCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDEgd2l0aAotKyAgICAgICAgICAg ICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gIiIKLSsgICAgICAgICAgICAgfCBzIC0+IHMpOwot KyAgICAgICAgICAgXSkKLSsgICAgICAgImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICIkYmFiYyIK LSsgICAgKFBjcmUyLnN1YnN0aXR1dGVfc3Vic3RyaW5nc19maXJzdAotKyAgICAgICB+cmV4OihQ Y3JlMi5yZWdleHAgfmZsYWdzOlsgYENBU0VMRVNTIF0gIkEoQilDIikKLSsgICAgICAgfnN1YnN0 OihmdW4gX19nX18gLT4KLSsgICAgICAgICBTdHJpbmcuY29uY2F0ICIiCi0rICAgICAgICAgICBb Ci0rICAgICAgICAgICAgICIkIjsKLSsgICAgICAgICAgICAgIiI7Ci0rICAgICAgICAgICAgICht YXRjaCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDEgd2l0aAotKyAgICAgICAgICAgICB8IGV4 Y2VwdGlvbiBOb3RfZm91bmQgLT4gIiIKLSsgICAgICAgICAgICAgfCBzIC0+IHMpOwotKyAgICAg ICAgICAgXSkKLSsgICAgICAgImFiY2FiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICIkYiRiIgotKyAg ICAoUGNyZTIuc3Vic3RpdHV0ZV9zdWJzdHJpbmdzCi0rICAgICAgIH5yZXg6KFBjcmUyLnJlZ2V4 cCB+ZmxhZ3M6WyBgQ0FTRUxFU1MgXSAiQShCKUMiKQotKyAgICAgICB+c3Vic3Q6KGZ1biBfX2df XyAtPgotKyAgICAgICAgIFN0cmluZy5jb25jYXQgIiIKLSsgICAgICAgICAgIFsKLSsgICAgICAg ICAgICAgIiQiOwotKyAgICAgICAgICAgICAiIjsKLSsgICAgICAgICAgICAgKG1hdGNoIFBjcmUy LmdldF9zdWJzdHJpbmcgX19nX18gMSB3aXRoCi0rICAgICAgICAgICAgIHwgZXhjZXB0aW9uIE5v dF9mb3VuZCAtPiAiIgotKyAgICAgICAgICAgICB8IHMgLT4gcyk7Ci0rICAgICAgICAgICBdKQot KyAgICAgICAiYWJjYWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgIiRiJGIiCi0rICAgIChQY3JlMi5z dWJzdGl0dXRlX3N1YnN0cmluZ3MKLSsgICAgICAgfnJleDooUGNyZTIucmVnZXhwIH5mbGFnczpb IGBDQVNFTEVTUyBdICJBKEIpQyIpCi0rICAgICAgIH5zdWJzdDooZnVuIF9fZ19fIC0+Ci0rICAg ICAgICAgIiQiCi0rICAgICAgICAgXgotKyAgICAgICAgIG1hdGNoIFBjcmUyLmdldF9zdWJzdHJp bmcgX19nX18gMSB3aXRoCi0rICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+ICIiCi0r ICAgICAgICAgfCBzIC0+IHMpCi0rICAgICAgICJhYmNhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCAi JCQiCi0rICAgIChQY3JlMi5zdWJzdGl0dXRlX3N1YnN0cmluZ3MKLSsgICAgICAgfnJleDooUGNy ZTIucmVnZXhwIH5mbGFnczpbIGBDQVNFTEVTUyBdICJBKEIpQyIpCi0rICAgICAgIH5zdWJzdDoo ZnVuIF9fZ19fIC0+ICIkIikKLSsgICAgICAgImFiY2FiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICIk JCIKLSsgICAgKFBjcmUyLnN1YnN0aXR1dGVfc3Vic3RyaW5ncwotKyAgICAgICB+cmV4OihQY3Jl Mi5yZWdleHAgfmZsYWdzOlsgYENBU0VMRVNTIF0gIkEoQilDIikKLSsgICAgICAgfnN1YnN0Oihm dW4gX19nX18gLT4gU3RyaW5nLmNvbmNhdCAiIiBbICIkIiBdKQotKyAgICAgICAiYWJjYWJjIikK LSsKLStsZXQgdGVzdF9wY3JlMl9vY2FtbGZpbmRfYml0cyBjdHh0ID0KLSsgICgpOwotKyAgYXNz ZXJ0X2VxdWFsIH5wcmludGVyOnNob3dfc3RyaW5nX29wdGlvbiAoU29tZSAiLXN5bnRheCBjYW1s cDVvICIpCi0rICAgIChzbmQKLSsgICAgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5m bGFnczpbXSAiXlxcKFxcKlxcKnBwICguKj8pXFwqXFwpIiBpbgotKyAgICAgICAgIGZ1biBfX3N1 YmpfXyAtPgotKyAgICAgICAgICAgKGZ1biBfX2dfXyAtPgotKyAgICAgICAgICAgICAoIFBjcmUy LmdldF9zdWJzdHJpbmcgX19nX18gMCwKLSsgICAgICAgICAgICAgICB0cnkgU29tZSAoUGNyZTIu Z2V0X3N1YnN0cmluZyBfX2dfXyAxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lICkpCi0rICAgICAg ICAgICAgIChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKSkKLSsgICAgICAgICAgIigq KnBwIC1zeW50YXggY2FtbHA1byAqKVxuIikpCi0rCi0rbGV0IHBjcmUyX2VudnN1YnN0IGVudmxv b2t1cCBzID0KLSsgIGxldCBmIHMxIHMyID0KLSsgICAgaWYgczEgPD4gIiIgdGhlbiBlbnZsb29r dXAgczEKLSsgICAgZWxzZSBpZiBzMiA8PiAiIiB0aGVuIGVudmxvb2t1cCBzMgotKyAgICBlbHNl IGFzc2VydCBmYWxzZQotKyAgaW4KLSsgIFBjcmUyLnN1YnN0aXR1dGVfc3Vic3RyaW5ncwotKyAg ICB+cmV4OihQY3JlMi5yZWdleHAgfmZsYWdzOltdICIoPzpcXCRcXCgoW14pXSspXFwpfFxcJFxc eyhbXn1dKylcXH0pIikKLSsgICAgfnN1YnN0OihmdW4gX19nX18gLT4KLSsgICAgICBmCi0rICAg ICAgICAobWF0Y2ggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxIHdpdGgKLSsgICAgICAgIHwg ZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAiIgotKyAgICAgICAgfCBzIC0+IHMpCi0rICAgICAgICAo bWF0Y2ggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAyIHdpdGgKLSsgICAgICAgIHwgZXhjZXB0 aW9uIE5vdF9mb3VuZCAtPiAiIgotKyAgICAgICAgfCBzIC0+IHMpKQotKyAgICBzCi0rCi0rbGV0 IHRlc3RfcGNyZTJfZW52c3Vic3RfdmlhX3JlcGxhY2UgY3R4dCA9Ci0rICBsZXQgZiA9IGZ1bmN0 aW9uCi0rICAgIHwgIkEiIC0+ICJyZXMxIgotKyAgICB8ICJCIiAtPiAicmVzMiIKLSsgICAgfCBf IC0+IGZhaWx3aXRoICJ1bmV4cGVjdGVkIGFyZyBpbiBlbnZzdWJzdCIKLSsgIGluCi0rICBhc3Nl cnRfZXF1YWwgIi4uLnJlczEuLi5yZXMyLi4uIiAocGNyZTJfZW52c3Vic3QgZiAiLi4uJChBKS4u LiR7Qn0uLi4iKQotKwotK2xldCBiYWRfcGF0dGVybiBjdHh0ID0KLSsgIGxldCBvcGVuIFBjcmUy IGluCi0rICB0cnkKLSsgICAgaWdub3JlIChyZWdleHAgIj8iKTsKLSsgICAgYXNzZXJ0X2ZhaWx1 cmUgIlJlZ2V4IHNob3VsZCBmYWlsIHRvIHBhcnNlIgotKyAgd2l0aCBFcnJvciAoQmFkUGF0dGVy biAocywgXykpIC0+Ci0rICAgIGFzc2VydF9ib29sCi0rICAgICAgIlN0cmluZyBjb250YWlucyBh IHplcm8gYnl0ZS4gSW4gOC1iaXQgbW9kZSB0aGlzIGluZGljYXRlcyBhbiBlcnJvciBpbiBcCi0r ICAgICAgIHRoZSBjcmVhdGlvbiBvZiB0aGUgZXJyb3IgbWVzc2FnZSBzaW5jZSBzdHJpbmdzIGNy ZWF0ZWQgYnkgUENSRTIgc2hvdWxkIFwKLSsgICAgICAgYmUgbnVsbCB0ZXJtaW5hdGVkLiIKLSsg ICAgICAobm90IEBAIFN0cmluZy5leGlzdHMgKGZ1biBjIC0+IGMgPSAnXDAwMCcpIHMpCi0rCi0r bGV0IHN1aXRlID0KLSsgICJUZXN0IHBhX3BweF9yZWdleHAiCi0rICA+Ojo6IFsKLSsgICAgICAg ICAicGNyZTIgc2ltcGxlX21hdGNoIiA+OjogdGVzdF9wY3JlMl9zaW1wbGVfbWF0Y2g7Ci0rICAg ICAgICAgInBjcmUyIHNlbGVjdGl2ZV9tYXRjaCIgPjo6IHRlc3RfcGNyZTJfc2VsZWN0aXZlX21h dGNoOwotKyAgICAgICAgICJwY3JlMiBzZWFyY2giID46OiB0ZXN0X3BjcmUyX3NlYXJjaDsKLSsg ICAgICAgICAicGNyZTIgc2luZ2xlIiA+OjogdGVzdF9wY3JlMl9zaW5nbGU7Ci0rICAgICAgICAg InBjcmUyIG11bHRpbGluZSIgPjo6IHRlc3RfcGNyZTJfbXVsdGlsaW5lOwotKyAgICAgICAgICJw Y3JlMiBzaW1wbGVfc3BsaXQiID46OiB0ZXN0X3BjcmUyX3NpbXBsZV9zcGxpdDsKLSsgICAgICAg ICAicGNyZTIgZGVsaW1fc3BsaXQgcmF3IiA+OjogdGVzdF9wY3JlMl9kZWxpbV9zcGxpdF9yYXc7 Ci0rICAgICAgICAgInBjcmUyIHN0cmluZ19wYXR0ZXJuIiA+OjogdGVzdF9wY3JlMl9zdHJpbmdf cGF0dGVybjsKLSsgICAgICAgICAicGNyZTIgZXhwcl9wYXR0ZXJuIiA+OjogdGVzdF9wY3JlMl9l eHByX3BhdHRlcm47Ci0rICAgICAgICAgInBjcmUyIHN1YnN0IiA+OjogdGVzdF9wY3JlMl9zdWJz dDsKLSsgICAgICAgICAicGNyZTIgb2NhbWxmaW5kIGJpdHMiID46OiB0ZXN0X3BjcmUyX29jYW1s ZmluZF9iaXRzOwotKyAgICAgICAgICJwY3JlMiBlbnZzdWJzdCB2aWEgcmVwbGFjZSIgPjo6IHRl c3RfcGNyZTJfZW52c3Vic3RfdmlhX3JlcGxhY2U7Ci0rICAgICAgICAgInBjcmUgb25seV9yZWdl eHBzIiA+OjogdGVzdF9zcGVjaWFsX2NoYXJfcmVnZXhwczsKLSsgICAgICAgICAiYmFkX3BhdHRl cm4iID46OiBiYWRfcGF0dGVybjsKLSsgICAgICAgXQotKwotK2xldCBfID0gaWYgbm90ICFTeXMu aW50ZXJhY3RpdmUgdGhlbiBydW5fdGVzdF90dF9tYWluIHN1aXRlCi0tLSAKLTIuNTIuMAotCgpk aWZmIC0tZ2l0IGEvMDAwNS1yZW5hbWUtc29tZS1idW5kbGVkLXBjcmUyLWZpbGVzLXRvLWJlLWlu cHV0LWZpbGVzLnBhdGNoIGIvMDAwNS1yZW5hbWUtc29tZS1idW5kbGVkLXBjcmUyLWZpbGVzLXRv LWJlLWlucHV0LWZpbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTQ0 OWM4Li4wMDAwMDAwCi0tLSBhLzAwMDUtcmVuYW1lLXNvbWUtYnVuZGxlZC1wY3JlMi1maWxlcy10 by1iZS1pbnB1dC1maWxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZy b20gYmEwOWI1ZDJjOGM3MWJhNjRhYzUyMDM2NzQwMWM1ODU1NWI0ODE5MCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IFZpY3RvciBHYW1iaWVyIDx2aWN0b3IuZ2FtYmllckBpbnJpYS5m cj4KLURhdGU6IFdlZCwgMTQgSmFuIDIwMjYgMTE6MzQ6NTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRD SCA1LzldIHJlbmFtZSBzb21lIGJ1bmRsZWQgcGNyZTIgZmlsZXMgdG8gYmUgaW5wdXQgZmlsZXMK LQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYTYxNmQwYTI0OThkYTg0M2Q0Y2RlMzNlZWE4 MWVjOTk2NzY4OTM2MykKLS0tLQotIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL3twY3Jl Mi5tbCA9PiBwY3JlMi5tbC5pbn0gICAgICAgICAgIHwgMAotIGJ1bmRsZXMvcGNyZTIvcGNyZTIt b2NhbWwvbGliL3twY3JlMl9zdHVicy5jID0+IHBjcmUyX3N0dWJzLmMuaW59IHwgMAotIDIgZmls ZXMgY2hhbmdlZCwgMCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQotIHJlbmFtZSBidW5k bGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi97cGNyZTIubWwgPT4gcGNyZTIubWwuaW59ICgxMDAl KQotIHJlbmFtZSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi97cGNyZTJfc3R1YnMuYyA9 PiBwY3JlMl9zdHVicy5jLmlufSAoMTAwJSkKLQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIv cGNyZTItb2NhbWwvbGliL3BjcmUyLm1sIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIv cGNyZTIubWwuaW4KLXNpbWlsYXJpdHkgaW5kZXggMTAwJQotcmVuYW1lIGZyb20gYnVuZGxlcy9w Y3JlMi9wY3JlMi1vY2FtbC9saWIvcGNyZTIubWwKLXJlbmFtZSB0byBidW5kbGVzL3BjcmUyL3Bj cmUyLW9jYW1sL2xpYi9wY3JlMi5tbC5pbgotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNy ZTItb2NhbWwvbGliL3BjcmUyX3N0dWJzLmMgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xp Yi9wY3JlMl9zdHVicy5jLmluCi1zaW1pbGFyaXR5IGluZGV4IDEwMCUKLXJlbmFtZSBmcm9tIGJ1 bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL3BjcmUyX3N0dWJzLmMKLXJlbmFtZSB0byBidW5k bGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9wY3JlMl9zdHVicy5jLmluCi0tLSAKLTIuNTIuMAot CgpkaWZmIC0tZ2l0IGEvMDAwNi1hZGQtLmdpdGlnbm9yZS1pbi1wY3JlMi1idW5kbGUtdG8tZXhj bHVkZS1nZW5lcmF0ZWQtLnBhdGNoIGIvMDAwNi1hZGQtLmdpdGlnbm9yZS1pbi1wY3JlMi1idW5k bGUtdG8tZXhjbHVkZS1nZW5lcmF0ZWQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA4MTQ5YTNiLi4wMDAwMDAwCi0tLSBhLzAwMDYtYWRkLS5naXRpZ25vcmUtaW4tcGNyZTIt YnVuZGxlLXRvLWV4Y2x1ZGUtZ2VuZXJhdGVkLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIz ICswLDAgQEAKLUZyb20gMmUzNGU4NmJkYTIzY2FiZDdkMjc4YTJhYWUxZjQyMGRhNDRhYTUwZSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZpY3RvciBHYW1iaWVyIDx2aWN0b3IuZ2Ft YmllckBpbnJpYS5mcj4KLURhdGU6IFdlZCwgMTQgSmFuIDIwMjYgMTE6Mzg6MDggKzAxMDAKLVN1 YmplY3Q6IFtQQVRDSCA2LzldIGFkZCAuZ2l0aWdub3JlIGluIHBjcmUyIGJ1bmRsZSB0byBleGNs dWRlIGdlbmVyYXRlZCBmaWxlcwotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAwYmIwODUz MDc2MTg2NTJmNzljYzdhNjg4YTY2ZDM3ZDg4MWIyNmFkKQotLS0tCi0gYnVuZGxlcy9wY3JlMi8u Z2l0aWdub3JlIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLSBjcmVh dGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi8uZ2l0aWdub3JlCi0KLWRpZmYgLS1naXQgYS9i dW5kbGVzL3BjcmUyLy5naXRpZ25vcmUgYi9idW5kbGVzL3BjcmUyLy5naXRpZ25vcmUKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLjgxNDM4ZTExNwotLS0tIC9kZXYvbnVs bAotKysrIGIvYnVuZGxlcy9wY3JlMi8uZ2l0aWdub3JlCi1AQCAtMCwwICsxLDIgQEAKLStwY3Jl Mi1vY2FtbC9saWIvcGNyZTIubWwKLStwY3JlMi1vY2FtbC9saWIvcGNyZTJfc3R1YnMuYwotXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0IGEvMDAw Ny1yZW5hbWUtdXBkYXRlLXBjcmUtYnVuZGxlLU1ha2VmaWxlLXRvLXJlZmxlY3QtYnVuZGxlLnBh dGNoIGIvMDAwNy1yZW5hbWUtdXBkYXRlLXBjcmUtYnVuZGxlLU1ha2VmaWxlLXRvLXJlZmxlY3Qt YnVuZGxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjM1ZWM1Li4wMDAw MDAwCi0tLSBhLzAwMDctcmVuYW1lLXVwZGF0ZS1wY3JlLWJ1bmRsZS1NYWtlZmlsZS10by1yZWZs ZWN0LWJ1bmRsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gMmVh M2U5ODgyMjhlOGIyNzk2NmZlYTA3YjcxOGVmZmZjN2Q4MmQ1ZSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IFZpY3RvciBHYW1iaWVyIDx2aWN0b3IuZ2FtYmllckBpbnJpYS5mcj4KLURh dGU6IFdlZCwgMTQgSmFuIDIwMjYgMTI6MDQ6MzYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCA3Lzld IHJlbmFtZS91cGRhdGUgcGNyZSBidW5kbGUgTWFrZWZpbGUgdG8gcmVmbGVjdCBidW5kbGUKLSBj aGFuZ2VzCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGNiODdmNDUxMWRiOTMyMTkwOWMx NTdhZWU5YTY4YTUyZDliNjYxOWMpCi0tLS0KLSBidW5kbGVzL3twY3JlID0+IHBjcmUyfS9NYWtl ZmlsZSB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlv bnMoKyksIDkgZGVsZXRpb25zKC0pCi0gcmVuYW1lIGJ1bmRsZXMve3BjcmUgPT4gcGNyZTJ9L01h a2VmaWxlICg2MCUpCi0KLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvTWFrZWZpbGUgYi9idW5k bGVzL3BjcmUyL01ha2VmaWxlCi1zaW1pbGFyaXR5IGluZGV4IDYwJQotcmVuYW1lIGZyb20gYnVu ZGxlcy9wY3JlL01ha2VmaWxlCi1yZW5hbWUgdG8gYnVuZGxlcy9wY3JlMi9NYWtlZmlsZQotaW5k ZXggMGRiMDBiMDg3Li5lMWFlZDk4NjUgMTAwNjQ0Ci0tLS0gYS9idW5kbGVzL3BjcmUvTWFrZWZp bGUKLSsrKyBiL2J1bmRsZXMvcGNyZTIvTWFrZWZpbGUKLUBAIC0xLDE0ICsxLDE0IEBACi0gIyBU aGlzIE1ha2VmaWxlIHNlcnZlcyBhcyBhIHdyYXBwZXIgdG8gYnVuZGxlIHRoZQotLSMgcGNyZSBt b2R1bGUgd2l0aG91dCBtb2RpZmljYXRpb25zLgotKyMgcGNyZTIgbW9kdWxlIHdpdGhvdXQgbW9k aWZpY2F0aW9ucy4KLSAKLS1NT0RVTEVTPXBjcmUKLS1PQkpTPXBjcmUKLS1JTlRFUkZBQ0VTPXBj cmUKLS1DX09CSlM9cGNyZQotLUFSQ0hJVkU9cGNyZQotLUxJQlJBUlk9cGNyZQotLUNfTElCUz1w Y3JlCi0tU1JDX0RJUj1wY3JlLW9jYW1sL3NyYwotK01PRFVMRVM9cGNyZTIKLStPQkpTPXBjcmUy Ci0rSU5URVJGQUNFUz1wY3JlMgotK0NfT0JKUz1wY3JlMgotK0FSQ0hJVkU9cGNyZTIKLStMSUJS QVJZPXBjcmUyCi0rQ19MSUJTPXBjcmUyLTgKLStTUkNfRElSPXBjcmUyLW9jYW1sL2xpYgotIAot IE9DQU1MRkxBR1MrPS1JICQoU1REQ09NUEFURElSKQotIAotLS0gCi0yLjUyLjAKLQoKZGlmZiAt LWdpdCBhLzAwMDgtY29uZmlndXJlLmFjLXVzZS1wY3JlMi1vY2FtbC1saWItZm9sZGVyLXRvLXJl ZmxlY3Qtbi5wYXRjaCBiLzAwMDgtY29uZmlndXJlLmFjLXVzZS1wY3JlMi1vY2FtbC1saWItZm9s ZGVyLXRvLXJlZmxlY3Qtbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNj ZjJhMC4uMDAwMDAwMAotLS0gYS8wMDA4LWNvbmZpZ3VyZS5hYy11c2UtcGNyZTItb2NhbWwtbGli LWZvbGRlci10by1yZWZsZWN0LW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBA Ci1Gcm9tIGM4MjQzOTE0MGMyMjQxOWQ3ZWVjMzBhOTRjYzI0NGUyMGQxZmU0MWUgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgR2FtYmllciA8dmljdG9yLmdhbWJpZXJAaW5y aWEuZnI+Ci1EYXRlOiBUdWUsIDIwIEphbiAyMDI2IDE1OjQ0OjQ3ICswMTAwCi1TdWJqZWN0OiBb UEFUQ0ggOC85XSBjb25maWd1cmUuYWM6IHVzZSBwY3JlMi1vY2FtbC9saWIgZm9sZGVyIHRvIHJl ZmxlY3QgbmV3Ci0gYnVuZGxlIHN0cnVjdHVyZQotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1p dCBiMjMxZGUwZGIzZjk1MTNmNmVhOTM2Y2FlYTU0MjhmZTYyN2FmMWI5KQotLS0tCi0gY29uZmln dXJlLmFjIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxl dGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5k ZXggY2Q5MDA1YTg3Li5hZWE3ZTM1ZTAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBi L2NvbmZpZ3VyZS5hYwotQEAgLTU5NCw4ICs1OTQsOCBAQCBBU19JRihbdGVzdCAiJE1BS0VfcGNy ZTIiXSwKLSAgICAgIEFDX1NVQlNUKFtub2FsbG9jXSwgW1tbQEBub2FsbG9jXV1dKQotICAgICAg QUNfU1VCU1QoW3VudGFnZ2VkXSwgW1tbQHVudGFnZ2VkXV1dKV0pCi0gICBBQ19DT05GSUdfRklM RVMoWwotLSAgICBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvcGNyZS5tbAotLSAgICBidW5k bGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvcGNyZV9zdHVicy5jCi0rICAgIGJ1bmRsZXMvcGNyZTIv cGNyZTItb2NhbWwvbGliL3BjcmUyLm1sCi0rICAgIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwv bGliL3BjcmUyX3N0dWJzLmMKLSAgIF0pXSkKLSAKLSBkbmwKLS0tIAotMi41Mi4wCi0KCmRpZmYg LS1naXQgYS8wMDA5LXJlcGxhY2Utb2Jzb2xlc2NlbnQtZWdyZXAtd2l0aC1ncmVwLUUucGF0Y2gg Yi8wMDA5LXJlcGxhY2Utb2Jzb2xlc2NlbnQtZWdyZXAtd2l0aC1ncmVwLUUucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZWM0ZDEuLjAwMDAwMDAKLS0tIGEvMDAwOS1yZXBs YWNlLW9ic29sZXNjZW50LWVncmVwLXdpdGgtZ3JlcC1FLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsODggKzAsMCBAQAotRnJvbSAxOGZjNDIxYzlhZjY5ZDA4NWU2ZTFjOTVlOWQ1Y2YzNmEyYmE3 MDExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0NocmlzdG9waD0y MEI9QzM9QjZobXdhbGRlcj89Ci0gPGNocmlzdG9waC5ib2VobXdhbGRlckBsaW5iaXQuY29tPgot RGF0ZTogTW9uLCAyIE1hciAyMDI2IDE2OjQ0OjEwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggOS85 XSByZXBsYWNlIG9ic29sZXNjZW50IGVncmVwIHdpdGggZ3JlcCAtRQotTUlNRS1WZXJzaW9uOiAx LjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogOGJpdAotCi1lZ3JlcCBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIEdO VSBncmVwIDMuOCAoU2VwIDIwMjIpIGFuZCBwcmludHMgYQotd2FybmluZyB0byBzdGRlcnIgb24g ZXZlcnkgaW52b2NhdGlvbi4gUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgd2l0aAotdGhlIFBPU0lY LXN0YW5kYXJkIGdyZXAgLUUuCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waCBCw7ZobXdhbGRl ciA8Y2hyaXN0b3BoLmJvZWhtd2FsZGVyQGxpbmJpdC5jb20+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9t IGNvbW1pdCAyMzNiNWNlYjFkNWE3MDFmYjI3MGViZGYwYTliZDZiZTBhNmNlNTNiKQotLS0tCi0g Y29jY2kubWwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBkb2NzL21hbnVhbC9N YWtlZmlsZSAgICAgICAgICAgICAgIHwgNCArKy0tCi0gcGFyc2luZ19jb2NjaS9wYXRjaF9kaWZm Lm1sICAgICAgICB8IDQgKystLQotIHNjcmlwdHMvc3RhdF9kaXJlY3RvcnlfY29tcGxldGUucGwg fCAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9jb2NjaS5tbCBiL2NvY2NpLm1sCi1pbmRleCAxMjQxNTY4NTYuLmU3 NjlkNWZlNCAxMDA2NDQKLS0tLSBhL2NvY2NpLm1sCi0rKysgYi9jb2NjaS5tbAotQEAgLTUzMSw3 ICs1MzEsNyBAQCBsZXQgd29ydGhfdHJ5aW5nMiBjZmlsZXMgKHRva2VucyxfLHF1ZXJ5LF8pID0K LSAKLSAgICAgICApIGluCi0gICAgICAgbGV0IGNvbSA9Ci0tCVByaW50Zi5zcHJpbnRmICJlZ3Jl cCAtcSAnKCVzKScgJXMiCi0rCVByaW50Zi5zcHJpbnRmICJncmVwIC1FIC1xICcoJXMpJyAlcyIK LSAJICAoU3RyaW5nLmNvbmNhdCAifCIgdG9rZW5zKQotIAkgIChTdHJpbmcuY29uY2F0ICIgIiAo TGlzdC5tYXAgZnN0IGNmaWxlcykpIGluCi0gICAgICAgKG1hdGNoIFN5cy5jb21tYW5kIGNvbSB3 aXRoCi1kaWZmIC0tZ2l0IGEvZG9jcy9tYW51YWwvTWFrZWZpbGUgYi9kb2NzL21hbnVhbC9NYWtl ZmlsZQotaW5kZXggN2EwZTAwMWE5Li5iMGVkNTgwMTkgMTAwNjQ0Ci0tLS0gYS9kb2NzL21hbnVh bC9NYWtlZmlsZQotKysrIGIvZG9jcy9tYW51YWwvTWFrZWZpbGUKLUBAIC02Myw4ICs2Myw4IEBA IGRpc3RjbGVhbjo6IGNsZWFuCi0gIwotICMlLnBkZjoJJS50ZXgKLSAjCSAgICAkKFBERkxBVEVY KSAkPAotLSMJICAgIGlmIGVncmVwIC1zICckKFJFUlVOKScgJCoubG9nIDt0aGVuICQoUERGTEFU RVgpICQ8OyBmaQotLSMJICAgIGlmIGVncmVwIC1zICckKFJFUlVOKScgJCoubG9nIDt0aGVuICQo UERGTEFURVgpICQ8OyBmaQotKyMJICAgIGlmIGdyZXAgLUUgLXMgJyQoUkVSVU4pJyAkKi5sb2cg O3RoZW4gJChQREZMQVRFWCkgJDw7IGZpCi0rIwkgICAgaWYgZ3JlcCAtRSAtcyAnJChSRVJVTikn ICQqLmxvZyA7dGhlbiAkKFBERkxBVEVYKSAkPDsgZmkKLSAKLSAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLSAjIEh0bWwgdmVyc2lvbgotZGlmZiAtLWdpdCBhL3BhcnNpbmdfY29jY2kvcGF0Y2hfZGlm Zi5tbCBiL3BhcnNpbmdfY29jY2kvcGF0Y2hfZGlmZi5tbAotaW5kZXggZDg0ZjNhZDdjLi44OGJk NDA3N2MgMTAwNzU1Ci0tLS0gYS9wYXJzaW5nX2NvY2NpL3BhdGNoX2RpZmYubWwKLSsrKyBiL3Bh cnNpbmdfY29jY2kvcGF0Y2hfZGlmZi5tbAotQEAgLTgyLDcgKzgyLDcgQEAgbGV0IHJlYyBtbGlu ZXMgbGluZXMgPQotIGxldCBmaW5hbF9pbmZvIGRpciA9Ci0gICBsZXQgZ2l0X3Jvb3QgPSBnZXRf cm9vdCBkaXIgaW4KLSAgIGxldCBnaXRfcmVhZF9jb21tYW5kID0KLS0gICAgImNkICIgXiBnaXRf cm9vdCBeICIgJiYgZ2l0IGRpZmYgIiBeIGRpciBeICIgfCBlZ3JlcCAnXisrK3xeQCciIGluCi0r ICAgICJjZCAiIF4gZ2l0X3Jvb3QgXiAiICYmIGdpdCBkaWZmICIgXiBkaXIgXiAiIHwgZ3JlcCAt RSAnXisrK3xeQCciIGluCi0gICBsZXQgbGlzdF9kaWZmID0KLSAgICAgcmVvcmcgZGlyIGdpdF9y b290IChtbGluZXMgKENvbW1vbi5jbWRfdG9fbGlzdCBnaXRfcmVhZF9jb21tYW5kKSkgaW4KLSAg IGxpc3RfZGlmZgotQEAgLTEwMyw3ICsxMDMsNyBAQCBsZXQgZmluYWxfcGF0Y2hfaW5mbyBkaXIg c3RhcnRpZCBlbmRpZCA9Ci0gICAgICAgaWYgcmVjZW50Ci0gICAgICAgdGhlbiAiLS1tZXJnZS1i YXNlIgotICAgICAgIGVsc2UgIiIgaW4KLS0gICAgUHJpbnRmLnNwcmludGYgIiBjZCAlcyAmJiBn aXQgZGlmZiAlcyAlcyAlcyB8IGVncmVwICdeKysrfF5AJyIKLSsgICAgUHJpbnRmLnNwcmludGYg IiBjZCAlcyAmJiBnaXQgZGlmZiAlcyAlcyAlcyB8IGdyZXAgLUUgJ14rKyt8XkAnIgotICAgICAg IGdpdF9yb290IGV4dHJhIHN0YXJ0aWQgZW5kaWQgaW4KLSAgIGxldCBsaXN0X2RpZmYgPQotICAg ICByZW9yZyBkaXIgZ2l0X3Jvb3QgKG1saW5lcyAoQ29tbW9uLmNtZF90b19saXN0IGdpdF9yZWFk X2NvbW1hbmQpKSBpbgotZGlmZiAtLWdpdCBhL3NjcmlwdHMvc3RhdF9kaXJlY3RvcnlfY29tcGxl dGUucGwgYi9zY3JpcHRzL3N0YXRfZGlyZWN0b3J5X2NvbXBsZXRlLnBsCi1pbmRleCBmNzg5NGQ3 MGEuLjljYWY1YTYwMSAxMDA3NTUKLS0tLSBhL3NjcmlwdHMvc3RhdF9kaXJlY3RvcnlfY29tcGxl dGUucGwKLSsrKyBiL3NjcmlwdHMvc3RhdF9kaXJlY3RvcnlfY29tcGxldGUucGwKLUBAIC0xNjQs NyArMTY0LDcgQEAgaWYoLWUgImdpdGluZm8iKSB7Ci0gICBteSAkbm9kYXRleWV0ID0gMTsKLSAK LSAgIHdoaWxlKDxUTVA+KSB7Ci0tICAgICNjYW4gYWxzbyBkbzogZWdyZXAgIl5BdXRob3IiIGdp dGluZm8gfCBzb3J0IHwgdW5pcSB8IHdjIC1sCi0rICAgICNjYW4gYWxzbyBkbzogZ3JlcCAtRSAi XkF1dGhvciIgZ2l0aW5mbyB8IHNvcnQgfCB1bmlxIHwgd2MgLWwKLSAgICAgaWYgKC9eQXV0aG9y OiAoLiopLykgewotICAgICAgICRoLT57JDF9Kys7Ci0gICAgIH0KLS0tIAotMi41Mi4wCi0KCmRp ZmYgLS1naXQgYS9jb2NjaW5lbGxlLnNwZWMgYi9jb2NjaW5lbGxlLnNwZWMKaW5kZXggOTNlYjY2 Zi4uZGM4YzFiZCAxMDA2NDQKLS0tIGEvY29jY2luZWxsZS5zcGVjCisrKyBiL2NvY2NpbmVsbGUu c3BlYwpAQCAtMywxMCArMywxMCBAQCBFeGNsdWRlQXJjaDogJXtpeDg2fQogCiAjZ2xvYmFsIGZv cmdldXJsIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2NjaW5lbGxlL2NvY2NpbmVsbGUKICVnbG9iYWwg Zm9yZ2V1cmwgaHR0cHM6Ly9naXRsYWIuaW5yaWEuZnIvY29jY2luZWxsZS9jb2NjaW5lbGxlCi0l Z2xvYmFsIHRhZyAxLjMuMQorJWdsb2JhbCB0YWcgMS4zLjMKICNnbG9iYWwgY29tbWl0IDA5YjQ3 NWJiM2RkMmIyOWM2YmQ5MDRjYzQ1NWQ0YzI1YzY2NDE2NDkKICNnbG9iYWwgZGF0ZSAgIDIwMjUx MTE4Ci1WZXJzaW9uOiAgICAgICAxLjMuMQorVmVyc2lvbjogICAgICAgMS4zLjMKICVmb3JnZW1l dGEKIAogIyBCdWlsZCB0aGUgZG9jdW1lbnRhdGlvbiBvbiBGZWRvcmEgb25seS4KQEAgLTIzLDcg KzIzLDcgQEAgVmVyc2lvbjogICAgICAgMS4zLjEKICVlbmRpZgogCiBOYW1lOiAgICAgICAgICAg Y29jY2luZWxsZQotUmVsZWFzZTogICAgICAgIDEwJXs/ZGlzdH0KK1JlbGVhc2U6ICAgICAgICAx JXs/ZGlzdH0KIFN1bW1hcnk6ICAgICAgICBTZW1hbnRpYyBwYXRjaGluZyBmb3IgTGludXggKHNw YXRjaCkKIAogTGljZW5zZTogICAgICAgIEdQTC0yLjAtb25seQpAQCAtMzUsMTkgKzM1LDYgQEAg U291cmNlMDogICAgICAgICV7Zm9yZ2Vzb3VyY2V9CiBTb3VyY2UxOiAgICAgICAgdGVzdC5jCiBT b3VyY2UyOiAgICAgICAgdGVzdHB5LmNvY2NpCiAKLSMgUldNSjogSSBiYWNrcG9ydGVkIHNvbWUg cGF0Y2hlcyBmb3Igb2NhbWwtcGNyZTIgc3VwcG9ydCBmcm9tIHVwc3RyZWFtLgotIyBUaGV5IGNh biBiZSBmb3VuZCBoZXJlOgotIyBodHRwczovL2dpdGh1Yi5jb20vcndtam9uZXMvY29jY2luZWxs ZS90cmVlL2ZlZG9yYS0xLjMuMQotUGF0Y2g6ICAgICAgICAgIDAwMDEtcmVwbGFjZS1wY3JlLXdp dGgtcGNyZTIucGF0Y2gKLVBhdGNoOiAgICAgICAgICAwMDAyLXVzZS1wY3JlMi1pbnN0ZWFkLW9m LXBjcmUtaW4tc29tZS1tb3JlLXBsYWNlcy5wYXRjaAotUGF0Y2g6ICAgICAgICAgIDAwMDMtcmVw bGFjZS1wY3JlLXdpdGgtcGNyZTItaW4taW5zdGFsbC50eHQtaW5zdHJ1Y3Rpb25zLnBhdGNoCi1Q YXRjaDogICAgICAgICAgMDAwNC1yZXBsYWNlLXBjcmUtYnVuZGxlLXdpdGgtcGNyZTItYnVuZGxl LnBhdGNoCi1QYXRjaDogICAgICAgICAgMDAwNS1yZW5hbWUtc29tZS1idW5kbGVkLXBjcmUyLWZp bGVzLXRvLWJlLWlucHV0LWZpbGVzLnBhdGNoCi1QYXRjaDogICAgICAgICAgMDAwNi1hZGQtLmdp dGlnbm9yZS1pbi1wY3JlMi1idW5kbGUtdG8tZXhjbHVkZS1nZW5lcmF0ZWQtLnBhdGNoCi1QYXRj aDogICAgICAgICAgMDAwNy1yZW5hbWUtdXBkYXRlLXBjcmUtYnVuZGxlLU1ha2VmaWxlLXRvLXJl ZmxlY3QtYnVuZGxlLnBhdGNoCi1QYXRjaDogICAgICAgICAgMDAwOC1jb25maWd1cmUuYWMtdXNl LXBjcmUyLW9jYW1sLWxpYi1mb2xkZXItdG8tcmVmbGVjdC1uLnBhdGNoCi1QYXRjaDogICAgICAg ICAgMDAwOS1yZXBsYWNlLW9ic29sZXNjZW50LWVncmVwLXdpdGgtZ3JlcC1FLnBhdGNoCi0KIEJ1 aWxkUmVxdWlyZXM6ICBhdXRvY29uZgogQnVpbGRSZXF1aXJlczogIGF1dG9tYWtlCiBCdWlsZFJl cXVpcmVzOiAgcHl0aG9uMy1kZXZlbApAQCAtMzAwLDYgKzI4NywxMCBAQCAkc3BhdGNoIC0tc3At ZmlsZSAle1NPVVJDRTJ9ICV7U09VUkNFMX0KIAogCiAlY2hhbmdlbG9nCisqIEZyaSBTZXAgMDQg MjAyNiBSaWNoYXJkIFcuTS4gSm9uZXMgPHJqb25lc0ByZWRoYXQuY29tPiAtIDEuMy4zLTEKKy0g TmV3IHZlcnNpb24gMS4zLjMgKFJIQlojMjUxOTQ5MikKKy0gRHJvcCBvY2FtbC1wY3JlMiwgZWdy ZXAgcGF0Y2hlcyB3aGljaCBhcmUgbm93IHVwc3RyZWFtLgorCiAqIFdlZCBKdWwgMjIgMjAyNiBQ eXRob24gTWFpbnQgPHB5dGhvbi1tYWludEByZWRoYXQuY29tPiAtIDEuMy4xLTEwCiAtIFJlYnVp bHQgZm9yIFB5dGhvbiAzLjE1LjBiNCBBQkkgY2hhbmdlCiAKCmRpZmYgLS1naXQgYS9zb3VyY2Vz IGIvc291cmNlcwppbmRleCA5ZmFjNWM5Li43ZGFlZWI5IDEwMDY0NAotLS0gYS9zb3VyY2VzCisr KyBiL3NvdXJjZXMKQEAgLTEgKzEgQEAKLVNIQTUxMiAoY29jY2luZWxsZS0xLjMuMS50YXIuYnoy KSA9IDkyNGFlYTQzYjRlOTI3YjZhMWQwNzc1ZTA2NGI2OTdhYmVlYjRkZTBkZDFkZWM4ODg1Y2Nk ZjE0OTRkNjUzMzY4MDJhNzhkMjgxZjhlOTE3OWRiNjI1YTg4NTdkMTBlNjU4NWEyODU3MGU2ZjU2 MzI3M2MyZjMxNzM2MDgzNzE1CitTSEE1MTIgKGNvY2NpbmVsbGUtMS4zLjMudGFyLmJ6MikgPSA0 ZWJkNDZmYWYxNWQ4ZDlmZmZkOTQ3NWY1ZDY3NWRlZWFiMTNhODg0YjYyMTBhMGM4YmUwMzQ1Nzg0 M2RlZWM2NWRjN2MzM2EyZDlhMjliM2RkOTllNDQ1NDQ4OGE3YWJkYmU0MmEzMGUzYWIzZTFkNTFl MTM5MGQ5ZTU3OGM0Mgo=