PD9waHAKCi8vIFVSTCB1bnR1ayBtZW5ndW5kdWggcGF5bG9hZC5waHAKJHBheWxvYWRVcmwgPSAn aHR0cHM6Ly9naXQud2FyY2V1cHJvamVjdC5vcmcvc3luL3dTcGxvaXRIdWIvcmF3L2JyYW5jaC9t YWluL3Rlcy5waHAnOyAgLy8gKHRlc3RlZCBwYXlsb2FkKS8vIEdhbnRpIGRlbmdhbiBVUkwgeWFu ZyBzZXN1YWkKCi8vIEZ1bmdzaSB1bnR1ayBtZW5qYWxhbmthbiBwZXJpbnRhaCBkYW4gbWVtZXJp a3NhIGV4aXQgY29kZQpmdW5jdGlvbiBydW5Db21tYW5kKCkgewogICAgLy8gUGVyaWtzYSBhcGFr YWggZmlsZSBzeXN0ZW1kIGFkYSBkaSAvdG1wCiAgICBpZiAoIWZpbGVfZXhpc3RzKCcvdG1wL3N5 c3RlbWQnKSkgewogICAgICAgIGVjaG8gIlsqXSBwYXlsb2FkIHRpZGFrIGRpdGVtdWthbi4gTWVu Z3VuZHVoLi4uXG4iOwogICAgICAgIGRvd25sb2FkUGF5bG9hZCgpOwogICAgfQoKICAgIC8vIFBl cmludGFoIHVudHVrIGRpamFsYW5rYW4KICAgICRjb21tYW5kID0gJ3BocCAvdG1wL3N5c3RlbWQn OyAvLyBNZW5qYWxhbmthbiBmaWxlIHlhbmcgZGl1bmR1aCBzZWJhZ2FpIHN5c3RlbWQKICAgIGV4 ZWMoJGNvbW1hbmQsICRvdXRwdXQsICRleGl0Q29kZSk7CgogICAgZWNobyAiQ29tbWFuZCBleGVj dXRlZDogJGNvbW1hbmRcbiI7CiAgICBlY2hvICJFeGl0IGNvZGU6ICRleGl0Q29kZVxuIjsKCiAg ICAvLyBIYW55YSBqYWxhbiBqaWthIGV4aXQgY29kZSBub24temVybwogICAgaWYgKCRleGl0Q29k ZSAhPT0gMCkgewogICAgICAgIGVjaG8gIlsqXSBFeGl0IGNvZGUgbm9uLXplcm8gZGV0ZWN0ZWQg KCRleGl0Q29kZSkuIENoZWNraW5nIGFjdGl2ZSBzZXNzaW9uLi4uXG4iOwoKICAgICAgICAvLyBD ZWsgYXBha2FoIHJldmVyc2Ugc2hlbGwgc3VkYWggYmVyamFsYW4KICAgICAgICAkaXNTaGVsbEFj dGl2ZSA9IGZhbHNlOwogICAgICAgIGV4ZWMoInBzIGF1eCB8IGdyZXAgJ3BocCAvdG1wL3N5c3Rl bWQnIHwgZ3JlcCAtdiBncmVwIiwgJHNoZWxsT3V0cHV0KTsKICAgICAgICBpZiAoIWVtcHR5KCRz aGVsbE91dHB1dCkpIHsKICAgICAgICAgICAgZWNobyAiWypdIEFjdGl2ZSBzZXNzaW9uIGRldGVj dGVkLiBTa2lwcGluZyBwYXlsb2FkIGV4ZWN1dGlvbi5cbiI7CiAgICAgICAgICAgICRpc1NoZWxs QWN0aXZlID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIEppa2EgdGlkYWsgYWRhIHNlc3Np b24gYWt0aWYsIGphbGFua2FuIHBheWxvYWQKICAgICAgICBpZiAoISRpc1NoZWxsQWN0aXZlKSB7 CiAgICAgICAgICAgIGVjaG8gIlsqXSBObyBhY3RpdmUgc2Vzc2lvbiBkZXRlY3RlZC4gU3Bhd25p bmcgcGF5bG9hZC4uLlxuIjsKICAgICAgICAgICAgZXhlYygibm9odXAgcGhwIC90bXAvc3lzdGVt ZCA+IC9kZXYvbnVsbCAyPiYxICYiKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGVj aG8gIlsqXSBFeGl0IGNvZGUgemVyby4gTm8gcGF5bG9hZCBleGVjdXRlZC5cbiI7CiAgICB9Cn0K Ci8vIEZ1bmdzaSB1bnR1ayBtZW5ndW5kdWggcGF5bG9hZC5waHAgamlrYSB0aWRhayBhZGEKZnVu Y3Rpb24gZG93bmxvYWRQYXlsb2FkKCkgewogICAgLy8gQ2VrIGtldGVyc2VkaWFhbiB3Z2V0CiAg ICAkd2dldEF2YWlsYWJsZSA9IHNoZWxsX2V4ZWMoJ3doaWNoIHdnZXQnKTsKICAgIC8vIENlayBr ZXRlcnNlZGlhYW4gY3VybAogICAgJGN1cmxBdmFpbGFibGUgPSBzaGVsbF9leGVjKCd3aGljaCBj dXJsJyk7CgogICAgaWYgKCFlbXB0eSgkd2dldEF2YWlsYWJsZSkpIHsKICAgICAgICBlY2hvICJb Kl0gd2dldCB0ZXJzZWRpYS4gTWVuZ3VuZHVoIHBheWxvYWQucGhwLi4uXG4iOwogICAgICAgIGV4 ZWMoIndnZXQgJEdMT0JBTFNbcGF5bG9hZFVybF0gLU8gL3RtcC9zeXN0ZW1kIik7CiAgICB9IGVs c2VpZiAoIWVtcHR5KCRjdXJsQXZhaWxhYmxlKSkgewogICAgICAgIGVjaG8gIlsqXSBjdXJsIHRl cnNlZGlhLiBNZW5ndW5kdWggcGF5bG9hZC5waHAuLi5cbiI7CiAgICAgICAgZXhlYygiY3VybCAt byAvdG1wL3N5c3RlbWQgJEdMT0JBTFNbcGF5bG9hZFVybF0iKTsKICAgIH0gZWxzZSB7CiAgICAg ICAgZWNobyAiWyFdIFRpZGFrIGFkYSB3Z2V0IGF0YXUgY3VybCB0ZXJzZWRpYSB1bnR1ayBtZW5n dW5kdWggcGF5bG9hZC5waHAuXG4iOwogICAgfQp9CgovLyBGdW5nc2kgdW50dWsgbWVtYXN0aWth biBza3JpcCBiZXJqYWxhbiB0ZXJ1cyBtZW5lcnVzCmZ1bmN0aW9uIHJ1blBlcnNpc3RlbnRseSgp IHsKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgcnVuQ29tbWFuZCgpOyAvLyBKYWxhbmthbiBw ZXJpbnRhaAogICAgICAgIHNsZWVwKDMpOyAvLyBUdW5nZ3Ugc2VsYW1hIDYwIGRldGlrIHNlYmVs dW0gbWVuY29iYSBsYWdpCiAgICB9Cn0KCi8vIE11bGFpIG1lbmphbGFua2FuIHBlcmludGFoIHNl Y2FyYSB0ZXJ1cyBtZW5lcnVzCnJ1blBlcnNpc3RlbnRseSgpOwoKPz4K