OgpldmFsICdleGVjIHBlcmwgLVMgJDAgJHsxKyIkQCJ9JwogICAgaWYgJHJ1bm5pbmdfdW5kZXJfc29tZV9zaGVsbDsKIyMKIyMgIENvbmZpZ3VyZSAtLSBPcGVuU1NMIHNvdXJjZSB0cmVlIGNvbmZpZ3VyYXRpb24gc2NyaXB0CiMjCgpyZXF1aXJlIDUuMDAwOwp1c2Ugc3RyaWN0OwoKIyBzZWUgSU5TVEFMTCBmb3IgaW5zdHJ1Y3Rpb25zLgoKbXkgJHVzYWdlPSJVc2FnZTogQ29uZmlndXJlIFtuby08Y2lwaGVyPiAuLi5dIFtlbmFibGUtPGNpcGhlcj4gLi4uXSBbZXhwZXJpbWVudGFsLTxjaXBoZXI+IC4uLl0gWy1EeHh4XSBbLWx4eHhdIFstTHh4eF0gWy1meHh4XSBbLUt4eHhdIFtuby1ody14eHh8bm8taHddIFtbbm8tXXRocmVhZHNdIFtbbm8tXXNoYXJlZF0gW1tuby1demxpYnx6bGliLWR5bmFtaWNdIFtuby1hc21dIFtuby1kc29dIFtuby1rcmI1XSBbc2N0cF0gWzM4Nl0gWy0tcHJlZml4PURJUl0gWy0tb3BlbnNzbGRpcj1PUEVOU1NMRElSXSBbLS13aXRoLXh4eFs9dnZ2XV0gWy0tdGVzdC1zYW5pdHldIG9zL2NvbXBpbGVyWzpmbGFnc11cbiI7CgojIE9wdGlvbnM6CiMKIyAtLW9wZW5zc2xkaXIgIGluc3RhbGwgT3BlblNTTCBpbiBPUEVOU1NMRElSIChEZWZhdWx0OiBESVIvc3NsIGlmIHRoZQojICAgICAgICAgICAgICAgLS1wcmVmaXggb3B0aW9uIGlzIGdpdmVuOyAvdXNyL2xvY2FsL3NzbCBvdGhlcndpc2UpCiMgLS1wcmVmaXggICAgICBwcmVmaXggZm9yIHRoZSBPcGVuU1NMIGluY2x1ZGUsIGxpYiBhbmQgYmluIGRpcmVjdG9yaWVzCiMgICAgICAgICAgICAgICAoRGVmYXVsdDogdGhlIE9QRU5TU0xESVIgZGlyZWN0b3J5KQojCiMgLS1pbnN0YWxsX3ByZWZpeCAgQWRkaXRpb25hbCBwcmVmaXggZm9yIHBhY2thZ2UgYnVpbGRlcnMgKGVtcHR5IGJ5CiMgICAgICAgICAgICAgICBkZWZhdWx0KS4gIFRoaXMgbmVlZG4ndCBiZSBzZXQgaW4gYWR2YW5jZSwgeW91IGNhbgojICAgICAgICAgICAgICAganVzdCBhcyB3ZWxsIHVzZSAibWFrZSBJTlNUQUxMX1BSRUZJWD0vd2hhdGV2ZXIgaW5zdGFsbCIuCiMKIyAtLXdpdGgta3JiNS1kaXIgIERlY2xhcmUgd2hlcmUgS2VyYmVyb3MgNSBsaXZlcy4gIFRoZSBsaWJyYXJpZXMgYXJlIGV4cGVjdGVkCiMJCXRvIGxpdmUgaW4gdGhlIHN1YmRpcmVjdG9yeSBsaWIvIGFuZCB0aGUgaGVhZGVyIGZpbGVzIGluCiMJCWluY2x1ZGUvLiAgQSB2YWx1ZSBpcyByZXF1aXJlZC4KIyAtLXdpdGgta3JiNS1saWIgIERlY2xhcmUgd2hlcmUgdGhlIEtlcmJlcm9zIDUgbGlicmFyaWVzIGxpdmUuICBBIHZhbHVlIGlzCiMJCXJlcXVpcmVkLgojCQkoRGVmYXVsdDogS1JCNV9ESVIvbGliKQojIC0td2l0aC1rcmI1LWluY2x1ZGUgIERlY2xhcmUgd2hlcmUgdGhlIEtlcmJlcm9zIDUgaGVhZGVyIGZpbGVzIGxpdmUuICBBCiMJCXZhbHVlIGlzIHJlcXVpcmVkLgojCQkoRGVmYXVsdDogS1JCNV9ESVIvaW5jbHVkZSkKIyAtLXdpdGgta3JiNS1mbGF2b3IgIERlY2xhcmUgd2hhdCBmbGF2b3Igb2YgS2VyYmVyb3MgNSBpcyB1c2VkLiAgQ3VycmVudGx5CiMJCXN1cHBvcnRlZCB2YWx1ZXMgYXJlICJNSVQiIGFuZCAiSGVpbWRhbCIuICBBIHZhbHVlIGlzIHJlcXVpcmVkLgojCiMgLS10ZXN0LXNhbml0eSBNYWtlIGEgbnVtYmVyIG9mIHNhbml0eSBjaGVja3Mgb24gdGhlIGRhdGEgaW4gdGhpcyBmaWxlLgojICAgICAgICAgICAgICAgVGhpcyBpcyBhIGRlYnVnZ2luZyB0b29sIGZvciBPcGVuU1NMIGRldmVsb3BlcnMuCiMKIyAtLWNyb3NzLWNvbXBpbGUtcHJlZml4IEFkZCBzcGVjaWZpZWQgcHJlZml4IHRvIGJpbnV0aWxzIGNvbXBvbmVudHMuCiMKIyBuby1ody14eHggICAgIGRvIG5vdCBjb21waWxlIHN1cHBvcnQgZm9yIHNwZWNpZmljIGNyeXB0byBoYXJkd2FyZS4KIyAgICAgICAgICAgICAgIEdlbmVyaWMgT3BlblNTTC1zdHlsZSBtZXRob2RzIHJlbGF0aW5nIHRvIHRoaXMgc3VwcG9ydAojICAgICAgICAgICAgICAgYXJlIGFsd2F5cyBjb21waWxlZCBidXQgcmV0dXJuIE5VTEwgaWYgdGhlIGhhcmR3YXJlCiMgICAgICAgICAgICAgICBzdXBwb3J0IGlzbid0IGNvbXBpbGVkLgojIG5vLWh3ICAgICAgICAgZG8gbm90IGNvbXBpbGUgc3VwcG9ydCBmb3IgYW55IGNyeXB0byBoYXJkd2FyZS4KIyBbbm8tXXRocmVhZHMgIFtkb24ndF0gdHJ5IHRvIGNyZWF0ZSBhIGxpYnJhcnkgdGhhdCBpcyBzdWl0YWJsZSBmb3IKIyAgICAgICAgICAgICAgIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb25zIChkZWZhdWx0IGlzICJ0aHJlYWRzIiBpZiB3ZQojICAgICAgICAgICAgICAga25vdyBob3cgdG8gZG8gaXQpCiMgW25vLV1zaGFyZWQJW2Rvbid0XSB0cnkgdG8gY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgd2hlbiBzdXBwb3J0ZWQuCiMgbm8tYXNtICAgICAgICBkbyBub3QgdXNlIGFzc2VtYmxlcgojIG5vLWRzbyAgICAgICAgZG8gbm90IGNvbXBpbGUgaW4gYW55IG5hdGl2ZSBzaGFyZWQtbGlicmFyeSBtZXRob2RzLiBUaGlzCiMgICAgICAgICAgICAgICB3aWxsIGVuc3VyZSB0aGF0IGFsbCBtZXRob2RzIGp1c3QgcmV0dXJuIE5VTEwuCiMgbm8ta3JiNSAgICAgICBkbyBub3QgY29tcGlsZSBpbiBhbnkgS1JCNSBsaWJyYXJ5IG9yIGNvZGUuCiMgW25vLV16bGliICAgICBbZG9uJ3RdIGNvbXBpbGUgc3VwcG9ydCBmb3IgemxpYiBjb21wcmVzc2lvbi4KIyB6bGliLWR5bmFtaWMJTGlrZSAiemxpYiIsIGJ1dCB0aGUgemxpYiBsaWJyYXJ5IGlzIGV4cGVjdGVkIHRvIGJlIGEgc2hhcmVkCiMJCWxpYnJhcnkgYW5kIHdpbGwgYmUgbG9hZGVkIGluIHJ1bi10aW1lIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcnkuCiMgc2N0cCAgICAgICAgICBpbmNsdWRlIFNDVFAgc3VwcG9ydAojIDM4NiAgICAgICAgICAgZ2VuZXJhdGUgODAzODYgY29kZQojIG5vLXNzZTIJZGlzYWJsZXMgSUEtMzIgU1NFMiBjb2RlLCBhYm92ZSBvcHRpb24gaW1wbGllcyBuby1zc2UyCiMgbm8tPGNpcGhlcj4gICBidWlsZCB3aXRob3V0IHNwZWNpZmllZCBhbGdvcml0aG0gKHJzYSwgaWRlYSwgcmM1LCAuLi4pCiMgLTx4eHg+ICs8eHh4PiBjb21waWxlciBvcHRpb25zIGFyZSBwYXNzZWQgdGhyb3VnaAojCiMgREVCVUdfU0FGRVNUQUNLIHVzZSB0eXBlLXNhZmUgc3RhY2tzIHRvIGVuZm9yY2UgdHlwZS1zYWZldHkgb24gc3RhY2sgaXRlbXMKIwkJcHJvdmlkZWQgdG8gc3RhY2sgY2FsbHMuIEdlbmVyYXRlcyB1bmlxdWUgc3RhY2sgZnVuY3Rpb25zIGZvcgojCQllYWNoIHBvc3NpYmxlIHN0YWNrIHR5cGUuCiMgREVTX1BUUgl1c2UgcG9pbnRlciBsb29rdXAgdnMgYXJyYXlzIGluIHRoZSBERVMgaW4gY3J5cHRvL2Rlcy9kZXNfbG9jbC5oCiMgREVTX1JJU0MxCXVzZSBkaWZmZXJlbnQgREVTX0VOQ1JZUFQgbWFjcm8gdGhhdCBoZWxwcyByZWR1Y2UgcmVnaXN0ZXIKIwkJZGVwZW5kYW5jaWVzIGJ1dCBuZWVkcyB0byBtb3JlIHJlZ2lzdGVycywgZ29vZCBmb3IgUklTQyBDUFUncwojIERFU19SSVNDMglBIGRpZmZlcmVudCBSSVNDIHZhcmlhbnQuCiMgREVTX1VOUk9MTAl1bnJvbGwgdGhlIGlubmVyIERFUyBsb29wLCBzb21ldGltZXMgaGVscHMsIHNvbXRpbWVzIGhpbmRlcnMuCiMgREVTX0lOVAl1c2UgJ2ludCcgaW5zdGVhZCBvZiAnbG9uZycgZm9yIERFU19MT05HIGluIGNyeXB0by9kZXMvZGVzLmgKIwkJVGhpcyBpcyB1c2VkIG9uIHRoZSBERUMgQWxwaGEgd2hlcmUgbG9uZyBpcyA4IGJ5dGVzCiMJCWFuZCBpbnQgaXMgNAojIEJOX0xMT05HCXVzZSB0aGUgdHlwZSAnbG9uZyBsb25nJyBpbiBjcnlwdG8vYm4vYm4uaAojIE1EMl9DSEFSCXVzZSAnY2hhcicgaW5zdGVhZCBvZiAnaW50JyBmb3IgTUQyX0lOVCBpbiBjcnlwdG8vbWQyL21kMi5oCiMgTUQyX0xPTkcJdXNlICdsb25nJyBpbnN0ZWFkIG9mICdpbnQnIGZvciBNRDJfSU5UIGluIGNyeXB0by9tZDIvbWQyLmgKIyBJREVBX1NIT1JUCXVzZSAnc2hvcnQnIGluc3RlYWQgb2YgJ2ludCcgZm9yIElERUFfSU5UIGluIGNyeXB0by9pZGVhL2lkZWEuaAojIElERUFfTE9ORwl1c2UgJ2xvbmcnIGluc3RlYWQgb2YgJ2ludCcgZm9yIElERUFfSU5UIGluIGNyeXB0by9pZGVhL2lkZWEuaAojIFJDMl9TSE9SVAl1c2UgJ3Nob3J0JyBpbnN0ZWFkIG9mICdpbnQnIGZvciBSQzJfSU5UIGluIGNyeXB0by9yYzIvcmMyLmgKIyBSQzJfTE9ORwl1c2UgJ2xvbmcnIGluc3RlYWQgb2YgJ2ludCcgZm9yIFJDMl9JTlQgaW4gY3J5cHRvL3JjMi9yYzIuaAojIFJDNF9DSEFSCXVzZSAnY2hhcicgaW5zdGVhZCBvZiAnaW50JyBmb3IgUkM0X0lOVCBpbiBjcnlwdG8vcmM0L3JjNC5oCiMgUkM0X0xPTkcJdXNlICdsb25nJyBpbnN0ZWFkIG9mICdpbnQnIGZvciBSQzRfSU5UIGluIGNyeXB0by9yYzQvcmM0LmgKIyBSQzRfSU5ERVgJZGVmaW5lIFJDNF9JTkRFWCBpbiBjcnlwdG8vcmM0L3JjNF9sb2NsLmguICBUaGlzIHR1cm5zIG9uCiMJCWFycmF5IGxvb2t1cHMgaW5zdGVhZCBvZiBwb2ludGVyIHVzZS4KIyBSQzRfQ0hVTksJZW5hYmxlcyBjb2RlIHRoYXQgaGFuZGxlcyBkYXRhIGFsaWduZWQgYXQgbG9uZyAobmF0dXJhbCBDUFUKIwkJd29yZCkgYm91bmRhcnkuCiMgUkM0X0NIVU5LX0xMCWVuYWJsZXMgY29kZSB0aGF0IGhhbmRsZXMgZGF0YSBhbGlnbmVkIGF0IGxvbmcgbG9uZyBib3VuZGFyeQojCQkoaW50ZW5kZWQgZm9yIDY0LWJpdCBDUFVzIHJ1bm5pbmcgMzItYml0IE9TKS4KIyBCRl9QVFIJdXNlICdwb2ludGVyIGFyaXRobWF0aWMnIGZvciBCbG93ZmlzaCAodW5zYWZlIG9uIEFscGhhKS4KIyBCRl9QVFIyCWludGVsIHNwZWNpZmljIHZlcnNpb24gKGdlbmVyaWMgdmVyc2lvbiBpcyBtb3JlIGVmZmljaWVudCkuCiMKIyBGb2xsb3dpbmcgYXJlIHNldCBhdXRvbWF0aWNhbGx5IGJ5IHRoaXMgc2NyaXB0CiMKIyBNRDVfQVNNCXVzZSBzb21lIGV4dHJhIG1kNSBhc3NlbWJlciwKIyBTSEExX0FTTQl1c2Ugc29tZSBleHRyYSBzaGExIGFzc2VtYmVyLCBtdXN0IGRlZmluZSBMX0VORElBTiBmb3IgeDg2CiMgUk1EMTYwX0FTTQl1c2Ugc29tZSBleHRyYSByaXBlbWQxNjAgYXNzZW1iZXIsCiMgU0hBMjU2X0FTTQlzaGEyNTZfYmxvY2sgaXMgaW1wbGVtZW50ZWQgaW4gYXNzZW1ibGVyCiMgU0hBNTEyX0FTTQlzaGE1MTJfYmxvY2sgaXMgaW1wbGVtZW50ZWQgaW4gYXNzZW1ibGVyCiMgQUVTX0FTTQlBU0VfW2VufGRlXWNyeXB0IGlzIGltcGxlbWVudGVkIGluIGFzc2VtYmxlcgoKIyBNaW5pbXVtIHdhcm5pbmcgb3B0aW9ucy4uLiBhbnkgY29udHJpYnV0aW9ucyB0byBPcGVuU1NMIHNob3VsZCBhdCBsZWFzdCBnZXQKIyBwYXN0IHRoZXNlLgoKbXkgJGdjY19kZXZ0ZWFtX3dhcm4gPSAiLVdhbGwgLXBlZGFudGljIC1EUEVEQU5USUMgLVduby1sb25nLWxvbmcgLVdzaWduLWNvbXBhcmUgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdzaGFkb3cgLVdmb3JtYXQgLVdlcnJvciAtRENSWVBUT19NREVCVUdfQUxMIC1EQ1JZUFRPX01ERUJVR19BQk9SVCAtRFJFRl9DSEVDSyAtRE9QRU5TU0xfTk9fREVQUkVDQVRFRCI7CgpteSAkc3RyaWN0X3dhcm5pbmdzID0gMDsKCm15ICR4ODZfZ2NjX2Rlcz0iREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCI7CgojIE1EMl9DSEFSIHNsYWdzIHBlbnRpdW0gcHJvcwpteSAkeDg2X2djY19vcHRzPSJSQzRfSU5ERVggTUQyX0lOVCI7CgojIE1PRElGWSBUSEVTRSBQQVJBTUVURVJTIElGIFlPVSBBUkUgR09JTkcgVE8gVVNFIFRIRSAndXRpbC9zcGVlZC5zaCBTQ1JJUFQKIyBEb24ndCB3b3JyeSBhYm91dCB0aGVzZSBub3JtYWxseQoKbXkgJHRjYz0iY2MiOwpteSAkdGZsYWdzPSItZmFzdCAtWGEiOwpteSAkdGJuX211bD0iIjsKbXkgJHRsaWI9Ii1sbnNsIC1sc29ja2V0IjsKIyRiaXRzMT0iU0lYVEVFTl9CSVQgIjsKIyRiaXRzMj0iVEhJUlRZX1RXT19CSVQgIjsKbXkgJGJpdHMxPSJUSElSVFlfVFdPX0JJVCAiOwpteSAkYml0czI9IlNJWFRZX0ZPVVJfQklUICI7CgpteSAkeDg2X2FzbT0ieDg2Y3B1aWQubzpibi01ODYubyBjby01ODYubyB4ODYtbW9udC5vIHg4Ni1nZjJtLm86OmRlcy01ODYubyBjcnlwdDU4Ni5vOmFlcy01ODYubyB2cGFlcy14ODYubyBhZXNuaS14ODYubzpiZi01ODYubzptZDUtNTg2Lm86c2hhMS01ODYubyBzaGEyNTYtNTg2Lm8gc2hhNTEyLTU4Ni5vOmNhc3QtNTg2Lm86cmM0LTU4Ni5vOnJtZC01ODYubzpyYzUtNTg2Lm86d3BfYmxvY2subyB3cC1tbXgubzpjbWxsLXg4Ni5vOmdoYXNoLXg4Ni5vOmVfcGFkbG9jay14ODYubyI7CgpteSAkeDg2X2VsZl9hc209IiR4ODZfYXNtOmVsZiI7CgpteSAkeDg2XzY0X2FzbT0ieDg2XzY0Y3B1aWQubzp4ODZfNjQtZ2NjLm8geDg2XzY0LW1vbnQubyB4ODZfNjQtbW9udDUubyB4ODZfNjQtZ2YybS5vIHJzYXpfZXhwLm8gcnNhei14ODZfNjQubyByc2F6LWF2eDIubzo6OmFlcy14ODZfNjQubyB2cGFlcy14ODZfNjQubyBic2Flcy14ODZfNjQubyBhZXNuaS14ODZfNjQubyBhZXNuaS1zaGExLXg4Nl82NC5vIGFlc25pLXNoYTI1Ni14ODZfNjQubyBhZXNuaS1tYi14ODZfNjQubzo6bWQ1LXg4Nl82NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2LXg4Nl82NC5vIHNoYTUxMi14ODZfNjQubyBzaGExLW1iLXg4Nl82NC5vIHNoYTI1Ni1tYi14ODZfNjQubzo6cmM0LXg4Nl82NC5vIHJjNC1tZDUteDg2XzY0Lm86Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNtbGxfbWlzYy5vOmdoYXNoLXg4Nl82NC5vIGFlc25pLWdjbS14ODZfNjQubzplX3BhZGxvY2steDg2XzY0Lm8iOwpteSAkaWE2NF9hc209ImlhNjRjcHVpZC5vOmJuLWlhNjQubyBpYTY0LW1vbnQubzo6OmFlc19jb3JlLm8gYWVzX2NiYy5vIGFlcy1pYTY0Lm86Om1kNS1pYTY0Lm86c2hhMS1pYTY0Lm8gc2hhMjU2LWlhNjQubyBzaGE1MTItaWE2NC5vOjpyYzQtaWE2NC5vIHJjNF9za2V5Lm86Ojo6OmdoYXNoLWlhNjQubzo6dm9pZCI7Cm15ICRzcGFyY3Y5X2FzbT0ic3BhcmN2OWNhcC5vIHNwYXJjY3B1aWQubzpibi1zcGFyY3Y5Lm8gc3BhcmN2OS1tb250Lm8gc3BhcmN2OWEtbW9udC5vIHZpczMtbW9udC5vIHNwYXJjdDQtbW9udC5vIHNwYXJjdjktZ2YybS5vOjpkZXNfZW5jLXNwYXJjLm8gZmNyeXB0X2IubyBkZXN0NC1zcGFyY3Y5Lm86YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLXNwYXJjdjkubyBhZXN0NC1zcGFyY3Y5Lm86Om1kNS1zcGFyY3Y5Lm86c2hhMS1zcGFyY3Y5Lm8gc2hhMjU2LXNwYXJjdjkubyBzaGE1MTItc3BhcmN2OS5vOjo6Ojo6Y2FtZWxsaWEubyBjbWxsX21pc2MubyBjbWxsX2NiYy5vIGNtbGx0NC1zcGFyY3Y5Lm86Z2hhc2gtc3BhcmN2OS5vOjp2b2lkIjsKbXkgJHNwYXJjdjhfYXNtPSI6c3BhcmN2OC5vOjpkZXNfZW5jLXNwYXJjLm8gZmNyeXB0X2Iubzo6Ojo6Ojo6Ojo6Ojp2b2lkIjsKbXkgJGFscGhhX2FzbT0iYWxwaGFjcHVpZC5vOmJuX2FzbS5vIGFscGhhLW1vbnQubzo6Ojo6OnNoYTEtYWxwaGEubzo6Ojo6OjpnaGFzaC1hbHBoYS5vOjp2b2lkIjsKbXkgJG1pcHM2NF9hc209Ijpibi1taXBzLm8gbWlwcy1tb250Lm86OjphZXNfY2JjLm8gYWVzLW1pcHMubzo6OnNoYTEtbWlwcy5vIHNoYTI1Ni1taXBzLm8gc2hhNTEyLW1pcHMubzo6Ojo6Ojo6IjsKbXkgJG1pcHMzMl9hc209JG1pcHM2NF9hc207ICRtaXBzMzJfYXNtID1+IHMvXHMqc2hhNTEyXC1taXBzXC5vLy87Cm15ICRzMzkweF9hc209InMzOTB4Y2FwLm8gczM5MHhjcHVpZC5vOmJuLXMzOTB4Lm8gczM5MHgtbW9udC5vIHMzOTB4LWdmMm0ubzo6OmFlcy1zMzkweC5vIGFlcy1jdHIubyBhZXMteHRzLm86OjpzaGExLXMzOTB4Lm8gc2hhMjU2LXMzOTB4Lm8gc2hhNTEyLXMzOTB4Lm86OnJjNC1zMzkweC5vOjo6OjpnaGFzaC1zMzkweC5vOiI7Cm15ICRhcm12NF9hc209ImFybWNhcC5vIGFybXY0Y3B1aWQubzpibl9hc20ubyBhcm12NC1tb250Lm8gYXJtdjQtZ2YybS5vOjo6YWVzX2NiYy5vIGFlcy1hcm12NC5vIGJzYWVzLWFybXY3Lm8gYWVzdjgtYXJteC5vOjo6c2hhMS1hcm12NC1sYXJnZS5vIHNoYTI1Ni1hcm12NC5vIHNoYTUxMi1hcm12NC5vOjo6Ojo6OmdoYXNoLWFybXY0Lm8gZ2hhc2h2OC1hcm14Lm86OnZvaWQiOwpteSAkYWFyY2g2NF9hc209ImFybWNhcC5vIGFybTY0Y3B1aWQubyBtZW1fY2xyLm86Ojo6YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzdjgtYXJteC5vOjo6c2hhMS1hcm12OC5vIHNoYTI1Ni1hcm12OC5vIHNoYTUxMi1hcm12OC5vOjo6Ojo6OmdoYXNodjgtYXJteC5vOiI7Cm15ICRwYXJpc2MxMV9hc209InBhcmlzY2lkLm86Ym5fYXNtLm8gcGFyaXNjLW1vbnQubzo6OmFlc19jb3JlLm8gYWVzX2NiYy5vIGFlcy1wYXJpc2Mubzo6OnNoYTEtcGFyaXNjLm8gc2hhMjU2LXBhcmlzYy5vIHNoYTUxMi1wYXJpc2Mubzo6cmM0LXBhcmlzYy5vOjo6OjpnaGFzaC1wYXJpc2Mubzo6MzIiOwpteSAkcGFyaXNjMjBfYXNtPSJwYXJpc2NpZC5vOnBhLXJpc2MyVy5vIHBhcmlzYy1tb250Lm86OjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtcGFyaXNjLm86OjpzaGExLXBhcmlzYy5vIHNoYTI1Ni1wYXJpc2MubyBzaGE1MTItcGFyaXNjLm86OnJjNC1wYXJpc2Mubzo6Ojo6Z2hhc2gtcGFyaXNjLm86OjY0IjsKbXkgJHBwYzY0X2FzbT0icHBjY3B1aWQubyBwcGNjYXAubzpibi1wcGMubyBwcGMtbW9udC5vIHBwYzY0LW1vbnQubzo6OmFlc19jb3JlLm8gYWVzX2NiYy5vIGFlcy1wcGMubyB2cGFlcy1wcGMubyBhZXNwOC1wcGMubzo6OnNoYTEtcHBjLm8gc2hhMjU2LXBwYy5vIHNoYTUxMi1wcGMubyBzaGEyNTZwOC1wcGMubyBzaGE1MTJwOC1wcGMubzo6Ojo6OjpnaGFzaHA4LXBwYy5vOiI7Cm15ICRwcGMzMl9hc209JHBwYzY0X2FzbTsKbXkgJG5vX2FzbT0iOjo6Ojo6Ojo6Ojo6Ojo6OnZvaWQiOwoKIyBBcyBmb3IgJEJTRHRocmVhZHMuIElkZWEgaXMgdG8gbWFpbnRhaW4gImNvbGxlY3RpdmUiIHNldCBvZiBmbGFncywKIyB3aGljaCB3b3VsZCBjb3ZlciBhbGwgQlNEIGZsYXZvcnMuIC1wdGhyZWFkIGFwcGxpZXMgdG8gdGhlbSBhbGwsCiMgYnV0IGlzIHRyZWF0ZWQgZGlmZmVyZW50bHkuIE9wZW5CU0QgZXhwYW5kcyBpcyBhcyAtRF9QT1NJWF9USFJFQUQKIyAtbGNfciwgd2hpY2ggaXMgc3VmZmljaWVudC4gRnJlZUJTRCA0LnggZXhwYW5kcyBpdCBhcyAtbGNfciwKIyB3aGljaCBoYXMgdG8gYmUgYWNjb21wYW5pZWQgYnkgZXhwbGljaXQgLURfVEhSRUFEX1NBRkUgYW5kCiMgc29tZXRpbWVzIC1EX1JFRU5UUkFOVC4gRnJlZUJTRCA1LnggZXhwYW5kcyBpdCBhcyAtbGNfciwgd2hpY2gKIyBzZWVtcyB0byBiZSBzdWZmaWNpZW50PwpteSAkQlNEdGhyZWFkcz0iLXB0aHJlYWQgLURfVEhSRUFEX1NBRkUgLURfUkVFTlRSQU5UIjsKCiNjb25maWctc3RyaW5nCSRjYyA6ICRjZmxhZ3MgOiAkdW5pc3RkIDogJHRocmVhZF9jZmxhZyA6ICRzeXNfaWQgOiAkbGZsYWdzIDogJGJuX29wcyA6ICRjcHVpZF9vYmogOiAkYm5fb2JqIDogJGVjX29iaiA6ICRkZXNfb2JqIDogJGFlc19vYmogOiAkYmZfb2JqIDogJG1kNV9vYmogOiAkc2hhMV9vYmogOiAkY2FzdF9vYmogOiAkcmM0X29iaiA6ICRybWQxNjBfb2JqIDogJHJjNV9vYmogOiAkd3Bfb2JqIDogJGNtbGxfb2JqIDogJG1vZGVzX29iaiA6ICRlbmdpbmVzX29iaiA6ICRkc29fc2NoZW1lIDogJHNoYXJlZF90YXJnZXQgOiAkc2hhcmVkX2NmbGFnIDogJHNoYXJlZF9sZGZsYWcgOiAkc2hhcmVkX2V4dGVuc2lvbiA6ICRyYW5saWIgOiAkYXJmbGFncyA6ICRtdWx0aWxpYgoKbXkgJXRhYmxlPSgKIyBGaWxlICdUQUJMRScgKGNyZWF0ZWQgYnkgJ21ha2UgVEFCTEUnKSBjb250YWlucyB0aGUgZGF0YSBmcm9tIHRoaXMgbGlzdCwKIyBmb3JtYXR0ZWQgZm9yIGJldHRlciByZWFkYWJpbGl0eS4KCgojImIiLAkJIiR7dGNjfToke3RmbGFnc306OiR7dGxpYn06JHtiaXRzMX06JHt0Ym5fbXVsfTo6IiwKIyJibC00Yy0yYyIsCSIke3RjY306JHt0ZmxhZ3N9Ojoke3RsaWJ9OiR7Yml0czF9Qk5fTExPTkcgUkM0X0NIQVIgTUQyX0NIQVI6JHt0Ym5fbXVsfTo6IiwKIyJibC00Yy1yaSIsCSIke3RjY306JHt0ZmxhZ3N9Ojoke3RsaWJ9OiR7Yml0czF9Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0lOREVYOiR7dGJuX211bH06OiIsCiMiYjItaXMtcmktZHAiLAkiJHt0Y2N9OiR7dGZsYWdzfTo6JHt0bGlifToke2JpdHMyfUlERUFfU0hPUlQgUkM0X0lOREVYIERFU19QVFI6JHt0Ym5fbXVsfTo6IiwKCiMgT3VyIGRldmVsb3BtZW50IGNvbmZpZ3MKInB1cmlmeSIsCSJwdXJpZnkgZ2NjOi1nIC1EUFVSSUZZIC1XYWxsOjoodW5rbm93bik6Oi1sc29ja2V0IC1sbnNsOjo6OiIsCiJkZWJ1ZyIsCSJnY2M6LURCTl9ERUJVRyAtRFJFRl9DSEVDSyAtRENPTkZfREVCVUcgLURCTl9DVFhfREVCVUcgLURDUllQVE9fTURFQlVHIC1ET1BFTlNTTF9OT19BU00gLWdnZGIgLWcyIC1XZm9ybWF0IC1Xc2hhZG93IC1XbWlzc2luZy1wcm90b3R5cGVzIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgLVdlcnJvcjo6KHVua25vd24pOjotbGVmZW5jZTo6OjoiLAoiZGVidWctYmVuIiwJImdjYzokZ2NjX2RldnRlYW1fd2FybiAtREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURERUJVR19TQUZFU1RBQ0sgLU8yIC1waXBlOjoodW5rbm93bik6Ojo6OiIsCiJkZWJ1Zy1iZW4tb3BlbmJzZCIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURQRURBTlRJQyAtRERFQlVHX1NBRkVTVEFDSyAtRE9QRU5TU0xfT1BFTkJTRF9ERVZfQ1JZUFRPIC1ET1BFTlNTTF9OT19BU00gLU8yIC1wZWRhbnRpYyAtV2FsbCAtV3NoYWRvdyAtV2Vycm9yIC1waXBlOjoodW5rbm93bik6Ojo6IiwKImRlYnVnLWJlbi1vcGVuYnNkLWRlYnVnIiwiZ2NjOi1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQk5fQ1RYX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtRFBFREFOVElDIC1EREVCVUdfU0FGRVNUQUNLIC1ET1BFTlNTTF9PUEVOQlNEX0RFVl9DUllQVE8gLURPUEVOU1NMX05PX0FTTSAtZzMgLU8yIC1wZWRhbnRpYyAtV2FsbCAtV3NoYWRvdyAtV2Vycm9yIC1waXBlOjoodW5rbm93bik6Ojo6IiwKImRlYnVnLWJlbi1kZWJ1ZyIsCSJnY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLURCTl9ERUJVRyAtRENPTkZfREVCVUcgLURERUJVR19TQUZFU1RBQ0sgLURPUEVOU1NMX05PX0hXX1BBRExPQ0sgLWczIC1PMiAtcGlwZTo6KHVua25vd24pOjo6Ojo6IiwKImRlYnVnLWJlbi1kZWJ1Zy02NCIsCSJnY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLVduby1lcnJvcj1vdmVybGVuZ3RoLXN0cmluZ3MgLURCTl9ERUJVRyAtRENPTkZfREVCVUcgLURERUJVR19TQUZFU1RBQ0sgLURERUJVR19VTlVTRUQgLWczIC1PMyAtcGlwZTo6JHtCU0R0aHJlYWRzfTo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoiZGVidWctYmVuLWRlYnVnLTY0LWNsYW5nIiwJImNsYW5nOiRnY2NfZGV2dGVhbV93YXJuIC1mc2FuaXRpemU9dW5kZWZpbmVkIC1Xbm8tZXJyb3I9b3Zlcmxlbmd0aC1zdHJpbmdzIC1Xbm8tZXJyb3I9ZXh0ZW5kZWQtb2Zmc2V0b2YgLVduby1lcnJvcj1sYW5ndWFnZS1leHRlbnNpb24tdG9rZW4gLVdzdHJpY3Qtb3ZlcmZsb3cgLVF1bnVzZWQtYXJndW1lbnRzIC1EQk5fREVCVUcgLURDT05GX0RFQlVHIC1EREVCVUdfU0FGRVNUQUNLIC1EREVCVUdfVU5VU0VEIC1nMyAtTzMgLXBpcGU6OiR7QlNEdGhyZWFkc306OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWJlbi1kZWJ1Zy02NC1ub29wdCIsCSJnY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLVduby1lcnJvcj1vdmVybGVuZ3RoLXN0cmluZ3MgLURCTl9ERUJVRyAtRENPTkZfREVCVUcgLURERUJVR19TQUZFU1RBQ0sgLURERUJVR19VTlVTRUQgLWczIC1waXBlOjoke0JTRHRocmVhZHN9Ojo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1iZW4tbWFjb3MiLAkiY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLURPUEVOU1NMX05PX0FTTSAtREJOX0RFQlVHIC1EQ09ORl9ERUJVRyAtRERFQlVHX1NBRkVTVEFDSyAtRERFQlVHX1VOVVNFRCAtRE9QRU5TU0xfVEhSRUFEUyAtRF9SRUVOVFJBTlQgLUREU09fRExGQ04gLURIQVZFX0RMRkNOX0ggLWFyY2ggaTM4NiAtTzMgLURMX0VORElBTiAtZzMgLXBpcGU6Oih1bmtub3duKTo6Ojo6OiIsCiJkZWJ1Zy1iZW4tbm8tb3B0IiwJImdjYzogLVdhbGwgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1EREVCVUdfU0FGRVNUQUNLIC1EQ1JZUFRPX01ERUJVRyAtV2Vycm9yIC1ETF9FTkRJQU4gLURURVJNSU9TIC1XYWxsIC1nMzo6KHVua25vd24pOjo6Ojo6IiwKImRlYnVnLWJlbi1zdHJpY3QiLAkiZ2NjOi1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQk5fQ1RYX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtRENPTlNUX1NUUklDVCAtTzIgLVdhbGwgLVdzaGFkb3cgLVdlcnJvciAtV3BvaW50ZXItYXJpdGggLVdjYXN0LXF1YWwgLVd3cml0ZS1zdHJpbmdzIC1waXBlOjoodW5rbm93bik6Ojo6OjoiLAoiZGVidWctYmVuLWRhcndpbjY0IiwiY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLVduby1sYW5ndWFnZS1leHRlbnNpb24tdG9rZW4gLVduby1leHRlbmRlZC1vZmZzZXRvZiAtYXJjaCB4ODZfNjQgLU8zIC1ETF9FTkRJQU4gLURNRDMyX1JFR19UPWludCAtV2FsbDo6LURfUkVFTlRSQU5UOk1BQ09TWDotV2wsLXNlYXJjaF9wYXRoc19maXJzdCU6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR4ODZfNjRfYXNtOm1hY29zeDpkbGZjbjpkYXJ3aW4tc2hhcmVkOi1mUElDIC1mbm8tY29tbW9uOi1hcmNoIHg4Nl82NCAtZHluYW1pY2xpYjouXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKS5keWxpYiIsCiJkZWJ1Zy1yc2UiLCJjYzotRFRFUk1JT1MgLURMX0VORElBTiAtcGlwZSAtTyAtZyAtZ2dkYjMgLVdhbGw6Oih1bmtub3duKTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfSIsCiJkZWJ1Zy1ib2RvIiwJImdjYzokZ2NjX2RldnRlYW1fd2FybiAtV25vLWVycm9yPW92ZXJsZW5ndGgtc3RyaW5ncyAtREJOX0RFQlVHIC1EQk5fREVCVUdfUkFORCAtRENPTkZfREVCVUcgLURCSU9fUEFJUl9ERUJVRyAtbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gLWcgLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKImRlYnVnLWVyYnJpZGdlIiwgICAiZ2NjOiRnY2NfZGV2dGVhbV93YXJuIC1EQk5fREVCVUcgLURDT05GX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gLWc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2NCIsCiJkZWJ1Zy11bGYiLCAiZ2NjOi1EVEVSTUlPUyAtRExfRU5ESUFOIC1tYXJjaD1pNDg2IC1XYWxsIC1EQk5fREVCVUcgLURCTl9ERUJVR19SQU5EIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURPUEVOU1NMX05PX0FTTSAtZyAtV2Zvcm1hdCAtV3NoYWRvdyAtV21pc3NpbmctcHJvdG90eXBlcyAtV21pc3NpbmctZGVjbGFyYXRpb25zOjo6Q1lHV0lOMzI6Ojoke25vX2FzbX06d2luMzI6Y3lnd2luLXNoYXJlZDo6Oi5kbGwiLAoiZGVidWctc3RldmU2NCIsICJnY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLW02NCAtRExfRU5ESUFOIC1EVEVSTUlPIC1EQ09ORl9ERUJVRyAtRERFQlVHX1NBRkVTVEFDSyAtV25vLW92ZXJsZW5ndGgtc3RyaW5ncyAtZzo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1zdGV2ZTMyIiwgImdjYzokZ2NjX2RldnRlYW1fd2FybiAtbTMyIC1ETF9FTkRJQU4gLURDT05GX0RFQlVHIC1EREVCVUdfU0FGRVNUQUNLIC1Xbm8tb3Zlcmxlbmd0aC1zdHJpbmdzIC1nIC1waXBlOjotRF9SRUVOVFJBTlQ6Oi1yZHluYW1pYyAtbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW0zMjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1zdGV2ZS1vcHQiLCAiZ2NjOiRnY2NfZGV2dGVhbV93YXJuIC1tNjQgLU8zIC1ETF9FTkRJQU4gLURURVJNSU8gLURDT05GX0RFQlVHIC1EREVCVUdfU0FGRVNUQUNLIC1Xbm8tb3Zlcmxlbmd0aC1zdHJpbmdzIC1nOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWxldml0dGUtbGludXgtZWxmIiwiZ2NjOi1ETEVWSVRURV9ERUJVRyAtREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtRENSWVBUT19NREVCVUcgLURMX0VORElBTiAtZ2dkYiAtZzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1sZXZpdHRlLWxpbnV4LW5vYXNtIiwiZ2NjOi1ETEVWSVRURV9ERUJVRyAtREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtRENSWVBUT19NREVCVUcgLURPUEVOU1NMX05PX0FTTSAtRExfRU5ESUFOIC1nZ2RiIC1nMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1sZXZpdHRlLWxpbnV4LWVsZi1leHRyZW1lIiwiZ2NjOi1ETEVWSVRURV9ERUJVRyAtRFJFRl9DSEVDSyAtRENPTkZfREVCVUcgLURCTl9ERUJVRyAtREJOX0RFQlVHX1JBTkQgLURDUllQVE9fTURFQlVHIC1ERU5HSU5FX0NPTkZfREVCVUcgLURMX0VORElBTiAtRFRFUk1JTyAtRFBFREFOVElDIC1nZ2RiIC1nMyAtcGVkYW50aWMgLWFuc2kgLVdhbGwgLVcgLVd1bmRlZiAtV3NoYWRvdyAtV2Nhc3QtYWxpZ24gLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctcHJvdG90eXBlcyAtV25vLWxvbmctbG9uZyAtV3VuZGVmIC1XY29udmVyc2lvbiAtcGlwZTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWxldml0dGUtbGludXgtbm9hc20tZXh0cmVtZSIsImdjYzotRExFVklUVEVfREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQk5fREVCVUcgLURCTl9ERUJVR19SQU5EIC1EQ1JZUFRPX01ERUJVRyAtREVOR0lORV9DT05GX0RFQlVHIC1ET1BFTlNTTF9OT19BU00gLURMX0VORElBTiAtRFRFUk1JTyAtRFBFREFOVElDIC1nZ2RiIC1nMyAtcGVkYW50aWMgLWFuc2kgLVdhbGwgLVcgLVd1bmRlZiAtV3NoYWRvdyAtV2Nhc3QtYWxpZ24gLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctcHJvdG90eXBlcyAtV25vLWxvbmctbG9uZyAtV3VuZGVmIC1XY29udmVyc2lvbiAtcGlwZTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1nZW9mZjMyIiwiZ2NjOi1EQk5fREVCVUcgLURCTl9ERUJVR19SQU5EIC1EQk5fU1RSSUNUIC1EUFVSSUZZIC1ET1BFTlNTTF9OT19ERVBSRUNBVEVEIC1ET1BFTlNTTF9OT19BU00gLURPUEVOU1NMX05PX0lOTElORV9BU00gLURMX0VORElBTiAtRFRFUk1JTyAtRFBFREFOVElDIC1PMSAtZ2dkYjIgLVdhbGwgLVdlcnJvciAtV3VuZGVmIC1wZWRhbnRpYyAtV3NoYWRvdyAtV3BvaW50ZXItYXJpdGggLVdiYWQtZnVuY3Rpb24tY2FzdCAtV2Nhc3QtYWxpZ24gLVdzaWduLWNvbXBhcmUgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV25vLWxvbmctbG9uZzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWdlb2ZmNjQiLCJnY2M6LURCTl9ERUJVRyAtREJOX0RFQlVHX1JBTkQgLURCTl9TVFJJQ1QgLURQVVJJRlkgLURPUEVOU1NMX05PX0RFUFJFQ0FURUQgLURPUEVOU1NMX05PX0FTTSAtRE9QRU5TU0xfTk9fSU5MSU5FX0FTTSAtRExfRU5ESUFOIC1EVEVSTUlPIC1EUEVEQU5USUMgLU8xIC1nZ2RiMiAtV2FsbCAtV2Vycm9yIC1XdW5kZWYgLXBlZGFudGljIC1Xc2hhZG93IC1XcG9pbnRlci1hcml0aCAtV2JhZC1mdW5jdGlvbi1jYXN0IC1XY2FzdC1hbGlnbiAtV3NpZ24tY29tcGFyZSAtV21pc3NpbmctcHJvdG90eXBlcyAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1Xbm8tbG9uZy1sb25nOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1saW51eC1wZW50aXVtIiwiZ2NjOi1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQk5fQ1RYX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtRExfRU5ESUFOIC1EVEVSTUlPIC1nIC1tY3B1PXBlbnRpdW0gLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY24iLAoiZGVidWctbGludXgtcHBybyIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURMX0VORElBTiAtRFRFUk1JTyAtZyAtbWNwdT1wZW50aXVtcHJvIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuIiwKImRlYnVnLWxpbnV4LWVsZiIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURMX0VORElBTiAtRFRFUk1JTyAtZyAtbWFyY2g9aTQ4NiAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGVmZW5jZSAtbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWxpbnV4LWVsZi1ub2VmZW5jZSIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURMX0VORElBTiAtRFRFUk1JTyAtZyAtbWFyY2g9aTQ4NiAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWxpbnV4LWlhMzItYWVzIiwgImdjYzotREFFU19FWFBFUklNRU5UQUwgLURMX0VORElBTiAtRFRFUk1JTyAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306eDg2Y3B1aWQubzpibi01ODYubyBjby01ODYubyB4ODYtbW9udC5vOjpkZXMtNTg2Lm8gY3J5cHQ1ODYubzphZXNfeDg2Y29yZS5vIGFlc19jYmMubyBhZXNuaS14ODYubzpiZi01ODYubzptZDUtNTg2Lm86c2hhMS01ODYubyBzaGEyNTYtNTg2Lm8gc2hhNTEyLTU4Ni5vOmNhc3QtNTg2Lm86cmM0LTU4Ni5vOnJtZC01ODYubzpyYzUtNTg2Lm86d3BfYmxvY2subyB3cC1tbXgubzo6Z2hhc2gteDg2Lm86ZV9wYWRsb2NrLXg4Ni5vOmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWxpbnV4LWdlbmVyaWMzMiIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtRENSWVBUT19NREVCVUcgLURURVJNSU8gLWcgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1saW51eC1nZW5lcmljNjQiLCJnY2M6LURCTl9ERUJVRyAtRFJFRl9DSEVDSyAtRENPTkZfREVCVUcgLURDUllQVE9fTURFQlVHIC1EVEVSTUlPIC1nIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1saW51eC14ODZfNjQiLCJnY2M6LURCTl9ERUJVRyAtRFJFRl9DSEVDSyAtRENPTkZfREVCVUcgLURDUllQVE9fTURFQlVHIC1tNjQgLURMX0VORElBTiAtRFRFUk1JTyAtZyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKImRpc3QiLAkJImNjOi1POjoodW5rbm93bik6Ojo6OjoiLAoKIyBCYXNpYyBjb25maWdzIHRoYXQgc2hvdWxkIHdvcmsgb24gYW55ICgzMiBhbmQgbGVzcyBiaXQpIGJveAoiZ2NjIiwJCSJnY2M6LU8zOjoodW5rbm93bik6OjpCTl9MTE9ORzo6OiIsCiJjYyIsCQkiY2M6LU86Oih1bmtub3duKTo6Ojo6OiIsCgojIyMjVk9TIENvbmZpZ3VyYXRpb25zCiJ2b3MtZ2NjIiwiZ2NjOi1PMyAtV2FsbCAtRE9QRU5TU0xfU1lTTkFNRV9WT1MgLURfUE9TSVhfQ19TT1VSQ0U9MjAwMTEyTCAtRF9CU0QgLURfVk9TX0VYVEVOREVEX05BTUVTIC1EQl9FTkRJQU46Oih1bmtub3duKTpWT1M6LVdsLC1tYXA6Qk5fTExPTkc6JHtub19hc219Ojo6Ojouc286IiwKImRlYnVnLXZvcy1nY2MiLCJnY2M6LU8wIC1nIC1XYWxsIC1ET1BFTlNTTF9TWVNOQU1FX1ZPUyAtRF9QT1NJWF9DX1NPVVJDRT0yMDAxMTJMIC1EX0JTRCAtRF9WT1NfRVhURU5ERURfTkFNRVMgLURCX0VORElBTiAtREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtRENSWVBUT19NREVCVUc6Oih1bmtub3duKTpWT1M6LVdsLC1tYXA6Qk5fTExPTkc6JHtub19hc219Ojo6Ojouc286IiwKCiMjIyMgU29sYXJpcyB4ODYgd2l0aCBHTlUgQyBzZXR1cHMKIyAtRE9QRU5TU0xfTk9fSU5MSU5FX0FTTSBzd2l0Y2hlcyBvZmYgaW5saW5lIGFzc2VtYmxlci4gV2UgaGF2ZSB0byBkbyBpdAojIGhlcmUgYmVjYXVzZSB3aGVuZXZlciBHTlUgQyBpbnN0YW50aWF0ZXMgYW4gYXNzZW1ibGVyIHRlbXBsYXRlIGl0CiMgc3Vycm91bmRzIGl0IHdpdGggI0FQUCAjTk9fQVBQIGNvbW1lbnQgcGFpciB3aGljaCAoYXQgbGVhc3QgU29sYXJpcwojIDdfeDg2KSAvdXNyL2Njcy9iaW4vYXMgZmFpbHMgdG8gYXNzZW1ibGUgd2l0aCAiSWxsZWdhbCBtbmVtb25pYyIKIyBlcnJvciBtZXNzYWdlLgoic29sYXJpcy14ODYtZ2NjIiwiZ2NjOi1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtbWFyY2g9cGVudGl1bSAtV2FsbCAtRExfRU5ESUFOIC1ET1BFTlNTTF9OT19JTkxJTkVfQVNNOjotRF9SRUVOVFJBTlQ6Oi1sc29ja2V0IC1sbnNsIC1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1mUElDOi1zaGFyZWQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAojIC1zaGFyZWQgLXN0YXRpYy1saWJnY2MgbWlnaHQgYXBwZWFyIGNvbnRyb3ZlcnNpYWwsIGJ1dCBtb2R1bGVzIHRha2VuCiMgZnJvbSBzdGF0aWMgbGliZ2NjIGRvIG5vdCBoYXZlIHJlbG9jYXRpb25zIGFuZCBsaW5raW5nIHRoZW0gaW50byBvdXIKIyBzaGFyZWQgb2JqZWN0cyBkb2Vzbid0IGhhdmUgYW55IG5lZ2F0aXZlIHNpZGUtZWZmZWN0cy4gT24gdGhlIGNvbnRyYXJ5LAojIGRvaW5nIHNvIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSBnY2Mgc2hhcmVkIGJ1aWxkIHdpdGggU3VuIEMuIEdpdmVuCiMgdGhhdCBnY2MgZ2VuZXJhdGVzIGZhc3RlciBjb2RlIFt0aGFua3MgdG8gaW5saW5lIGFzc2VtYmxlcl0sIEkgd291bGQKIyBhY3R1YWxseSByZWNvbW1lbmQgdG8gY29uc2lkZXIgdXNpbmcgZ2NjIHNoYXJlZCBidWlsZCBldmVuIHdpdGggdmVuZG9yCiMgY29tcGlsZXI6LSkKIwkJCQkJCTxhcHByb0BmeS5jaGFsbWVycy5zZT4KInNvbGFyaXM2NC14ODZfNjQtZ2NjIiwiZ2NjOi1tNjQgLU8zIC1XYWxsIC1ETF9FTkRJQU46Oi1EX1JFRU5UUkFOVDo6LWxzb2NrZXQgLWxuc2wgLWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246c29sYXJpcy1zaGFyZWQ6LWZQSUM6LW02NCAtc2hhcmVkIC1zdGF0aWMtbGliZ2NjOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6LzY0IiwKCiMjIyMgU29sYXJpcyB4ODYgd2l0aCBTdW4gQyBzZXR1cHMKInNvbGFyaXMteDg2LWNjIiwiY2M6LWZhc3QgLXhhcmNoPWdlbmVyaWMgLU8gLVhhOjotRF9SRUVOVFJBTlQ6Oi1sc29ja2V0IC1sbnNsIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19QVFIgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1LUElDOi1HIC1keSAteiB0ZXh0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKInNvbGFyaXM2NC14ODZfNjQtY2MiLCJjYzotZmFzdCAteGFyY2g9YW1kNjQgLXhzdHJjb25zdCAtWGEgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOjotbHNvY2tldCAtbG5zbCAtbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpzb2xhcmlzLXNoYXJlZDotS1BJQzoteGFyY2g9YW1kNjQgLUcgLWR5IC16IHRleHQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovNjQiLAoKIyMjIyBTUEFSQyBTb2xhcmlzIHdpdGggR05VIEMgc2V0dXBzCiJzb2xhcmlzLXNwYXJjdjctZ2NjIiwiZ2NjOi1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtREJfRU5ESUFOIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxzb2NrZXQgLWxuc2wgLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1mUElDOi1zaGFyZWQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoic29sYXJpcy1zcGFyY3Y4LWdjYyIsImdjYzotbXY4IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtREJfRU5ESUFOIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxzb2NrZXQgLWxuc2wgLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y4X2FzbX06ZGxmY246c29sYXJpcy1zaGFyZWQ6LWZQSUM6LXNoYXJlZDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiMgLW0zMiBzaG91bGQgYmUgc2FmZSB0byBhZGQgYXMgbG9uZyBhcyBkcml2ZXIgcmVjb2duaXplcyAtbWNwdT11bHRyYXNwYXJjCiJzb2xhcmlzLXNwYXJjdjktZ2NjIiwiZ2NjOi1tMzIgLW1jcHU9dWx0cmFzcGFyYyAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGwgLURCX0VORElBTiAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6VUxUUkFTUEFSQzotbHNvY2tldCAtbG5zbCAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpzb2xhcmlzLXNoYXJlZDotZlBJQzotc2hhcmVkOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKInNvbGFyaXM2NC1zcGFyY3Y5LWdjYyIsImdjYzotbTY0IC1tY3B1PXVsdHJhc3BhcmMgLU8zIC1XYWxsIC1EQl9FTkRJQU46Oi1EX1JFRU5UUkFOVDpVTFRSQVNQQVJDOi1sc29ja2V0IC1sbnNsIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246c29sYXJpcy1zaGFyZWQ6LWZQSUM6LW02NCAtc2hhcmVkOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6LzY0IiwKIyMjIwoiZGVidWctc29sYXJpcy1zcGFyY3Y4LWdjYyIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUdfQUxMIC1PIC1nIC1tdjggLVdhbGwgLURCX0VORElBTjo6LURfUkVFTlRSQU5UOjotbHNvY2tldCAtbG5zbCAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpzb2xhcmlzLXNoYXJlZDotZlBJQzotc2hhcmVkOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLXNvbGFyaXMtc3BhcmN2OS1nY2MiLCJnY2M6LURCTl9ERUJVRyAtRFJFRl9DSEVDSyAtRENPTkZfREVCVUcgLURCTl9DVFhfREVCVUcgLURDUllQVE9fTURFQlVHX0FMTCAtRFBFREFOVElDIC1PIC1nIC1tY3B1PXVsdHJhc3BhcmMgLXBlZGFudGljIC1hbnNpIC1XYWxsIC1Xc2hhZG93IC1Xbm8tbG9uZy1sb25nIC1EX19FWFRFTlNJT05TX18gLURCX0VORElBTiAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6VUxUUkFTUEFSQzotbHNvY2tldCAtbG5zbCAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpzb2xhcmlzLXNoYXJlZDotZlBJQzotc2hhcmVkOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKCiMjIyMgU1BBUkMgU29sYXJpcyB3aXRoIFN1biBDIHNldHVwcwojIFNDNC4wIGRvZXNuJ3QgcGFzcyAnbWFrZSB0ZXN0JywgdXBncmFkZSB0byBTQzUuMCBvciBTQzQuMi4KIyBTQzQuMiBpcyBvaywgYmV0dGVyIHRoYW4gZ2NjIGV2ZW4gb24gYm4gYXMgbG9uZyBhcyB5b3UgdGVsbCBpdCAteGFyY2g9djgKIyBTQzUuMCBub3RlOiBDb21waWxlciBjb21tb24gcGF0Y2ggMTA3MzU3LTAxIG9yIGxhdGVyIGlzIHJlcXVpcmVkIQoic29sYXJpcy1zcGFyY3Y3LWNjIiwiY2M6LXhPNSAteHN0cmNvbnN0IC14ZGVwZW5kIC1YYSAtREJfRU5ESUFOIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxzb2NrZXQgLWxuc2wgLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1LUElDOi1HIC1keSAteiB0ZXh0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKInNvbGFyaXMtc3BhcmN2OC1jYyIsImNjOi14YXJjaD12OCAteE81IC14c3RyY29uc3QgLXhkZXBlbmQgLVhhIC1EQl9FTkRJQU4gLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbHNvY2tldCAtbG5zbCAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpzb2xhcmlzLXNoYXJlZDotS1BJQzotRyAtZHkgLXogdGV4dDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJzb2xhcmlzLXNwYXJjdjktY2MiLCJjYzoteHRhcmdldD11bHRyYSAteGFyY2g9djhwbHVzIC14TzUgLXhzdHJjb25zdCAteGRlcGVuZCAtWGEgLURCX0VORElBTiAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6VUxUUkFTUEFSQzotbHNvY2tldCAtbG5zbCAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOS19MTCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpzb2xhcmlzLXNoYXJlZDotS1BJQzotRyAtZHkgLXogdGV4dDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJzb2xhcmlzNjQtc3BhcmN2OS1jYyIsImNjOi14dGFyZ2V0PXVsdHJhIC14YXJjaD12OSAteE81IC14c3RyY29uc3QgLXhkZXBlbmQgLVhhIC1EQl9FTkRJQU46Oi1EX1JFRU5UUkFOVDpVTFRSQVNQQVJDOi1sc29ja2V0IC1sbnNsIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246c29sYXJpcy1zaGFyZWQ6LUtQSUM6LXhhcmNoPXY5IC1HIC1keSAteiB0ZXh0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6LzY0IiwKIyMjIwoiZGVidWctc29sYXJpcy1zcGFyY3Y4LWNjIiwiY2M6LURCTl9ERUJVRyAtRFJFRl9DSEVDSyAtRENPTkZfREVCVUcgLURCTl9DVFhfREVCVUcgLURDUllQVE9fTURFQlVHX0FMTCAteGFyY2g9djggLWcgLU8gLXhzdHJjb25zdCAtWGEgLURCX0VORElBTiAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sc29ja2V0IC1sbnNsIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OF9hc219OmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1LUElDOi1HIC1keSAteiB0ZXh0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLXNvbGFyaXMtc3BhcmN2OS1jYyIsImNjOi1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQk5fQ1RYX0RFQlVHIC1EQ1JZUFRPX01ERUJVR19BTEwgLXh0YXJnZXQ9dWx0cmEgLXhhcmNoPXY4cGx1cyAtZyAtTyAteHN0cmNvbnN0IC1YYSAtREJfRU5ESUFOIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDpVTFRSQVNQQVJDOi1sc29ja2V0IC1sbnNsIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LX0xMIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1LUElDOi1HIC1keSAteiB0ZXh0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKCiMjIyMgU3VuT1MgY29uZmlncywgYXNzdW1pbmcgc3BhcmMgZm9yIHRoZSBnY2Mgb25lLgojInN1bm9zLWNjIiwgImNjOi1PNCAtRE5PUFJPVE8gLUROT0NPTlNUOjoodW5rbm93bik6U1VOT1M6OkRFU19VTlJPTEw6JHtub19hc219OjoiLAoic3Vub3MtZ2NjIiwiZ2NjOi1PMyAtbXY4IC1Ec3NpemVfdD1pbnQ6Oih1bmtub3duKTpTVU5PUzo6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX1BUUiBERVNfUklTQzE6JHtub19hc219OjoiLAoKIyMjIyBJUklYIDUueCBjb25maWdzCiMgLW1pcHMyIGZsYWcgaXMgYWRkZWQgYnkgLi9jb25maWcgd2hlbiBhcHByb3ByaWF0ZS4KImlyaXgtZ2NjIiwiZ2NjOi1PMyAtRFRFUk1JT1MgLURCX0VORElBTjo6KHVua25vd24pOjo6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIERFU19SSVNDMiBERVNfUFRSIEJGX1BUUjoke21pcHMzMl9hc219Om8zMjpkbGZjbjppcml4LXNoYXJlZDo6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImlyaXgtY2MiLCAiY2M6LU8yIC11c2VfcmVhZG9ubHlfY29uc3QgLURURVJNSU9TIC1EQl9FTkRJQU46Oih1bmtub3duKTo6OkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUFRSIERFU19SSVNDMiBERVNfVU5ST0xMIEJGX1BUUjoke21pcHMzMl9hc219Om8zMjpkbGZjbjppcml4LXNoYXJlZDo6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKIyMjIyBJUklYIDYueCBjb25maWdzCiMgT25seSBOMzIgYW5kIE42NCBBQklzIGFyZSBzdXBwb3J0ZWQuIElmIHlvdSBuZWVkIE8zMiBBQkkgYnVpbGQsIGludm9rZQojICcuL0NvbmZpZ3VyZSBpcml4LWNjIC1vMzInIG1hbnVhbGx5LgoiaXJpeC1taXBzMy1nY2MiLCJnY2M6LW1hYmk9bjMyIC1PMyAtRFRFUk1JT1MgLURCX0VORElBTiAtREJOX0RJVjNXOjotRF9TR0lfTVBfU09VUkNFOjo6TUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIFJDNF9DSFVOS19MTCBERVNfVU5ST0xMIERFU19SSVNDMiBERVNfUFRSIEJGX1BUUiBTSVhUWV9GT1VSX0JJVDoke21pcHM2NF9hc219Om4zMjpkbGZjbjppcml4LXNoYXJlZDo6LW1hYmk9bjMyOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6MzIiLAoiaXJpeC1taXBzMy1jYyIsICJjYzotbjMyIC1taXBzMyAtTzIgLXVzZV9yZWFkb25seV9jb25zdCAtRzAgLXJkYXRhX3NoYXJlZCAtRFRFUk1JT1MgLURCX0VORElBTiAtREJOX0RJVjNXOjotRF9TR0lfTVBfU09VUkNFOjo6REVTX1BUUiBSQzRfQ0hBUiBSQzRfQ0hVTktfTEwgREVTX1JJU0MyIERFU19VTlJPTEwgQkZfUFRSIFNJWFRZX0ZPVVJfQklUOiR7bWlwczY0X2FzbX06bjMyOmRsZmNuOmlyaXgtc2hhcmVkOjotbjMyOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6MzIiLAojIE42NCBBQkkgYnVpbGRzLgoiaXJpeDY0LW1pcHM0LWdjYyIsImdjYzotbWFiaT02NCAtbWlwczQgLU8zIC1EVEVSTUlPUyAtREJfRU5ESUFOIC1EQk5fRElWM1c6Oi1EX1NHSV9NUF9TT1VSQ0U6OjpSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MyIERFU19VTlJPTEwgU0lYVFlfRk9VUl9CSVRfTE9ORzoke21pcHM2NF9hc219OjY0OmRsZmNuOmlyaXgtc2hhcmVkOjotbWFiaT02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKImlyaXg2NC1taXBzNC1jYyIsICJjYzotNjQgLW1pcHM0IC1PMiAtdXNlX3JlYWRvbmx5X2NvbnN0IC1HMCAtcmRhdGFfc2hhcmVkIC1EVEVSTUlPUyAtREJfRU5ESUFOIC1EQk5fRElWM1c6Oi1EX1NHSV9NUF9TT1VSQ0U6OjpSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MyIERFU19VTlJPTEwgU0lYVFlfRk9VUl9CSVRfTE9ORzoke21pcHM2NF9hc219OjY0OmRsZmNuOmlyaXgtc2hhcmVkOjotNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2NCIsCgojIyMjIFVuaWZpZWQgSFAtVVggQU5TSSBDIGNvbmZpZ3MuCiMgU3BlY2lhbCBub3RlczoKIyAtIE9yaWdpbmFsbHkgd2Ugd2VyZSBvcHRpbWl6aW5nIGF0ICtPNCBsZXZlbC4gSXQgc2hvdWxkIGJlIG5vdGVkCiMgICB0aGF0IHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiArTzMgYW5kICtPNCBpcyBnbG9iYWwgaW50ZXItCiMgICBwcm9jZWR1cmFsIGFuYWx5c2lzLiBBcyBpdCBoYXMgdG8gYmUgcGVyZm9ybWVkIGR1cmluZyB0aGUgbGluawojICAgc3RhZ2UgdGhlIGNvbXBpbGVyIGxlYXZlcyBiZWhpbmQgY2VydGFpbiBwc2V1ZG8tY29kZSBpbiBsaWIqLmEKIyAgIHdoaWNoIG1pZ2h0IGJlIHJlbGVhc2Ugb3IgZXZlbiBwYXRjaCBsZXZlbCBzcGVjaWZpYy4gR2VuZXJhdGluZwojICAgdGhlIG1hY2hpbmUgY29kZSBmb3IgYW5kIGFuYWx5emluZyB0aGUgKndob2xlKiBwcm9ncmFtIGFwcGVhcnMKIyAgIHRvIGJlICpleHRyZW1lbHkqIG1lbW9yeSBkZW1hbmRpbmcgd2hpbGUgdGhlIHBlcmZvcm1hbmNlIGdhaW4gaXMKIyAgIGFjdHVhbGx5IHF1ZXN0aW9uYWJsZS4gVGhlIHNpdHVhdGlvbiBpcyBpbnRlbnNpZmllZCBieSB0aGUgZGVmYXVsdAojICAgSFAtVVggZGF0YSBzZXQgc2l6ZSBsaW1pdCAoaW5mYW1vdXMgJ21heGRzaXonIHR1bmFibGUpIG9mIDY0TUIKIyAgIHdoaWNoIGlzIHdheSB0b28gbG93IGZvciArTzQuIEluIG90aGVyIHdvcmRzLCBkb2Vzbid0ICtPMyBtYWtlCiMgICBtb3JlIHNlbnNlPwojIC0gS2VlcCBpbiBtaW5kIHRoYXQgdGhlIEhQIGNvbXBpbGVyIGJ5IGRlZmF1bHQgZ2VuZXJhdGVzIGNvZGUKIyAgIHN1aXRhYmxlIGZvciBleGVjdXRpb24gb24gdGhlIGhvc3QgeW91J3JlIGN1cnJlbnRseSBjb21waWxpbmcgYXQuCiMgICBJZiB0aGUgdG9vbGtpdCBpcyBtZW50IHRvIGJlIHVzZWQgb24gdmFyaW91cyBQQS1SSVNDIHByb2Nlc3NvcnMKIyAgIGNvbnNpZGVyICcuL2NvbmZpZyArREFwb3J0YWJsZScuCiMgLSArREQ2NCBpcyBjaG9zZW4gaW4gZmF2b3VyIG9mICtEQTIuMFcgYmVjYXVzZSBpdCdzIG1lYW50IHRvIGJlCiMgICBjb21wYXRpYmxlIHdpdGggKmZ1dHVyZSogcmVsZWFzZXMuCiMgLSBJZiB5b3UgcnVuIC4vQ29uZmlndXJlIGhwdXgtcGFyaXNjLVtnXWNjIG1hbnVhbGx5IGRvbid0IGZvcmdldCB0bwojICAgcGFzcyAtRF9SRUVOVFJBTlQgb24gSFAtVVggMTAgYW5kIGxhdGVyLgojIC0gLURNRDMyX1hBUlJBWSB0cmlnZ2VycyB3b3JrYXJvdW5kIGZvciBjb21waWxlciBidWcgd2UgcmFuIGludG8gaW4KIyAgIDMyLWJpdCBtZXNzYWdlIGRpZ2VzdHMuIChGb3IgdGhlIG1vbWVudCBvZiB0aGlzIHdyaXRpbmcpIEhQIEMKIyAgIGRvZXNuJ3Qgc2VlbSB0byAiZGlnZXN0IiB0b28gbWFueSBsb2NhbCB2YXJpYWJsZXMgKHRoZXkgbWFrZSAiaGltIgojICAgY2hldyBmb3JldmVyOi0pLiBGb3IgbW9yZSBkZXRhaWxzIGxvb2stdXAgTUQzMl9YQVJSQVkgY29tbWVudCBpbgojICAgY3J5cHRvL3NoYS9zaGFfbGNsLmguCiMJCQkJCTxhcHByb0BmeS5jaGFsbWVycy5zZT4KIwojIFNpbmNlIHRoZXJlIGlzIG1lbnRpb24gb2YgdGhpcyBpbiBzaGxpYi9ocHV4MTAtY2Muc2gKImhwdXgtcGFyaXNjLWNjLW80IiwiY2M6LUFlICtPNCArRVNsaXQgLXogLURCX0VORElBTiAtREJOX0RJVjJXIC1ETUQzMl9YQVJSQVk6Oi1EX1JFRU5UUkFOVDo6LWxkbGQ6Qk5fTExPTkcgREVTX1BUUiBERVNfVU5ST0xMIERFU19SSVNDMToke25vX2FzbX06ZGw6aHB1eC1zaGFyZWQ6K1o6LWI6LnNsLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoiaHB1eC1wYXJpc2MtZ2NjIiwiZ2NjOi1PMyAtREJfRU5ESUFOIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LVdsLCtzIC1sZGxkOkJOX0xMT05HIERFU19QVFIgREVTX1VOUk9MTCBERVNfUklTQzE6JHtub19hc219OmRsOmhwdXgtc2hhcmVkOi1mUElDOi1zaGFyZWQ6LnNsLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoiaHB1eC1wYXJpc2MxXzEtZ2NjIiwiZ2NjOi1PMyAtREJfRU5ESUFOIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LVdsLCtzIC1sZGxkOkJOX0xMT05HIERFU19QVFIgREVTX1VOUk9MTCBERVNfUklTQzE6JHtwYXJpc2MxMV9hc219OmRsOmhwdXgtc2hhcmVkOi1mUElDOi1zaGFyZWQ6LnNsLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovcGExLjEiLAoiaHB1eC1wYXJpc2MyLWdjYyIsImdjYzotbWFyY2g9Mi4wIC1PMyAtREJfRU5ESUFOIC1EX1JFRU5UUkFOVDo6OjotV2wsK3MgLWxkbGQ6U0lYVFlfRk9VUl9CSVQgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19QVFIgREVTX1VOUk9MTCBERVNfUklTQzE6Ii5ldmFse215ICRhc209JHBhcmlzYzIwX2FzbTskYXNtPX5zLzJXXC4vMlwuLzskYXNtPX5zLzo2NC86MzIvOyRhc219LiI6ZGw6aHB1eC1zaGFyZWQ6LWZQSUM6LXNoYXJlZDouc2wuXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6Oi9wYTIwXzMyIiwKImhwdXg2NC1wYXJpc2MyLWdjYyIsImdjYzotTzMgLURCX0VORElBTiAtRF9SRUVOVFJBTlQ6Ojo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBSQzRfQ0hBUiBERVNfVU5ST0xMIERFU19SSVNDMSBERVNfSU5UOjpwYS1yaXNjMlcubzo6Ojo6Ojo6Ojo6Ojo6OnZvaWQ6ZGxmY246aHB1eC1zaGFyZWQ6LWZwaWM6LXNoYXJlZDouc2wuXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6Oi9wYTIwXzY0IiwKCiMgTW9yZSBhdHRlbXB0cyBhdCB1bmlmaWVkIDEwLlggYW5kIDExLlggdGFyZ2V0cyBmb3IgSFAgQyBjb21waWxlci4KIwojIENocmlzIFJ1ZW1tbGVyIDxydWVtbWxlckBjdXAuaHAuY29tPgojIEtldmluIFN0ZXZlcyA8a3NAaHAuc2U+CiJocHV4LXBhcmlzYy1jYyIsImNjOitPMyArT3B0cnNfc3Ryb25nbHlfdHlwZWQgLUFlICtFU2xpdCAtREJfRU5ESUFOIC1EQk5fRElWMlcgLURNRDMyX1hBUlJBWTo6LURfUkVFTlRSQU5UOjotV2wsK3MgLWxkbGQ6TUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIERFU19VTlJPTEwgREVTX1JJU0MxIERFU19JTlQ6JHtub19hc219OmRsOmhwdXgtc2hhcmVkOitaOi1iOi5zbC5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImhwdXgtcGFyaXNjMV8xLWNjIiwiY2M6K0RBMS4xICtPMyArT3B0cnNfc3Ryb25nbHlfdHlwZWQgLUFlICtFU2xpdCAtREJfRU5ESUFOIC1ETUQzMl9YQVJSQVk6Oi1EX1JFRU5UUkFOVDo6LVdsLCtzIC1sZGxkOk1EMl9DSEFSIFJDNF9JTkRFWCBSQzRfQ0hBUiBERVNfVU5ST0xMIERFU19SSVNDMSBERVNfSU5UOiR7cGFyaXNjMTFfYXNtfTpkbDpocHV4LXNoYXJlZDorWjotYjouc2wuXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6Oi9wYTEuMSIsCiJocHV4LXBhcmlzYzItY2MiLCJjYzorREEyLjAgK0RTMi4wICtPMyArT3B0cnNfc3Ryb25nbHlfdHlwZWQgLUFlICtFU2xpdCAtREJfRU5ESUFOIC1ETUQzMl9YQVJSQVkgLURfUkVFTlRSQU5UOjo6Oi1XbCwrcyAtbGRsZDpTSVhUWV9GT1VSX0JJVCBNRDJfQ0hBUiBSQzRfSU5ERVggUkM0X0NIQVIgREVTX1VOUk9MTCBERVNfUklTQzEgREVTX0lOVDoiLmV2YWx7bXkgJGFzbT0kcGFyaXNjMjBfYXNtOyRhc209fnMvMldcLi8yXC4vOyRhc209fnMvOjY0LzozMi87JGFzbX0uIjpkbDpocHV4LXNoYXJlZDorWjotYjouc2wuXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6Oi9wYTIwXzMyIiwKImhwdXg2NC1wYXJpc2MyLWNjIiwiY2M6K0RENjQgK08zICtPcHRyc19zdHJvbmdseV90eXBlZCAtQWUgK0VTbGl0IC1EQl9FTkRJQU4gLURNRDMyX1hBUlJBWSAtRF9SRUVOVFJBTlQ6Ojo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBSQzRfQ0hBUiBERVNfVU5ST0xMIERFU19SSVNDMSBERVNfSU5UOiR7cGFyaXNjMjBfYXNtfTpkbGZjbjpocHV4LXNoYXJlZDorWjorREQ2NCAtYjouc2wuXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6Oi9wYTIwXzY0IiwKCiMgSFAvVVggSUEtNjQgdGFyZ2V0cwoiaHB1eC1pYTY0LWNjIiwiY2M6LUFlICtERDMyICtPMiArT2xpdD1hbGwgLXogLURCX0VORElBTiAtRF9SRUVOVFJBTlQ6Ojo6LWxkbDpTSVhUWV9GT1VSX0JJVCBNRDJfQ0hBUiBSQzRfSU5ERVggREVTX1VOUk9MTCBERVNfUklTQzEgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpocHV4LXNoYXJlZDorWjorREQzMiAtYjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6Oi9ocHV4MzIiLAojIEZyYW5rIEdldXJ0cyA8ZnJhbmsuZ2V1cnRzQG5sLmFibmFtcm8uY29tPiBoYXMgcGF0aWVudGx5IGFzc2lzdGVkIHdpdGgKIyB3aXRoIGRlYnVnZ2luZyBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZy4KImhwdXg2NC1pYTY0LWNjIiwiY2M6LUFlICtERDY0ICtPMyArT2xpdD1hbGwgLXogLURCX0VORElBTiAtRF9SRUVOVFJBTlQ6Ojo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMIERFU19SSVNDMSBERVNfSU5UOiR7aWE2NF9hc219OmRsZmNuOmhwdXgtc2hhcmVkOitaOitERDY0IC1iOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6L2hwdXg2NCIsCiMgR0NDIGJ1aWxkcy4uLgoiaHB1eC1pYTY0LWdjYyIsImdjYzotTzMgLURCX0VORElBTiAtRF9SRUVOVFJBTlQ6Ojo6LWxkbDpTSVhUWV9GT1VSX0JJVCBNRDJfQ0hBUiBSQzRfSU5ERVggREVTX1VOUk9MTCBERVNfUklTQzEgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpocHV4LXNoYXJlZDotZnBpYzotc2hhcmVkOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6L2hwdXgzMiIsCiJocHV4NjQtaWE2NC1nY2MiLCJnY2M6LW1scDY0IC1PMyAtREJfRU5ESUFOIC1EX1JFRU5UUkFOVDo6OjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgTUQyX0NIQVIgUkM0X0lOREVYIERFU19VTlJPTEwgREVTX1JJU0MxIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246aHB1eC1zaGFyZWQ6LWZwaWM6LW1scDY0IC1zaGFyZWQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovaHB1eDY0IiwKCiMgTGVnYWN5IEhQVVggOS5YIGNvbmZpZ3MuLi4KImhwdXgtY2MiLAkiY2M6LURCX0VORElBTiAtREJOX0RJVjJXIC1ETUQzMl9YQVJSQVkgLUFlICtFU2xpdCArTzIgLXo6Oih1bmtub3duKTo6LVdsLCtzIC1sZGxkOkRFU19QVFIgREVTX1VOUk9MTCBERVNfUklTQzE6JHtub19hc219OmRsOmhwdXgtc2hhcmVkOitaOi1iOi5zbC5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImhwdXgtZ2NjIiwJImdjYzotREJfRU5ESUFOIC1EQk5fRElWMlcgLU8zOjoodW5rbm93bik6Oi1XbCwrcyAtbGRsZDpERVNfUFRSIERFU19VTlJPTEwgREVTX1JJU0MxOiR7bm9fYXNtfTpkbDpocHV4LXNoYXJlZDotZlBJQzotc2hhcmVkOi5zbC5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKCiMjIyMgSFAgTVBFL2lYIGh0dHA6Ly9qYXp6LmV4dGVybmFsLmhwLmNvbS9zcmMvb3BlbnNzbC8KIk1QRS9pWC1nY2MiLAkiZ2NjOi1EX0VORElBTiAtREJOX0RJVjJXIC1PMyAtRF9QT1NJWF9TT1VSQ0UgLURfU09DS0VUX1NPVVJDRSAtSS9TWVNMT0cvUFVCOjoodW5rbm93bik6TVBFOi1ML1NZU0xPRy9QVUIgLWxzeXNsb2cgLWxzb2NrZXQgLWxjdXJzZXM6Qk5fTExPTkcgREVTX1BUUiBERVNfVU5ST0xMIERFU19SSVNDMTo6OiIsCgojIERFQyBBbHBoYSBPU0YvMS9UcnU2NCB0YXJnZXRzLgojCiMJIldoYXQncyBpbiBhIG5hbWU/IFRoYXQgd2hpY2ggd2UgY2FsbCBhIHJvc2UKIwkgQnkgYW55IG90aGVyIHdvcmQgd291bGQgc21lbGwgYXMgc3dlZXQuIgojCiMgLSBXaWxsaWFtIFNoYWtlc3BlYXJlLCAiUm9tZW8gJiBKdWxpZXQiLCBBY3QgSUksIHNjZW5lIElJLgojCiMgRm9yIGdjYywgdGhlIGZvbGxvd2luZyBnYXZlIGEgJTUwIHNwZWVkdXAgb24gYSAxNjQgb3ZlciB0aGUgJ0RFU19JTlQnIHZlcnNpb24KIwoib3NmMS1hbHBoYS1nY2MiLCAiZ2NjOi1PMzo6KHVua25vd24pOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1VOUk9MTCBERVNfUklTQzE6JHthbHBoYV9hc219OmRsZmNuOmFscGhhLW9zZjEtc2hhcmVkOjo6LnNvIiwKIm9zZjEtYWxwaGEtY2MiLCAgImNjOi1zdGQxIC10dW5lIGhvc3QgLU80IC1yZWFkb25seV9zdHJpbmdzOjoodW5rbm93bik6OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSzoke2FscGhhX2FzbX06ZGxmY246YWxwaGEtb3NmMS1zaGFyZWQ6Ojouc28iLAoidHJ1NjQtYWxwaGEtY2MiLCAiY2M6LXN0ZDEgLXR1bmUgaG9zdCAtZmFzdCAtcmVhZG9ubHlfc3RyaW5nczo6LXB0aHJlYWQ6OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSzoke2FscGhhX2FzbX06ZGxmY246YWxwaGEtb3NmMS1zaGFyZWQ6Oi1tc3ltOi5zbyIsCgojIyMjCiMjIyMgVmFyaWV0eSBvZiBMSU5VWDotKQojIyMjCiMgKi1nZW5lcmljKiBpcyBlbmRpYW4tbmV1dHJhbCB0YXJnZXQsIGJ1dCAuL2NvbmZpZyBpcyBmcmVlIHRvCiMgdGhyb3cgaW4gLURbQkxdX0VORElBTiwgd2hpY2hldmVyIGFwcHJvcHJpYXRlLi4uCiJsaW51eC1nZW5lcmljMzIiLCJnY2M6LURURVJNSU8gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoibGludXgtcHBjIiwJImdjYzotREJfRU5ESUFOIC1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzMyX2FzbX06bGludXgzMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKIyBJdCdzIGJlbGlldmVkIHRoYXQgbWFqb3JpdHkgb2YgQVJNIHRvb2xjaGFpbnMgcHJlZGVmaW5lIGFwcHJvcHJpYXRlIC1tYXJjaC4KIyBJZiB5b3UgY29tcGlsZXIgZG9lcyBub3QsIGRvIGNvbXBsZW1lbnQgY29uZmlnIGNvbW1hbmQgbGluZSB3aXRoIG9uZSEKImxpbnV4LWFybXY0IiwJImdjYzotRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJsaW51eC1hYXJjaDY0IiwiZ2NjOi1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthYXJjaDY0X2FzbX06bGludXg2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKIyBDb25maWd1cmUgc2NyaXB0IGFkZHMgbWluaW1hbGx5IHJlcXVpcmVkIC1tYXJjaCBmb3IgYXNzZW1ibHkgc3VwcG9ydCwKIyBpZiBubyAtbWFyY2ggd2FzIHNwZWNpZmllZCBhdCBjb21tYW5kIGxpbmUuIG1pcHMzMiBhbmQgbWlwczY0IGJlbG93CiMgcmVmZXIgdG8gY29udGVtcG9yYXJ5IE1JUFMgQXJjaGl0ZWN0dXJlIHNwZWNpZmljYXRpb25zLCBNSVBTMzIgYW5kCiMgTUlQUzY0LCByYXRoZXIgdGhhbiB0byBrZXJuZWwgYml0bmVzcy4KImxpbnV4LW1pcHMzMiIsCSJnY2M6LW1hYmk9MzIgLURURVJNSU8gLU8zIC1XYWxsIC1EQk5fRElWM1c6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke21pcHMzMl9hc219Om8zMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImxpbnV4LW1pcHM2NCIsICAgImdjYzotbWFiaT1uMzIgLURURVJNSU8gLU8zIC1XYWxsIC1EQk5fRElWM1c6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke21pcHM2NF9hc219Om4zMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW1hYmk9bjMyOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6MzIiLAoibGludXg2NC1taXBzNjQiLCAgICJnY2M6LW1hYmk9NjQgLURURVJNSU8gLU8zIC1XYWxsIC1EQk5fRElWM1c6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bWlwczY0X2FzbX06NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tYWJpPTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQiLAojIyMjIElBLTMyIHRhcmdldHMuLi4KImxpbnV4LWlhMzItaWNjIiwJImljYzotRExfRU5ESUFOIC1EVEVSTUlPIC1PMjo6LURfUkVFTlRSQU5UOjotbGRsIC1ub19jcHBydDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1LUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJsaW51eC1lbGYiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoibGludXgtYW91dCIsCSJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLW1hcmNoPWk0ODYgLVdhbGw6Oih1bmtub3duKTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9hc219OmEub3V0IiwKIyMjIwoibGludXgtZ2VuZXJpYzY0IiwiZ2NjOi1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoibGludXgtcHBjNjQiLAkiZ2NjOi1tNjQgLURCX0VORElBTiAtRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzY0X2FzbX06bGludXg2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKImxpbnV4LXBwYzY0bGUiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiRwcGM2NF9hc206bGludXg2NGxlOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6IiwKImxpbnV4LWlhNjQiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1VOUk9MTCBERVNfSU5UOiR7aWE2NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoibGludXgtaWE2NC1pY2MiLCJpY2M6LURMX0VORElBTiAtRFRFUk1JTyAtTzIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbCAtbm9fY3BwcnQ6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJsaW51eC14ODZfNjQiLAkiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2NCIsCiJsaW51eC14ODZfNjQtaWNjIiwgImljYzotRExfRU5ESUFOIC1EVEVSTUlPIC1PMjo6LURfUkVFTlRSQU5UOjotbGRsIC1ub19jcHBydDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKImxpbnV4LXgzMiIsCSJnY2M6LW14MzIgLURMX0VORElBTiAtRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbXgzMjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OngzMjoiLAoibGludXg2NC1zMzkweCIsCSJnY2M6LW02NCAtREJfRU5ESUFOIC1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3MzOTB4X2FzbX06NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2NCIsCiMjIyMgU28gY2FsbGVkICJoaWdoZ3BycyIgdGFyZ2V0IGZvciB6L0FyY2hpdGVjdHVyZSBDUFVzCiMgIkhpZ2hncHJzIiBpcyBrZXJuZWwgZmVhdHVyZSBmaXJzdCBpbXBsZW1lbnRlZCBpbiBMaW51eCAyLjYuMzIsIHNlZQojIC9wcm9jL2NwdWluZm8uIFRoZSBpZGVhIGlzIHRvIHByZXNlcnZlIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBvZgojIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMgbm90IG9ubHkgdXBvbiAzMi1iaXQgcHJvY2VzcyBjb250ZXh0CiMgc3dpdGNoLCBidXQgZXZlbiBvbiBhc3luY2hyb25vdXMgc2lnbmFsIGRlbGl2ZXJ5IHRvIHN1Y2ggcHJvY2Vzcy4KIyBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGRlcGxveSA2NC1iaXQgaW5zdHJ1Y3Rpb25zIGV2ZW4gaW4gbGVnYWN5CiMgYXBwbGljYXRpb24gY29udGV4dCBhbmQgYWNoaWV2ZSBiZXR0ZXIgW29yIHNob3VsZCB3ZSBzYXkgYWRlcXVhdGVdCiMgcGVyZm9ybWFuY2UuIFRoZSBidWlsZCBpcyBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIGxpbnV4LWdlbmVyaWMzMiwKIyBhbmQgdGhlIGlkZWEgaXMgdG8gYmUgYWJsZSB0byBpbnN0YWxsIHRoZSByZXN1bHRpbmcgbGliY3J5cHRvLnNvCiMgYWxvbmdzaWRlIGdlbmVyaWMgb25lLCBlLmcuIGFzIC9saWIvaGlnaGdwcnMvbGliY3J5cHRvLnNvLngueSwgZm9yCiMgbGRjb25maWcgYW5kIHJ1bi10aW1lIGxpbmtlciB0byBhdXRvZGlzY292ZXIuIFVuZm9ydHVuYXRlbHkgaXQKIyBkb2Vzbid0IHdvcmsganVzdCB5ZXQsIGJlY2F1c2Ugb2YgY291cGxlIG9mIGJ1Z3MgaW4gZ2xpYmMKIyBzeXNkZXBzL3MzOTAvZGwtcHJvY2luZm8uYyBhZmZlY3RpbmcgbGRjb25maWcgYW5kIGxkLnNvLjEuLi4KImxpbnV4MzItczM5MHgiLAkiZ2NjOi1tMzEgLVdhLC1temFyY2ggLURCX0VORElBTiAtRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiIuZXZhbHtteSAkYXNtPSRzMzkweF9hc207JGFzbT1+cy9iblwtczM5MHhcLm8vYm5fYXNtLm8vOyRhc219LiI6MzE6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tMzE6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovaGlnaGdwcnMiLAojIyMjIFNQQVJDIExpbnV4IHNldHVwcwojIFJheSBNaWxsZXIgPHJheS5taWxsZXJAY29tcHV0aW5nLXNlcnZpY2VzLm94Zm9yZC5hYy51az4gaGFzIHBhdGllbnRseQojIGFzc2lzdGVkIHdpdGggZGVidWdnaW5nIG9mIGZvbGxvd2luZyB0d28gY29uZmlncy4KImxpbnV4LXNwYXJjdjgiLCJnY2M6LW12OCAtREJfRU5ESUFOIC1EVEVSTUlPIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAojIGl0J3MgYSByZWFsIG1lc3Mgd2l0aCAtbWNwdT11bHRyYXNwYXJjIG9wdGlvbiB1bmRlciBMaW51eCwgYnV0CiMgLVdhLC1BdjhwbHVzIHNob3VsZCBkbyB0aGUgdHJpY2sgbm8gbWF0dGVyIHdoYXQuCiJsaW51eC1zcGFyY3Y5IiwiZ2NjOi1tMzIgLW1jcHU9dWx0cmFzcGFyYyAtREJfRU5ESUFOIC1EVEVSTUlPIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtV2EsLUF2OHBsdXMgLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOlVMVFJBU1BBUkM6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tMzI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAojIEdDQyAzLjEgaXMgYSByZXF1aXJlbWVudAoibGludXg2NC1zcGFyY3Y5IiwiZ2NjOi1tNjQgLW1jcHU9dWx0cmFzcGFyYyAtREJfRU5ESUFOIC1EVEVSTUlPIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOlVMVFJBU1BBUkM6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKIyMjIyBBbHBoYSBMaW51eCB3aXRoIEdOVSBDIGFuZCBDb21wYXEgQyBzZXR1cHMKIyBTcGVjaWFsIG5vdGVzOgojIC0gbGludXgtYWxwaGErYnd4LWdjYyBpcyBtZW50IHRvIGJlIHVzZWQgZnJvbSAuL2NvbmZpZyBvbmx5LiBJZiB5b3UKIyAgIG91Z2h0IHRvIHJ1biAnLi9Db25maWd1cmUgbGludXgtYWxwaGErYnd4LWdjYycgbWFudWFsbHksIGRvCiMgICBjb21wbGVtZW50IHRoZSBjb21tYW5kIGxpbmUgd2l0aCAtbWNwdT1ldjU2LCAtbWNwdT1ldjYgb3Igd2hhdGV2ZXIKIyAgIHdoaWNoIGlzIGFwcHJvcHJpYXRlLgojIC0gSWYgeW91IHVzZSBjY2Mga2VlcCBpbiBtaW5kIHRoYXQgLWZhc3QgaW1wbGllcyAtYXJjaCBob3N0IGFuZCB0aGUKIyAgIGNvbXBpbGVyIGlzIGZyZWUgdG8gaXNzdWUgaW5zdHJ1Y3Rpb25zIHdoaWNoIGdvbm5hIG1ha2UgZWxkZXIgQ1BVCiMgICBjaG9rZS4gSWYgeW91IHdpc2ggdG8gYnVpbGQgImJsZW5kZWQiIHRvb2xraXQsIGFkZCAtYXJjaCBnZW5lcmljCiMgICAqYWZ0ZXIqIC1mYXN0IGFuZCBpbnZva2UgJy4vQ29uZmlndXJlIGxpbnV4LWFscGhhLWNjYycgbWFudWFsbHkuCiMKIwkJCQkJPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPgojCiJsaW51eC1hbHBoYS1nY2MiLCJnY2M6LU8zIC1ETF9FTkRJQU4gLURURVJNSU86Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJsaW51eC1hbHBoYStid3gtZ2NjIiwiZ2NjOi1PMyAtRExfRU5ESUFOIC1EVEVSTUlPOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoibGludXgtYWxwaGEtY2NjIiwiY2NjOi1mYXN0IC1yZWFkb25seV9zdHJpbmdzIC1ETF9FTkRJQU4gLURURVJNSU86Oi1EX1JFRU5UUkFOVDo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX0iLAoibGludXgtYWxwaGErYnd4LWNjYyIsImNjYzotZmFzdCAtcmVhZG9ubHlfc3RyaW5ncyAtRExfRU5ESUFOIC1EVEVSTUlPOjotRF9SRUVOVFJBTlQ6OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219IiwKIwojIFRJX0NHVF9DNjAwMF83LjMueCBpcyBhIHJlcXVpcmVtZW50CiJsaW51eC1jNjR4cGx1cyIsImNsNng6LS1saW51eCAtZWE9LnMgLWVvPS5vIC1tdjY0MDArIC1vMiAtb3ggLW1zIC1wZGVuIC1ET1BFTlNTTF9TTUFMTF9GT09UUFJJTlQ6Oi1EX1JFRU5UUkFOVDo6OkJOX0xMT05HOmM2NHhwbHVzY3B1aWQubzpibi1jNjR4cGx1cy5vIGM2NHhwbHVzLWdmMm0ubzo6OmFlcy1jNjR4cGx1cy5vIGFlc19jYmMubyBhZXNfY3RyLm86OjpzaGExLWM2NHhwbHVzLm8gc2hhMjU2LWM2NHhwbHVzLm8gc2hhNTEyLWM2NHhwbHVzLm86OnJjNC1jNjR4cGx1cy5vOjo6OjpnaGFzaC1jNjR4cGx1cy5vOjp2b2lkOmRsZmNuOmxpbnV4LXNoYXJlZDotLXBpYzoteiAtLXN5c3YgLS1zaGFyZWQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6dHJ1ZSIsCgojIEFuZHJvaWQ6IGxpbnV4LSogYnV0IHdpdGhvdXQgLURURVJNSU8gYW5kIHBvaW50ZXJzIHRvIGhlYWRlcnMgYW5kIGxpYnMuCiJhbmRyb2lkIiwiZ2NjOi1tYW5kcm9pZCAtSVwkKEFORFJPSURfREVWKS9pbmNsdWRlIC1CXCQoQU5EUk9JRF9ERVYpL2xpYiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJhbmRyb2lkLXg4NiIsImdjYzotbWFuZHJvaWQgLUlcJChBTkRST0lEX0RFVikvaW5jbHVkZSAtQlwkKEFORFJPSURfREVWKS9saWIgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiIuZXZhbHtteSAkYXNtPSR7eDg2X2VsZl9hc219OyRhc209fnMvOmVsZi86YW5kcm9pZC87JGFzbX0uIjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImFuZHJvaWQtYXJtdjciLCJnY2M6LW1hcmNoPWFybXY3LWEgLW1hbmRyb2lkIC1JXCQoQU5EUk9JRF9ERVYpL2luY2x1ZGUgLUJcJChBTkRST0lEX0RFVikvbGliIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YXJtdjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImFuZHJvaWQtbWlwcyIsImdjYzotbWFuZHJvaWQgLUlcJChBTkRST0lEX0RFVikvaW5jbHVkZSAtQlwkKEFORFJPSURfREVWKS9saWIgLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHttaXBzMzJfYXNtfTpvMzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCgojIyMjICpCU0QgW2RvIHNlZSBjb21tZW50IGFib3V0ICR7QlNEdGhyZWFkc30gYWJvdmUhXQoiQlNELWdlbmVyaWMzMiIsImdjYzotRFRFUk1JT1MgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjoke0JTRHRocmVhZHN9Ojo6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKIkJTRC14ODYiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6JHtCU0R0aHJlYWRzfTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9hc219OmEub3V0OmRsZmNuOmJzZC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKIkJTRC14ODYtZWxmIiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6OiR7QlNEdGhyZWFkc306OjpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246YnNkLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoiZGVidWctQlNELXg4Ni1lbGYiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TIC1PMyAtV2FsbCAtZzo6JHtCU0R0aHJlYWRzfTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpic2Qtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJCU0Qtc3BhcmN2OCIsCSJnY2M6LURCX0VORElBTiAtRFRFUk1JT1MgLU8zIC1tdjggLVdhbGw6OiR7QlNEdGhyZWFkc306OjpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMOiR7c3BhcmN2OF9hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCgoiQlNELWdlbmVyaWM2NCIsImdjYzotRFRFUk1JT1MgLU8zIC1XYWxsOjoke0JTRHRocmVhZHN9Ojo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAojIC1ETUQzMl9SRUdfVD1pbnQgZG9lc24ndCBhY3R1YWxseSBiZWxvbmcgaW4gc3BhcmM2NCB0YXJnZXQsIGl0CiMgc2ltcGx5ICpoYXBwZW5zKiB0byB3b3JrIGFyb3VuZCBhIGNvbXBpbGVyIGJ1ZyBpbiBnY2MgMy4zLjMsCiMgdHJpZ2dlcmVkIGJ5IFJJUEVNRDE2MCBjb2RlLgoiQlNELXNwYXJjNjQiLAkiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU9TIC1PMyAtRE1EMzJfUkVHX1Q9aW50IC1XYWxsOjoke0JTRHRocmVhZHN9Ojo6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzIgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJCU0QtaWE2NCIsCSJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgLU8zIC1XYWxsOjoke0JTRHRocmVhZHN9Ojo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1VOUk9MTCBERVNfSU5UOiR7aWE2NF9hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJCU0QteDg2XzY0IiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzMgLVdhbGw6OiR7QlNEdGhyZWFkc306OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKCiJic2RpLWVsZi1nY2MiLCAgICAgImdjYzotRFBFUkw1IC1ETF9FTkRJQU4gLWZvbWl0LWZyYW1lLXBvaW50ZXIgLU8zIC1tYXJjaD1pNDg2IC1XYWxsOjoodW5rbm93bik6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCgoibmV4dHN0ZXAiLAkiY2M6LU8gLVdhbGw6PGxpYmMuaD46KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9Ojo6IiwKIm5leHRzdGVwMy4zIiwJImNjOi1PMyAtV2FsbDo8bGliYy5oPjoodW5rbm93bik6OjpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306OjoiLAoKIyBOQ1IgTVAtUkFTIFVOSVggdmVyIDAyLjAzLjAxCiJuY3Itc2NkZSIsImNjOi1PNiAtWGEgLUhvZmY9QkVIQVZFRCAtNjg2IC1Id2lkZSAtSGl3OjoodW5rbm93bik6Oi1sc29ja2V0IC1sbnNsIC1sYzg5OiR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfTo6OiIsCgojIFFOWAoicW54NCIsCSJjYzotRExfRU5ESUFOIC1EVEVSTUlPOjoodW5rbm93bik6Ojoke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306IiwKIlFOWDYiLCAgICAgICAiZ2NjOi1EVEVSTUlPUzo6OjotbHNvY2tldDo6JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJRTlg2LWkzODYiLCAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzIgLVdhbGw6Ojo6LWxzb2NrZXQ6JHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCgojIEJlT1MKImJlb3MteDg2LXI1IiwgICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtbWNwdT1wZW50aXVtIC1XYWxsOjotRF9SRUVOVFJBTlQ6QkVPUzotbGJlIC1sbmV0OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpiZW9zOmJlb3Mtc2hhcmVkOi1mUElDIC1EUElDOi1zaGFyZWQ6LnNvIiwKImJlb3MteDg2LWJvbmUiLCAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtbWNwdT1wZW50aXVtIC1XYWxsOjotRF9SRUVOVFJBTlQ6QkVPUzotbGJlIC1sYmluZCAtbHNvY2tldDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06YmVvczpiZW9zLXNoYXJlZDotZlBJQzotc2hhcmVkOi5zbyIsCgojIyMjIFNDTy9DYWxkZXJhIHRhcmdldHMuCiMKIyBPcmlnaW5hbGx5IHdlIGhhZCBsaWtlIHVuaXh3YXJlLSosIHVuaXh3YXJlLSotcGVudGl1bSwgdW5peHdhcmUtKi1wNiwgZXRjLgojIE5vdyB3ZSBvbmx5IGhhdmUgYmxlbmRlZCB1bml4d2FyZS0qIGFzIGl0J3MgdGhlIG9ubHkgb25lIHVzZWQgYnkgLi9jb25maWcuCiMgSWYgeW91IHdhbnQgdG8gb3B0aW1pemUgZm9yIHBhcnRpY3VsYXIgbWljcm9hcmNoaXRlY3R1cmUsIGJ5cGFzcyAuL2NvbmZpZwojIGFuZCAnLi9Db25maWd1cmUgdW5peHdhcmUtNyAtS3BlbnRpdW1fcHJvJyBvciB3aGF0ZXZlciBhcHByb3ByaWF0ZS4KIyBOb3RlIHRoYXQgbm90IGFsbCB0YXJnZXRzIGluY2x1ZGUgYXNzZW1ibGVyIHN1cHBvcnQuIE1vc3RseSBiZWNhdXNlIG9mCiMgbGFjayBvZiBtb3RpdmF0aW9uIHRvIHN1cHBvcnQgb3V0LW9mLWRhdGUgcGxhdGZvcm1zIHdpdGggb3V0LW9mLWRhdGUKIyBjb21waWxlciBkcml2ZXJzIGFuZCBhc3NlbWJsZXJzLiBUaW0gUmljZSA8dGltQG11bHRpdGFsZW50cy5uZXQ+IGhhcwojIHBhdGllbnRseSBhc3Npc3RlZCB0byBkZWJ1ZyBtb3N0IG9mIGl0LgojCiMgVW5peFdhcmUgMi4weCBmYWlscyBkZXN0ZXN0IHdpdGggLU8uCiJ1bml4d2FyZS0yLjAiLCJjYzotREZJTElPX0ggLUROT19TVFJJTkdTX0g6Oi1LdGhyZWFkOjotbHNvY2tldCAtbG5zbCAtbHJlc29sdiAtbHg6JHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9Ojo6IiwKInVuaXh3YXJlLTIuMSIsImNjOi1PIC1ERklMSU9fSDo6LUt0aHJlYWQ6Oi1sc29ja2V0IC1sbnNsIC1scmVzb2x2IC1seDoke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306OjoiLAoidW5peHdhcmUtNyIsImNjOi1PIC1ERklMSU9fSCAtS2FsbG9jYTo6LUt0aHJlYWQ6Oi1sc29ja2V0IC1sbnNsOkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCAke3g4Nl9nY2NfZGVzfToke3g4Nl9lbGZfYXNtfS0xOmRsZmNuOnN2cjUtc2hhcmVkOi1LcGljOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJ1bml4d2FyZS03LWdjYyIsImdjYzotRExfRU5ESUFOIC1ERklMSU9fSCAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLW1hcmNoPXBlbnRpdW0gLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxzb2NrZXQgLWxuc2w6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219LTE6ZGxmY246Z251LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAojIFNDTyA1IC0gQmVuIExhdXJpZSA8YmVuQGFsZ3JvdXAuY28udWs+IHNheXMgdGhlIC1PIGJyZWFrcyB0aGUgU0NPIGNjLgoic2NvNS1jYyIsICAiY2M6LWJlbGY6Oih1bmtub3duKTo6LWxzb2NrZXQgLWxuc2w6JHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219LTE6ZGxmY246c3ZyMy1zaGFyZWQ6LUtwaWM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKInNjbzUtZ2NjIiwgICJnY2M6LU8zIC1mb21pdC1mcmFtZS1wb2ludGVyOjoodW5rbm93bik6Oi1sc29ja2V0IC1sbnNsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfS0xOmRsZmNuOnN2cjMtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCgojIyMjIElCTSdzIEFJWC4KImFpeDMtY2MiLCAgImNjOi1PIC1EQl9FTkRJQU4gLXFtYXhtZW09MTYzODQ6Oih1bmtub3duKTpBSVg6OkJOX0xMT05HIFJDNF9DSEFSOjo6IiwKImFpeC1nY2MiLCAgImdjYzotTyAtREJfRU5ESUFOOjotcHRocmVhZDpBSVg6OkJOX0xMT05HIFJDNF9DSEFSOiRwcGMzMl9hc206YWl4MzI6ZGxmY246YWl4LXNoYXJlZDo6LXNoYXJlZCAtV2wsLUc6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Oi1YMzIiLAoiYWl4NjQtZ2NjIiwiZ2NjOi1tYWl4NjQgLU8gLURCX0VORElBTjo6LXB0aHJlYWQ6QUlYOjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSOiRwcGM2NF9hc206YWl4NjQ6ZGxmY246YWl4LXNoYXJlZDo6LW1haXg2NCAtc2hhcmVkIC1XbCwtRzouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6LVg2NCIsCiMgQmVsb3cgdGFyZ2V0cyBhc3N1bWUgQUlYIDUuIElkZWEgaXMgdG8gZWZmZWN0aXZlbHkgZGlzcmVnYXJkICRPQkpFQ1RfTU9ERQojIGF0IGJ1aWxkIHRpbWUuICRPQkpFQ1RfTU9ERSBpcyByZXNwZWN0ZWQgYXQgLi9jb25maWcgc3RhZ2UhCiJhaXgtY2MiLCAgICJjYzotcTMyIC1PIC1EQl9FTkRJQU4gLXFtYXhtZW09MTYzODQgLXFybyAtcXJvY29uc3Q6Oi1xdGhyZWFkZWQgLURfVEhSRUFEX1NBRkU6QUlYOjpCTl9MTE9ORyBSQzRfQ0hBUjokcHBjMzJfYXNtOmFpeDMyOmRsZmNuOmFpeC1zaGFyZWQ6Oi1xMzIgLUc6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Oi1YIDMyIiwKImFpeDY0LWNjIiwgImNjOi1xNjQgLU8gLURCX0VORElBTiAtcW1heG1lbT0xNjM4NCAtcXJvIC1xcm9jb25zdDo6LXF0aHJlYWRlZCAtRF9USFJFQURfU0FGRTpBSVg6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVI6JHBwYzY0X2FzbTphaXg2NDpkbGZjbjphaXgtc2hhcmVkOjotcTY0IC1HOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjotWCA2NCIsCgojCiMgQ3JheSBUOTAgYW5kIHNpbWlsYXIgKFNEU0MpCiMgSXQncyBCaWctZW5kaWFuLCBidXQgdGhlIGFsZ29yaXRobXMgd29yayBwcm9wZXJseSB3aGVuIEJfRU5ESUFOIGlzIE5PVAojIGRlZmluZWQuICBUaGUgVDkwIGludHMgYW5kIGxvbmdzIGFyZSA4IGJ5dGVzIGxvbmcsIGFuZCBhcHBhcmVudGx5IHRoZQojIEJfRU5ESUFOIGNvZGUgYXNzdW1lcyA0IGJ5dGUgaW50cy4gIEZvcnR1bmF0ZWx5LCB0aGUgbm9uLUJfRU5ESUFOIGFuZAojIG5vbiBMX0VORElBTiBjb2RlIGFsaWducyB0aGUgYnl0ZXMgaW4gZWFjaCB3b3JkIGNvcnJlY3RseS4KIwojIFRoZSBCSVRfRklFTERfTElNSVRTIGRlZmluZSBpcyB0byBhdm9pZCB0d28gZmF0YWwgY29tcGlsZXIgZXJyb3JzOgojJ1Rha2luZyB0aGUgYWRkcmVzcyBvZiBhIGJpdCBmaWVsZCBpcyBub3QgYWxsb3dlZC4gJwojJ0FuIGV4cHJlc3Npb24gd2l0aCBiaXQgZmllbGQgZXhpc3RzIGFzIHRoZSBvcGVyYW5kIG9mICJzaXplb2YiICcKIyAod3JpdHRlbiBieSBXYXluZSBTY2hyb2VkZXIgPHNjaHJvZWRlQFNEU0MuRURVPikKIwojIGo5MCBpcyBjb25zaWRlcmVkIHRoZSBiYXNlIG1hY2hpbmUgdHlwZSBmb3IgdW5pY29zIG1hY2hpbmVzLAojIHNvIHRoaXMgY29uZmlndXJhdGlvbiBpcyBub3cgY2FsbGVkICJjcmF5LWo5MCIgLi4uCiJjcmF5LWo5MCIsICJjYzogLURCSVRfRklFTERfTElNSVRTIC1EVEVSTUlPUzo6KHVua25vd24pOkNSQVk6OlNJWFRZX0ZPVVJfQklUX0xPTkcgREVTX0lOVDo6OiIsCgojCiMgQ3JheSBUM0UgKFJlc2VhcmNoIENlbnRlciBKdWVsaWNoLCBiZWNrbWFuQGFjbC5sYW5sLmdvdikKIwojIFRoZSBCSVRfRklFTERfTElNSVRTIGRlZmluZSB3YXMgd3JpdHRlbiBmb3IgdGhlIEM5MCAoaXQgc2VlbXMpLiAgSSBhZGRlZAojIGFub3RoZXIgdXNlLiAgQmFzaWNhbGx5LCB0aGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBUM0UgdXNlcyBzb21lIGJpdCBmaWVsZHMKIyBmb3Igc29tZSBzdF9hZGRyIHN0dWZmLCBhbmQgdGhlbiBzaXplb2YgYW5kIGFkZHJlc3Mtb2YgZmFpbHMKIyBJIGNvdWxkIG5vdCB1c2UgdGhlIGFtcy9hbHBoYS5vIG9wdGlvbiBiZWNhdXNlIHRoZSBDcmF5IGFzc2VtYmxlciwgJ2NhbScKIyBkaWQgbm90IGxpa2UgaXQuCiJjcmF5LXQzZSIsICJjYzogLURCSVRfRklFTERfTElNSVRTIC1EVEVSTUlPUzo6KHVua25vd24pOkNSQVk6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQ6OjoiLAoKIyBER1VYLCA4ODEwMC4KImRndXgtUjMtZ2NjIiwJImdjYzotTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXI6Oih1bmtub3duKTo6OlJDNF9JTkRFWCBERVNfVU5ST0xMOjo6IiwKImRndXgtUjQtZ2NjIiwJImdjYzotTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXI6Oih1bmtub3duKTo6LWxuc2wgLWxzb2NrZXQ6UkM0X0lOREVYIERFU19VTlJPTEw6OjoiLAoiZGd1eC1SNC14ODYtZ2NjIiwJImdjYzotTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLURMX0VORElBTjo6KHVua25vd24pOjotbG5zbCAtbHNvY2tldDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX0iLAoKIyBTaW5peC9SZWxpYW50VU5JWCBSTTQwMAojIE5PVEU6IFRoZSBDRFMrKyBDb21waWxlciB1cCB0byBWMi4wQnNvbWV0aGluZyBoYXMgdGhlIElSSVhfQ0NfQlVHIG9wdGltaXplciBwcm9ibGVtLiBCZXR0ZXIgdXNlIC1nICAqLwoiUmVsaWFudFVOSVgiLCJjYzotS1BJQyAtZyAtRFRFUk1JT1MgLURCX0VORElBTjo6LUt0aHJlYWQ6U05JOi1sc29ja2V0IC1sbnNsIC1sYyAtTC91c3IvdWNibGliIC1sdWNiOkJOX0xMT05HIERFU19QVFIgREVTX1JJU0MyIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpyZWxpYW50dW5peC1zaGFyZWQ6Ojouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJTSU5JWCIsImNjOi1POjoodW5rbm93bik6U05JOi1sc29ja2V0IC1sbnNsIC1sYyAtTC91c3IvdWNibGliIC1sdWNiOlJDNF9JTkRFWCBSQzRfQ0hBUjo6OiIsCiJTSU5JWC1OIiwiL3Vzci91Y2IvY2M6LU8yIC1taXNhbGlnbmVkOjoodW5rbm93bik6Oi1sdWNiOlJDNF9JTkRFWCBSQzRfQ0hBUjo6OiIsCgojIFNJRU1FTlMgQlMyMDAwL09TRDogYW4gRUJDRElDLWJhc2VkIG1haW5mcmFtZQoiQlMyMDAwLU9TRCIsImM4OTotTyAtWExMTUwgLVhMTE1LIC1YTCAtREJfRU5ESUFOIC1EVEVSTUlPUyAtRENIQVJTRVRfRUJDRElDOjoodW5rbm93bik6Oi1sc29ja2V0IC1sbnNsOlRISVJUWV9UV09fQklUIERFU19QVFIgREVTX1VOUk9MTCBNRDJfQ0hBUiBSQzRfSU5ERVggUkM0X0NIQVIgQkZfUFRSOjo6IiwKCiMgT1MvMzkwIFVuaXggYW4gRUJDRElDLWJhc2VkIFVuaXggc3lzdGVtIG9uIElCTSBtYWluZnJhbWUKIyBZb3UgbmVlZCB0byBjb21waWxlIHVzaW5nIHRoZSBjODkuc2ggd3JhcHBlciBpbiB0aGUgdG9vbHMgZGlyZWN0b3J5LCBiZWNhdXNlIHRoZQojIElCTSBjb21waWxlciBkb2VzIG5vdCBsaWtlIHRoZSAtTCBzd2l0Y2ggYWZ0ZXIgYW55IG9iamVjdCBtb2R1bGVzLgojCiJPUzM5MC1Vbml4IiwiYzg5LnNoOi1PIC1EQl9FTkRJQU4gLURDSEFSU0VUX0VCQ0RJQyAtRE5PX1NZU19QQVJBTV9IICAtRF9BTExfU09VUkNFOjoodW5rbm93bik6OjpUSElSVFlfVFdPX0JJVCBERVNfUFRSIERFU19VTlJPTEwgTUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIEJGX1BUUjo6OiIsCgojIFZpc3VhbCBDIHRhcmdldHMKIwojIFdpbjY0IHRhcmdldHMsIFdJTjY0SSBkZW5vdGVzIElBLTY0IGFuZCBXSU42NEEgLSBBTUQ2NAoiVkMtV0lONjRJIiwiY2w6LVczIC1HczAgLUd5IC1ub2xvZ28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJQU4gLURVTklDT0RFIC1EX1VOSUNPREUgLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU42NEk6OlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVOS19MTCBERVNfSU5UIEVYUE9SVF9WQVJfQVNfRk46aWE2NGNwdWlkLm86aWE2NC5vIGlhNjQtbW9udC5vOjo6YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLWlhNjQubzo6bWQ1LWlhNjQubzpzaGExLWlhNjQubyBzaGEyNTYtaWE2NC5vIHNoYTUxMi1pYTY0Lm86Ojo6Ojo6Z2hhc2gtaWE2NC5vOjppYXM6d2luMzIiLAoiVkMtV0lONjRBIiwiY2w6LVczIC1HczAgLUd5IC1ub2xvZ28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJQU4gLURVTklDT0RFIC1EX1VOSUNPREUgLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU42NEE6OlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVOS19MTCBERVNfSU5UIEVYUE9SVF9WQVJfQVNfRk46Ii5ldmFse215ICRhc209JHg4Nl82NF9hc207JGFzbT1+cy94ODZfNjQtZ2NjXC5vL2JuX2FzbS5vLzskYXNtfS4iOmF1dG86d2luMzIiLAoiZGVidWctVkMtV0lONjRJIiwiY2w6LVczIC1HczAgLUd5IC1aaSAtbm9sb2dvIC1ET1BFTlNTTF9TWVNOQU1FX1dJTjMyIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiAtRExfRU5ESUFOIC1EVU5JQ09ERSAtRF9VTklDT0RFIC1EX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFOjo6V0lONjRJOjpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBFWFBPUlRfVkFSX0FTX0ZOOmlhNjRjcHVpZC5vOmlhNjQubzo6OmFlc19jb3JlLm8gYWVzX2NiYy5vIGFlcy1pYTY0Lm86Om1kNS1pYTY0Lm86c2hhMS1pYTY0Lm8gc2hhMjU2LWlhNjQubyBzaGE1MTItaWE2NC5vOjo6Ojo6OmdoYXNoLWlhNjQubzo6aWFzOndpbjMyIiwKImRlYnVnLVZDLVdJTjY0QSIsImNsOi1XMyAtR3MwIC1HeSAtWmkgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVOSUNPREUgLURfVU5JQ09ERSAtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjY0QTo6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQgRVhQT1JUX1ZBUl9BU19GTjoiLmV2YWx7bXkgJGFzbT0keDg2XzY0X2FzbTskYXNtPX5zL3g4Nl82NC1nY2NcLm8vYm5fYXNtLm8vOyRhc219LiI6YXV0bzp3aW4zMiIsCiMgeDg2IFdpbjMyIHRhcmdldCBkZWZhdWx0cyB0byBBTlNJIEFQSSwgaWYgeW91IHdhbnQgVU5JQ09ERSwgY29tcGxlbWVudAojICdwZXJsIENvbmZpZ3VyZSBWQy1XSU4zMicgd2l0aCAnLURVTklDT0RFIC1EX1VOSUNPREUnCiJWQy1XSU4zMiIsImNsOi1XMyAtR3MwIC1HRiAtR3kgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjMyOjpCTl9MTE9ORyBSQzRfSU5ERVggRVhQT1JUX1ZBUl9BU19GTiAke3g4Nl9nY2Nfb3B0c306JHt4ODZfYXNtfTp3aW4zMm46d2luMzIiLAojIFVuaWZpZWQgQ0UgdGFyZ2V0CiJkZWJ1Zy1WQy1XSU4zMiIsImNsOi1XMyAtR3MwIC1HRiAtR3kgLVppIC1ub2xvZ28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJQU4gLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU4zMjo6Qk5fTExPTkcgUkM0X0lOREVYIEVYUE9SVF9WQVJfQVNfRk4gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06d2luMzJuOndpbjMyIiwKIlZDLUNFIiwiY2w6Ojo6V0lOQ0U6OkJOX0xMT05HIFJDNF9JTkRFWCBFWFBPUlRfVkFSX0FTX0ZOICR7eDg2X2djY19vcHRzfToke25vX2FzbX06d2luMzIiLAoKIyBCb3JsYW5kIEMrKyA0LjUKIkJDLTMyIiwiYmNjMzI6Ojo6V0lOMzI6OkJOX0xMT05HIERFU19QVFIgUkM0X0lOREVYIEVYUE9SVF9WQVJfQVNfRk46JHtub19hc219OndpbjMyIiwKCiMgTWluR1cKIm1pbmd3IiwgImdjYzotbW5vLWN5Z3dpbiAtRExfRU5ESUFOIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiAtZm9taXQtZnJhbWUtcG9pbnRlciAtTzMgLW1hcmNoPWk0ODYgLVdhbGw6Oi1EX01UOk1JTkdXMzI6LWx3czJfMzIgLWxnZGkzMiAtbGNyeXB0MzI6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9IEVYUE9SVF9WQVJfQVNfRk46JHt4ODZfYXNtfTpjb2ZmOndpbjMyOmN5Z3dpbi1zaGFyZWQ6LURfV0lORExMIC1ET1BFTlNTTF9VU0VfQVBQTElOSzotbW5vLWN5Z3dpbjouZGxsLmEiLAojIEFzIGZvciBPUEVOU1NMX1VTRV9BUFBMSU5LLiBBcHBsaW5rIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSAuZGxsCiMgY29tcGlsZWQgd2l0aCBvbmUgY29tcGlsZXIgd2l0aCBhcHBsaWNhdGlvbiBjb21waWxlZCB3aXRoIGFub3RoZXIKIyBjb21waWxlci4gSXQncyBwb3NzaWJsZSB0byBlbmdhZ2UgQXBwbGluayBzdXBwb3J0IGluIG1pbmd3NjQgYnVpbGQsCiMgYnV0IGl0J3Mgbm90IGRvbmUsIGJlY2F1c2UgdGlsbCBtaW5ndzY0IHN1cHBvcnRzIHN0cnVjdHVyZWQgZXhjZXB0aW9uCiMgaGFuZGxpbmcsIG9uZSBjYW4ndCBzZXJpb3VzbHkgY29uc2lkZXIgaXRzIGJpbmFyaWVzIGZvciB1c2luZyB3aXRoCiMgbm9uLW1pbmd3NjQgcnVuLXRpbWUgZW52aXJvbm1lbnQuIEFuZCBhcyBtaW5ndzY0IGlzIGFsd2F5cyBjb25zaXN0ZW50CiMgd2l0aCBpdHNlbGYsIEFwcGxpbmsgaXMgbmV2ZXIgZW5nYWdlZCBhbmQgY2FuIGFzIHdlbGwgYmUgb21pdHRlZC4KIm1pbmd3NjQiLCAiZ2NjOi1tbm8tY3lnd2luIC1ETF9FTkRJQU4gLU8zIC1XYWxsIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiAtRFVOSUNPREUgLURfVU5JQ09ERTo6LURfTVQ6TUlOR1c2NDotbHdzMl8zMiAtbGdkaTMyIC1sY3J5cHQzMjpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBFWFBPUlRfVkFSX0FTX0ZOOiR7eDg2XzY0X2FzbX06bWluZ3c2NDp3aW4zMjpjeWd3aW4tc2hhcmVkOi1EX1dJTkRMTDotbW5vLWN5Z3dpbjouZGxsLmEiLAoKIyBVV0lOCiJVV0lOIiwgImNjOi1EVEVSTUlPUyAtRExfRU5ESUFOIC1PIC1XYWxsOjo6VVdJTjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7bm9fYXNtfTp3aW4zMiIsCgojIEN5Z3dpbgoiQ3lnd2luLXByZTEuMyIsICJnY2M6LURURVJNSU9TIC1ETF9FTkRJQU4gLWZvbWl0LWZyYW1lLXBvaW50ZXIgLU8zIC1tNDg2IC1XYWxsOjoodW5rbm93bik6Q1lHV0lOMzI6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke25vX2FzbX06d2luMzIiLAoiQ3lnd2luIiwgImdjYzotRFRFUk1JT1MgLURMX0VORElBTiAtZm9taXQtZnJhbWUtcG9pbnRlciAtTzMgLW1hcmNoPWk0ODYgLVdhbGw6OjpDWUdXSU4zMjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06Y29mZjpkbGZjbjpjeWd3aW4tc2hhcmVkOi1EX1dJTkRMTDotc2hhcmVkOi5kbGwuYSIsCiJDeWd3aW4teDg2XzY0IiwgImdjYzotRFRFUk1JT1MgLURMX0VORElBTiAtTzMgLVdhbGw6OjpDWUdXSU4zMjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06bWluZ3c2NDpkbGZjbjpjeWd3aW4tc2hhcmVkOi1EX1dJTkRMTDotc2hhcmVkOi5kbGwuYSIsCiJkZWJ1Zy1DeWd3aW4iLCAiZ2NjOi1EVEVSTUlPUyAtRExfRU5ESUFOIC1tYXJjaD1pNDg2IC1XYWxsIC1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQk5fQ1RYX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtRE9QRU5TU0xfTk9fQVNNIC1nIC1XZm9ybWF0IC1Xc2hhZG93IC1XbWlzc2luZy1wcm90b3R5cGVzIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgLVdlcnJvcjo6OkNZR1dJTjMyOjo6JHtub19hc219OmRsZmNuOmN5Z3dpbi1zaGFyZWQ6LURfV0lORExMOi1zaGFyZWQ6LmRsbC5hIiwKCiMgTmV0V2FyZSBmcm9tIERhdmlkIFdhcmQgKGRzd2FyZEBub3ZlbGwuY29tKQojIHJlcXVpcmVzIGVpdGhlciBNZXRyb1dlcmtzIE5MTSBkZXZlbG9wbWVudCB0b29scywgb3IgZ2NjIC8gbmxtY29udgojIE5ldFdhcmUgZGVmYXVsdHMgc29ja2V0IGJpbyB0byBXaW5Tb2NrIHNvY2tldHMuIEhvd2V2ZXIsCiMgdGhlIGJ1aWxkcyBjYW4gYmUgY29uZmlndXJlZCB0byB1c2UgQlNEIHNvY2tldHMgaW5zdGVhZC4KIyBuZXR3YXJlLWNsaWIgPT4gbGVnYWN5IENMaWIgYy1ydW50aW1lIHN1cHBvcnQKIm5ldHdhcmUtY2xpYiIsICJtd2NjbmxtOjo6Ojo6JHt4ODZfZ2NjX29wdHN9OjoiLAoibmV0d2FyZS1jbGliLWJzZHNvY2siLCAibXdjY25sbTo6Ojo6OiR7eDg2X2djY19vcHRzfTo6IiwKIm5ldHdhcmUtY2xpYi1nY2MiLCAiaTU4Ni1uZXR3YXJlLWdjYzotbm9zdGRpbmMgLUkvbmRrL253c2RrL2luY2x1ZGUvbmxtIC1JL25kay93czI5NXNkay9pbmNsdWRlIC1ETF9FTkRJQU4gLURORVRXQVJFX0NMSUIgLURPUEVOU1NMX1NZU05BTUVfTkVUV0FSRSAtTzIgLVdhbGw6Ojo6OiR7eDg2X2djY19vcHRzfTo6IiwKIm5ldHdhcmUtY2xpYi1ic2Rzb2NrLWdjYyIsICJpNTg2LW5ldHdhcmUtZ2NjOi1ub3N0ZGluYyAtSS9uZGsvbndzZGsvaW5jbHVkZS9ubG0gLURORVRXQVJFX0JTRFNPQ0sgLURORVREQl9VU0VfSU5URVJORVQgLURMX0VORElBTiAtRE5FVFdBUkVfQ0xJQiAtRE9QRU5TU0xfU1lTTkFNRV9ORVRXQVJFIC1PMiAtV2FsbDo6Ojo6JHt4ODZfZ2NjX29wdHN9OjoiLAojIG5ldHdhcmUtbGliYyA9PiBMaWJDL05LUyBzdXBwb3J0CiJuZXR3YXJlLWxpYmMiLCAibXdjY25sbTo6Ojo6OkJOX0xMT05HICR7eDg2X2djY19vcHRzfTo6IiwKIm5ldHdhcmUtbGliYy1ic2Rzb2NrIiwgIm13Y2NubG06Ojo6OjpCTl9MTE9ORyAke3g4Nl9nY2Nfb3B0c306OiIsCiJuZXR3YXJlLWxpYmMtZ2NjIiwgImk1ODYtbmV0d2FyZS1nY2M6LW5vc3RkaW5jIC1JL25kay9saWJjL2luY2x1ZGUgLUkvbmRrL2xpYmMvaW5jbHVkZS93aW5zb2NrIC1ETF9FTkRJQU4gLURORVRXQVJFX0xJQkMgLURPUEVOU1NMX1NZU05BTUVfTkVUV0FSRSAtRFRFUk1JTyAtTzIgLVdhbGw6Ojo6OkJOX0xMT05HICR7eDg2X2djY19vcHRzfTo6IiwKIm5ldHdhcmUtbGliYy1ic2Rzb2NrLWdjYyIsICJpNTg2LW5ldHdhcmUtZ2NjOi1ub3N0ZGluYyAtSS9uZGsvbGliYy9pbmNsdWRlIC1ETkVUV0FSRV9CU0RTT0NLIC1ETF9FTkRJQU4gLURORVRXQVJFX0xJQkMgLURPUEVOU1NMX1NZU05BTUVfTkVUV0FSRSAtRFRFUk1JTyAtTzIgLVdhbGw6Ojo6OkJOX0xMT05HICR7eDg2X2djY19vcHRzfTo6IiwKCiMgREpHUFAKIkRKR1BQIiwgImdjYzotSS9kZXYvZW52L1dBVFRfUk9PVC9pbmMgLURURVJNSU9TIC1ETF9FTkRJQU4gLWZvbWl0LWZyYW1lLXBvaW50ZXIgLU8yIC1XYWxsOjo6TVNET1M6LUwvZGV2L2Vudi9XQVRUX1JPT1QvbGliIC1sd2F0dDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfYXNtfTphLm91dDoiLAoKIyBVbHRyaXggZnJvbSBCZXJuaGFyZCBTaW1vbiA8c2ltb25AemlkLnR1d2llbi5hYy5hdD4KInVsdHJpeC1jYyIsImNjOi1zdGQxIC1PIC1PbGltaXQgMjUwMCAtRExfRU5ESUFOOjoodW5rbm93bik6Ojo6Ojo6IiwKInVsdHJpeC1nY2MiLCJnY2M6LU8zIC1ETF9FTkRJQU46Oih1bmtub3duKTo6OkJOX0xMT05HOjo6OiIsCiMgSyZSIEMgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZDsgeW91IG5lZWQgZ2NjIG9uIG9sZCBVbHRyaXggaW5zdGFsbGF0aW9ucwojIyJ1bHRyaXgiLCJjYzotTzIgLUROT1BST1RPIC1ETk9DT05TVCAtRExfRU5ESUFOOjoodW5rbm93bik6Ojo6Ojo6IiwKCiMjIyMjIE1hY09TIFggKGEuay5hLiBSaGFwc29keSBvciBEYXJ3aW4pIHNldHVwCiJyaGFwc29keS1wcGMtY2MiLCJjYzotTzMgLURCX0VORElBTjo6KHVua25vd24pOk1BQ09TWF9SSEFQU09EWTo6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTo6IiwKImRhcndpbi1wcGMtY2MiLCJjYzotYXJjaCBwcGMgLU8zIC1EQl9FTkRJQU4gLVdhLC1mb3JjZV9jcHVzdWJ0eXBlX0FMTDo6LURfUkVFTlRSQU5UOk1BQ09TWDotV2wsLXNlYXJjaF9wYXRoc19maXJzdCU6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7cHBjMzJfYXNtfTpvc3gzMjpkbGZjbjpkYXJ3aW4tc2hhcmVkOi1mUElDIC1mbm8tY29tbW9uOi1hcmNoIHBwYyAtZHluYW1pY2xpYjouXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKS5keWxpYiIsCiJkYXJ3aW42NC1wcGMtY2MiLCJjYzotYXJjaCBwcGM2NCAtTzMgLURCX0VORElBTjo6LURfUkVFTlRSQU5UOk1BQ09TWDotV2wsLXNlYXJjaF9wYXRoc19maXJzdCU6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtwcGM2NF9hc219Om9zeDY0OmRsZmNuOmRhcndpbi1zaGFyZWQ6LWZQSUMgLWZuby1jb21tb246LWFyY2ggcHBjNjQgLWR5bmFtaWNsaWI6LlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikuZHlsaWIiLAoiZGFyd2luLWkzODYtY2MiLCJjYzotYXJjaCBpMzg2IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtRExfRU5ESUFOOjotRF9SRUVOVFJBTlQ6TUFDT1NYOi1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0JTpCTl9MTE9ORyBSQzRfSU5UIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoiLmV2YWx7bXkgJGFzbT0keDg2X2FzbTskYXNtPX5zL2Nhc3RcLTU4Nlwuby8vOyRhc219LiI6bWFjb3N4OmRsZmNuOmRhcndpbi1zaGFyZWQ6LWZQSUMgLWZuby1jb21tb246LWFyY2ggaTM4NiAtZHluYW1pY2xpYjouXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKS5keWxpYiIsCiJkZWJ1Zy1kYXJ3aW4taTM4Ni1jYyIsImNjOi1hcmNoIGkzODYgLWczIC1ETF9FTkRJQU46Oi1EX1JFRU5UUkFOVDpNQUNPU1g6LVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QlOkJOX0xMT05HIFJDNF9JTlQgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7eDg2X2FzbX06bWFjb3N4OmRsZmNuOmRhcndpbi1zaGFyZWQ6LWZQSUMgLWZuby1jb21tb246LWFyY2ggaTM4NiAtZHluYW1pY2xpYjouXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKS5keWxpYiIsCiJkZWJ1Zy1kYXJ3aW42NC14ODZfNjQtY2MiLCJjYzotYXJjaCB4ODZfNjQgLWdnZGIgLWcyIC1PMCAtRExfRU5ESUFOIC1XYWxsOjotRF9SRUVOVFJBTlQ6TUFDT1NYOi1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0JTpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTptYWNvc3g6ZGxmY246ZGFyd2luLXNoYXJlZDotZlBJQyAtZm5vLWNvbW1vbjotYXJjaCB4ODZfNjQgLWR5bmFtaWNsaWI6LlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikuZHlsaWIiLAoiZGFyd2luNjQteDg2XzY0LWNjIiwiY2M6LWFyY2ggeDg2XzY0IC1PMyAtRExfRU5ESUFOIC1XYWxsOjotRF9SRUVOVFJBTlQ6TUFDT1NYOi1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0JTpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTptYWNvc3g6ZGxmY246ZGFyd2luLXNoYXJlZDotZlBJQyAtZm5vLWNvbW1vbjotYXJjaCB4ODZfNjQgLWR5bmFtaWNsaWI6LlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikuZHlsaWIiLAoiZGVidWctZGFyd2luLXBwYy1jYyIsImNjOi1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtREJfRU5ESUFOIC1nIC1XYWxsIC1POjotRF9SRUVOVFJBTlQ6TUFDT1NYOjpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtwcGMzMl9hc219Om9zeDMyOmRsZmNuOmRhcndpbi1zaGFyZWQ6LWZQSUM6LWR5bmFtaWNsaWI6LlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikuZHlsaWIiLAojIGlQaG9uZU9TL2lPUwoiaXBob25lb3MtY3Jvc3MiLCJsbHZtLWdjYzotTzMgLWlzeXNyb290IFwkKENST1NTX1RPUCkvU0RLcy9cJChDUk9TU19TREspIC1mb21pdC1mcmFtZS1wb2ludGVyIC1mbm8tY29tbW9uOjotRF9SRUVOVFJBTlQ6aU9TOi1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0JTpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOmRhcndpbi1zaGFyZWQ6LWZQSUMgLWZuby1jb21tb246LWR5bmFtaWNsaWI6LlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikuZHlsaWIiLAoKIyMjIyMgQS9VWAoiYXV4My1nY2MiLCJnY2M6LU8yIC1EVEVSTUlPOjoodW5rbm93bik6QVVYOi1sYnNkOlJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjo6OiIsCgojIyMjIyBTb255IE5FV1MtT1MgNC54CiJuZXdzb3M0LWdjYyIsImdjYzotTyAtREJfRU5ESUFOOjoodW5rbm93bik6TkVXUzQ6LWxtbGQgLWxpYmVydHk6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwgQkZfUFRSOjo6OiIsCgojIyMjIyBHTlUgSHVyZAoiaHVyZC14ODYiLCAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLW1hcmNoPWk0ODYgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDIiwKCiMjIyMjIE9TLzIgRU1YCiJPUzItRU1YIiwgImdjYzo6Ojo6Ojo6IiwKCiMjIyMjIFZ4V29ya3MgZm9yIHZhcmlvdXMgdGFyZ2V0cwoidnh3b3Jrcy1wcGM2MHgiLCJjY3BwYzotRF9SRUVOVFJBTlQgLW1ydHAgLW1oYXJkLWZsb2F0IC1tc3RyaWN0LWFsaWduIC1mbm8taW1wbGljaXQtZnAgLURQUEMzMl9mcDYweCAtTzIgLWZzdHJlbmd0aC1yZWR1Y2UgLWZuby1idWlsdGluIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1EQ1BVPVBQQzMyIC1EVE9PTF9GQU1JTFk9Z251IC1EVE9PTD1nbnUgLUlcJChXSU5EX0JBU0UpL3RhcmdldC91c3IvaCAtSVwkKFdJTkRfQkFTRSkvdGFyZ2V0L3Vzci9oL3dybi9jb3JlaXA6OjpWWFdPUktTOi1XbCwtLWRlZnN5bSxfX3dyc19ydHBfYmFzZT0weGUwMDAwMDAwIC1MIFwkKFdJTkRfQkFTRSkvdGFyZ2V0L3Vzci9saWIvcHBjL1BQQzMyL2NvbW1vbjo6Ojo6IiwKInZ4d29ya3MtcHBjZ2VuIiwiY2NwcGM6LURfUkVFTlRSQU5UIC1tcnRwIC1tc29mdC1mbG9hdCAtbXN0cmljdC1hbGlnbiAtTzEgLWZuby1idWlsdGluIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1EQ1BVPVBQQzMyIC1EVE9PTF9GQU1JTFk9Z251IC1EVE9PTD1nbnUgLUlcJChXSU5EX0JBU0UpL3RhcmdldC91c3IvaCAtSVwkKFdJTkRfQkFTRSkvdGFyZ2V0L3Vzci9oL3dybi9jb3JlaXA6OjpWWFdPUktTOi1XbCwtLWRlZnN5bSxfX3dyc19ydHBfYmFzZT0weGUwMDAwMDAwIC1MIFwkKFdJTkRfQkFTRSkvdGFyZ2V0L3Vzci9saWIvcHBjL1BQQzMyL3NmY29tbW9uOjo6OjoiLAoidnh3b3Jrcy1wcGM0MDUiLCJjY3BwYzotZyAtbXNvZnQtZmxvYXQgLW1sb25nY2FsbCAtRENQVT1QUEM0MDUgLUlcJChXSU5EX0JBU0UpL3RhcmdldC9oOjo6VlhXT1JLUzotcjo6Ojo6IiwKInZ4d29ya3MtcHBjNzUwIiwiY2NwcGM6LWFuc2kgLW5vc3RkaW5jIC1EUFBDNzUwIC1EX1JFRU5UUkFOVCAtZnZvbGF0aWxlIC1mbm8tYnVpbHRpbiAtZm5vLWZvci1zY29wZSAtZnNpZ25lZC1jaGFyIC1XYWxsIC1tc29mdC1mbG9hdCAtbWxvbmdjYWxsIC1EQ1BVPVBQQzYwNCAtSVwkKFdJTkRfQkFTRSkvdGFyZ2V0L2ggXCQoREVCVUdfRkxBRyk6OjpWWFdPUktTOi1yOjo6OjoiLAoidnh3b3Jrcy1wcGM3NTAtZGVidWciLCJjY3BwYzotYW5zaSAtbm9zdGRpbmMgLURQUEM3NTAgLURfUkVFTlRSQU5UIC1mdm9sYXRpbGUgLWZuby1idWlsdGluIC1mbm8tZm9yLXNjb3BlIC1mc2lnbmVkLWNoYXIgLVdhbGwgLW1zb2Z0LWZsb2F0IC1tbG9uZ2NhbGwgLURDUFU9UFBDNjA0IC1JXCQoV0lORF9CQVNFKS90YXJnZXQvaCAtREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURQRURBTlRJQyAtRERFQlVHX1NBRkVTVEFDSyAtRERFQlVHIC1nOjo6VlhXT1JLUzotcjo6Ojo6IiwKInZ4d29ya3MtcHBjODYwIiwiY2NwcGM6LW5vc3RkaW5jIC1tc29mdC1mbG9hdCAtRENQVT1QUEM4NjAgLUROT19TVFJJTkdTX0ggLUlcJChXSU5EX0JBU0UpL3RhcmdldC9oOjo6VlhXT1JLUzotcjo6Ojo6IiwKInZ4d29ya3Mtc2ltbGludXgiLCJjY3BlbnRpdW06LUJcJChXSU5EX0JBU0UpL2hvc3QvXCQoV0lORF9IT1NUX1RZUEUpL2xpYi9nY2MtbGliLyAtRF9WU0JfQ09ORklHX0ZJTEU9XCJcJChXSU5EX0JBU0UpL3RhcmdldC9saWIvaC9jb25maWcvdnNiQ29uZmlnLmhcIiAtRExfRU5ESUFOIC1EQ1BVPVNJTUxJTlVYIC1EVE9PTF9GQU1JTFk9Z251IC1EVE9PTD1nbnUgLWZuby1idWlsdGluIC1mbm8tZGVmZXItcG9wIC1ETk9fU1RSSU5HU19IIC1JXCQoV0lORF9CQVNFKS90YXJnZXQvaCAtSVwkKFdJTkRfQkFTRSkvdGFyZ2V0L2gvd3JuL2NvcmVpcCAtRE9QRU5TU0xfTk9fSFdfUEFETE9DSzo6OlZYV09SS1M6LXI6OiR7bm9fYXNtfTo6Ojo6OnJhbmxpYnBlbnRpdW06IiwKInZ4d29ya3MtbWlwcyIsImNjbWlwczotbXJ0cCAtbWlwczIgLU8gLUcgMCAtQlwkKFdJTkRfQkFTRSkvaG9zdC9cJChXSU5EX0hPU1RfVFlQRSkvbGliL2djYy1saWIvIC1EX1ZTQl9DT05GSUdfRklMRT1cIlwkKFdJTkRfQkFTRSkvdGFyZ2V0L2xpYi9oL2NvbmZpZy92c2JDb25maWcuaFwiIC1EQ1BVPU1JUFMzMiAtbXNvZnQtZmxvYXQgLW1uby1icmFuY2gtbGlrZWx5IC1EVE9PTF9GQU1JTFk9Z251IC1EVE9PTD1nbnUgLWZuby1idWlsdGluIC1mbm8tZGVmZXItcG9wIC1ETk9fU1RSSU5HU19IIC1JXCQoV0lORF9CQVNFKS90YXJnZXQvdXNyL2ggLUlcJChXSU5EX0JBU0UpL3RhcmdldC9oL3dybi9jb3JlaXA6Oi1EX1JFRU5UUkFOVDpWWFdPUktTOi1XbCwtLWRlZnN5bSxfX3dyc19ydHBfYmFzZT0weGUwMDAwMDAwIC1MIFwkKFdJTkRfQkFTRSkvdGFyZ2V0L3Vzci9saWIvbWlwcy9NSVBTSTMyL3NmY29tbW9uOjoke21pcHMzMl9hc219Om8zMjo6Ojo6OnJhbmxpYm1pcHM6IiwKCiMjIyMjIENvbXBhcSBOb24tU3RvcCBLZXJuZWwgKFRhbmRlbSkKInRhbmRlbS1jODkiLCJjODk6LVd3IC1EX19UQU5ERU0gLURfWE9QRU5fU09VUkNFIC1EX1hPUEVOX1NPVVJDRV9FWFRFTkRFRD0xIC1EX1RBTkRFTV9TT1VSQ0UgLURCX0VORElBTjo6KHVua25vd24pOjo6VEhJUlRZX1RXT19CSVQ6OjoiLAoKIyB1Q2xpbnV4CiJ1Q2xpbnV4LWRpc3QiLCIkRU5WeydDQyd9OlwkKENGTEFHUyk6Oi1EX1JFRU5UUkFOVDo6XCQoTERGTEFHUykgXCQoTERMSUJTKTpCTl9MTE9ORzoke25vX2FzbX06JEVOVnsnTElCU1NMX2RsZmNuJ306bGludXgtc2hhcmVkOi1mUElDOi1zaGFyZWQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6JEVOVnsnUkFOTElCJ306OiIsCiJ1Q2xpbnV4LWRpc3Q2NCIsIiRFTlZ7J0NDJ306XCQoQ0ZMQUdTKTo6LURfUkVFTlRSQU5UOjpcJChMREZMQUdTKSBcJChMRExJQlMpOlNJWFRZX0ZPVVJfQklUX0xPTkc6JHtub19hc219OiRFTlZ7J0xJQlNTTF9kbGZjbid9OmxpbnV4LXNoYXJlZDotZlBJQzotc2hhcmVkOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOiRFTlZ7J1JBTkxJQid9OjoiLAoKKTsKCm15IEBNSzFNRl9CdWlsZHM9cXcoVkMtV0lONjRJIFZDLVdJTjY0QQoJCSAgICBkZWJ1Zy1WQy1XSU42NEkgZGVidWctVkMtV0lONjRBCgkJICAgIFZDLU5UIFZDLUNFIFZDLVdJTjMyIGRlYnVnLVZDLVdJTjMyCgkJICAgIEJDLTMyCgkJICAgIG5ldHdhcmUtY2xpYiBuZXR3YXJlLWNsaWItYnNkc29jawoJCSAgICBuZXR3YXJlLWxpYmMgbmV0d2FyZS1saWJjLWJzZHNvY2spOwoKbXkgJGlkeCA9IDA7Cm15ICRpZHhfY2MgPSAkaWR4Kys7Cm15ICRpZHhfY2ZsYWdzID0gJGlkeCsrOwpteSAkaWR4X3VuaXN0ZCA9ICRpZHgrKzsKbXkgJGlkeF90aHJlYWRfY2ZsYWcgPSAkaWR4Kys7Cm15ICRpZHhfc3lzX2lkID0gJGlkeCsrOwpteSAkaWR4X2xmbGFncyA9ICRpZHgrKzsKbXkgJGlkeF9ibl9vcHMgPSAkaWR4Kys7Cm15ICRpZHhfY3B1aWRfb2JqID0gJGlkeCsrOwpteSAkaWR4X2JuX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9lY19vYmogPSAkaWR4Kys7Cm15ICRpZHhfZGVzX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9hZXNfb2JqID0gJGlkeCsrOwpteSAkaWR4X2JmX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9tZDVfb2JqID0gJGlkeCsrOwpteSAkaWR4X3NoYTFfb2JqID0gJGlkeCsrOwpteSAkaWR4X2Nhc3Rfb2JqID0gJGlkeCsrOwpteSAkaWR4X3JjNF9vYmogPSAkaWR4Kys7Cm15ICRpZHhfcm1kMTYwX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9yYzVfb2JqID0gJGlkeCsrOwpteSAkaWR4X3dwX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9jbWxsX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9tb2Rlc19vYmogPSAkaWR4Kys7Cm15ICRpZHhfZW5naW5lc19vYmogPSAkaWR4Kys7Cm15ICRpZHhfcGVybGFzbV9zY2hlbWUgPSAkaWR4Kys7Cm15ICRpZHhfZHNvX3NjaGVtZSA9ICRpZHgrKzsKbXkgJGlkeF9zaGFyZWRfdGFyZ2V0ID0gJGlkeCsrOwpteSAkaWR4X3NoYXJlZF9jZmxhZyA9ICRpZHgrKzsKbXkgJGlkeF9zaGFyZWRfbGRmbGFnID0gJGlkeCsrOwpteSAkaWR4X3NoYXJlZF9leHRlbnNpb24gPSAkaWR4Kys7Cm15ICRpZHhfcmFubGliID0gJGlkeCsrOwpteSAkaWR4X2FyZmxhZ3MgPSAkaWR4Kys7Cm15ICRpZHhfbXVsdGlsaWIgPSAkaWR4Kys7CgpteSAkcHJlZml4PSIiOwpteSAkbGliZGlyPSIiOwpteSAkb3BlbnNzbGRpcj0iIjsKbXkgJGV4ZV9leHQ9IiI7Cm15ICRpbnN0YWxsX3ByZWZpeD0gIiRFTlZ7J0lOU1RBTExfUFJFRklYJ30iOwpteSAkY3Jvc3NfY29tcGlsZV9wcmVmaXg9IiI7Cm15ICRmaXBzbGliZGlyPSIvdXNyL2xvY2FsL3NzbC9maXBzLTIuMC9saWIvIjsKbXkgJG5vZmlwc2NhbmlzdGVyY2hlY2s9MDsKbXkgJGZpcHNjYW5pc3RlcmludGVybmFsPSJuIjsKbXkgJGZpcHNjYW5pc3Rlcm9ubHkgPSAwOwpteSAkYmFzZWFkZHI9IjB4RkIwMDAwMCI7Cm15ICRub190aHJlYWRzPTA7Cm15ICR0aHJlYWRzPTA7Cm15ICRub19zaGFyZWQ9MDsgIyBidXQgIm5vLXNoYXJlZCIgaXMgZGVmYXVsdApteSAkemxpYj0xOyAgICAgICMgYnV0ICJuby16bGliIiBpcyBkZWZhdWx0Cm15ICRub19rcmI1PTA7ICAgIyBidXQgIm5vLWtyYjUiIGlzIGltcGxpZWQgdW5sZXNzICItLXdpdGgta3JiNS0uLi4iIGlzIHVzZWQKbXkgJG5vX3JmYzM3Nzk9MTsgIyBidXQgIm5vLXJmYzM3NzkiIGlzIGRlZmF1bHQKbXkgJG5vX2FzbT0wOwpteSAkbm9fZHNvPTA7Cm15ICRub19nbXA9MDsKbXkgQHNraXA9KCk7Cm15ICRNYWtlZmlsZT0iTWFrZWZpbGUiOwpteSAkZGVzX2xvY2w9ImNyeXB0by9kZXMvZGVzX2xvY2wuaCI7Cm15ICRkZXMJPSJjcnlwdG8vZGVzL2Rlcy5oIjsKbXkgJGJuCT0iY3J5cHRvL2JuL2JuLmgiOwpteSAkbWQyCT0iY3J5cHRvL21kMi9tZDIuaCI7Cm15ICRyYzQJPSJjcnlwdG8vcmM0L3JjNC5oIjsKbXkgJHJjNF9sb2NsPSJjcnlwdG8vcmM0L3JjNF9sb2NsLmgiOwpteSAkaWRlYQk9ImNyeXB0by9pZGVhL2lkZWEuaCI7Cm15ICRyYzIJPSJjcnlwdG8vcmMyL3JjMi5oIjsKbXkgJGJmCT0iY3J5cHRvL2JmL2JmX2xvY2wuaCI7Cm15ICRibl9hc20JPSJibl9hc20ubyI7Cm15ICRkZXNfZW5jPSJkZXNfZW5jLm8gZmNyeXB0X2IubyI7Cm15ICRhZXNfZW5jPSJhZXNfY29yZS5vIGFlc19jYmMubyI7Cm15ICRiZl9lbmMJPSJiZl9lbmMubyI7Cm15ICRjYXN0X2VuYz0iY19lbmMubyI7Cm15ICRyYzRfZW5jPSJyYzRfZW5jLm8gcmM0X3NrZXkubyI7Cm15ICRyYzVfZW5jPSJyYzVfZW5jLm8iOwpteSAkbWQ1X29iaj0iIjsKbXkgJHNoYTFfb2JqPSIiOwpteSAkcm1kMTYwX29iaj0iIjsKbXkgJGNtbGxfZW5jPSJjYW1lbGxpYS5vIGNtbGxfbWlzYy5vIGNtbGxfY2JjLm8iOwpteSAkcHJvY2Vzc29yPSIiOwpteSAkZGVmYXVsdF9yYW5saWI7Cm15ICRwZXJsOwpteSAkZmlwcz0wOwoKIyBBbGwgb2YgdGhlIGZvbGxvd2luZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IChSQzUgd2FzIGVuYWJsZWQgYmVmb3JlIDAuOS44KToKCm15ICVkaXNhYmxlZCA9ICggIyAid2hhdCIgICAgICAgICA9PiAiY29tbWVudCIgW29yIHNwZWNpYWwga2V5d29yZCAiZXhwZXJpbWVudGFsIl0KCQkgImVjX25pc3RwXzY0X2djY18xMjgiID0+ICJkZWZhdWx0IiwKCQkgImdtcCIJCSAgPT4gImRlZmF1bHQiLAoJCSAianBha2UiICAgICAgICAgID0+ICJleHBlcmltZW50YWwiLAoJCSAibWQyIiAgICAgICAgICAgID0+ICJkZWZhdWx0IiwKCQkgInJjNSIgICAgICAgICAgICA9PiAiZGVmYXVsdCIsCgkJICJyZmMzNzc5IgkgID0+ICJkZWZhdWx0IiwKCQkgInNjdHAiICAgICAgID0+ICJkZWZhdWx0IiwKCQkgInNoYXJlZCIgICAgICAgICA9PiAiZGVmYXVsdCIsCgkJICJzc2wtdHJhY2UiCSAgPT4gImRlZmF1bHQiLAoJCSAic3RvcmUiCSAgPT4gImV4cGVyaW1lbnRhbCIsCgkJICJ1bml0LXRlc3QiCSAgPT4gImRlZmF1bHQiLAoJCSAiemxpYiIgICAgICAgICAgID0+ICJkZWZhdWx0IiwKCQkgInpsaWItZHluYW1pYyIgICA9PiAiZGVmYXVsdCIKCSAgICAgICApOwpteSBAZXhwZXJpbWVudGFsID0gKCk7CgojIElmIHNzbCBkaXJlY3RvcnkgbWlzc2luZyBhc3N1bWUgdHJ1bmNhdGVkIEZJUFMgdGFyYmFsbAppZiAoIS1kICJzc2wiKQoJewoJcHJpbnQgU1RERVJSICJBdXRvIENvbmZpZ3VyaW5nIGZpcHNvbmx5XG4iOwoJJGZpcHMgPSAxOwoJJG5vZmlwc2NhbmlzdGVyY2hlY2sgPSAxOwoJJGZpcHNsaWJkaXI9IiI7CgkkZmlwc2NhbmlzdGVyaW50ZXJuYWw9InkiOwoJJGZpcHNjYW5pc3Rlcm9ubHkgPSAyOwoJaWYgKCEgLWYgImNyeXB0by9ibi9ibl9nZjJtLmMiICkKCQl7CgkJJGRpc2FibGVke2VjMm19ID0gImZvcmNlZCI7CgkJfQoJfQoKIyBUaGlzIGlzIHdoYXQgJGRlcGZsYWdzIHdpbGwgbG9vayBsaWtlIHdpdGggdGhlIGFib3ZlIGRlZmF1bHRzCiMgKHdlIG5lZWQgdGhpcyB0byBzZWUgaWYgd2Ugc2hvdWxkIGFkdmlzZSB0aGUgdXNlciB0byBydW4gIm1ha2UgZGVwZW5kIik6Cm15ICRkZWZhdWx0X2RlcGZsYWdzID0gIiAtRE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOCAtRE9QRU5TU0xfTk9fR01QIC1ET1BFTlNTTF9OT19KUEFLRSAtRE9QRU5TU0xfTk9fTUQyIC1ET1BFTlNTTF9OT19SQzUgLURPUEVOU1NMX05PX1JGQzM3NzkgLURPUEVOU1NMX05PX1NDVFAgLURPUEVOU1NMX05PX1NTTF9UUkFDRSAtRE9QRU5TU0xfTk9fU1RPUkUgLURPUEVOU1NMX05PX1VOSVRfVEVTVCI7CgojIEV4cGxpY2l0ICJuby0uLi4iIG9wdGlvbnMgd2lsbCBiZSBjb2xsZWN0ZWQgaW4gJWRpc2FibGVkIGFsb25nIHdpdGggdGhlIGRlZmF1bHRzLgojIFRvIHJlbW92ZSBzb21ldGhpbmcgZnJvbSAlZGlzYWJsZWQsIHVzZSAiZW5hYmxlLWZvbyIgKHVubGVzcyBpdCdzIGV4cGVyaW1lbnRhbCkuCiMgRm9yIHN5bW1ldHJ5LCAiZGlzYWJsZS1mb28iIGlzIGEgc3lub255bSBmb3IgIm5vLWZvbyIuCgojIEZvciBmZWF0dXJlcyBjYWxsZWQgImV4cGVyaW1lbnRhbCIgaGVyZSwgYSBtb3JlIGV4cGxpY2l0ICJleHBlcmltZW50YWwtZm9vIiBpcyBuZWVkZWQgdG8gZW5hYmxlLgojIFdlIHdpbGwgY29sbGVjdCBzdWNoIHJlcXVlc3RzIGluIEBleHBlcmltZW50YWwuCiMgVG8gYXZvaWQgYWNjaWRlbnRhbCB1c2Ugb2YgZXhwZXJpbWVudGFsIGZlYXR1cmVzLCBhcHBsaWNhdGlvbnMgd2lsbCBoYXZlIHRvIHVzZSAtRE9QRU5TU0xfRVhQRVJJTUVOVEFMX0ZPTy4KCgpteSAkbm9fc3NlMj0wOwoKJnVzYWdlIGlmICgkI0FSR1YgPCAwKTsKCm15ICRmbGFnczsKbXkgJGRlcGZsYWdzOwpteSAkb3BlbnNzbF9leHBlcmltZW50YWxfZGVmaW5lczsKbXkgJG9wZW5zc2xfYWxnb3JpdGhtX2RlZmluZXM7Cm15ICRvcGVuc3NsX3RocmVhZF9kZWZpbmVzOwpteSAkb3BlbnNzbF9zeXNfZGVmaW5lcz0iIjsKbXkgJG9wZW5zc2xfb3RoZXJfZGVmaW5lczsKbXkgJGxpYnM7Cm15ICRsaWJrcmI1PSIiOwpteSAkdGFyZ2V0OwpteSAkb3B0aW9uczsKbXkgJHN5bWxpbms7Cm15ICRtYWtlX2RlcGVuZD0wOwpteSAld2l0aGFyZ3M9KCk7CgpteSBAYXJndmNvcHk9QEFSR1Y7Cm15ICRhcmd2c3RyaW5nPSIiOwpteSAkYXJndl91bnByb2Nlc3NlZD0xOwoKd2hpbGUoJGFyZ3ZfdW5wcm9jZXNzZWQpCgl7CgkkZmxhZ3M9IiI7CgkkZGVwZmxhZ3M9IiI7Cgkkb3BlbnNzbF9leHBlcmltZW50YWxfZGVmaW5lcz0iIjsKCSRvcGVuc3NsX2FsZ29yaXRobV9kZWZpbmVzPSIiOwoJJG9wZW5zc2xfdGhyZWFkX2RlZmluZXM9IiI7Cgkkb3BlbnNzbF9zeXNfZGVmaW5lcz0iIjsKCSRvcGVuc3NsX290aGVyX2RlZmluZXM9IiI7CgkkbGlicz0iIjsKCSR0YXJnZXQ9IiI7Cgkkb3B0aW9ucz0iIjsKCSRzeW1saW5rPTE7CgoJJGFyZ3ZfdW5wcm9jZXNzZWQ9MDsKCSRhcmd2c3RyaW5nPWpvaW4oJyAnLEBhcmd2Y29weSk7CgpQUk9DRVNTX0FSR1M6Cglmb3JlYWNoIChAYXJndmNvcHkpCgkJewoJCXMgL14tbm8tL25vLS87ICMgc29tZSBwZW9wbGUganVzdCBjYW4ndCByZWFkIHRoZSBpbnN0cnVjdGlvbnMKCgkJIyByZXdyaXRlIHNvbWUgb3B0aW9ucyBpbiAiZW5hYmxlLS4uLiIgZm9ybQoJCXMgL14tPy0/c2hhcmVkJC9lbmFibGUtc2hhcmVkLzsKCQlzIC9ec2N0cCQvZW5hYmxlLXNjdHAvOwoJCXMgL150aHJlYWRzJC9lbmFibGUtdGhyZWFkcy87CgkJcyAvXnpsaWIkL2VuYWJsZS16bGliLzsKCQlzIC9eemxpYi1keW5hbWljJC9lbmFibGUtemxpYi1keW5hbWljLzsKCgkJaWYgKC9ebm8tKC4rKSQvIHx8IC9eZGlzYWJsZS0oLispJC8pCgkJCXsKCQkJaWYgKCEoJGRpc2FibGVkeyQxfSBlcSAiZXhwZXJpbWVudGFsIikpCgkJCQl7CgkJCQlpZiAoJDEgZXEgInNzbCIpCgkJCQkJewoJCQkJCSRkaXNhYmxlZHsic3NsMiJ9ID0gIm9wdGlvbihzc2wpIjsKCQkJCQkkZGlzYWJsZWR7InNzbDMifSA9ICJvcHRpb24oc3NsKSI7CgkJCQkJfQoJCQkJZWxzaWYgKCQxIGVxICJ0bHMiKQoJCQkJCXsKCQkJCQkkZGlzYWJsZWR7InRsczEifSA9ICJvcHRpb24odGxzKSIKCQkJCQl9CgkJCQllbHNlCgkJCQkJewoJCQkJCSRkaXNhYmxlZHskMX0gPSAib3B0aW9uIjsKCQkJCQl9CgkJCQl9CgkJCX0KCQllbHNpZiAoL15lbmFibGUtKC4rKSQvIHx8IC9eZXhwZXJpbWVudGFsLSguKykkLykKCQkJewoJCQlteSAkYWxnbyA9ICQxOwoJCQlpZiAoJGRpc2FibGVkeyRhbGdvfSBlcSAiZXhwZXJpbWVudGFsIikKCQkJCXsKCQkJCWRpZSAiWW91IGFyZSByZXF1ZXN0aW5nIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlOyBwbGVhc2Ugc2F5ICdleHBlcmltZW50YWwtJGFsZ28nIGlmIHlvdSBhcmUgc3VyZVxuIgoJCQkJCXVubGVzcyAoL15leHBlcmltZW50YWwtLyk7CgkJCQlwdXNoIEBleHBlcmltZW50YWwsICRhbGdvOwoJCQkJfQoJCQlkZWxldGUgJGRpc2FibGVkeyRhbGdvfTsKCgkJCSR0aHJlYWRzID0gMSBpZiAoJGFsZ28gZXEgInRocmVhZHMiKTsKCQkJfQoJCWVsc2lmICgvXi0tdGVzdC1zYW5pdHkkLykKCQkJewoJCQlleGl0KCZ0ZXN0X3Nhbml0eSgpKTsKCQkJfQoJCWVsc2lmICgvXi0tc3RyaWN0LXdhcm5pbmdzLykKCQkJewoJCQkkc3RyaWN0X3dhcm5pbmdzID0gMTsKCQkJfQoJCWVsc2lmICgvXnJlY29uZmlndXJlLyB8fCAvXnJlY29uZi8pCgkJCXsKCQkJaWYgKG9wZW4oSU4sIjwkTWFrZWZpbGUiKSkKCQkJCXsKCQkJCXdoaWxlICg8SU4+KQoJCQkJCXsKCQkJCQljaG9tcDsKCQkJCQlpZiAoL15DT05GSUdVUkVfQVJHUz0oLiopLykKCQkJCQkJewoJCQkJCQkkYXJndnN0cmluZz0kMTsKCQkJCQkJQGFyZ3Zjb3B5PXNwbGl0KCcgJywkYXJndnN0cmluZyk7CgkJCQkJCWRpZSAiSW5jb3JyZWN0IGRhdGEgdG8gcmVjb25maWd1cmUsIHBsZWFzZSBkbyBhIG5vcm1hbCBjb25maWd1cmF0aW9uXG4iCgkJCQkJCQlpZiAoZ3JlcCgvXnJlY29uZi8sQGFyZ3Zjb3B5KSk7CgkJCQkJCXByaW50ICJSZWNvbmZpZ3VyaW5nIHdpdGg6ICRhcmd2c3RyaW5nXG4iOwoJCQkJCQkkYXJndl91bnByb2Nlc3NlZD0xOwoJCQkJCQljbG9zZShJTik7CgkJCQkJCWxhc3QgUFJPQ0VTU19BUkdTOwoJCQkJCQl9CgkJCQkJfQoJCQkJY2xvc2UoSU4pOwoJCQkJfQoJCQlkaWUgIkluc3VmZmljaWVudCBkYXRhIHRvIHJlY29uZmlndXJlLCBwbGVhc2UgZG8gYSBub3JtYWwgY29uZmlndXJhdGlvblxuIjsKCQkJfQoJCWVsc2lmICgvXjM4NiQvKQoJCQl7ICRwcm9jZXNzb3I9Mzg2OyB9CgkJZWxzaWYgKC9eZmlwcyQvKQoJCQl7CgkJCSRmaXBzPTE7CgkJCX0KCQllbHNpZiAoL15yc2FyZWYkLykKCQkJewoJCQkjIE5vIFJTQXJlZiBzdXBwb3J0IGFueSBtb3JlIHNpbmNlIGl0J3Mgbm90IG5lZWRlZC4KCQkJIyBUaGUgY2hlY2sgZm9yIHRoZSBvcHRpb24gaXMgdGhlcmUgc28gc2NyaXB0cyBhcmVuJ3QKCQkJIyBicm9rZW4KCQkJfQoJCWVsc2lmICgvXm5vZmlwc2NhbmlzdGVyY2hlY2skLykKCQkJewoJCQkkZmlwcyA9IDE7CgkJCSRub2ZpcHNjYW5pc3RlcmNoZWNrID0gMTsKCQkJfQoJCWVsc2lmICgvXmZpcHNjaGVjayQvKQoJCQl7CgkJCWlmICgkZmlwc2NhbmlzdGVyb25seSAhPSAyKQoJCQkJewoJCQkJcHJpbnQgU1RERVJSIDw8IkVPRiI7CkVSUk9SOiBGSVBTIG5vdCBhdXRvZGV0ZWN0ZWQuIE5vdCBydW5uaW5nIGZyb20gcmVzdHJpY3RlZCB0YXJiYWxsPz8KRU9GCgkJCQlleGl0KDEpOwoJCQkJfQoJCQl9CgkJZWxzaWYgKC9eZmlwc2NhbmlzdGVyb25seSQvKQoJCQl7CgkJCSRmaXBzID0gMTsKCQkJJG5vZmlwc2NhbmlzdGVyY2hlY2sgPSAxOwoJCQkkZmlwc2xpYmRpcj0iIjsKCQkJJGZpcHNjYW5pc3RlcmludGVybmFsPSJ5IjsKCQkJJGZpcHNjYW5pc3Rlcm9ubHkgPSAxOwoJCQl9CgkJZWxzaWYgKC9eZmlwc2NhbmlzdGVyYnVpbGQkLykKCQkJewoJCQkkZmlwcyA9IDE7CgkJCSRub2ZpcHNjYW5pc3RlcmNoZWNrID0gMTsKCQkJJGZpcHNsaWJkaXI9IiI7CgkJCSRmaXBzY2FuaXN0ZXJpbnRlcm5hbD0ieSI7CgkJCSRmaXBzY2FuaXN0ZXJvbmx5ID0gMTsKCQkJfQoJCWVsc2lmICgvXlstK10vKQoJCQl7CgkJCWlmICgvXi0tcHJlZml4PSguKikkLykKCQkJCXsKCQkJCSRwcmVmaXg9JDE7CgkJCQl9CgkJCWVsc2lmICgvXi0tbGliZGlyPSguKikkLykKCQkJCXsKCQkJCSRsaWJkaXI9JDE7CgkJCQl9CgkJCWVsc2lmICgvXi0tb3BlbnNzbGRpcj0oLiopJC8pCgkJCQl7CgkJCQkkb3BlbnNzbGRpcj0kMTsKCQkJCX0KCQkJZWxzaWYgKC9eLS1pbnN0YWxsLnByZWZpeD0oLiopJC8pCgkJCQl7CgkJCQkkaW5zdGFsbF9wcmVmaXg9JDE7CgkJCQl9CgkJCWVsc2lmICgvXi0td2l0aC1rcmI1LShkaXJ8bGlifGluY2x1ZGV8Zmxhdm9yKT0oLiopJC8pCgkJCQl7CgkJCQkkd2l0aGFyZ3N7ImtyYjUtIi4kMX09JDI7CgkJCQl9CgkJCWVsc2lmICgvXi0td2l0aC16bGliLWxpYj0oLiopJC8pCgkJCQl7CgkJCQkkd2l0aGFyZ3N7InpsaWItbGliIn09JDE7CgkJCQl9CgkJCWVsc2lmICgvXi0td2l0aC16bGliLWluY2x1ZGU9KC4qKSQvKQoJCQkJewoJCQkJJHdpdGhhcmdzeyJ6bGliLWluY2x1ZGUifT0iLUkkMSI7CgkJCQl9CgkJCWVsc2lmICgvXi0td2l0aC1maXBzbGliZGlyPSguKikkLykKCQkJCXsKCQkJCSRmaXBzbGliZGlyPSIkMS8iOwoJCQkJfQoJCQllbHNpZiAoL14tLXdpdGgtYmFzZWFkZHI9KC4qKSQvKQoJCQkJewoJCQkJJGJhc2VhZGRyPSIkMSI7CgkJCQl9CgkJCWVsc2lmICgvXi0tY3Jvc3MtY29tcGlsZS1wcmVmaXg9KC4qKSQvKQoJCQkJewoJCQkJJGNyb3NzX2NvbXBpbGVfcHJlZml4PSQxOwoJCQkJfQoJCQllbHNpZiAoL14tW2xMXSguKikkLyBvciAvXi1XbCwvKQoJCQkJewoJCQkJJGxpYnMuPSRfLiIgIjsKCQkJCX0KCQkJZWxzZQkjIGNvbW1vbiBpZiAoL15bLStdLyksIGp1c3QgcGFzcyBkb3duLi4uCgkJCQl7CgkJCQkkXyA9fiBzLyUoWzAtOWEtZl17MSwyfSkvY2hyKGhleCgkMSkpL2dlaTsKCQkJCSRmbGFncy49JF8uIiAiOwoJCQkJfQoJCQl9CgkJZWxzaWYgKCRfID1+IC9eKFteOl0rKTooLispJC8pCgkJCXsKCQkJZXZhbCAiXCR0YWJsZXtcJDF9ID0gXCIkMlwiIjsgIyBhbGxvdyAkeHh4IGNvbnN0cnVjdHMgaW4gdGhlIHN0cmluZwoJCQkkdGFyZ2V0PSQxOwoJCQl9CgkJZWxzZQoJCQl7CgkJCWRpZSAidGFyZ2V0IGFscmVhZHkgZGVmaW5lZCAtICR0YXJnZXQgKG9mZmVuZGluZyBhcmc6ICRfKVxuIiBpZiAoJHRhcmdldCBuZSAiIik7CgkJCSR0YXJnZXQ9JF87CgkJCX0KCgkJdW5sZXNzICgkXyBlcSAkdGFyZ2V0IHx8IC9ebm8tLyB8fCAvXmRpc2FibGUtLykKCQkJewoJCQkjICJuby0uLi4iIGZvbGxvd3MgbGF0ZXIgYWZ0ZXIgaW1wbGllZCBkaXNhY3RpdmF0aW9ucwoJCQkjIGhhdmUgYmVlbiBkZXJpdmVkLiAgKERvbid0IHRha2UgdGhpcyB0b28gc2Vyb2l1c2x5LAoJCQkjIHdlIHJlYWxseSBvbmx5IHdyaXRlIE9QVElPTlMgdG8gdGhlIE1ha2VmaWxlIG91dCBvZgoJCQkjIG5vc3RhbGdpYS4pCgoJCQlpZiAoJG9wdGlvbnMgZXEgIiIpCgkJCQl7ICRvcHRpb25zID0gJF87IH0KCQkJZWxzZQoJCQkJeyAkb3B0aW9ucyAuPSAiICIuJF87IH0KCQkJfQoJCX0KCX0KCgoKaWYgKCRwcm9jZXNzb3IgZXEgIjM4NiIpCgl7CgkkZGlzYWJsZWR7InNzZTIifSA9ICJmb3JjZWQiOwoJfQoKaWYgKCFkZWZpbmVkKCR3aXRoYXJnc3sia3JiNS1mbGF2b3IifSkgfHwgJHdpdGhhcmdzeyJrcmI1LWZsYXZvciJ9IGVxICIiKQoJewoJJGRpc2FibGVkeyJrcmI1In0gPSAia3JiNS1mbGF2b3Igbm90IHNwZWNpZmllZCI7Cgl9CgppZiAoIWRlZmluZWQoJGRpc2FibGVkeyJ6bGliLWR5bmFtaWMifSkpCgl7CgkjICJ6bGliLWR5bmFtaWMiIHdhcyBzcGVjaWZpY2FsbHkgZW5hYmxlZCwgc28gZW5hYmxlICJ6bGliIgoJZGVsZXRlICRkaXNhYmxlZHsiemxpYiJ9OwoJfQoKaWYgKGRlZmluZWQoJGRpc2FibGVkeyJyaWpuZGFlbCJ9KSkKCXsKCSRkaXNhYmxlZHsiYWVzIn0gPSAiZm9yY2VkIjsKCX0KaWYgKGRlZmluZWQoJGRpc2FibGVkeyJkZXMifSkpCgl7CgkkZGlzYWJsZWR7Im1kYzIifSA9ICJmb3JjZWQiOwoJfQppZiAoZGVmaW5lZCgkZGlzYWJsZWR7ImVjIn0pKQoJewoJJGRpc2FibGVkeyJlY2RzYSJ9ID0gImZvcmNlZCI7CgkkZGlzYWJsZWR7ImVjZGgifSA9ICJmb3JjZWQiOwoJfQoKIyBTU0wgMi4wIHJlcXVpcmVzIE1ENSBhbmQgUlNBCmlmIChkZWZpbmVkKCRkaXNhYmxlZHsibWQ1In0pIHx8IGRlZmluZWQoJGRpc2FibGVkeyJyc2EifSkpCgl7CgkkZGlzYWJsZWR7InNzbDIifSA9ICJmb3JjZWQiOwoJfQoKIyBTU0wgMy4wIGFuZCBUTFMgcmVxdWlyZXMgTUQ1IGFuZCBTSEEgYW5kIGVpdGhlciBSU0Egb3IgRFNBK0RICmlmIChkZWZpbmVkKCRkaXNhYmxlZHsibWQ1In0pIHx8IGRlZmluZWQoJGRpc2FibGVkeyJzaGEifSkKICAgIHx8IChkZWZpbmVkKCRkaXNhYmxlZHsicnNhIn0pCiAgICAgICAgJiYgKGRlZmluZWQoJGRpc2FibGVkeyJkc2EifSkgfHwgZGVmaW5lZCgkZGlzYWJsZWR7ImRoIn0pKSkpCgl7CgkkZGlzYWJsZWR7InNzbDMifSA9ICJmb3JjZWQiOwoJJGRpc2FibGVkeyJ0bHMxIn0gPSAiZm9yY2VkIjsKCX0KCmlmIChkZWZpbmVkKCRkaXNhYmxlZHsidGxzMSJ9KSkKCXsKCSRkaXNhYmxlZHsidGxzZXh0In0gPSAiZm9yY2VkIjsKCX0KCmlmIChkZWZpbmVkKCRkaXNhYmxlZHsiZWMifSkgfHwgZGVmaW5lZCgkZGlzYWJsZWR7ImRzYSJ9KQogICAgfHwgZGVmaW5lZCgkZGlzYWJsZWR7ImRoIn0pKQoJewoJJGRpc2FibGVkeyJnb3N0In0gPSAiZm9yY2VkIjsKCX0KCiMgU1JQIGFuZCBIRUFSVEJFQVRTIHJlcXVpcmUgVExTRVhUCmlmIChkZWZpbmVkKCRkaXNhYmxlZHsidGxzZXh0In0pKQoJewoJJGRpc2FibGVkeyJzcnAifSA9ICJmb3JjZWQiOwoJJGRpc2FibGVkeyJoZWFydGJlYXRzIn0gPSAiZm9yY2VkIjsKCX0KCmlmICgkdGFyZ2V0IGVxICJUQUJMRSIpIHsKCWZvcmVhY2ggJHRhcmdldCAoc29ydCBrZXlzICV0YWJsZSkgewoJCXByaW50X3RhYmxlX2VudHJ5KCR0YXJnZXQpOwoJfQoJZXhpdCAwOwp9CgppZiAoJHRhcmdldCBlcSAiTElTVCIpIHsKCWZvcmVhY2ggKHNvcnQga2V5cyAldGFibGUpIHsKCQlwcmludDsKCQlwcmludCAiXG4iOwoJfQoJZXhpdCAwOwp9CgppZiAoJHRhcmdldCA9fiBtL15DeWdXaW4zMigtLiopJC8pIHsKCSR0YXJnZXQgPSAiQ3lnd2luIi4kMTsKfQoKcHJpbnQgIkNvbmZpZ3VyaW5nIGZvciAkdGFyZ2V0XG4iOwoKJnVzYWdlIGlmICghZGVmaW5lZCgkdGFibGV7JHRhcmdldH0pKTsKCmlmICgkZmlwcykKCXsKCWRlbGV0ZSAkZGlzYWJsZWR7InNoYXJlZCJ9IGlmICgkZGlzYWJsZWR7InNoYXJlZCJ9IGVxICJkZWZhdWx0Iik7Cgl9Cgpmb3JlYWNoIChzb3J0IChrZXlzICVkaXNhYmxlZCkpCgl7Cgkkb3B0aW9ucyAuPSAiIG5vLSRfIjsKCglwcmludGYgIiAgICBuby0lLTEycyAlLTEwcyIsICRfLCAiWyRkaXNhYmxlZHskX31dIjsKCglpZiAoL15kc28kLykKCQl7ICRub19kc28gPSAxOyB9CgllbHNpZiAoL150aHJlYWRzJC8pCgkJeyAkbm9fdGhyZWFkcyA9IDE7IH0KCWVsc2lmICgvXnNoYXJlZCQvKQoJCXsgJG5vX3NoYXJlZCA9IDE7IH0KCWVsc2lmICgvXnpsaWIkLykKCQl7ICR6bGliID0gMDsgfQoJZWxzaWYgKC9ec3RhdGljLWVuZ2luZSQvKQoJCXsgfQoJZWxzaWYgKC9eemxpYi1keW5hbWljJC8pCgkJeyB9CgllbHNpZiAoL15zeW1saW5rcyQvKQoJCXsgJHN5bWxpbmsgPSAwOyB9CgllbHNpZiAoL15zc2UyJC8pCgkJeyAkbm9fc3NlMiA9IDE7IH0KCWVsc2UKCQl7CgkJbXkgKCRBTEdPLCAkYWxnbyk7CgkJKCRBTEdPID0gJGFsZ28gPSAkXykgPX4gdHIvW1wtYS16XS9bX0EtWl0vOwoKCQlpZiAoL15hc20kLyB8fCAvXmVyciQvIHx8IC9eaHckLyB8fCAvXmh3LS8pCgkJCXsKCQkJJG9wZW5zc2xfb3RoZXJfZGVmaW5lcyAuPSAiI2RlZmluZSBPUEVOU1NMX05PXyRBTEdPXG4iOwoJCQlwcmludCAiIE9QRU5TU0xfTk9fJEFMR08iOwoKCQkJaWYgKC9eZXJyJC8pCXsgJGZsYWdzIC49ICItRE9QRU5TU0xfTk9fRVJSICI7IH0KCQkJZWxzaWYgKC9eYXNtJC8pCXsgJG5vX2FzbSA9IDE7IH0KCQkJfQoJCWVsc2UKCQkJewoJCQkkb3BlbnNzbF9hbGdvcml0aG1fZGVmaW5lcyAuPSAiI2RlZmluZSBPUEVOU1NMX05PXyRBTEdPXG4iOwoJCQlwcmludCAiIE9QRU5TU0xfTk9fJEFMR08iOwoKCQkJaWYgKC9ea3JiNSQvKQoJCQkJeyAkbm9fa3JiNSA9IDE7IH0KCQkJZWxzZQoJCQkJewoJCQkJcHVzaCBAc2tpcCwgJGFsZ287CgkJCQkjIGZpeC11cCBjcnlwdG8vZGlyZWN0b3J5IG5hbWUocykKCQkJCUBza2lwWyQjc2tpcF09Indocmxwb29sIiBpZiAkYWxnbyBlcSAid2hpcmxwb29sIjsKCQkJCXByaW50ICIgKHNraXAgZGlyKSI7CgoJCQkJJGRlcGZsYWdzIC49ICIgLURPUEVOU1NMX05PXyRBTEdPIjsKCQkJCX0KCQkJfQoJCX0KCglwcmludCAiXG4iOwoJfQoKbXkgJGV4cF9jZmxhZ3MgPSAiIjsKCmZvcmVhY2ggKHNvcnQgQGV4cGVyaW1lbnRhbCkKCXsKCW15ICRBTEdPOwoJKCRBTEdPID0gJF8pID1+IHRyL1thLXpdL1tBLVpdLzsKCgkjIG9wZW5zc2xjb25mLmggd2lsbCBzZXQgT1BFTlNTTF9OT18uLi4gdW5sZXNzIE9QRU5TU0xfRVhQRVJJTUVOVEFMXy4uLiBpcyBkZWZpbmVkCgkkb3BlbnNzbF9leHBlcmltZW50YWxfZGVmaW5lcyAuPSAiI2RlZmluZSBPUEVOU1NMX05PXyRBTEdPXG4iOwoJJGV4cF9jZmxhZ3MgLj0gIiAtRE9QRU5TU0xfRVhQRVJJTUVOVEFMXyRBTEdPIjsKCX0KCm15ICRJc01LMU1GPXNjYWxhciBncmVwIC9eJHRhcmdldCQvLEBNSzFNRl9CdWlsZHM7CgokZXhlX2V4dD0iLmV4ZSIgaWYgKCR0YXJnZXQgZXEgIkN5Z3dpbiIgfHwgJHRhcmdldCBlcSAiREpHUFAiIHx8ICR0YXJnZXQgPX4gL15taW5ndy8pOwokZXhlX2V4dD0iLm5sbSIgaWYgKCR0YXJnZXQgPX4gL25ldHdhcmUvKTsKJGV4ZV9leHQ9Ii5wbSIgIGlmICgkdGFyZ2V0ID1+IC92b3MvKTsKaWYgKCRvcGVuc3NsZGlyIGVxICIiIGFuZCAkcHJlZml4IGVxICIiKQoJewoJaWYgKCRmaXBzKQoJCXsKCQlpZiAoZXhpc3RzICRFTlZ7RklQU0RJUn0pCgkJCXsKCQkJJG9wZW5zc2xkaXI9IiRFTlZ7RklQU0RJUn0iOwoJCQl9CgkJZWxzZQoJCQl7CgkJCSRvcGVuc3NsZGlyPSIvdXNyL2xvY2FsL3NzbC9maXBzLTIuMCI7CgkJCX0KCQl9CgllbHNlCgkJewoJCSRvcGVuc3NsZGlyPSIvdXNyL2xvY2FsL3NzbCI7CgkJfQoJfQokcHJlZml4PSRvcGVuc3NsZGlyIGlmICRwcmVmaXggZXEgIiI7CgokZGVmYXVsdF9yYW5saWI9ICZ3aGljaCgicmFubGliIikgb3IgJGRlZmF1bHRfcmFubGliPSJ0cnVlIjsKJHBlcmw9JEVOVnsnUEVSTCd9IG9yICRwZXJsPSZ3aGljaCgicGVybDUiKSBvciAkcGVybD0md2hpY2goInBlcmwiKQogIG9yICRwZXJsPSJwZXJsIjsKbXkgJG1ha2UgPSAkRU5WeydNQUtFJ30gfHwgIm1ha2UiOwoKbXkgJGZpcHNfYXV0aF9rZXkgPSAkRU5WeydGSVBTX0FVVEhfS0VZJ307Cm15ICRmaXBzX2F1dGhfb2ZmaWNlciA9ICRFTlZ7J0ZJUFNfQVVUSF9PRkZJQ0VSJ307Cm15ICRmaXBzX2F1dGhfdXNlciA9ICRFTlZ7J0ZJUFNfQVVUSF9VU0VSJ307CgokY3Jvc3NfY29tcGlsZV9wcmVmaXg9JEVOVnsnQ1JPU1NfQ09NUElMRSd9IGlmICRjcm9zc19jb21waWxlX3ByZWZpeCBlcSAiIjsKCmNob3AgJG9wZW5zc2xkaXIgaWYgJG9wZW5zc2xkaXIgPX4gL1wvJC87CmNob3AgJHByZWZpeCBpZiAkcHJlZml4ID1+IC8uXC8kLzsKCiRvcGVuc3NsZGlyPSRwcmVmaXggLiAiL3NzbCIgaWYgJG9wZW5zc2xkaXIgZXEgIiI7CiRvcGVuc3NsZGlyPSRwcmVmaXggLiAiLyIgLiAkb3BlbnNzbGRpciBpZiAkb3BlbnNzbGRpciAhfiAvKF5cL3xeW2EtekEtWl06W1xcXC9dKS87CgoKcHJpbnQgIklzTUsxTUY9JElzTUsxTUZcbiI7CgpteSBAZmllbGRzID0gc3BsaXQoL1xzKjpccyovLCR0YWJsZXskdGFyZ2V0fSAuICI6IiB4IDMwICwgLTEpOwpteSAkY2MgPSAkZmllbGRzWyRpZHhfY2NdOwojIEFsbG93IGVudmlyb25tZW50IENDIHRvIG92ZXJyaWRlIGNvbXBpbGVyLi4uCmlmKCRFTlZ7Q0N9KSB7CiAgICAkY2MgPSAkRU5We0NDfTsKfQpteSAkY2ZsYWdzID0gJGZpZWxkc1skaWR4X2NmbGFnc107Cm15ICR1bmlzdGQgPSAkZmllbGRzWyRpZHhfdW5pc3RkXTsKbXkgJHRocmVhZF9jZmxhZyA9ICRmaWVsZHNbJGlkeF90aHJlYWRfY2ZsYWddOwpteSAkc3lzX2lkID0gJGZpZWxkc1skaWR4X3N5c19pZF07Cm15ICRsZmxhZ3MgPSAkZmllbGRzWyRpZHhfbGZsYWdzXTsKbXkgJGJuX29wcyA9ICRmaWVsZHNbJGlkeF9ibl9vcHNdOwpteSAkY3B1aWRfb2JqID0gJGZpZWxkc1skaWR4X2NwdWlkX29ial07Cm15ICRibl9vYmogPSAkZmllbGRzWyRpZHhfYm5fb2JqXTsKbXkgJGVjX29iaiA9ICRmaWVsZHNbJGlkeF9lY19vYmpdOwpteSAkZGVzX29iaiA9ICRmaWVsZHNbJGlkeF9kZXNfb2JqXTsKbXkgJGFlc19vYmogPSAkZmllbGRzWyRpZHhfYWVzX29ial07Cm15ICRiZl9vYmogPSAkZmllbGRzWyRpZHhfYmZfb2JqXTsKbXkgJG1kNV9vYmogPSAkZmllbGRzWyRpZHhfbWQ1X29ial07Cm15ICRzaGExX29iaiA9ICRmaWVsZHNbJGlkeF9zaGExX29ial07Cm15ICRjYXN0X29iaiA9ICRmaWVsZHNbJGlkeF9jYXN0X29ial07Cm15ICRyYzRfb2JqID0gJGZpZWxkc1skaWR4X3JjNF9vYmpdOwpteSAkcm1kMTYwX29iaiA9ICRmaWVsZHNbJGlkeF9ybWQxNjBfb2JqXTsKbXkgJHJjNV9vYmogPSAkZmllbGRzWyRpZHhfcmM1X29ial07Cm15ICR3cF9vYmogPSAkZmllbGRzWyRpZHhfd3Bfb2JqXTsKbXkgJGNtbGxfb2JqID0gJGZpZWxkc1skaWR4X2NtbGxfb2JqXTsKbXkgJG1vZGVzX29iaiA9ICRmaWVsZHNbJGlkeF9tb2Rlc19vYmpdOwpteSAkZW5naW5lc19vYmogPSAkZmllbGRzWyRpZHhfZW5naW5lc19vYmpdOwpteSAkcGVybGFzbV9zY2hlbWUgPSAkZmllbGRzWyRpZHhfcGVybGFzbV9zY2hlbWVdOwpteSAkZHNvX3NjaGVtZSA9ICRmaWVsZHNbJGlkeF9kc29fc2NoZW1lXTsKbXkgJHNoYXJlZF90YXJnZXQgPSAkZmllbGRzWyRpZHhfc2hhcmVkX3RhcmdldF07Cm15ICRzaGFyZWRfY2ZsYWcgPSAkZmllbGRzWyRpZHhfc2hhcmVkX2NmbGFnXTsKbXkgJHNoYXJlZF9sZGZsYWcgPSAkZmllbGRzWyRpZHhfc2hhcmVkX2xkZmxhZ107Cm15ICRzaGFyZWRfZXh0ZW5zaW9uID0gJGZpZWxkc1skaWR4X3NoYXJlZF9leHRlbnNpb25dOwpteSAkcmFubGliID0gJEVOVnsnUkFOTElCJ30gfHwgJGZpZWxkc1skaWR4X3JhbmxpYl07Cm15ICRhciA9ICRFTlZ7J0FSJ30gfHwgImFyIjsKbXkgJGFyZmxhZ3MgPSAkZmllbGRzWyRpZHhfYXJmbGFnc107Cm15ICRtdWx0aWxpYiA9ICRmaWVsZHNbJGlkeF9tdWx0aWxpYl07CgojIGlmICRwcmVmaXgvbGliJG11bHRpbGliIGlzIG5vdCBhbiBleGlzdGluZyBkaXJlY3RvcnksIHRoZW4KIyBhc3N1bWUgdGhhdCBpdCdzIG5vdCBzZWFyY2hlZCBieSBsaW5rZXIgYXV0b21hdGljYWxseSwgaW4KIyB3aGljaCBjYXNlIGFkZGluZyAkbXVsdGlsaWIgc3VmZml4IGNhdXNlcyBtb3JlIGdyaWVmIHRoYW4KIyB3ZSdyZSByZWFkeSB0byB0b2xlcmF0ZSwgc28gZG9uJ3QuLi4KJG11bHRpbGliPSIiIGlmICEtZCAiJHByZWZpeC9saWIkbXVsdGlsaWIiOwoKJGxpYmRpcj0ibGliJG11bHRpbGliIiBpZiAkbGliZGlyIGVxICIiOwoKJGNmbGFncyA9ICIkY2ZsYWdzJGV4cF9jZmxhZ3MiOwoKIyAnJScgaW4gJGxmbGFncyBpcyB1c2VkIHRvIHNwbGl0IGZsYWdzIHRvICJwcmUtIiBhbmQgcG9zdC1mbGFncwpteSAoJHByZWxmbGFncywkcG9zdGxmbGFncyk9c3BsaXQoJyUnLCRsZmxhZ3MpOwppZiAoZGVmaW5lZCgkcG9zdGxmbGFncykpCXsgJGxmbGFncz0kcG9zdGxmbGFnczsJfQplbHNlCQkJCXsgJGxmbGFncz0kcHJlbGZsYWdzOyB1bmRlZiAkcHJlbGZsYWdzOwl9CgppZiAoJHRhcmdldCA9fiAvXm1pbmd3LyAmJiBgJGNjIC0tdGFyZ2V0LWhlbHAgMj4mMWAgIX4gbS9cLW1ub1wtY3lnd2luL20pCgl7CgkkY2ZsYWdzID1+IHMvXC1tbm9cLWN5Z3dpblxzKi8vOwoJJHNoYXJlZF9sZGZsYWcgPX4gcy9cLW1ub1wtY3lnd2luXHMqLy87Cgl9CgppZiAoJHRhcmdldCA9fiAvbGludXguKlwtbWlwcy8gJiYgISRub19hc20gJiYgJGZsYWdzICF+IC9cLW0oaXBzfGFyY2g9KS8pIHsKCSMgbWluaW1hbGx5IHJlcXVpcmVkIGFyY2hpdGVjdHVyZSBmbGFncyBmb3IgYXNzZW1ibHkgbW9kdWxlcwoJJGNmbGFncz0iLW1pcHMyICRjZmxhZ3MiIGlmICgkdGFyZ2V0ID1+IC9taXBzMzIvKTsKCSRjZmxhZ3M9Ii1taXBzMyAkY2ZsYWdzIiBpZiAoJHRhcmdldCA9fiAvbWlwczY0Lyk7Cn0KCm15ICRub19zaGFyZWRfd2Fybj0wOwpteSAkbm9fdXNlcl9jZmxhZ3M9MDsKCmlmICgkZmxhZ3MgbmUgIiIpCXsgJGNmbGFncz0iJGZsYWdzJGNmbGFncyI7IH0KZWxzZQkJCXsgJG5vX3VzZXJfY2ZsYWdzPTE7ICAgICAgIH0KCiMgS2VyYmVyb3Mgc2V0dGluZ3MuICBUaGUgZmxhdm9yIG11c3QgYmUgcHJvdmlkZWQgZnJvbSBvdXRzaWRlLCBlaXRoZXIgdGhyb3VnaAojIHRoZSBzY3JpcHQgImNvbmZpZyIgb3IgbWFudWFsbHkuCmlmICghJG5vX2tyYjUpCgl7CglteSAoJGxyZXNvbHYsICRscGF0aCwgJGxleHQpOwoJaWYgKCR3aXRoYXJnc3sia3JiNS1mbGF2b3IifSA9fiAvXltIaF1laW1kYWwkLykKCQl7CgkJZGllICJTb3JyeSwgSGVpbWRhbCBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZFxuIjsKCQl9CgkjIyMjIyBIQUNLIHRvIGZvcmNlIHVzZSBvZiBIZWltZGFsLgoJIyMjIyMgV0FSTklORzogU2luY2Ugd2UgZG9uJ3QgcmVhbGx5IGhhdmUgYWRlcXVhdGUgc3VwcG9ydCBmb3IgSGVpbWRhbCwKCSMjIyMjICAgICAgICAgIHVzaW5nIHRoaXMgd2lsbCBicmVhayB0aGUgYnVpbGQuICBZb3UnbGwgaGF2ZSB0byBtYWtlCgkjIyMjIyAgICAgICAgICBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UsIGFuZCBpZiB5b3UgZG8sIHBsZWFzZSBzZW5kCgkjIyMjIyAgICAgICAgICBwYXRjaGVzIHRvIG9wZW5zc2wtZGV2QG9wZW5zc2wub3JnCglpZiAoJHdpdGhhcmdzeyJrcmI1LWZsYXZvciJ9ID1+IC9eZm9yY2UtW0hoXWVpbWRhbCQvKQoJCXsKCQl3YXJuICJIZWltZGFsIGlzbid0IHJlYWxseSBzdXBwb3J0ZWQuICBZb3VyIGJ1aWxkIFdJTEwgYnJlYWtcbiI7CgkJd2FybiAiSWYgeW91IGZpeCB0aGUgcHJvYmxlbXMsIHBsZWFzZSBzZW5kIGEgcGF0Y2ggdG8gb3BlbnNzbC1kZXZcQG9wZW5zc2wub3JnXG4iOwoJCSR3aXRoYXJnc3sia3JiNS1kaXIifSA9ICIvdXNyL2hlaW1kYWwiCgkJCWlmICR3aXRoYXJnc3sia3JiNS1kaXIifSBlcSAiIjsKCQkkd2l0aGFyZ3N7ImtyYjUtbGliIn0gPSAiLUwiLiR3aXRoYXJnc3sia3JiNS1kaXIifS4KCQkJIi9saWIgLWxnc3NhcGkgLWxrcmI1IC1sY29tX2VyciIKCQkJaWYgJHdpdGhhcmdzeyJrcmI1LWxpYiJ9IGVxICIiICYmICEkSXNNSzFNRjsKCQkkY2ZsYWdzPSItREtSQjVfSEVJTURBTCAkY2ZsYWdzIjsKCQl9CglpZiAoJHdpdGhhcmdzeyJrcmI1LWZsYXZvciJ9ID1+IC9eW01tXVtJaV1bVHRdLykKCQl7CgkJJHdpdGhhcmdzeyJrcmI1LWRpciJ9ID0gIi91c3Iva2VyYmVyb3MiCgkJCWlmICR3aXRoYXJnc3sia3JiNS1kaXIifSBlcSAiIjsKCQkkd2l0aGFyZ3N7ImtyYjUtbGliIn0gPSAiLUwiLiR3aXRoYXJnc3sia3JiNS1kaXIifS4KCQkJIi9saWIgLWxnc3NhcGlfa3JiNSAtbGtyYjUgLWxjb21fZXJyIC1sazVjcnlwdG8iCgkJCWlmICR3aXRoYXJnc3sia3JiNS1saWIifSBlcSAiIiAmJiAhJElzTUsxTUY7CgkJJGNmbGFncz0iLURLUkI1X01JVCAkY2ZsYWdzIjsKCQkkd2l0aGFyZ3N7ImtyYjUtZmxhdm9yIn0gPX4gcy9eW01tXVtJaV1bVHRdWy5fLV0qLy87CgkJaWYgKCR3aXRoYXJnc3sia3JiNS1mbGF2b3IifSA9fiAvXjFbLl8tXSpbMDFdLykKCQkJewoJCQkkY2ZsYWdzPSItREtSQjVfTUlUX09MRDExICRjZmxhZ3MiOwoJCQl9CgkJfQoJTFJFU09MVjoKCWZvcmVhY2ggJGxwYXRoICgiL2xpYiIsICIvdXNyL2xpYiIpCgkJewoJCWZvcmVhY2ggJGxleHQgKCJhIiwgInNvIikKCQkJewoJCQkkbHJlc29sdiA9ICIkbHBhdGgvbGlicmVzb2x2LiRsZXh0IjsKCQkJbGFzdCBMUkVTT0xWCWlmICgtciAiJGxyZXNvbHYiKTsKCQkJJGxyZXNvbHYgPSAiIjsKCQkJfQoJCX0KCSR3aXRoYXJnc3sia3JiNS1saWIifSAuPSAiIC1scmVzb2x2IgoJCWlmICgiJGxyZXNvbHYiIG5lICIiKTsKCSR3aXRoYXJnc3sia3JiNS1pbmNsdWRlIn0gPSAiLUkiLiR3aXRoYXJnc3sia3JiNS1kaXIifS4iL2luY2x1ZGUiCgkJaWYgJHdpdGhhcmdzeyJrcmI1LWluY2x1ZGUifSBlcSAiIiAmJgoJCSAgICR3aXRoYXJnc3sia3JiNS1kaXIifSBuZSAiIjsKCX0KCiMgVGhlIERTTyBjb2RlIGN1cnJlbnRseSBhbHdheXMgaW1wbGVtZW50cyBhbGwgZnVuY3Rpb25zIHNvIHRoYXQgbm8KIyBhcHBsaWNhdGlvbnMgd2lsbCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoYXQgZnJvbSBhIGNvbXBpbGF0aW9uIHBvaW50CiMgb2Ygdmlldy4gSG93ZXZlciwgdGhlICJtZXRob2QicyBtYXkgcmV0dXJuIHplcm8gdW5sZXNzIHRoYXQgcGxhdGZvcm0KIyBoYXMgc3VwcG9ydCBjb21waWxlZCBpbiBmb3IgdGhlbS4gQ3VycmVudGx5IGVhY2ggbWV0aG9kIGlzIGVuYWJsZWQKIyBieSBhIGRlZmluZSAiRFNPXzxuYW1lPiIgLi4uIHdlIHRyYW5zbGF0ZSB0aGUgImRzb19zY2hlbWUiIGNvbmZpZwojIHN0cmluZyBlbnRyeSBpbnRvIHVzaW5nIHRoZSBmb2xsb3dpbmcgbG9naWM7Cm15ICRkc29fY2ZsYWdzOwppZiAoISRub19kc28gJiYgJGRzb19zY2hlbWUgbmUgIiIpCgl7CgkkZHNvX3NjaGVtZSA9fiB0ci9bYS16XS9bQS1aXS87CglpZiAoJGRzb19zY2hlbWUgZXEgIkRMRkNOIikKCQl7CgkJJGRzb19jZmxhZ3MgPSAiLUREU09fRExGQ04gLURIQVZFX0RMRkNOX0giOwoJCX0KCWVsc2lmICgkZHNvX3NjaGVtZSBlcSAiRExGQ05fTk9fSCIpCgkJewoJCSRkc29fY2ZsYWdzID0gIi1ERFNPX0RMRkNOIjsKCQl9CgllbHNlCgkJewoJCSRkc29fY2ZsYWdzID0gIi1ERFNPXyRkc29fc2NoZW1lIjsKCQl9CgkkY2ZsYWdzID0gIiRkc29fY2ZsYWdzICRjZmxhZ3MiOwoJfQoKbXkgJHRocmVhZF9jZmxhZ3M7Cm15ICR0aHJlYWRfZGVmaW5lczsKaWYgKCR0aHJlYWRfY2ZsYWcgbmUgIih1bmtub3duKSIgJiYgISRub190aHJlYWRzKQoJewoJIyBJZiB3ZSBrbm93IGhvdyB0byBkbyBpdCwgc3VwcG9ydCB0aHJlYWRzIGJ5IGRlZmF1bHQuCgkkdGhyZWFkcyA9IDE7Cgl9CmlmICgkdGhyZWFkX2NmbGFnIGVxICIodW5rbm93bikiICYmICR0aHJlYWRzKQoJewoJIyBJZiB0aGUgdXNlciBhc2tlZCBmb3IgInRocmVhZHMiLCBbc11oZSBpcyBhbHNvIGV4cGVjdGVkIHRvCgkjIHByb3ZpZGUgYW55IHN5c3RlbS1kZXBlbmRlbnQgY29tcGlsZXIgb3B0aW9ucyB0aGF0IGFyZQoJIyBuZWNlc3NhcnkuCglpZiAoJG5vX3VzZXJfY2ZsYWdzKQoJCXsKCQlwcmludCAiWW91IGFza2VkIGZvciBtdWx0aS10aHJlYWRpbmcgc3VwcG9ydCwgYnV0IGRpZG4ndFxuIjsKCQlwcmludCAicHJvdmlkZSBhbnkgc3lzdGVtLXNwZWNpZmljIGNvbXBpbGVyIG9wdGlvbnNcbiI7CgkJZXhpdCgxKTsKCQl9CgkkdGhyZWFkX2NmbGFncz0iLURPUEVOU1NMX1RIUkVBRFMgJGNmbGFncyIgOwoJJHRocmVhZF9kZWZpbmVzIC49ICIjZGVmaW5lIE9QRU5TU0xfVEhSRUFEU1xuIjsKCX0KZWxzZQoJewoJJHRocmVhZF9jZmxhZ3M9Ii1ET1BFTlNTTF9USFJFQURTICR0aHJlYWRfY2ZsYWcgJGNmbGFncyI7CgkkdGhyZWFkX2RlZmluZXMgLj0gIiNkZWZpbmUgT1BFTlNTTF9USFJFQURTXG4iOwojCW15ICRkZWY7CiMJZm9yZWFjaCAkZGVmIChzcGxpdCAnICcsJHRocmVhZF9jZmxhZykKIwkJewojCQlpZiAoJGRlZiA9fiBzL14tRC8vICYmICRkZWYgIX4gL15fLykKIwkJCXsKIwkJCSR0aHJlYWRfZGVmaW5lcyAuPSAiI2RlZmluZSAkZGVmXG4iOwojCQkJfQojCQl9Cgl9CgokbGZsYWdzPSIkbGlicyRsZmxhZ3MiIGlmICgkbGlicyBuZSAiIik7CgppZiAoJG5vX2FzbSkKCXsKCSRjcHVpZF9vYmo9JGJuX29iaj0kZWNfb2JqPQoJJGRlc19vYmo9JGFlc19vYmo9JGJmX29iaj0kY2FzdF9vYmo9JHJjNF9vYmo9JHJjNV9vYmo9JGNtbGxfb2JqPQoJJG1vZGVzX29iaj0kc2hhMV9vYmo9JG1kNV9vYmo9JHJtZDE2MF9vYmo9JHdwX29iaj0kZW5naW5lc19vYmo9IiI7CgkkY2ZsYWdzPX5zL1wtRFtCTF1fRU5ESUFOLy8JCWlmICgkZmlwcyk7CgkkdGhyZWFkX2NmbGFncz1+cy9cLURbQkxdX0VORElBTi8vCWlmICgkZmlwcyk7Cgl9CmVsc2lmIChkZWZpbmVkKCRkaXNhYmxlZHtlYzJtfSkpCgl7CgkkYm5fb2JqID1+IHMvXHcrLWdmMm0uby8vOwoJfQoKaWYgKCEkbm9fc2hhcmVkKQoJewoJJGNhc3Rfb2JqPSIiOwkjIENBU1QgYXNzZW1ibGVyIGlzIG5vdCBQSUMKCX0KCmlmICgkdGhyZWFkcykKCXsKCSRjZmxhZ3M9JHRocmVhZF9jZmxhZ3M7Cgkkb3BlbnNzbF90aHJlYWRfZGVmaW5lcyAuPSAkdGhyZWFkX2RlZmluZXM7Cgl9CgppZiAoJHpsaWIpCgl7CgkkY2ZsYWdzID0gIi1EWkxJQiAkY2ZsYWdzIjsKCWlmIChkZWZpbmVkKCRkaXNhYmxlZHsiemxpYi1keW5hbWljIn0pKQoJCXsKCQlpZiAoZGVmaW5lZCgkd2l0aGFyZ3N7InpsaWItbGliIn0pKQoJCQl7CgkJCSRsZmxhZ3MgPSAiJGxmbGFncyAtTCIgLiAkd2l0aGFyZ3N7InpsaWItbGliIn0gLiAiIC1seiI7CgkJCX0KCQllbHNlCgkJCXsKCQkJJGxmbGFncyA9ICIkbGZsYWdzIC1seiI7CgkJCX0KCQl9CgllbHNlCgkJewoJCSRjZmxhZ3MgPSAiLURaTElCX1NIQVJFRCAkY2ZsYWdzIjsKCQl9Cgl9CgojIFlvdSB3aWxsIGZpbmQgc2hsaWJfbWFyazEgYW5kIHNobGliX21hcmsyIGV4cGxhaW5lZCBpbiBNYWtlZmlsZS5vcmcKbXkgJHNoYXJlZF9tYXJrID0gIiI7CmlmICgkc2hhcmVkX3RhcmdldCBlcSAiIikKCXsKCSRub19zaGFyZWRfd2FybiA9IDEgaWYgISRub19zaGFyZWQgJiYgISRmaXBzOwoJJG5vX3NoYXJlZCA9IDE7Cgl9CmlmICghJG5vX3NoYXJlZCkKCXsKCWlmICgkc2hhcmVkX2NmbGFnIG5lICIiKQoJCXsKCQkkY2ZsYWdzID0gIiRzaGFyZWRfY2ZsYWcgLURPUEVOU1NMX1BJQyAkY2ZsYWdzIjsKCQl9Cgl9CgppZiAoISRJc01LMU1GKQoJewoJIyBhZGQge25vLX1zdGF0aWMtZW5naW5lIHRvIG9wdGlvbnMgdG8gYWxsb3cgbWtkZWYucGwgdG8gd29yayB3aXRob3V0IGV4dHJhIGFyZ3VtZW50cwoJaWYgKCRub19zaGFyZWQpCgkJewoJCSRvcGVuc3NsX290aGVyX2RlZmluZXMuPSIjZGVmaW5lIE9QRU5TU0xfTk9fRFlOQU1JQ19FTkdJTkVcbiI7CgkJJG9wdGlvbnMuPSIgc3RhdGljLWVuZ2luZSI7CgkJfQoJZWxzZQoJCXsKCQkkb3BlbnNzbF9vdGhlcl9kZWZpbmVzLj0iI2RlZmluZSBPUEVOU1NMX05PX1NUQVRJQ19FTkdJTkVcbiI7CgkJJG9wdGlvbnMuPSIgbm8tc3RhdGljLWVuZ2luZSI7CgkJfQoJfQoKJGNwdWlkX29iai49IiB1cGxpbmsubyB1cGxpbmsteDg2Lm8iIGlmICgkY2ZsYWdzID1+IC9cLURPUEVOU1NMX1VTRV9BUFBMSU5LLyk7CgojCiMgUGxhdGZvcm0gZml4LXVwcwojCmlmICgkdGFyZ2V0ID1+IC9cLWljYyQvKQkjIEludGVsIEMgY29tcGlsZXIKCXsKCW15ICRpY2N2ZXI9MDsKCWlmIChvcGVuKEZELCIkY2MgLVYgMj4mMSB8IikpCgkJewoJCXdoaWxlKDxGRD4pIHsgJGljY3Zlcj0kMSBpZiAoL1ZlcnNpb24gKFswLTldKylcLi8pOyB9CgkJY2xvc2UoRkQpOwoJCX0KCWlmICgkaWNjdmVyPj04KQoJCXsKCQkkY2ZsYWdzPX5zL1wtS1BJQy8tZlBJQy87CgkJIyBFbGltaW5hdGUgdW5uZWNlc3NhcnkgZGVwZW5kZW5jeSBmcm9tIGxpYmlyYy5hLiBUaGlzIGlzCgkJIyBlc3NlbnRpYWwgZm9yIHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQsIGFzIG90aGVyd2lzZQoJCSMgYXBwcy9vcGVuc3NsIGNhbiBlbmQgdXAgaW4gZW5kbGVzcyBsb29wIHVwb24gc3RhcnR1cC4uLgoJCSRjZmxhZ3MuPSIgLURtZW1jcHk9X19idWlsdGluX21lbWNweSAtRG1lbXNldD1fX2J1aWx0aW5fbWVtc2V0IjsKCQl9CglpZiAoJGljY3Zlcj49OSkKCQl7CgkJJGxmbGFncy49IiAtaS1zdGF0aWMiOwoJCSRsZmxhZ3M9fnMvXC1ub19jcHBydC8tbm8tY3BwcnQvOwoJCX0KCWlmICgkaWNjdmVyPj0xMCkKCQl7CgkJJGxmbGFncz1+cy9cLWlcLXN0YXRpYy8tc3RhdGljLWludGVsLzsKCQl9CglpZiAoJGljY3Zlcj49MTEpCgkJewoJCSRjZmxhZ3MuPSIgLW5vLWludGVsLWV4dGVuc2lvbnMiOwkjIGRpc2FibGUgQ2lsawoJCSRsZmxhZ3M9fnMvXC1ub1wtY3BwcnQvLW5vLWN4eGxpYi87CgkJfQoJfQoKIyBVbmxpa2Ugb3RoZXIgT1NlcyAobGlrZSBTb2xhcmlzLCBMaW51eCwgVHJ1NjQsIElSSVgpIEJTRCBydW4tdGltZQojIGxpbmtlcnMgKHRlc3RlZCBPcGVuQlNELCBOZXRCU0QgYW5kIEZyZWVCU0QpICJkZW1hbmQiIFJQQVRIIHNldCBvbgojIC5zbyBvYmplY3RzLiBBcHBhcmVudGx5IGFwcGxpY2F0aW9uIFJQQVRIIGlzIG5vdCBnbG9iYWwgYW5kIGRvZXMKIyBub3QgYXBwbHkgdG8gLnNvIGxpbmtlZCB3aXRoIG90aGVyIC5zby4gUHJvYmxlbSBtYW5pZmVzdHMgaXRzZWxmCiMgd2hlbiBsaWJzc2wuc28gZmFpbHMgdG8gbG9hZCBsaWJjcnlwdG8uc28uIE9uZSBjYW4gYXJndWUgdGhhdCB3ZQojIHNob3VsZCBlbmdyYXZlIHRoaXMgaW50byBNYWtlZmlsZS5zaGFyZWQgcnVsZXMgb3IgaW50byBCU0QtKiBjb25maWcKIyBsaW5lcyBhYm92ZS4gTWVhbndoaWxlIGxldCdzIHRyeSB0byBiZSBjYXV0aW91cyBhbmQgcGFzcyAtcnBhdGggdG8KIyBsaW5rZXIgb25seSB3aGVuIC0tcHJlZml4IGlzIG5vdCAvdXNyLgppZiAoJHRhcmdldCA9fiAvXkJTRFwtLykKCXsKCSRzaGFyZWRfbGRmbGFnLj0iIC1XbCwtcnBhdGgsXCQoTElCUlBBVEgpIiBpZiAoJHByZWZpeCAhfiBtfF4vdXNyWy9dKiR8KTsKCX0KCmlmICgkc3lzX2lkIG5lICIiKQoJewoJIyRjZmxhZ3M9Ii1ET1BFTlNTTF9TWVNOQU1FXyRzeXNfaWQgJGNmbGFncyI7Cgkkb3BlbnNzbF9zeXNfZGVmaW5lcz0iI2RlZmluZSBPUEVOU1NMX1NZU05BTUVfJHN5c19pZFxuIjsKCX0KCmlmICgkcmFubGliIGVxICIiKQoJewoJJHJhbmxpYiA9ICRkZWZhdWx0X3JhbmxpYjsKCX0KCiNteSAoJGJuMSk9c3BsaXQoL1xzKy8sJGJuX29iaik7CiMkYm4xID0gIiIgdW5sZXNzIGRlZmluZWQgJGJuMTsKIyRibjE9JGJuX2FzbSB1bmxlc3MgKCRibjEgPX4gL1wubyQvKTsKIyRibl9vYmo9IiRibjEiOwoKJGNwdWlkX29iaj0iIiBpZiAoJHByb2Nlc3NvciBlcSAiMzg2Iik7CgokYm5fb2JqID0gJGJuX2FzbSB1bmxlc3MgJGJuX29iaiBuZSAiIjsKIyBibi01ODYgaXMgdGhlIG9ubHkgb25lIGltcGxlbWVudGluZyBibl8qX3BhcnRfd29yZHMKJGNmbGFncy49IiAtRE9QRU5TU0xfQk5fQVNNX1BBUlRfV09SRFMiIGlmICgkYm5fb2JqID1+IC9ibi01ODYvKTsKJGNmbGFncy49IiAtRE9QRU5TU0xfSUEzMl9TU0UyIiBpZiAoISRub19zc2UyICYmICRibl9vYmogPX4gLzg2Lyk7CgokY2ZsYWdzLj0iIC1ET1BFTlNTTF9CTl9BU01fTU9OVCIgaWYgKCRibl9vYmogPX4gLy1tb250Lyk7CiRjZmxhZ3MuPSIgLURPUEVOU1NMX0JOX0FTTV9NT05UNSIgaWYgKCRibl9vYmogPX4gLy1tb250NS8pOwokY2ZsYWdzLj0iIC1ET1BFTlNTTF9CTl9BU01fR0YybSIgaWYgKCRibl9vYmogPX4gLy1nZjJtLyk7CgppZiAoJGZpcHMpCgl7Cgkkb3BlbnNzbF9vdGhlcl9kZWZpbmVzLj0iI2RlZmluZSBPUEVOU1NMX0ZJUFNcbiI7CglpZiAoJGZpcHNjYW5pc3RlcmludGVybmFsIGVxICJ5IikKCQl7CgkJJG9wZW5zc2xfb3RoZXJfZGVmaW5lcy49IiNkZWZpbmUgT1BFTlNTTF9GSVBTQ0FOSVNURVJcbiI7CgkJJGNmbGFncyA9ICItRE9QRU5TU0xfRklQU0NBTklTVEVSICRjZmxhZ3MiOwoJCX0KCX0KCiRjcHVpZF9vYmo9Im1lbV9jbHIubyIJdW5sZXNzICgkY3B1aWRfb2JqID1+IC9cLm8kLyk7CiRkZXNfb2JqPSRkZXNfZW5jCXVubGVzcyAoJGRlc19vYmogPX4gL1wubyQvKTsKJGJmX29iaj0kYmZfZW5jCQl1bmxlc3MgKCRiZl9vYmogPX4gL1wubyQvKTsKJGNhc3Rfb2JqPSRjYXN0X2VuYwl1bmxlc3MgKCRjYXN0X29iaiA9fiAvXC5vJC8pOwokcmM0X29iaj0kcmM0X2VuYwl1bmxlc3MgKCRyYzRfb2JqID1+IC9cLm8kLyk7CiRyYzVfb2JqPSRyYzVfZW5jCXVubGVzcyAoJHJjNV9vYmogPX4gL1wubyQvKTsKaWYgKCRzaGExX29iaiA9fiAvXC5vJC8pCgl7CiMJJHNoYTFfb2JqPSRzaGExX2VuYzsKCSRjZmxhZ3MuPSIgLURTSEExX0FTTSIgICBpZiAoJHNoYTFfb2JqID1+IC9zeDg2LyB8fCAkc2hhMV9vYmogPX4gL3NoYTEvKTsKCSRjZmxhZ3MuPSIgLURTSEEyNTZfQVNNIiBpZiAoJHNoYTFfb2JqID1+IC9zaGEyNTYvKTsKCSRjZmxhZ3MuPSIgLURTSEE1MTJfQVNNIiBpZiAoJHNoYTFfb2JqID1+IC9zaGE1MTIvKTsKCWlmICgkc2hhMV9vYmogPX4gL3NzZTIvKQoJICAgIHsJaWYgKCRub19zc2UyKQoJCXsgICAkc2hhMV9vYmogPX4gcy9cUypzc2UyXFMrLy87ICAgICAgICB9CgkJZWxzaWYgKCRjZmxhZ3MgIX4gL09QRU5TU0xfSUEzMl9TU0UyLykKCQl7ICAgJGNmbGFncy49IiAtRE9QRU5TU0xfSUEzMl9TU0UyIjsgICAgfQoJICAgIH0KCX0KaWYgKCRtZDVfb2JqID1+IC9cLm8kLykKCXsKIwkkbWQ1X29iaj0kbWQ1X2VuYzsKCSRjZmxhZ3MuPSIgLURNRDVfQVNNIjsKCX0KaWYgKCRybWQxNjBfb2JqID1+IC9cLm8kLykKCXsKIwkkcm1kMTYwX29iaj0kcm1kMTYwX2VuYzsKCSRjZmxhZ3MuPSIgLURSTUQxNjBfQVNNIjsKCX0KaWYgKCRhZXNfb2JqID1+IC9cLm8kLykKCXsKCSRjZmxhZ3MuPSIgLURBRVNfQVNNIiBpZiAoJGFlc19vYmogPX4gbS9cYmFlc1wtLyk7OwoJIyBhZXMtY3RyLm8gaXMgbm90IGEgcmVhbCBmaWxlLCBvbmx5IGluZGljYXRpb24gdGhhdCBhc3NlbWJsZXIKCSMgbW9kdWxlIGltcGxlbWVudHMgQUVTX2N0cjMyX2VuY3J5cHQuLi4KCSRjZmxhZ3MuPSIgLURBRVNfQ1RSX0FTTSIgaWYgKCRhZXNfb2JqID1+IHMvXHMqYWVzXC1jdHJcLm8vLyk7CgkjIGFlcy14dHMubyBpbmRpY2F0ZXMgcHJlc2VuY2Ugb2YgQUVTX3h0c19bZW58ZGVdY3J5cHQuLi4KCSRjZmxhZ3MuPSIgLURBRVNfWFRTX0FTTSIgaWYgKCRhZXNfb2JqID1+IHMvXHMqYWVzXC14dHNcLm8vLyk7CgkkYWVzX29iaiA9fiBzL1xzKih2cGFlc3xhZXNuaSlcLXg4Nlwuby8vZyBpZiAoJG5vX3NzZTIpOwoJJGFlc19vYmogPX4gcy9ccyoodnB8YnMpYWVzLVx3Klwuby8vZyBpZiAoJGZpcHNjYW5pc3RlcmludGVybmFsIGVxICJ5Iik7CgkkY2ZsYWdzLj0iIC1EVlBBRVNfQVNNIiBpZiAoJGFlc19vYmogPX4gbS92cGFlcy8pOwoJJGNmbGFncy49IiAtREJTQUVTX0FTTSIgaWYgKCRhZXNfb2JqID1+IG0vYnNhZXMvKTsKCX0KZWxzZQl7CgkkYWVzX29iaj0kYWVzX2VuYzsKCX0KJHdwX29iaj0iIiBpZiAoJHdwX29iaiA9fiAvbW14LyAmJiAkcHJvY2Vzc29yIGVxICIzODYiKTsKaWYgKCR3cF9vYmogPX4gL1wubyQvICYmICEkZGlzYWJsZWR7IndoaXJscG9vbCJ9KQoJewoJJGNmbGFncy49IiAtRFdISVJMUE9PTF9BU00iOwoJfQplbHNlCXsKCSR3cF9vYmo9IndwX2Jsb2NrLm8iOwoJfQokY21sbF9vYmo9JGNtbGxfZW5jCXVubGVzcyAoJGNtbGxfb2JqID1+IC8ubyQvKTsKaWYgKCRtb2Rlc19vYmogPX4gL2doYXNoXC0vKQoJewoJJGNmbGFncy49IiAtREdIQVNIX0FTTSI7Cgl9CgojICJTdHJpbmdpZnkiIHRoZSBDIGZsYWdzIHN0cmluZy4gIFRoaXMgcGVybWl0cyBpdCB0byBiZSBtYWRlIHBhcnQgb2YgYSBzdHJpbmcKIyBhbmQgd29ya3MgYXMgd2VsbCBvbiBjb21tYW5kIGxpbmVzLgokY2ZsYWdzID1+IHMvKFtcXFwiXSkvXFxcMS9nOwoKbXkgJHZlcnNpb24gPSAidW5rbm93biI7Cm15ICR2ZXJzaW9uX251bSA9ICJ1bmtub3duIjsKbXkgJG1ham9yID0gInVua25vd24iOwpteSAkbWlub3IgPSAidW5rbm93biI7Cm15ICRzaGxpYl92ZXJzaW9uX251bWJlciA9ICJ1bmtub3duIjsKbXkgJHNobGliX3ZlcnNpb25faGlzdG9yeSA9ICJ1bmtub3duIjsKbXkgJHNobGliX21ham9yID0gInVua25vd24iOwpteSAkc2hsaWJfbWlub3IgPSAidW5rbm93biI7CgpvcGVuKElOLCc8Y3J5cHRvL29wZW5zc2x2LmgnKSB8fCBkaWUgInVuYWJsZSB0byByZWFkIG9wZW5zc2x2Lmg6JCFcbiI7CndoaWxlICg8SU4+KQoJewoJJHZlcnNpb249JDEgaWYgL09QRU5TU0wuVkVSU0lPTi5URVhULipPcGVuU1NMIChcUyspIC87CgkkdmVyc2lvbl9udW09JDEgaWYgL09QRU5TU0wuVkVSU0lPTi5OVU1CRVIuKjB4KFxTKykvOwoJJHNobGliX3ZlcnNpb25fbnVtYmVyPSQxIGlmIC9TSExJQl9WRVJTSU9OX05VTUJFUiAqIihbXiJdKykiLzsKCSRzaGxpYl92ZXJzaW9uX2hpc3Rvcnk9JDEgaWYgL1NITElCX1ZFUlNJT05fSElTVE9SWSAqIihbXiJdKikiLzsKCX0KY2xvc2UoSU4pOwppZiAoJHNobGliX3ZlcnNpb25faGlzdG9yeSBuZSAiIikgeyAkc2hsaWJfdmVyc2lvbl9oaXN0b3J5IC49ICI6IjsgfQoKaWYgKCR2ZXJzaW9uID1+IC8oXlswLTldKilcLihbMC05XC5dKikvKQoJewoJJG1ham9yPSQxOwoJJG1pbm9yPSQyOwoJfQoKaWYgKCRzaGxpYl92ZXJzaW9uX251bWJlciA9fiAvKF5bMC05XSopXC4oWzAtOVwuXSopLykKCXsKCSRzaGxpYl9tYWpvcj0kMTsKCSRzaGxpYl9taW5vcj0kMjsKCX0KCmlmICgkc3RyaWN0X3dhcm5pbmdzKQoJewoJbXkgJHdvcHQ7CglkaWUgIkVSUk9SIC0tc3RyaWN0LXdhcm5pbmdzIHJlcXVpcmVzIGdjYyIgdW5sZXNzICgkY2MgPX4gL2djYyQvKTsKCWZvcmVhY2ggJHdvcHQgKHNwbGl0IC9ccysvLCAkZ2NjX2RldnRlYW1fd2FybikKCQl7CgkJJGNmbGFncyAuPSAiICR3b3B0IiB1bmxlc3MgKCRjZmxhZ3MgPX4gLyR3b3B0LykKCQl9Cgl9CgppZiAoJGZpcHNjYW5pc3RlcmludGVybmFsIGVxICJ5IikKCXsKCW9wZW4oSU4sIjxmaXBzL2ZpcHNfYXV0aC5pbiIpIHx8IGRpZSAiY2FuJ3Qgb3BlbiBmaXBzX2F1dGguaW4iOwoJb3BlbihPVVQsIj5maXBzL2ZpcHNfYXV0aC5oIikgfHwgZGllICJjYW4ndCBvcGVuIGZpcHNfYXV0aC5oIjsKCXdoaWxlKDxJTj4pCgkJewoJCXMvRklQU19BVVRIX0tFWS4qJC9GSVBTX0FVVEhfS0VZICRmaXBzX2F1dGhfa2V5LyBpZiBkZWZpbmVkICRmaXBzX2F1dGhfa2V5OwoJCXMvRklQU19BVVRIX0NSWVBUT19PRkZJQ0VSLiokL0ZJUFNfQVVUSF9DUllQVE9fT0ZGSUNFUiAkZmlwc19hdXRoX29mZmljZXIvIGlmIGRlZmluZWQgJGZpcHNfYXV0aF9vZmZpY2VyOwoJCXMvRklQU19BVVRIX0NSWVBUT19VU0VSLiokL0ZJUFNfQVVUSF9DUllQVE9fVVNFUiAkZmlwc19hdXRoX3VzZXIvIGlmIGRlZmluZWQgJGZpcHNfYXV0aF91c2VyOwoJCXByaW50IE9VVCAkXzsKCQl9CgljbG9zZSBJTjsKCWNsb3NlIE9VVDsKCX0KCm15ICRtZm9yZyA9ICRmaXBzY2FuaXN0ZXJvbmx5ID8gIk1ha2VmaWxlLmZpcHMiIDogIk1ha2VmaWxlLm9yZyI7CgpvcGVuKElOLCI8JG1mb3JnIikgfHwgZGllICJ1bmFibGUgdG8gcmVhZCAkbWZvcmc6JCFcbiI7CnVubGluaygiJE1ha2VmaWxlLm5ldyIpIHx8IGRpZSAidW5hYmxlIHRvIHJlbW92ZSBvbGQgJE1ha2VmaWxlLm5ldzokIVxuIiBpZiAtZSAiJE1ha2VmaWxlLm5ldyI7Cm9wZW4oT1VULCI+JE1ha2VmaWxlLm5ldyIpIHx8IGRpZSAidW5hYmxlIHRvIGNyZWF0ZSAkTWFrZWZpbGUubmV3OiQhXG4iOwpwcmludCBPVVQgIiMjIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tICRtZm9yZyBieSBDb25maWd1cmUuXG5cbiI7Cm15ICRzZGlycz0wOwoKaWYgKCRmaXBzY2FuaXN0ZXJvbmx5KQoJewoJJGFlc19vYmogPX4gcy9hZXNuaS1zaGExLXg4Nl82NC5vLy87CgkkYm5fb2JqID1+IHMvbW9kZXhwNTEyLXg4Nl82NC5vLy87Cgl9Cgp3aGlsZSAoPElOPikKCXsKCWNob21wOwoJJHNkaXJzID0gMSBpZiAvXlNESVJTPS87CglpZiAoJHNkaXJzKSB7CgkJbXkgJGRpcjsKCQlmb3JlYWNoICRkaXIgKEBza2lwKSB7CgkJCXMvKFxzKSRkaXIgLyQxLzsKCQkJcy9ccyRkaXIkLy87CgkJCX0KCQl9Cgkkc2RpcnMgPSAwIHVubGVzcyAvXFwkLzsKICAgICAgICBzL2ZpcHMgLy8gaWYgKC9eRElSUz0vICYmICEkZmlwcyk7CiAgICAgICAgcy9lbmdpbmVzIC8vIGlmICgvXkRJUlM9LyAmJiAkZGlzYWJsZWR7ImVuZ2luZSJ9KTsKCXMvY2Nnb3N0Ly8gaWYgKC9eRU5HRElSUz0vICYmICRkaXNhYmxlZHsiZ29zdCJ9KTsKCXMvXlZFUlNJT049LiovVkVSU0lPTj0kdmVyc2lvbi87CglzL15NQUpPUj0uKi9NQUpPUj0kbWFqb3IvOwoJcy9eTUlOT1I9LiovTUlOT1I9JG1pbm9yLzsKCXMvXlNITElCX1ZFUlNJT05fTlVNQkVSPS4qL1NITElCX1ZFUlNJT05fTlVNQkVSPSRzaGxpYl92ZXJzaW9uX251bWJlci87CglzL15TSExJQl9WRVJTSU9OX0hJU1RPUlk9LiovU0hMSUJfVkVSU0lPTl9ISVNUT1JZPSRzaGxpYl92ZXJzaW9uX2hpc3RvcnkvOwoJcy9eU0hMSUJfTUFKT1I9LiovU0hMSUJfTUFKT1I9JHNobGliX21ham9yLzsKCXMvXlNITElCX01JTk9SPS4qL1NITElCX01JTk9SPSRzaGxpYl9taW5vci87CglzL15TSExJQl9FWFQ9LiovU0hMSUJfRVhUPSRzaGFyZWRfZXh0ZW5zaW9uLzsKCXMvXklOU1RBTExUT1A9LiokL0lOU1RBTExUT1A9JHByZWZpeC87CglzL15NVUxUSUxJQj0uKiQvTVVMVElMSUI9JG11bHRpbGliLzsKCXMvXk9QRU5TU0xESVI9LiokL09QRU5TU0xESVI9JG9wZW5zc2xkaXIvOwoJcy9eTElCRElSPS4qJC9MSUJESVI9JGxpYmRpci87CglzL15JTlNUQUxMX1BSRUZJWD0uKiQvSU5TVEFMTF9QUkVGSVg9JGluc3RhbGxfcHJlZml4LzsKCXMvXlBMQVRGT1JNPS4qJC9QTEFURk9STT0kdGFyZ2V0LzsKCXMvXk9QVElPTlM9LiokL09QVElPTlM9JG9wdGlvbnMvOwoJcy9eQ09ORklHVVJFX0FSR1M9LiokL0NPTkZJR1VSRV9BUkdTPSRhcmd2c3RyaW5nLzsKCWlmICgkY3Jvc3NfY29tcGlsZV9wcmVmaXgpCgkJewoJCXMvXkNDPS4qJC9DUk9TU19DT01QSUxFPSAkY3Jvc3NfY29tcGlsZV9wcmVmaXhcbkNDPSBcJFwoQ1JPU1NfQ09NUElMRVwpJGNjLzsKCQlzL15BUj1ccyovQVI9IFwkXChDUk9TU19DT01QSUxFXCkvOwoJCXMvXk5NPVxzKi9OTT0gXCRcKENST1NTX0NPTVBJTEVcKS87CgkJcy9eUkFOTElCPVxzKi9SQU5MSUI9IFwkXChDUk9TU19DT01QSUxFXCkvOwoJCXMvXk1BS0VERVBQUk9HPS4qJC9NQUtFREVQUFJPRz0gXCRcKENST1NTX0NPTVBJTEVcKSRjYy8gaWYgJGNjIGVxICJnY2MiOwoJCX0KCWVsc2UJewoJCXMvXkNDPS4qJC9DQz0gJGNjLzsKCQlzL15BUj1ccyphci9BUj0gJGFyLzsKCQlzL15SQU5MSUI9LiovUkFOTElCPSAkcmFubGliLzsKCQlzL15NQUtFREVQUFJPRz0uKiQvTUFLRURFUFBST0c9ICRjYy8gaWYgJGNjIGVxICJnY2MiIHx8ICgkY2MgZXEgJ2NjJyAmJiAkdGFyZ2V0ID1+IC9kYXJ3aW4vKTsKCQl9CglzL15DRkxBRz0uKiQvQ0ZMQUc9ICRjZmxhZ3MvOwoJcy9eREVQRkxBRz0uKiQvREVQRkxBRz0kZGVwZmxhZ3MvOwoJcy9eUEVYX0xJQlM9LiokL1BFWF9MSUJTPSAkcHJlbGZsYWdzLzsKCXMvXkVYX0xJQlM9LiokL0VYX0xJQlM9ICRsZmxhZ3MvOwoJcy9eRVhFX0VYVD0uKiQvRVhFX0VYVD0gJGV4ZV9leHQvOwoJcy9eQ1BVSURfT0JKPS4qJC9DUFVJRF9PQko9ICRjcHVpZF9vYmovOwoJcy9eQk5fQVNNPS4qJC9CTl9BU009ICRibl9vYmovOwoJcy9eRUNfQVNNPS4qJC9FQ19BU009ICRlY19vYmovOwoJcy9eREVTX0VOQz0uKiQvREVTX0VOQz0gJGRlc19vYmovOwoJcy9eQUVTX0VOQz0uKiQvQUVTX0VOQz0gJGFlc19vYmovOwoJcy9eQkZfRU5DPS4qJC9CRl9FTkM9ICRiZl9vYmovOwoJcy9eQ0FTVF9FTkM9LiokL0NBU1RfRU5DPSAkY2FzdF9vYmovOwoJcy9eUkM0X0VOQz0uKiQvUkM0X0VOQz0gJHJjNF9vYmovOwoJcy9eUkM1X0VOQz0uKiQvUkM1X0VOQz0gJHJjNV9vYmovOwoJcy9eTUQ1X0FTTV9PQko9LiokL01ENV9BU01fT0JKPSAkbWQ1X29iai87CglzL15TSEExX0FTTV9PQko9LiokL1NIQTFfQVNNX09CSj0gJHNoYTFfb2JqLzsKCXMvXlJNRDE2MF9BU01fT0JKPS4qJC9STUQxNjBfQVNNX09CSj0gJHJtZDE2MF9vYmovOwoJcy9eV1BfQVNNX09CSj0uKiQvV1BfQVNNX09CSj0gJHdwX29iai87CglzL15DTUxMX0VOQz0uKiQvQ01MTF9FTkM9ICRjbWxsX29iai87CglzL15NT0RFU19BU01fT0JKLj0qJC9NT0RFU19BU01fT0JKPSAkbW9kZXNfb2JqLzsKCXMvXkVOR0lORVNfQVNNX09CSi49KiQvRU5HSU5FU19BU01fT0JKPSAkZW5naW5lc19vYmovOwoJcy9eUEVSTEFTTV9TQ0hFTUU9LiokL1BFUkxBU01fU0NIRU1FPSAkcGVybGFzbV9zY2hlbWUvOwoJcy9eUFJPQ0VTU09SPS4qL1BST0NFU1NPUj0gJHByb2Nlc3Nvci87CglzL15BUkZMQUdTPS4qL0FSRkxBR1M9ICRhcmZsYWdzLzsKCXMvXlBFUkw9LiovUEVSTD0gJHBlcmwvOwoJcy9eS1JCNV9JTkNMVURFUz0uKi9LUkI1X0lOQ0xVREVTPSR3aXRoYXJnc3sia3JiNS1pbmNsdWRlIn0vOwoJcy9eTElCS1JCNT0uKi9MSUJLUkI1PSR3aXRoYXJnc3sia3JiNS1saWIifS87CglzL15MSUJaTElCPS4qL0xJQlpMSUI9JHdpdGhhcmdzeyJ6bGliLWxpYiJ9LzsKCXMvXlpMSUJfSU5DTFVERT0uKi9aTElCX0lOQ0xVREU9JHdpdGhhcmdzeyJ6bGliLWluY2x1ZGUifS87CglzL15GSVBTTElCRElSPS4qL0ZJUFNMSUJESVI9JGZpcHNsaWJkaXIvOwoJcy9eRklQU0NBTkxJQj0uKi9GSVBTQ0FOTElCPWxpYmNyeXB0by8gaWYgJGZpcHM7CglzL15TSEFSRURfRklQUz0uKi9TSEFSRURfRklQUz0vOwoJcy9eU0hMSUJESVJTPS4qL1NITElCRElSUz0gY3J5cHRvIHNzbC87CglzL15GSVBTQ0FOSVNURVJJTlRFUk5BTD0uKi9GSVBTQ0FOSVNURVJJTlRFUk5BTD0kZmlwc2NhbmlzdGVyaW50ZXJuYWwvOwoJcy9eQkFTRUFERFI9LiovQkFTRUFERFI9JGJhc2VhZGRyLzsKCXMvXlNITElCX1RBUkdFVD0uKi9TSExJQl9UQVJHRVQ9JHNoYXJlZF90YXJnZXQvOwoJcy9eU0hMSUJfTUFSSz0uKi9TSExJQl9NQVJLPSRzaGFyZWRfbWFyay87CglzL15TSEFSRURfTElCUz0uKi9TSEFSRURfTElCUz1cJChTSEFSRURfQ1JZUFRPKSBcJChTSEFSRURfU1NMKS8gaWYgKCEkbm9fc2hhcmVkKTsKCWlmICgkc2hhcmVkX2V4dGVuc2lvbiBuZSAiIiAmJiAkc2hhcmVkX2V4dGVuc2lvbiA9fiAvXlwucyhbb2xdKVwuW15cLl0qJC8pCgkJewoJCW15ICRzb3RtcCA9ICQxOwoJCXMvXlNIQVJFRF9MSUJTX0xJTktfRVhUUz0uKi9TSEFSRURfTElCU19MSU5LX0VYVFM9LnMkc290bXAvOwoJCX0KCWVsc2lmICgkc2hhcmVkX2V4dGVuc2lvbiBuZSAiIiAmJiAkc2hhcmVkX2V4dGVuc2lvbiA9fiAvXlwuW15cLl0qXC5keWxpYiQvKQoJCXsKCQlzL15TSEFSRURfTElCU19MSU5LX0VYVFM9LiovU0hBUkVEX0xJQlNfTElOS19FWFRTPS5keWxpYi87CgkJfQoJZWxzaWYgKCRzaGFyZWRfZXh0ZW5zaW9uIG5lICIiICYmICRzaGFyZWRfZXh0ZW5zaW9uID1+IC9eXC5zKFtvbF0pXC5bXlwuXSpcLlteXC5dKiQvKQoJCXsKCQlteSAkc290bXAgPSAkMTsKCQlzL15TSEFSRURfTElCU19MSU5LX0VYVFM9LiovU0hBUkVEX0xJQlNfTElOS19FWFRTPS5zJHNvdG1wLlwkKFNITElCX01BSk9SKSAucyRzb3RtcC87CgkJfQoJZWxzaWYgKCRzaGFyZWRfZXh0ZW5zaW9uIG5lICIiICYmICRzaGFyZWRfZXh0ZW5zaW9uID1+IC9eXC5bXlwuXSpcLlteXC5dKlwuZHlsaWIkLykKCQl7CgkJcy9eU0hBUkVEX0xJQlNfTElOS19FWFRTPS4qL1NIQVJFRF9MSUJTX0xJTktfRVhUUz0uXCQoU0hMSUJfTUFKT1IpLmR5bGliIC5keWxpYi87CgkJfQoJcy9eU0hBUkVEX0xERkxBR1M9LiovU0hBUkVEX0xERkxBR1M9JHNoYXJlZF9sZGZsYWcvOwoJaWYgKCRmaXBzY2FuaXN0ZXJvbmx5ICYmIGV4aXN0cyAkZGlzYWJsZWR7ImVjMm0ifSkKCQl7CgkJbmV4dCBpZiAoL2VjMl8vIHx8IC9ibl9nZjJtLyk7CgkJfQoJcHJpbnQgT1VUICRfLiJcbiI7Cgl9CmNsb3NlKElOKTsKY2xvc2UoT1VUKTsKcmVuYW1lKCRNYWtlZmlsZSwiJE1ha2VmaWxlLmJhayIpIHx8IGRpZSAidW5hYmxlIHRvIHJlbmFtZSAkTWFrZWZpbGVcbiIgaWYgLWUgJE1ha2VmaWxlOwpyZW5hbWUoIiRNYWtlZmlsZS5uZXciLCRNYWtlZmlsZSkgfHwgZGllICJ1bmFibGUgdG8gcmVuYW1lICRNYWtlZmlsZS5uZXdcbiI7CgpwcmludCAiQ0MgICAgICAgICAgICA9JGNjXG4iOwpwcmludCAiQ0ZMQUcgICAgICAgICA9JGNmbGFnc1xuIjsKcHJpbnQgIkVYX0xJQlMgICAgICAgPSRsZmxhZ3NcbiI7CnByaW50ICJDUFVJRF9PQkogICAgID0kY3B1aWRfb2JqXG4iOwpwcmludCAiQk5fQVNNICAgICAgICA9JGJuX29ialxuIjsKcHJpbnQgIkVDX0FTTSAgICAgICAgPSRlY19vYmpcbiI7CnByaW50ICJERVNfRU5DICAgICAgID0kZGVzX29ialxuIjsKcHJpbnQgIkFFU19FTkMgICAgICAgPSRhZXNfb2JqXG4iOwpwcmludCAiQkZfRU5DICAgICAgICA9JGJmX29ialxuIjsKcHJpbnQgIkNBU1RfRU5DICAgICAgPSRjYXN0X29ialxuIjsKcHJpbnQgIlJDNF9FTkMgICAgICAgPSRyYzRfb2JqXG4iOwpwcmludCAiUkM1X0VOQyAgICAgICA9JHJjNV9vYmpcbiI7CnByaW50ICJNRDVfT0JKX0FTTSAgID0kbWQ1X29ialxuIjsKcHJpbnQgIlNIQTFfT0JKX0FTTSAgPSRzaGExX29ialxuIjsKcHJpbnQgIlJNRDE2MF9PQkpfQVNNPSRybWQxNjBfb2JqXG4iOwpwcmludCAiQ01MTF9FTkMgICAgICA9JGNtbGxfb2JqXG4iOwpwcmludCAiTU9ERVNfT0JKICAgICA9JG1vZGVzX29ialxuIjsKcHJpbnQgIkVOR0lORVNfT0JKICAgPSRlbmdpbmVzX29ialxuIjsKcHJpbnQgIlBST0NFU1NPUiAgICAgPSRwcm9jZXNzb3JcbiI7CnByaW50ICJSQU5MSUIgICAgICAgID0kcmFubGliXG4iOwpwcmludCAiQVJGTEFHUyAgICAgICA9JGFyZmxhZ3NcbiI7CnByaW50ICJQRVJMICAgICAgICAgID0kcGVybFxuIjsKcHJpbnQgIktSQjVfSU5DTFVERVMgPSIsJHdpdGhhcmdzeyJrcmI1LWluY2x1ZGUifSwiXG4iCglpZiAkd2l0aGFyZ3N7ImtyYjUtaW5jbHVkZSJ9IG5lICIiOwoKbXkgJGRlc19wdHI9MDsKbXkgJGRlc19yaXNjMT0wOwpteSAkZGVzX3Jpc2MyPTA7Cm15ICRkZXNfdW5yb2xsPTA7Cm15ICRibl9sbD0wOwpteSAkZGVmX2ludD0yOwpteSAkcmM0X2ludD0kZGVmX2ludDsKbXkgJG1kMl9pbnQ9JGRlZl9pbnQ7Cm15ICRpZGVhX2ludD0kZGVmX2ludDsKbXkgJHJjMl9pbnQ9JGRlZl9pbnQ7Cm15ICRyYzRfaWR4PTA7Cm15ICRyYzRfY2h1bms9MDsKbXkgJGJmX3B0cj0wOwpteSBAdHlwZT0oImNoYXIiLCJzaG9ydCIsImludCIsImxvbmciKTsKbXkgKCRiNjRsLCRiNjQsJGIzMiwkYjE2LCRiOCk9KDAsMCwxLDAsMCk7Cm15ICRleHBvcnRfdmFyX2FzX2ZuPTA7CgpteSAkZGVzX2ludDsKCmZvcmVhY2ggKHNvcnQgc3BsaXQoL1xzKy8sJGJuX29wcykpCgl7CgkkZGVzX3B0cj0xIGlmIC9ERVNfUFRSLzsKCSRkZXNfcmlzYzE9MSBpZiAvREVTX1JJU0MxLzsKCSRkZXNfcmlzYzI9MSBpZiAvREVTX1JJU0MyLzsKCSRkZXNfdW5yb2xsPTEgaWYgL0RFU19VTlJPTEwvOwoJJGRlc19pbnQ9MSBpZiAvREVTX0lOVC87CgkkYm5fbGw9MSBpZiAvQk5fTExPTkcvOwoJJHJjNF9pbnQ9MCBpZiAvUkM0X0NIQVIvOwoJJHJjNF9pbnQ9MyBpZiAvUkM0X0xPTkcvOwoJJHJjNF9pZHg9MSBpZiAvUkM0X0lOREVYLzsKCSRyYzRfY2h1bms9MSBpZiAvUkM0X0NIVU5LLzsKCSRyYzRfY2h1bms9MiBpZiAvUkM0X0NIVU5LX0xMLzsKCSRtZDJfaW50PTAgaWYgL01EMl9DSEFSLzsKCSRtZDJfaW50PTMgaWYgL01EMl9MT05HLzsKCSRpZGVhX2ludD0xIGlmIC9JREVBX1NIT1JULzsKCSRpZGVhX2ludD0zIGlmIC9JREVBX0xPTkcvOwoJJHJjMl9pbnQ9MSBpZiAvUkMyX1NIT1JULzsKCSRyYzJfaW50PTMgaWYgL1JDMl9MT05HLzsKCSRiZl9wdHI9MSBpZiAkXyBlcSAiQkZfUFRSIjsKCSRiZl9wdHI9MiBpZiAkXyBlcSAiQkZfUFRSMiI7CgkoJGI2NGwsJGI2NCwkYjMyLCRiMTYsJGI4KT0oMCwxLDAsMCwwKSBpZiAvU0lYVFlfRk9VUl9CSVQvOwoJKCRiNjRsLCRiNjQsJGIzMiwkYjE2LCRiOCk9KDEsMCwwLDAsMCkgaWYgL1NJWFRZX0ZPVVJfQklUX0xPTkcvOwoJKCRiNjRsLCRiNjQsJGIzMiwkYjE2LCRiOCk9KDAsMCwxLDAsMCkgaWYgL1RISVJUWV9UV09fQklULzsKCSgkYjY0bCwkYjY0LCRiMzIsJGIxNiwkYjgpPSgwLDAsMCwxLDApIGlmIC9TSVhURUVOX0JJVC87CgkoJGI2NGwsJGI2NCwkYjMyLCRiMTYsJGI4KT0oMCwwLDAsMCwxKSBpZiAvRUlHSFRfQklULzsKCSRleHBvcnRfdmFyX2FzX2ZuPTEgaWYgL0VYUE9SVF9WQVJfQVNfRk4vOwoJfQoKb3BlbihJTiwnPGNyeXB0by9vcGVuc3NsY29uZi5oLmluJykgfHwgZGllICJ1bmFibGUgdG8gcmVhZCBjcnlwdG8vb3BlbnNzbGNvbmYuaC5pbjokIVxuIjsKdW5saW5rKCJjcnlwdG8vb3BlbnNzbGNvbmYuaC5uZXciKSB8fCBkaWUgInVuYWJsZSB0byByZW1vdmUgb2xkIGNyeXB0by9vcGVuc3NsY29uZi5oLm5ldzokIVxuIiBpZiAtZSAiY3J5cHRvL29wZW5zc2xjb25mLmgubmV3IjsKb3BlbihPVVQsJz5jcnlwdG8vb3BlbnNzbGNvbmYuaC5uZXcnKSB8fCBkaWUgInVuYWJsZSB0byBjcmVhdGUgY3J5cHRvL29wZW5zc2xjb25mLmgubmV3OiQhXG4iOwpwcmludCBPVVQgIi8qIG9wZW5zc2xjb25mLmggKi9cbiI7CnByaW50IE9VVCAiLyogV0FSTklORzogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBvcGVuc3NsY29uZi5oLmluIGJ5IENvbmZpZ3VyZS4gKi9cblxuIjsKCnByaW50IE9VVCAiI2lmZGVmICBfX2NwbHVzcGx1c1xuIjsKcHJpbnQgT1VUICJleHRlcm4gXCJDXCIge1xuIjsKcHJpbnQgT1VUICIjZW5kaWZcbiI7CnByaW50IE9VVCAiLyogT3BlblNTTCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0aW9uczogKi9cbiI7Cm15ICRvcGVuc3NsX2FsZ29yaXRobV9kZWZpbmVzX3RyYW5zID0gJG9wZW5zc2xfYWxnb3JpdGhtX2RlZmluZXM7CiRvcGVuc3NsX2V4cGVyaW1lbnRhbF9kZWZpbmVzID1+IHMvXlxzKiNccypkZWZpbmVccytPUEVOU1NMX05PXyguKikvI2lmbmRlZiBPUEVOU1NMX0VYUEVSSU1FTlRBTF8kMVxuIyBpZm5kZWYgT1BFTlNTTF9OT18kMVxuIyAgZGVmaW5lIE9QRU5TU0xfTk9fJDFcbiMgZW5kaWZcbiNlbmRpZi9tZzsKJG9wZW5zc2xfYWxnb3JpdGhtX2RlZmluZXNfdHJhbnMgPX4gcy9eXHMqI1xzKmRlZmluZVxzK09QRU5TU0xfKC4qKS8jIGlmIGRlZmluZWQoT1BFTlNTTF8kMSkgXCZcJiAhZGVmaW5lZCgkMSlcbiMgIGRlZmluZSAkMVxuIyBlbmRpZi9tZzsKJG9wZW5zc2xfYWxnb3JpdGhtX2RlZmluZXMgPX4gcy9eXHMqI1xzKmRlZmluZVxzKyguKikvI2lmbmRlZiAkMVxuIyBkZWZpbmUgJDFcbiNlbmRpZi9tZzsKJG9wZW5zc2xfYWxnb3JpdGhtX2RlZmluZXMgPSAiICAgLyogbm8gY2lwaGVycyBleGNsdWRlZCAqL1xuIiBpZiAkb3BlbnNzbF9hbGdvcml0aG1fZGVmaW5lcyBlcSAiIjsKJG9wZW5zc2xfdGhyZWFkX2RlZmluZXMgPX4gcy9eXHMqI1xzKmRlZmluZVxzKyguKikvI2lmbmRlZiAkMVxuIyBkZWZpbmUgJDFcbiNlbmRpZi9tZzsKJG9wZW5zc2xfc3lzX2RlZmluZXMgPX4gcy9eXHMqI1xzKmRlZmluZVxzKyguKikvI2lmbmRlZiAkMVxuIyBkZWZpbmUgJDFcbiNlbmRpZi9tZzsKJG9wZW5zc2xfb3RoZXJfZGVmaW5lcyA9fiBzL15ccyojXHMqZGVmaW5lXHMrKC4qKS8jaWZuZGVmICQxXG4jIGRlZmluZSAkMVxuI2VuZGlmL21nOwpwcmludCBPVVQgJG9wZW5zc2xfc3lzX2RlZmluZXM7CnByaW50IE9VVCAiI2lmbmRlZiBPUEVOU1NMX0RPSU5HX01BS0VERVBFTkRcblxuIjsKcHJpbnQgT1VUICRvcGVuc3NsX2V4cGVyaW1lbnRhbF9kZWZpbmVzOwpwcmludCBPVVQgIlxuIjsKcHJpbnQgT1VUICRvcGVuc3NsX2FsZ29yaXRobV9kZWZpbmVzOwpwcmludCBPVVQgIlxuI2VuZGlmIC8qIE9QRU5TU0xfRE9JTkdfTUFLRURFUEVORCAqL1xuXG4iOwpwcmludCBPVVQgJG9wZW5zc2xfdGhyZWFkX2RlZmluZXM7CnByaW50IE9VVCAkb3BlbnNzbF9vdGhlcl9kZWZpbmVzLCJcbiI7CgpwcmludCBPVVQgIi8qIFRoZSBPUEVOU1NMX05PXyogbWFjcm9zIGFyZSBhbHNvIGRlZmluZWQgYXMgTk9fKiBpZiB0aGUgYXBwbGljYXRpb25cbiI7CnByaW50IE9VVCAiICAgYXNrcyBmb3IgaXQuICBUaGlzIGlzIGEgdHJhbnNpZW50IGZlYXR1cmUgdGhhdCBpcyBwcm92aWRlZCBmb3IgdGhvc2VcbiI7CnByaW50IE9VVCAiICAgd2hvIGhhdmVuJ3QgaGFkIHRoZSB0aW1lIHRvIGRvIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGluIHRoZWlyXG4iOwpwcmludCBPVVQgIiAgIGFwcGxpY2F0aW9ucy4gICovXG4iOwpwcmludCBPVVQgIiNpZmRlZiBPUEVOU1NMX0FMR09SSVRITV9ERUZJTkVTXG4iOwpwcmludCBPVVQgJG9wZW5zc2xfYWxnb3JpdGhtX2RlZmluZXNfdHJhbnM7CnByaW50IE9VVCAiI2VuZGlmXG5cbiI7CgpwcmludCBPVVQgIiNkZWZpbmUgT1BFTlNTTF9DUFVJRF9PQkpcblxuIiBpZiAoJGNwdWlkX29iaiBuZSAibWVtX2Nsci5vIik7Cgp3aGlsZSAoPElOPikKCXsKCWlmCSgvXiNkZWZpbmVccytPUEVOU1NMRElSLykKCQl7CgkJbXkgJGZvbyA9ICRvcGVuc3NsZGlyOwoJCSRmb28gPX4gcy9cXC9cXFxcL2c7CgkJcHJpbnQgT1VUICIjZGVmaW5lIE9QRU5TU0xESVIgXCIkZm9vXCJcbiI7CgkJfQoJZWxzaWYJKC9eI2RlZmluZVxzK0VOR0lORVNESVIvKQoJCXsKCQlteSAkZm9vID0gIiRwcmVmaXgvJGxpYmRpci9lbmdpbmVzIjsKCQkkZm9vID1+IHMvXFwvXFxcXC9nOwoJCXByaW50IE9VVCAiI2RlZmluZSBFTkdJTkVTRElSIFwiJGZvb1wiXG4iOwoJCX0KCWVsc2lmCSgvXiMoKGRlZmluZSl8KHVuZGVmKSlccytPUEVOU1NMX0VYUE9SVF9WQVJfQVNfRlVOQ1RJT04vKQoJCXsgcHJpbnRmIE9VVCAiI3VuZGVmIE9QRU5TU0xfRVhQT1JUX1ZBUl9BU19GVU5DVElPTlxuIgoJCQlpZiAkZXhwb3J0X3Zhcl9hc19mbjsKCQkgIHByaW50ZiBPVVQgIiMlcyBPUEVOU1NMX0VYUE9SVF9WQVJfQVNfRlVOQ1RJT05cbiIsCgkJCSgkZXhwb3J0X3Zhcl9hc19mbik/ImRlZmluZSI6InVuZGVmIjsgfQoJZWxzaWYJKC9eI2RlZmluZVxzK09QRU5TU0xfVU5JU1RELykKCQl7CgkJJHVuaXN0ZCA9ICI8dW5pc3RkLmg+IiBpZiAkdW5pc3RkIGVxICIiOwoJCXByaW50IE9VVCAiI2RlZmluZSBPUEVOU1NMX1VOSVNURCAkdW5pc3RkXG4iOwoJCX0KCWVsc2lmCSgvXiMoKGRlZmluZSl8KHVuZGVmKSlccytTSVhUWV9GT1VSX0JJVF9MT05HLykKCQl7IHByaW50ZiBPVVQgIiMlcyBTSVhUWV9GT1VSX0JJVF9MT05HXG4iLCgkYjY0bCk/ImRlZmluZSI6InVuZGVmIjsgfQoJZWxzaWYJKC9eIygoZGVmaW5lKXwodW5kZWYpKVxzK1NJWFRZX0ZPVVJfQklULykKCQl7IHByaW50ZiBPVVQgIiMlcyBTSVhUWV9GT1VSX0JJVFxuIiwoJGI2NCk/ImRlZmluZSI6InVuZGVmIjsgfQoJZWxzaWYJKC9eIygoZGVmaW5lKXwodW5kZWYpKVxzK1RISVJUWV9UV09fQklULykKCQl7IHByaW50ZiBPVVQgIiMlcyBUSElSVFlfVFdPX0JJVFxuIiwoJGIzMik/ImRlZmluZSI6InVuZGVmIjsgfQoJZWxzaWYJKC9eIygoZGVmaW5lKXwodW5kZWYpKVxzK1NJWFRFRU5fQklULykKCQl7IHByaW50ZiBPVVQgIiMlcyBTSVhURUVOX0JJVFxuIiwoJGIxNik/ImRlZmluZSI6InVuZGVmIjsgfQoJZWxzaWYJKC9eIygoZGVmaW5lKXwodW5kZWYpKVxzK0VJR0hUX0JJVC8pCgkJeyBwcmludGYgT1VUICIjJXMgRUlHSFRfQklUXG4iLCgkYjgpPyJkZWZpbmUiOiJ1bmRlZiI7IH0KCWVsc2lmCSgvXiMoKGRlZmluZSl8KHVuZGVmKSlccytCTl9MTE9OR1xzKiQvKQoJCXsgcHJpbnRmIE9VVCAiIyVzIEJOX0xMT05HXG4iLCgkYm5fbGwpPyJkZWZpbmUiOiJ1bmRlZiI7IH0KCWVsc2lmCSgvXlwjZGVmaW5lXHMrREVTX0xPTkdccysuKi8pCgkJeyBwcmludGYgT1VUICIjZGVmaW5lIERFU19MT05HIHVuc2lnbmVkICVzXG4iLAoJCQkoJGRlc19pbnQpPydpbnQnOidsb25nJzsgfQoJZWxzaWYJKC9eXCMoZGVmaW5lfHVuZGVmKVxzK0RFU19QVFIvKQoJCXsgcHJpbnRmIE9VVCAiIyVzIERFU19QVFJcbiIsKCRkZXNfcHRyKT8nZGVmaW5lJzondW5kZWYnOyB9CgllbHNpZgkoL15cIyhkZWZpbmV8dW5kZWYpXHMrREVTX1JJU0MxLykKCQl7IHByaW50ZiBPVVQgIiMlcyBERVNfUklTQzFcbiIsKCRkZXNfcmlzYzEpPydkZWZpbmUnOid1bmRlZic7IH0KCWVsc2lmCSgvXlwjKGRlZmluZXx1bmRlZilccytERVNfUklTQzIvKQoJCXsgcHJpbnRmIE9VVCAiIyVzIERFU19SSVNDMlxuIiwoJGRlc19yaXNjMik/J2RlZmluZSc6J3VuZGVmJzsgfQoJZWxzaWYJKC9eXCMoZGVmaW5lfHVuZGVmKVxzK0RFU19VTlJPTEwvKQoJCXsgcHJpbnRmIE9VVCAiIyVzIERFU19VTlJPTExcbiIsKCRkZXNfdW5yb2xsKT8nZGVmaW5lJzondW5kZWYnOyB9CgllbHNpZgkoL14jZGVmaW5lXHMrUkM0X0lOVFxzLykKCQl7IHByaW50ZiBPVVQgIiNkZWZpbmUgUkM0X0lOVCB1bnNpZ25lZCAlc1xuIiwkdHlwZVskcmM0X2ludF07IH0KCWVsc2lmCSgvXiN1bmRlZlxzK1JDNF9DSFVOSy8pCgkJewoJCXByaW50ZiBPVVQgIiN1bmRlZiBSQzRfQ0hVTktcbiIgaWYgJHJjNF9jaHVuaz09MDsKCQlwcmludGYgT1VUICIjZGVmaW5lIFJDNF9DSFVOSyB1bnNpZ25lZCBsb25nXG4iIGlmICRyYzRfY2h1bms9PTE7CgkJcHJpbnRmIE9VVCAiI2RlZmluZSBSQzRfQ0hVTksgdW5zaWduZWQgbG9uZyBsb25nXG4iIGlmICRyYzRfY2h1bms9PTI7CgkJfQoJZWxzaWYJKC9eIygoZGVmaW5lKXwodW5kZWYpKVxzK1JDNF9JTkRFWC8pCgkJeyBwcmludGYgT1VUICIjJXMgUkM0X0lOREVYXG4iLCgkcmM0X2lkeCk/ImRlZmluZSI6InVuZGVmIjsgfQoJZWxzaWYgKC9eIyhkZWZpbmV8dW5kZWYpXHMrSTM4Nl9PTkxZLykKCQl7IHByaW50ZiBPVVQgIiMlcyBJMzg2X09OTFlcbiIsICgkcHJvY2Vzc29yIGVxICIzODYiKT8KCQkJImRlZmluZSI6InVuZGVmIjsgfQoJZWxzaWYJKC9eI2RlZmluZVxzK01EMl9JTlRccy8pCgkJeyBwcmludGYgT1VUICIjZGVmaW5lIE1EMl9JTlQgdW5zaWduZWQgJXNcbiIsJHR5cGVbJG1kMl9pbnRdOyB9CgllbHNpZgkoL14jZGVmaW5lXHMrSURFQV9JTlRccy8pCgkJe3ByaW50ZiBPVVQgIiNkZWZpbmUgSURFQV9JTlQgdW5zaWduZWQgJXNcbiIsJHR5cGVbJGlkZWFfaW50XTt9CgllbHNpZgkoL14jZGVmaW5lXHMrUkMyX0lOVFxzLykKCQl7cHJpbnRmIE9VVCAiI2RlZmluZSBSQzJfSU5UIHVuc2lnbmVkICVzXG4iLCR0eXBlWyRyYzJfaW50XTt9CgllbHNpZiAoL14jKGRlZmluZXx1bmRlZilccytCRl9QVFIvKQoJCXsKCQlwcmludGYgT1VUICIjdW5kZWYgQkZfUFRSXG4iIGlmICRiZl9wdHIgPT0gMDsKCQlwcmludGYgT1VUICIjZGVmaW5lIEJGX1BUUlxuIiBpZiAkYmZfcHRyID09IDE7CgkJcHJpbnRmIE9VVCAiI2RlZmluZSBCRl9QVFIyXG4iIGlmICRiZl9wdHIgPT0gMjsKCSAgICAgICAgfQoJZWxzZQoJCXsgcHJpbnQgT1VUICRfOyB9Cgl9CmNsb3NlKElOKTsKcHJpbnQgT1VUICIjaWZkZWYgIF9fY3BsdXNwbHVzXG4iOwpwcmludCBPVVQgIn1cbiI7CnByaW50IE9VVCAiI2VuZGlmXG4iOwpjbG9zZShPVVQpOwpyZW5hbWUoImNyeXB0by9vcGVuc3NsY29uZi5oIiwiY3J5cHRvL29wZW5zc2xjb25mLmguYmFrIikgfHwgZGllICJ1bmFibGUgdG8gcmVuYW1lIGNyeXB0by9vcGVuc3NsY29uZi5oXG4iIGlmIC1lICJjcnlwdG8vb3BlbnNzbGNvbmYuaCI7CnJlbmFtZSgiY3J5cHRvL29wZW5zc2xjb25mLmgubmV3IiwiY3J5cHRvL29wZW5zc2xjb25mLmgiKSB8fCBkaWUgInVuYWJsZSB0byByZW5hbWUgY3J5cHRvL29wZW5zc2xjb25mLmgubmV3XG4iOwoKCiMgRml4IHRoZSBkYXRlCgpwcmludCAiU0lYVFlfRk9VUl9CSVRfTE9ORyBtb2RlXG4iIGlmICRiNjRsOwpwcmludCAiU0lYVFlfRk9VUl9CSVQgbW9kZVxuIiBpZiAkYjY0OwpwcmludCAiVEhJUlRZX1RXT19CSVQgbW9kZVxuIiBpZiAkYjMyOwpwcmludCAiU0lYVEVFTl9CSVQgbW9kZVxuIiBpZiAkYjE2OwpwcmludCAiRUlHSFRfQklUIG1vZGVcbiIgaWYgJGI4OwpwcmludCAiREVTX1BUUiB1c2VkXG4iIGlmICRkZXNfcHRyOwpwcmludCAiREVTX1JJU0MxIHVzZWRcbiIgaWYgJGRlc19yaXNjMTsKcHJpbnQgIkRFU19SSVNDMiB1c2VkXG4iIGlmICRkZXNfcmlzYzI7CnByaW50ICJERVNfVU5ST0xMIHVzZWRcbiIgaWYgJGRlc191bnJvbGw7CnByaW50ICJERVNfSU5UIHVzZWRcbiIgaWYgJGRlc19pbnQ7CnByaW50ICJCTl9MTE9ORyBtb2RlXG4iIGlmICRibl9sbDsKcHJpbnQgIlJDNCB1c2VzIHUkdHlwZVskcmM0X2ludF1cbiIgaWYgJHJjNF9pbnQgIT0gJGRlZl9pbnQ7CnByaW50ICJSQzRfSU5ERVggbW9kZVxuIiBpZiAkcmM0X2lkeDsKcHJpbnQgIlJDNF9DSFVOSyBpcyB1bmRlZmluZWRcbiIgaWYgJHJjNF9jaHVuaz09MDsKcHJpbnQgIlJDNF9DSFVOSyBpcyB1bnNpZ25lZCBsb25nXG4iIGlmICRyYzRfY2h1bms9PTE7CnByaW50ICJSQzRfQ0hVTksgaXMgdW5zaWduZWQgbG9uZyBsb25nXG4iIGlmICRyYzRfY2h1bms9PTI7CnByaW50ICJNRDIgdXNlcyB1JHR5cGVbJG1kMl9pbnRdXG4iIGlmICRtZDJfaW50ICE9ICRkZWZfaW50OwpwcmludCAiSURFQSB1c2VzIHUkdHlwZVskaWRlYV9pbnRdXG4iIGlmICRpZGVhX2ludCAhPSAkZGVmX2ludDsKcHJpbnQgIlJDMiB1c2VzIHUkdHlwZVskcmMyX2ludF1cbiIgaWYgJHJjMl9pbnQgIT0gJGRlZl9pbnQ7CnByaW50ICJCRl9QVFIgdXNlZFxuIiBpZiAkYmZfcHRyID09IDE7CnByaW50ICJCRl9QVFIyIHVzZWRcbiIgaWYgJGJmX3B0ciA9PSAyOwoKaWYoJElzTUsxTUYpIHsKCW9wZW4gKE9VVCwiPmNyeXB0by9idWlsZGluZi5oIikgfHwgZGllICJDYW4ndCBvcGVuIGJ1aWxkaW5mLmgiOwoJcHJpbnRmIE9VVCA8PEVPRjsKI2lmbmRlZiBNSzFNRl9CVUlMRAogIC8qIGF1dG8tZ2VuZXJhdGVkIGJ5IENvbmZpZ3VyZSBmb3IgY3J5cHRvL2N2ZXJzaW9uLmM6CiAgICogZm9yIFVuaXggYnVpbGRzLCBjcnlwdG8vTWFrZWZpbGUuc3NsIGdlbmVyYXRlcyBmdW5jdGlvbmFsIGRlZmluaXRpb25zOwogICAqIFdpbmRvd3MgYnVpbGRzIChhbmQgb3RoZXIgbWsxbWYgYnVpbGRzKSBjb21waWxlIGN2ZXJzaW9uLmMgd2l0aAogICAqIC1ETUsxTUZfQlVJTEQgYW5kIHVzZSBkZWZpbml0aW9ucyBhZGRlZCB0byB0aGlzIGZpbGUgYnkgdXRpbC9tazFtZi5wbC4gKi8KICAjZXJyb3IgIldpbmRvd3MgYnVpbGRzIChQTEFURk9STT0kdGFyZ2V0KSB1c2UgbWsxbWYucGwtY3JlYXRlZCBNYWtlZmlsZXMiCiNlbmRpZgpFT0YKCWNsb3NlKE9VVCk7Cn0gZWxzZSB7CglteSAkbWFrZV9jb21tYW5kID0gIiRtYWtlIFBFUkw9XCckcGVybFwnIjsKCW15ICRtYWtlX3RhcmdldHMgPSAiIjsKCSRtYWtlX3RhcmdldHMgLj0gIiBsaW5rcyIgaWYgJHN5bWxpbms7CgkkbWFrZV90YXJnZXRzIC49ICIgZGVwZW5kIiBpZiAkZGVwZmxhZ3MgbmUgJGRlZmF1bHRfZGVwZmxhZ3MgJiYgJG1ha2VfZGVwZW5kOwoJJG1ha2VfdGFyZ2V0cyAuPSAiIGdlbnRlc3RzIiBpZiAkc3ltbGluazsKCShzeXN0ZW0gJG1ha2VfY29tbWFuZC4kbWFrZV90YXJnZXRzKSA9PSAwIG9yIGRpZSAibWFrZSAkbWFrZV90YXJnZXRzIGZhaWxlZCIKCQlpZiAkbWFrZV90YXJnZXRzIG5lICIiOwoJaWYgKCAkZmlwc2NhbmlzdGVyb25seSApCgkJe30KCWVsc2lmICggJHBlcmwgPX4gbUBeL0ApIHsKCSAgICAmZG9maWxlKCJ0b29scy9jX3JlaGFzaCIsJHBlcmwsJ14jIS8nLCAnIyElcycsJ15teSBcJGRpcjskJywgJ215ICRkaXIgPSAiJyAuICRvcGVuc3NsZGlyIC4gJyI7JywgJ15teSBcJHByZWZpeDskJywgJ215ICRwcmVmaXggPSAiJyAuICRwcmVmaXggLiAnIjsnKTsKCSAgICAmZG9maWxlKCJhcHBzL0NBLnBsIiwkcGVybCwnXiMhLycsICcjISVzJyk7Cgl9IGVsc2UgewoJICAgICMgTm8gcGF0aCBmb3IgUGVybCBrbm93biAuLi4KCSAgICAmZG9maWxlKCJ0b29scy9jX3JlaGFzaCIsJy91c3IvbG9jYWwvYmluL3BlcmwnLCdeIyEvJywgJyMhJXMnLCdebXkgXCRkaXI7JCcsICdteSAkZGlyID0gIicgLiAkb3BlbnNzbGRpciAuICciOycsICAnXm15IFwkcHJlZml4OyQnLCAnbXkgJHByZWZpeCA9ICInIC4gJHByZWZpeCAuICciOycpOwoJICAgICZkb2ZpbGUoImFwcHMvQ0EucGwiLCcvdXNyL2xvY2FsL2Jpbi9wZXJsJywnXiMhLycsICcjISVzJyk7Cgl9CglpZiAoJGRlcGZsYWdzIG5lICRkZWZhdWx0X2RlcGZsYWdzICYmICEkbWFrZV9kZXBlbmQgJiYgISRmaXBzY2FuaXN0ZXJvbmx5KSB7CgkJcHJpbnQgPDxFT0Y7CgpTaW5jZSB5b3UndmUgZGlzYWJsZWQgb3IgZW5hYmxlZCBhdCBsZWFzdCBvbmUgYWxnb3JpdGhtLCB5b3UgbmVlZCB0byBkbwp0aGUgZm9sbG93aW5nIGJlZm9yZSBidWlsZGluZzoKCgltYWtlIGRlcGVuZApFT0YKCX0KfQoKIyBjcmVhdGUgdGhlIG1zL3ZlcnNpb24zMi5yYyBmaWxlIGlmIG5lZWRlZAppZiAoJElzTUsxTUYgJiYgKCR0YXJnZXQgIX4gL15uZXR3YXJlLykpIHsKCW15ICgkdjEsICR2MiwgJHYzLCAkdjQpOwoJaWYgKCR2ZXJzaW9uX251bSA9fiAvKF5bMC05YS1mXXsxfSkoWzAtOWEtZl17Mn0pKFswLTlhLWZdezJ9KShbMC05YS1mXXsyfSkvaSkgewoJCSR2MT1oZXggJDE7CgkJJHYyPWhleCAkMjsKCQkkdjM9aGV4ICQzOwoJCSR2ND1oZXggJDQ7Cgl9CglvcGVuIChPVVQsIj5tcy92ZXJzaW9uMzIucmMiKSB8fCBkaWUgIkNhbid0IG9wZW4gbXMvdmVyc2lvbjMyLnJjIjsKCXByaW50IE9VVCA8PEVPRjsKI2luY2x1ZGUgPHdpbnZlci5oPgoKTEFOR1VBR0UgMHgwOSwweDAxCgoxIFZFUlNJT05JTkZPCiAgRklMRVZFUlNJT04gJHYxLCR2MiwkdjMsJHY0CiAgUFJPRFVDVFZFUlNJT04gJHYxLCR2MiwkdjMsJHY0CiAgRklMRUZMQUdTTUFTSyAweDNmTAojaWZkZWYgX0RFQlVHCiAgRklMRUZMQUdTIDB4MDFMCiNlbHNlCiAgRklMRUZMQUdTIDB4MDBMCiNlbmRpZgogIEZJTEVPUyBWT1NfX1dJTkRPV1MzMgogIEZJTEVUWVBFIFZGVF9ETEwKICBGSUxFU1VCVFlQRSAweDBMCkJFR0lOCiAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCiAgICBCRUdJTgoJQkxPQ0sgIjA0MDkwNGIwIgoJQkVHSU4KI2lmIGRlZmluZWQoRklQUykKCSAgICBWQUxVRSAiQ29tbWVudHMiLCAiV0FSTklORzogVEVTVCBWRVJTSU9OIE9OTFkgKioqTk9UKioqIEZJUFMgMTQwLTIgVkFMSURBVEVELlxcMCIKI2VuZGlmCgkgICAgLy8gUmVxdWlyZWQ6CgkgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgIlRoZSBPcGVuU1NMIFByb2plY3QsIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvXFwwIgojaWYgZGVmaW5lZChGSVBTKQoJICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiVEVTVCBVTlZBTElEQVRFRCBGSVBTMTQwLTIgRExMXFwwIgojZWxzZQoJICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiT3BlblNTTCBTaGFyZWQgTGlicmFyeVxcMCIKI2VuZGlmCgkgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgIiR2ZXJzaW9uXFwwIgojaWYgZGVmaW5lZChDUllQVE8pCgkgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJsaWJlYXkzMlxcMCIKCSAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJsaWJlYXkzMi5kbGxcXDAiCiNlbGlmIGRlZmluZWQoU1NMKQoJICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAic3NsZWF5MzJcXDAiCgkgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAic3NsZWF5MzIuZGxsXFwwIgojZWxpZiBkZWZpbmVkKEZJUFMpCgkgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJsaWJvc3NsZmlwc1xcMCIKCSAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJsaWJvc3NsZmlwcy5kbGxcXDAiCiNlbmRpZgoJICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJUaGUgT3BlblNTTCBUb29sa2l0XFwwIgoJICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsICIkdmVyc2lvblxcMCIKCSAgICAvLyBPcHRpb25hbDoKCSAgICAvL1ZBTFVFICJDb21tZW50cyIsICJcXDAiCgkgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCCpIDE5OTgtMjAwNSBUaGUgT3BlblNTTCBQcm9qZWN0LiBDb3B5cmlnaHQgqSAxOTk1LTE5OTggRXJpYyBBLiBZb3VuZywgVGltIEouIEh1ZHNvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cXDAiCgkgICAgLy9WQUxVRSAiTGVnYWxUcmFkZW1hcmtzIiwgIlxcMCIKCSAgICAvL1ZBTFVFICJQcml2YXRlQnVpbGQiLCAiXFwwIgoJICAgIC8vVkFMVUUgIlNwZWNpYWxCdWlsZCIsICJcXDAiCglFTkQKICAgIEVORAogICAgQkxPQ0sgIlZhckZpbGVJbmZvIgogICAgQkVHSU4KICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMHg0YjAKICAgIEVORApFTkQKRU9GCgljbG9zZShPVVQpOwogIH0KCnByaW50IDw8RU9GOwoKQ29uZmlndXJlZCBmb3IgJHRhcmdldC4KRU9GCgpwcmludCA8PFxFT0YgaWYgKCEkbm9fdGhyZWFkcyAmJiAhJHRocmVhZHMpOwoKVGhlIGxpYnJhcnkgY291bGQgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIHN1cHBvcnRpbmcgbXVsdGktdGhyZWFkZWQKYXBwbGljYXRpb25zIGFzIHRoZSBjb21waWxlciBvcHRpb25zIHJlcXVpcmVkIG9uIHRoaXMgc3lzdGVtIGFyZSBub3Qga25vd24uClNlZSBmaWxlIElOU1RBTEwgZm9yIGRldGFpbHMgaWYgeW91IG5lZWQgbXVsdGktdGhyZWFkaW5nLgpFT0YKCnByaW50IDw8XEVPRiBpZiAoJG5vX3NoYXJlZF93YXJuKTsKCllvdSBnYXZlIHRoZSBvcHRpb24gJ3NoYXJlZCcuICBOb3JtYWxseSwgdGhhdCB3b3VsZCBnaXZlIHlvdSBzaGFyZWQgbGlicmFyaWVzLgpVbmZvcnR1bmF0ZWx5LCB0aGUgT3BlblNTTCBjb25maWd1cmF0aW9uIGRvZXNuJ3QgaW5jbHVkZSBzaGFyZWQgbGlicmFyeSBzdXBwb3J0CmZvciB0aGlzIHBsYXRmb3JtIHlldCwgc28gaXQgd2lsbCBwcmV0ZW5kIHlvdSBnYXZlIHRoZSBvcHRpb24gJ25vLXNoYXJlZCcuICBJZgp5b3UgY2FuIGluZm9ybSB0aGUgZGV2ZWxvcHBlcnMgKG9wZW5zc2wtZGV2XEBvcGVuc3NsLm9yZykgaG93IHRvIHN1cHBvcnQgc2hhcmVkCmxpYnJhcmllcyBvbiB0aGlzIHBsYXRmb3JtLCB0aGV5IHdpbGwgYXQgbGVhc3QgbG9vayBhdCBpdCBhbmQgdHJ5IHRoZWlyIGJlc3QKKGJ1dCBwbGVhc2UgZmlyc3QgbWFrZSBzdXJlIHlvdSBoYXZlIHRyaWVkIHdpdGggYSBjdXJyZW50IHZlcnNpb24gb2YgT3BlblNTTCkuCkVPRgoKcHJpbnQgPDxcRU9GIGlmICgkZmlwc2NhbmlzdGVyaW50ZXJuYWwgZXEgInkiKTsKCldBUk5JTkc6IE9wZW5TU0wgaGFzIGJlZW4gY29uZmlndXJlZCB1c2luZyB1bnN1cHBvcnRlZCBvcHRpb24ocykgdG8gaW50ZXJuYWxseQpnZW5lcmF0ZSBhIGZpcHNjYW5pc3Rlci5vIG9iamVjdCBtb2R1bGUgZm9yIFRFU1RJTkcgUFVSUE9TRVMgT05MWTsgdGhhdApjb21waWxlZCBtb2R1bGUgaXMgTk9UIEZJUFMgMTQwLTIgdmFsaWRhdGVkIGFuZCBDQU5OT1QgYmUgdXNlZCB0byByZXBsYWNlIHRoZQpPcGVuU1NMIEZJUFMgT2JqZWN0IE1vZHVsZSBhcyBpZGVudGlmaWVkIGJ5IHRoZSBDTVZQCihodHRwOi8vY3NyYy5uaXN0Lmdvdi9jcnlwdHZhbC8pIGluIGFueSBhcHBsaWNhdGlvbiByZXF1aXJpbmcgdGhlIHVzZSBvZiBGSVBTCjE0MC0yIHZhbGlkYXRlZCBzb2Z0d2FyZS4KClRoaXMgaXMgYSB0ZXN0IE9wZW5TU0wgMi4wIEZJUFMgbW9kdWxlLgoKU2VlIHRoZSBmaWxlIFJFQURNRS5GSVBTIGZvciBkZXRhaWxzIG9mIGhvdyB0byBidWlsZCBhIHRlc3QgbGlicmFyeS4KCkVPRgoKZXhpdCgwKTsKCnN1YiB1c2FnZQoJewoJcHJpbnQgU1RERVJSICR1c2FnZTsKCXByaW50IFNUREVSUiAiXG5waWNrIG9zL2NvbXBpbGVyIGZyb206XG4iOwoJbXkgJGo9MDsKCW15ICRpOwogICAgICAgIG15ICRrPTA7Cglmb3JlYWNoICRpIChzb3J0IGtleXMgJXRhYmxlKQoJCXsKCQluZXh0IGlmICRpID1+IC9eZGVidWcvOwoJCSRrICs9IGxlbmd0aCgkaSkgKyAxOwoJCWlmICgkayA+IDc4KQoJCQl7CgkJCXByaW50IFNUREVSUiAiXG4iOwoJCQkkaz1sZW5ndGgoJGkpOwoJCQl9CgkJcHJpbnQgU1RERVJSICRpIC4gIiAiOwoJCX0KCWZvcmVhY2ggJGkgKHNvcnQga2V5cyAldGFibGUpCgkJewoJCW5leHQgaWYgJGkgIX4gL15kZWJ1Zy87CgkJJGsgKz0gbGVuZ3RoKCRpKSArIDE7CgkJaWYgKCRrID4gNzgpCgkJCXsKCQkJcHJpbnQgU1RERVJSICJcbiI7CgkJCSRrPWxlbmd0aCgkaSk7CgkJCX0KCQlwcmludCBTVERFUlIgJGkgLiAiICI7CgkJfQoJcHJpbnQgU1RERVJSICJcblxuTk9URTogSWYgaW4gZG91YnQsIG9uIFVuaXgtaXNoIHN5c3RlbXMgdXNlICcuL2NvbmZpZycuXG4iOwoJZXhpdCgxKTsKCX0KCnN1YiB3aGljaAoJewoJbXkoJG5hbWUpPUBfOwoJbXkgJHBhdGg7Cglmb3JlYWNoICRwYXRoIChzcGxpdCAvOi8sICRFTlZ7UEFUSH0pCgkJewoJCWlmICgtZiAiJHBhdGgvJG5hbWUkZXhlX2V4dCIgYW5kIC14IF8pCgkJCXsKCQkJcmV0dXJuICIkcGF0aC8kbmFtZSRleGVfZXh0IiB1bmxlc3MgKCRuYW1lIGVxICJwZXJsIiBhbmQKCQkJIHN5c3RlbSgiJHBhdGgvJG5hbWUkZXhlX2V4dCAtZSAiIC4gJ1wnZXhpdCgkXTw1LjApO1wnJykpOwoJCQl9CgkJfQoJfQoKc3ViIGRvZmlsZQoJewoJbXkgJGY7IG15ICRwOyBteSAlbTsgbXkgQGE7IG15ICRrOyBteSAkZmY7CgkoJGYsJHAsJW0pPUBfOwoKCW9wZW4oSU4sIjwkZi5pbiIpIHx8IG9wZW4oSU4sIjwkZiIpIHx8IGRpZSAidW5hYmxlIHRvIG9wZW4gJGY6JCFcbiI7CglAYT08SU4+OwoJY2xvc2UoSU4pOwoJZm9yZWFjaCAkayAoa2V5cyAlbSkKCQl7CgkJZ3JlcCgvJGsvICYmICgkXz1zcHJpbnRmKCRteyRrfS4iXG4iLCRwKSksQGEpOwoJCX0KCW9wZW4oT1VULCI+JGYubmV3IikgfHwgZGllICJ1bmFibGUgdG8gb3BlbiAkZi5uZXc6JCFcbiI7CglwcmludCBPVVQgQGE7CgljbG9zZShPVVQpOwoJcmVuYW1lKCRmLCIkZi5iYWsiKSB8fCBkaWUgInVuYWJsZSB0byByZW5hbWUgJGZcbiIgaWYgLWUgJGY7CglyZW5hbWUoIiRmLm5ldyIsJGYpIHx8IGRpZSAidW5hYmxlIHRvIHJlbmFtZSAkZi5uZXdcbiI7Cgl9CgpzdWIgcHJpbnRfdGFibGVfZW50cnkKCXsKCW15ICR0YXJnZXQgPSBzaGlmdDsKCglteSAoJGNjLCAkY2ZsYWdzLCAkdW5pc3RkLCAkdGhyZWFkX2NmbGFnLCAkc3lzX2lkLCAkbGZsYWdzLAoJICAgICRibl9vcHMsICRjcHVpZF9vYmosICRibl9vYmosICRlY19vYmosICRkZXNfb2JqLCAkYWVzX29iaiwgJGJmX29iaiwKCSAgICAkbWQ1X29iaiwgJHNoYTFfb2JqLCAkY2FzdF9vYmosICRyYzRfb2JqLCAkcm1kMTYwX29iaiwKCSAgICAkcmM1X29iaiwgJHdwX29iaiwgJGNtbGxfb2JqLCAkbW9kZXNfb2JqLCAkZW5naW5lc19vYmosCgkgICAgJHBlcmxhc21fc2NoZW1lLCAkZHNvX3NjaGVtZSwgJHNoYXJlZF90YXJnZXQsICRzaGFyZWRfY2ZsYWcsCgkgICAgJHNoYXJlZF9sZGZsYWcsICRzaGFyZWRfZXh0ZW5zaW9uLCAkcmFubGliLCAkYXJmbGFncywgJG11bHRpbGliKT0KCXNwbGl0KC9ccyo6XHMqLywkdGFibGV7JHRhcmdldH0gLiAiOiIgeCAzMCAsIC0xKTsKCglwcmludCA8PEVPRgoKKioqICR0YXJnZXQKXCRjYyAgICAgICAgICAgPSAkY2MKXCRjZmxhZ3MgICAgICAgPSAkY2ZsYWdzClwkdW5pc3RkICAgICAgID0gJHVuaXN0ZApcJHRocmVhZF9jZmxhZyA9ICR0aHJlYWRfY2ZsYWcKXCRzeXNfaWQgICAgICAgPSAkc3lzX2lkClwkbGZsYWdzICAgICAgID0gJGxmbGFncwpcJGJuX29wcyAgICAgICA9ICRibl9vcHMKXCRjcHVpZF9vYmogICAgPSAkY3B1aWRfb2JqClwkYm5fb2JqICAgICAgID0gJGJuX29iagpcJGVjX29iaiAgICAgICA9ICRlY19vYmoKXCRkZXNfb2JqICAgICAgPSAkZGVzX29iagpcJGFlc19vYmogICAgICA9ICRhZXNfb2JqClwkYmZfb2JqICAgICAgID0gJGJmX29iagpcJG1kNV9vYmogICAgICA9ICRtZDVfb2JqClwkc2hhMV9vYmogICAgID0gJHNoYTFfb2JqClwkY2FzdF9vYmogICAgID0gJGNhc3Rfb2JqClwkcmM0X29iaiAgICAgID0gJHJjNF9vYmoKXCRybWQxNjBfb2JqICAgPSAkcm1kMTYwX29iagpcJHJjNV9vYmogICAgICA9ICRyYzVfb2JqClwkd3Bfb2JqICAgICAgID0gJHdwX29iagpcJGNtbGxfb2JqICAgICA9ICRjbWxsX29iagpcJG1vZGVzX29iaiAgICA9ICRtb2Rlc19vYmoKXCRlbmdpbmVzX29iaiAgPSAkZW5naW5lc19vYmoKXCRwZXJsYXNtX3NjaGVtZSA9ICRwZXJsYXNtX3NjaGVtZQpcJGRzb19zY2hlbWUgICA9ICRkc29fc2NoZW1lClwkc2hhcmVkX3RhcmdldD0gJHNoYXJlZF90YXJnZXQKXCRzaGFyZWRfY2ZsYWcgPSAkc2hhcmVkX2NmbGFnClwkc2hhcmVkX2xkZmxhZyA9ICRzaGFyZWRfbGRmbGFnClwkc2hhcmVkX2V4dGVuc2lvbiA9ICRzaGFyZWRfZXh0ZW5zaW9uClwkcmFubGliICAgICAgID0gJHJhbmxpYgpcJGFyZmxhZ3MgICAgICA9ICRhcmZsYWdzClwkbXVsdGlsaWIgICAgID0gJG11bHRpbGliCkVPRgoJfQoKc3ViIHRlc3Rfc2FuaXR5Cgl7CglteSAkZXJyb3JjbnQgPSAwOwoKCXByaW50IFNUREVSUiAiPSIgeCA3MCwgIlxuIjsKCXByaW50IFNUREVSUiAiPT09IFNBTklUWSBURVNUSU5HIVxuIjsKCXByaW50IFNUREVSUiAiPT09IE5vIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkb25lLCBhbGwgb3RoZXIgYXJndW1lbnRzIHdpbGwgYmUgaWdub3JlZCFcbiI7CglwcmludCBTVERFUlIgIj0iIHggNzAsICJcbiI7CgoJZm9yZWFjaCAkdGFyZ2V0IChzb3J0IGtleXMgJXRhYmxlKQoJCXsKCQlAZmllbGRzID0gc3BsaXQoL1xzKjpccyovLCR0YWJsZXskdGFyZ2V0fSAuICI6IiB4IDMwICwgLTEpOwoKCQlpZiAoJGZpZWxkc1skaWR4X2Rzb19zY2hlbWUtMV0gPX4gL14oYmVvc3xkbHxkbGZjbnx3aW4zMnx2bXMpJC8pCgkJCXsKCQkJJGVycm9yY250Kys7CgkJCXByaW50IFNUREVSUiAiU0FOSVRZIEVSUk9SOiAnJHRhcmdldCcgaGFzIHRoZSBkc29fc2NoZW1lIFskaWR4X2Rzb19zY2hlbWVdIHZhbHVlc1xuIjsKCQkJcHJpbnQgU1RERVJSICIgICAgICAgICAgICAgIGluIHRoZSBwcmV2aW91cyBmaWVsZFxuIjsKCQkJfQoJCWVsc2lmICgkZmllbGRzWyRpZHhfZHNvX3NjaGVtZSsxXSA9fiAvXihiZW9zfGRsfGRsZmNufHdpbjMyfHZtcykkLykKCQkJewoJCQkkZXJyb3JjbnQrKzsKCQkJcHJpbnQgU1RERVJSICJTQU5JVFkgRVJST1I6ICckdGFyZ2V0JyBoYXMgdGhlIGRzb19zY2hlbWUgWyRpZHhfZHNvX3NjaGVtZV0gdmFsdWVzXG4iOwoJCQlwcmludCBTVERFUlIgIiAgICAgICAgICAgICAgaW4gdGhlIGZvbGxvd2luZyBmaWVsZFxuIjsKCQkJfQoJCWVsc2lmICgkZmllbGRzWyRpZHhfZHNvX3NjaGVtZV0gIX4gL14oYmVvc3xkbHxkbGZjbnx3aW4zMnx2bXN8KSQvKQoJCQl7CgkJCSRlcnJvcmNudCsrOwoJCQlwcmludCBTVERFUlIgIlNBTklUWSBFUlJPUjogJyR0YXJnZXQnIGhhcyB0aGUgZHNvX3NjaGVtZSBbJGlkeF9kc29fc2NoZW1lXSBmaWVsZCA9ICIsJGZpZWxkc1skaWR4X2Rzb19zY2hlbWVdLCJcbiI7CgkJCXByaW50IFNUREVSUiAiICAgICAgICAgICAgICB2YWxpZCB2YWx1ZXMgYXJlICdiZW9zJywgJ2RsJywgJ2RsZmNuJywgJ3dpbjMyJyBhbmQgJ3ZtcydcbiI7CgkJCX0KCQl9CglwcmludCBTVERFUlIgIk5vIHNhbml0eSBlcnJvcnMgZGV0ZWN0ZWQhXG4iIGlmICRlcnJvcmNudCA9PSAwOwoJcmV0dXJuICRlcnJvcmNudDsKCX0K