IyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgTk1BS0UgRmlsZSwgQmFzZWQgb24ganBlZ3RyYW4uZHNwCiFJRiAiJChDRkcpIiA9PSAiIgpDRkc9anBlZ3RyYW4gLSBXaW4zMgohTUVTU0FHRSBLZWluZSBLb25maWd1cmF0aW9uIGFuZ2VnZWJlbi4ganBlZ3RyYW4gLSBXaW4zMiB3aXJkIGFscyBTdGFuZGFyZCB2ZXJ3ZW5kZXQuCiFFTkRJRiAKCiFJRiAiJChDRkcpIiAhPSAianBlZ3RyYW4gLSBXaW4zMiIKIU1FU1NBR0UgVW5n/Gx0aWdlIEtvbmZpZ3VyYXRpb24gIiQoQ0ZHKSIgYW5nZWdlYmVuLgohTUVTU0FHRSBTaWUga/ZubmVuIGJlaW0gQXVzZvxocmVuIHZvbiBOTUFLRSBlaW5lIEtvbmZpZ3VyYXRpb24gYW5nZWJlbgohTUVTU0FHRSBkdXJjaCBEZWZpbmllcmVuIGRlcyBNYWtyb3MgQ0ZHIGluIGRlciBCZWZlaGxzemVpbGUuIFp1bSBCZWlzcGllbDoKIU1FU1NBR0UgCiFNRVNTQUdFIE5NQUtFIC9mICJqcGVndHJhbi5tYWsiIENGRz0ianBlZ3RyYW4gLSBXaW4zMiIKIU1FU1NBR0UgCiFNRVNTQUdFIEb8ciBkaWUgS29uZmlndXJhdGlvbiBzdGVoZW4genVyIEF1c3dhaGw6CiFNRVNTQUdFIAohTUVTU0FHRSAianBlZ3RyYW4gLSBXaW4zMiIgKGJhc2llcmVuZCBhdWYgICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKIU1FU1NBR0UgCiFFUlJPUiBFaW5lIHVuZ/xsdGlnZSBLb25maWd1cmF0aW9uIHd1cmRlIGFuZ2VnZWJlbi4KIUVORElGIAoKIUlGICIkKE9TKSIgPT0gIldpbmRvd3NfTlQiCk5VTEw9CiFFTFNFIApOVUxMPW51bAohRU5ESUYgCgpDUFA9Y2wuZXhlClJTQz1yYy5leGUKT1VURElSPS5canBlZ3RyYW5cUmVsZWFzZQpJTlRESVI9LlxqcGVndHJhblxSZWxlYXNlCiMgQmVnaW4gQ3VzdG9tIE1hY3JvcwpPdXREaXI9LlxqcGVndHJhblxSZWxlYXNlCiMgRW5kIEN1c3RvbSBNYWNyb3MKCkFMTCA6ICIkKE9VVERJUilcanBlZ3RyYW4uZXhlIgoKCkNMRUFOIDoKCS1AZXJhc2UgIiQoSU5URElSKVxjZGpwZWcub2JqIgoJLUBlcmFzZSAiJChJTlRESVIpXGpwZWd0cmFuLm9iaiIKCS1AZXJhc2UgIiQoSU5URElSKVxyZHN3aXRjaC5vYmoiCgktQGVyYXNlICIkKElOVERJUilcdHJhbnN1cHAub2JqIgoJLUBlcmFzZSAiJChJTlRESVIpXHZjNjAuaWRiIgoJLUBlcmFzZSAiJChPVVRESVIpXGpwZWd0cmFuLmV4ZSIKCiIkKE9VVERJUikiIDoKICAgIGlmIG5vdCBleGlzdCAiJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIkKE9VVERJUikiCgpCU0MzMj1ic2NtYWtlLmV4ZQpCU0MzMl9GTEFHUz0vbm9sb2dvIC9vIiQoT1VURElSKVxqcGVndHJhbi5ic2MiIApCU0MzMl9TQlJTPSBcCgkKTElOSzMyPWxpbmsuZXhlCkxJTkszMl9GTEFHUz1SZWxlYXNlXGpwZWcubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvcGRiOiIkKE9VVERJUilcanBlZ3RyYW4ucGRiIiAvbWFjaGluZTpJMzg2IC9vdXQ6IiQoT1VURElSKVxqcGVndHJhbi5leGUiIApMSU5LMzJfT0JKUz0gXAoJIiQoSU5URElSKVxjZGpwZWcub2JqIiBcCgkiJChJTlRESVIpXGpwZWd0cmFuLm9iaiIgXAoJIiQoSU5URElSKVxyZHN3aXRjaC5vYmoiIFwKCSIkKElOVERJUilcdHJhbnN1cHAub2JqIgoKIiQoT1VURElSKVxqcGVndHJhbi5leGUiIDogIiQoT1VURElSKSIgJChERUZfRklMRSkgJChMSU5LMzJfT0JKUykKICAgICQoTElOSzMyKSBAPDwKICAkKExJTkszMl9GTEFHUykgJChMSU5LMzJfT0JKUykKPDwKCkNQUF9QUk9KPS9ub2xvZ28gL0c2IC9NVCAvVzMgL0dYIC9PeCAvT2EgL09iMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZwIiQoSU5URElSKVxqcGVndHJhbi5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCIgL0ZEIC9jIAoKLmN7JChJTlRESVIpfS5vYmo6OgogICAkKENQUCkgQDw8CiAgICQoQ1BQX1BST0opICQ8IAo8PAoKLmNwcHskKElOVERJUil9Lm9iajo6CiAgICQoQ1BQKSBAPDwKICAgJChDUFBfUFJPSikgJDwgCjw8CgouY3h4eyQoSU5URElSKX0ub2JqOjoKICAgJChDUFApIEA8PAogICAkKENQUF9QUk9KKSAkPCAKPDwKCi5jeyQoSU5URElSKX0uc2JyOjoKICAgJChDUFApIEA8PAogICAkKENQUF9QUk9KKSAkPCAKPDwKCi5jcHB7JChJTlRESVIpfS5zYnI6OgogICAkKENQUCkgQDw8CiAgICQoQ1BQX1BST0opICQ8IAo8PAoKLmN4eHskKElOVERJUil9LnNicjo6CiAgICQoQ1BQKSBAPDwKICAgJChDUFBfUFJPSikgJDwgCjw8CgoKIUlGICIkKE5PX0VYVEVSTkFMX0RFUFMpIiAhPSAiMSIKIUlGIEVYSVNUUygianBlZ3RyYW4uZGVwIikKIUlOQ0xVREUgImpwZWd0cmFuLmRlcCIKIUVMU0UgCiFNRVNTQUdFIFdhcm5pbmc6IGNhbm5vdCBmaW5kICJqcGVndHJhbi5kZXAiCiFFTkRJRiAKIUVORElGIAoKCiFJRiAiJChDRkcpIiA9PSAianBlZ3RyYW4gLSBXaW4zMiIKU09VUkNFPS5cY2RqcGVnLmMKCiIkKElOVERJUilcY2RqcGVnLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKCgpTT1VSQ0U9LlxqcGVndHJhbi5jCgoiJChJTlRESVIpXGpwZWd0cmFuLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKCgpTT1VSQ0U9LlxyZHN3aXRjaC5jCgoiJChJTlRESVIpXHJkc3dpdGNoLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKCgpTT1VSQ0U9Llx0cmFuc3VwcC5jCgoiJChJTlRESVIpXHRyYW5zdXBwLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKCgoKIUVORElGIAoK