REDROOM
PHP 7.4.33
Path:
Logout
Edit File
Size: 1.71 MB
Close
//etc/alternatives/ld
Text
Base64
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AAAAAAAAAAAAAAAAAAAAAOYFAAASAAAAAAAAAAAAAAAAAAAAAAAAAFMKAAASAAAAAAAAAAAAAAAAAAAAAAAAAMkDAAASAAAAAAAAAAAAAAAAAAAAAAAAAIQOAAASAAAAAAAAAAAAAAAAAAAAAAAAAAUBAAASAAAAAAAAAAAAAAAAAAAAAAAAAGsDAAASAAAAAAAAAAAAAAAAAAAAAAAAAH0LAAASAAAAAAAAAAAAAAAAAAAAAAAAAMMFAAASAAAAAAAAAAAAAAAAAAAAAAAAAJQEAAASAAAAAAAAAAAAAAAAAAAAAAAAAAgPAAASAAAAAAAAAAAAAAAAAAAAAAAAAHEHAAASAAAAAAAAAAAAAAAAAAAAAAAAAL4AAAASAAAAAAAAAAAAAAAAAAAAAAAAAEkKAAASAAAAAAAAAAAAAAAAAAAAAAAAAOsIAAASAAAAAAAAAAAAAAAAAAAAAAAAAM4NAAASAAAAAAAAAAAAAAAAAAAAAAAAAAQPAAASAAAAAAAAAAAAAAAAAAAAAAAAADoPAAASAAAAAAAAAAAAAAAAAAAAAAAAALgMAAASAAAAAAAAAAAAAAAAAAAAAAAAAIoEAAASAAAAAAAAAAAAAAAAAAAAAAAAADYCAAASAAAAAAAAAAAAAAAAAAAAAAAAAEMNAAASAAAAAAAAAAAAAAAAAAAAAAAAANUMAAASAAAAAAAAAAAAAAAAAAAAAAAAALYDAAASAAAAAAAAAAAAAAAAAAAAAAAAAJoLAAASAAAAAAAAAAAAAAAAAAAAAAAAAC0NAAASAAAAAAAAAAAAAAAAAAAAAAAAAEMOAAASAAAAAAAAAAAAAAAAAAAAAAAAAK0KAAASAAAAAAAAAAAAAAAAAAAAAAAAAI4BAAASAAAAAAAAAAAAAAAAAAAAAAAAAJ4OAAASAAAAAAAAAAAAAAAAAAAAAAAAAHYCAAASAAAAAAAAAAAAAAAAAAAAAAAAAHIJAAASAAAAAAAAAAAAAAAAAAAAAAAAABENAAASAAAAAAAAAAAAAAAAAAAAAAAAAMwFAAASAAAAAAAAAAAAAAAAAAAAAAAAAIcCAAASAAAAAAAAAAAAAAAAAAAAAAAAAKkMAAASAAAAAAAAAAAAAAAAAAAAAAAAACICAAASAAAAAAAAAAAAAAAAAAAAAAAAABIDAAASAAAAAAAAAAAAAAAAAAAAAAAAAMENAAASAAAAAAAAAAAAAAAAAAAAAAAAALsNAAASAAAAAAAAAAAAAAAAAAAAAAAAACcGAAASAAAAAAAAAAAAAAAAAAAAAAAAANIEAAASAAAAAAAAAAAAAAAAAAAAAAAAADIJAAASAAAAAAAAAAAAAAAAAAAAAAAAAH0MAAASAAAAAAAAAAAAAAAAAAAAAAAAAGEEAAASAAAAAAAAAAAAAAAAAAAAAAAAAFENAAASAAAAAAAAAAAAAAAAAAAAAAAAADQHAAASAAAAAAAAAAAAAAAAAAAAAAAAAO0BAAASAAAAAAAAAAAAAAAAAAAAAAAAAK4DAAASAAAAAAAAAAAAAAAAAAAAAAAAAI4DAAASAAAAAAAAAAAAAAAAAAAAAAAAADcNAAASAAAAAAAAAAAAAAAAAAAAAAAAAL0JAAASAAAAAAAAAAAAAAAAAAAAAAAAAP0CAAASAAAAAAAAAAAAAAAAAAAAAAAAAA4DAAASAAAAAAAAAAAAAAAAAAAAAAAAAOALAAASAAAAAAAAAAAAAAAAAAAAAAAAAKsNAAASAAAAAAAAAAAAAAAAAAAAAAAAAGQNAAASAAAAAAAAAAAAAAAAAAAAAAAAAE8CAAASAAAAAAAAAAAAAAAAAAAAAAAAAGoKAAASAAAAAAAAAAAAAAAAAAAAAAAAAKgKAAASAAAAAAAAAAAAAAAAAAAAAAAAACEPAAASAAAAAAAAAAAAAAAAAAAAAAAAAIMNAAASAAAAAAAAAAAAAAAAAAAAAAAAAEwEAAASAAAAAAAAAAAAAAAAAAAAAAAAAD0NAAASAAAAAAAAAAAAAAAAAAAAAAAAAHILAAASAAAAAAAAAAAAAAAAAAAAAAAAAEoPAAASAAAAAAAAAAAAAAAAAAAAAAAAAEsGAAASAAAAAAAAAAAAAAAAAAAAAAAAAK4FAAASAAAAAAAAAAAAAAAAAAAAAAAAAEsJAAASAAAAAAAAAAAAAAAAAAAAAAAAAFQLAAASAAAAAAAAAAAAAAAAAAAAAAAAAB4HAAASAAAAAAAAAAAAAAAAAAAAAAAAAJYIAAASAAAAAAAAAAAAAAAAAAAAAAAAAMIGAAASAAAAAAAAAAAAAAAAAAAAAAAAAJgAAAASAAAAAAAAAAAAAAAAAAAAAAAAABYDAAASAAAAAAAAAAAAAAAAAAAAAAAAAFgOAAASAAAAAAAAAAAAAAAAAAAAAAAAAAMLAAASAAAAAAAAAAAAAAAAAAAAAAAAAAwGAAASAAAAAAAAAAAAAAAAAAAAAAAAAJEKAAASAAAAAAAAAAAAAAAAAAAAAAAAAD4DAAASAAAAAAAAAAAAAAAAAAAAAAAAABoPAAASAAAAAAAAAAAAAAAAAAAAAAAAAKwNAAASAAAAAAAAAAAAAAAAAAAAAAAAAJEOAAASAAAAAAAAAAAAAAAAAAAAAAAAAIIKAAASAAAAAAAAAAAAAAAAAAAAAAAAAMIMAAASAAAAAAAAAAAAAAAAAAAAAAAAADINAAASAAAAAAAAAAAAAAAAAAAAAAAAADcAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAHoGAAASAAAAAAAAAAAAAAAAAAAAAAAAANMHAAASAAAAAAAAAAAAAAAAAAAAAAAAAB8NAAASAAAAAAAAAAAAAAAAAAAAAAAAAEALAAASAAAAAAAAAAAAAAAAAAAAAAAAAAMDAAASAAAAAAAAAAAAAAAAAAAAAAAAAMcNAAASAAAAAAAAAAAAAAAAAAAAAAAAALIGAAASAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAASAAAAAAAAAAAAAAAAAAAAAAAAAJACAAASAAAAAAAAAAAAAAAAAAAAAAAAAPgFAAASAAAAAAAAAAAAAAAAAAAAAAAAANAMAAASAAAAAAAAAAAAAAAAAAAAAAAAAOkKAAASAAAAAAAAAAAAAAAAAAAAAAAAAGEOAAASAAAAAAAAAAAAAAAAAAAAAAAAABoJAAASAAAAAAAAAAAAAAAAAAAAAAAAABwFAAASAAAAAAAAAAAAAAAAAAAAAAAAAOUOAAASAAAAAAAAAAAAAAAAAAAAAAAAAO4CAAASAAAAAAAAAAAAAAAAAAAAAAAAAEkMAAASAAAAAAAAAAAAAAAAAAAAAAAAAMoCAAASAAAAAAAAAAAAAAAAAAAAAAAAADULAAASAAAAAAAAAAAAAAAAAAAAAAAAAOwJAAASAAAAAAAAAAAAAAAAAAAAAAAAAK8DAAASAAAAAAAAAAAAAAAAAAAAAAAAAH0CAAASAAAAAAAAAAAAAAAAAAAAAAAAAGIMAAASAAAAAAAAAAAAAAAAAAAAAAAAAFoBAAASAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAOsGAAASAAAAAAAAAAAAAAAAAAAAAAAAAEQFAAASAAAAAAAAAAAAAAAAAAAAAAAAAE0DAAASAAAAAAAAAAAAAAAAAAAAAAAAAEoNAAASAAAAAAAAAAAAAAAAAAAAAAAAAHEEAAASAAAAAAAAAAAAAAAAAAAAAAAAAE8OAAASAAAAAAAAAAAAAAAAAAAAAAAAADoIAAASAAAAAAAAAAAAAAAAAAAAAAAAAKAIAAASAAAAAAAAAAAAAAAAAAAAAAAAAMAHAAASAAAAAAAAAAAAAAAAAAAAAAAAAAkNAAASAAAAAAAAAAAAAAAAAAAAAAAAAAENAAASAAAAAAAAAAAAAAAAAAAAAAAAAPwIAAASAAAAAAAAAAAAAAAAAAAAAAAAAG8IAAASAAAAAAAAAAAAAAAAAAAAAAAAAH0NAAASAAAAAAAAAAAAAAAAAAAAAAAAALsEAAASAAAAAAAAAAAAAAAAAAAAAAAAABMGAAASAAAAAAAAAAAAAAAAAAAAAAAAADsMAAASAAAAAAAAAAAAAAAAAAAAAAAAAIgCAAASAAAAAAAAAAAAAAAAAAAAAAAAACEMAAARAAAAAAAAAAAAAAAAAAAAAAAAAIoLAAASAAAAAAAAAAAAAAAAAAAAAAAAABkOAAASAAAAAAAAAAAAAAAAAAAAAAAAAIUMAAASAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAASAAAAAAAAAAAAAAAAAAAAAAAAAHAMAAASAAAAAAAAAAAAAAAAAAAAAAAAAEIHAAASAAAAAAAAAAAAAAAAAAAAAAAAAOIDAAASAAAAAAAAAAAAAAAAAAAAAAAAACkFAAASAAAAAAAAAAAAAAAAAAAAAAAAAOAEAAASAAAAAAAAAAAAAAAAAAAAAAAAAO0OAAASAAAAAAAAAAAAAAAAAAAAAAAAAKsHAAASAAAAAAAAAAAAAAAAAAAAAAAAAGUJAAASAAAAAAAAAAAAAAAAAAAAAAAAAK0EAAASAAAAAAAAAAAAAAAAAAAAAAAAANIAAAASAAAAAAAAAAAAAAAAAAAAAAAAAIICAAASAAAAAAAAAAAAAAAAAAAAAAAAAIECAAASAAAAAAAAAAAAAAAAAAAAAAAAAKMJAAASAAAAAAAAAAAAAAAAAAAAAAAAAJcMAAASAAAAAAAAAAAAAAAAAAAAAAAAALENAAASAAAAAAAAAAAAAAAAAAAAAAAAAPkCAAASAAAAAAAAAAAAAAAAAAAAAAAAALEMAAASAAAAAAAAAAAAAAAAAAAAAAAAABgNAAASAAAAAAAAAAAAAAAAAAAAAAAAAIoOAAASAAAAAAAAAAAAAAAAAAAAAAAAAKkJAAASAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAASAAAAAAAAAAAAAAAAAAAAAAAAACcBAAASAAAAAAAAAAAAAAAAAAAAAAAAANUNAAASAAAAAAAAAAAAAAAAAAAAAAAAAMQBAAASAAAAAAAAAAAAAAAAAAAAAAAAAPALAAASAAAAAAAAAAAAAAAAAAAAAAAAAKsBAAASAAAAAAAAAAAAAAAAAAAAAAAAAGcCAAASAAAAAAAAAAAAAAAAAAAAAAAAADEEAAASAAAAAAAAAAAAAAAAAAAAAAAAAPoAAAASAAAAAAAAAAAAAAAAAAAAAAAAAMkLAAASAAAAAAAAAAAAAAAAAAAAAAAAAN0NAAASAAAAAAAAAAAAAAAAAAAAAAAAAFABAAASAAAAAAAAAAAAAAAAAAAAAAAAAFoHAAASAAAAAAAAAAAAAAAAAAAAAAAAAIoNAAASAAAAAAAAAAAAAAAAAAAAAAAAAEABAAASAAAAAAAAAAAAAAAAAAAAAAAAAIQHAAASAAAAAAAAAAAAAAAAAAAAAAAAAFgNAAASAAAAAAAAAAAAAAAAAAAAAAAAAKQJAAASAAAAAAAAAAAAAAAAAAAAAAAAAH0OAAASAAAAAAAAAAAAAAAAAAAAAAAAAJYNAAASAAAAAAAAAAAAAAAAAAAAAAAAAFQJAAASAAAAAAAAAAAAAAAAAAAAAAAAAC4GAAASAAAAAAAAAAAAAAAAAAAAAAAAAEYAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAoHAAASAAAAAAAAAAAAAAAAAAAAAAAAAAIFAAASAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAASAAAAAAAAAAAAAAAAAAAAAAAAANgIAAASAAAAAAAAAAAAAAAAAAAAAAAAAFkIAAASAAAAAAAAAAAAAAAAAAAAAAAAAKMKAAASAAAAAAAAAAAAAAAAAAAAAAAAAA8DAAASAAAAAAAAAAAAAAAAAAAAAAAAAJoFAAASAAAAAAAAAAAAAAAAAAAAAAAAAMMKAAASAAAAAAAAAAAAAAAAAAAAAAAAAJAHAAASAAAAAAAAAAAAAAAAAAAAAAAAANUGAAASAAAAAAAAAAAAAAAAAAAAAAAAANYJAAASAAAAAAAAAAAAAAAAAAAAAAAAAEMMAAASAAAAAAAAAAAAAAAAAAAAAAAAAFcFAAASAAAAAAAAAAAAAAAAAAAAAAAAAMgOAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAsGAAASAAAAAAAAAAAAAAAAAAAAAAAAADgNAAASAAAAAAAAAAAAAAAAAAAAAAAAABoIAAASAAAAAAAAAAAAAAAAAAAAAAAAACwDAAASAAAAAAAAAAAAAAAAAAAAAAAAAO0DAAASAAAAAAAAAAAAAAAAAAAAAAAAAF0NAAASAAAAAAAAAAAAAAAAAAAAAAAAAFAMAAASAAAAAAAAAAAAAAAAAAAAAAAAAB8LAAASAAAAAAAAAAAAAAAAAAAAAAAAAHwIAAASAAAAAAAAAAAAAAAAAAAAAAAAANcOAAASAAAAAAAAAAAAAAAAAAAAAAAAAOIHAAASAAAAAAAAAAAAAAAAAAAAAAAAAKIMAAARABoAeB47AAAAAAAEAAAAAAAAAHAPAAAQABoASB47AAAAAAAAAAAAAAAAAHwPAAAQABoA2Ec7AAAAAAAAAAAAAAAAABAMAAARABoAoB47AAAAAABgBAAAAAAAAAcKAAARABYAIPU6AAAAAAAAAQAAAAAAAGgOAAASAA8AIA0GAAAAAAApAAAAAAAAAKsOAAARABkAOB47AAAAAAAIAAAAAAAAAPUOAAASAA8AIAsGAAAAAAAVAAAAAAAAAGkPAAAQABkASB47AAAAAAAAAAAAAAAAALwLAAARABYAIPM6AAAAAAAAAgAAAAAAABIOAAARABoAICM7AAAAAAAIAAAAAAAAAFsPAAASAA8AsAwGAAAAAABtAAAAAAAAAKoAAAARABoAACM7AAAAAAAEAAAAAAAAABMPAAARABoAECM7AAAAAAAEAAAAAAAAAPYNAAASAA8AcAwGAAAAAAA3AAAAAAAAAAsOAAARABoAgB47AAAAAAAIAAAAAAAAACAOAAASAA8AQAsGAAAAAAAZAAAAAAAAAPsMAAARABoAcB47AAAAAAAIAAAAAAAAADEOAAASAA8AYAsGAAAAAAAFAQAAAAAAAKQNAAARABoAYB47AAAAAAAIAAAAAAAAAOsHAAARABoAaB47AAAAAAAEAAAAAAAAAABsaWJiZmQtMi4zMC0xMjUuZWw4XzEwLnNvAF9JVE1fZGVyZWdpc3RlclRNQ2xvbmVUYWJsZQBfX2dtb25fc3RhcnRfXwBfSVRNX3JlZ2lzdGVyVE1DbG9uZVRhYmxlAGJmZF9nZXRfbmV4dF9zZWN0aW9uX2J5X25hbWUAYmZkX2dldGIzMgBiZmRfcmVjb3JkX3BoZHIAYmZkX2dldF9hcmNoX2luZm8AYmZkX3VzZV9yZXNlcnZlZF9pZABiZmRfb3BlbnIAYmZkX29wZW53AGJmZF9jYWNoZV9jbG9zZV9hbGwAYmZkX2dyb3VwX3NpZ25hdHVyZQBiZmRfZXJybXNnAGJmZF9zZXRfYXJjaGl2ZV9oZWFkAGJmZF9zY2FuX3ZtYQBiZmRfY2hlY2tfZm9ybWF0X21hdGNoZXMAYmZkX2ZpbmRfdGFyZ2V0AGh0YWJfZmluZABiZmRfc2V0X3NlY3Rpb25fc2l6ZQBiZmRfZWxmX3JlY29yZF9saW5rX2Fzc2lnbm1lbnQAYmZkX2dldGI2NABiZmRfbWFrZV9yZWFkYWJsZQBiZmRfZW11bF9zZXRfbWF4cGFnZXNpemUAYmZkX3B1dGwxNgBiZmRfYXJjaF9tYWNoX29jdGV0c19wZXJfYnl0ZQBiZmRfYXJjaF9nZXRfY29tcGF0aWJsZQBjcGx1c19kZW1hbmdsZV9uYW1lX3RvX3N0eWxlAGJmZF9oYXNoX3RhYmxlX2ZyZWUAYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzAGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lAG1ha2VfdGVtcF9maWxlAGdldHB3ZABiZmRfZm9wZW4AeHJlYWxsb2MAYmZkX2VsZl9nZXRfYmZkX25lZWRlZF9saXN0AGJmZF9nZW5lcmljX2xpbmtfcmVhZF9zeW1ib2xzAGJmZF9pMzg2bGludXhfc2l6ZV9keW5hbWljX3NlY3Rpb25zAGJmZF9wdXRsMzIAYmZkX2Nsb3NlAGJmZF9id3JpdGUAeHN0cmR1cABiZmRfc2V0X2Vycm9yX2hhbmRsZXIAYmZkX3NldF9hcmNoX2luZm8AYmZkX3NldF9zeW10YWIAYmZkX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMAYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXlfd2l0aF9mbGFncwBiZmRfc2V0X2Vycm9yAGJmZF9tYWtlX3dyaXRhYmxlAHhtYWxsb2MAYmZkX2dldF9yZWxvY19zaXplAGJmZF9lbXVsX2dldF9tYXhwYWdlc2l6ZQBiZmRfcHV0bDY0AGJmZF9hcmNoX2JpdHNfcGVyX2FkZHJlc3MAaHRhYl9oYXNoX3N0cmluZwBiZmRfZWxmX2dldF9ydW5wYXRoX2xpc3QAYmZkX2VsZl9zZXRfZHRfbmVlZGVkX25hbWUAYmZkX2VsZl9kaXNjYXJkX2luZm8AYmZkX3RhcmdldF9saXN0AGJmZF9pdGVyYXRlX292ZXJfdGFyZ2V0cwBiZmRfYWxsb2MAY3BsdXNfZGVtYW5nbGVfc2V0X3N0eWxlAGJmZF9zY2FuX2FyY2gAYmZkX2xpbmtfaGFzaF90cmF2ZXJzZQBmaWxlbmFtZV9uY21wAF9iZmRfcGV4NjRpX3dyaXRlX2NvZGV2aWV3X3JlY29yZABiZmRfZ2V0X3JlbG9jX3VwcGVyX2JvdW5kAGJmZF9nZXRfYXJjaABiZmRfc2V0X2Vycm9yX3Byb2dyYW1fbmFtZQB1bmxpbmtfaWZfb3JkaW5hcnkAYmZkX3NlY3Rpb25fYWxyZWFkeV9saW5rZWRfdGFibGVfZnJlZQBiZmRfd3JhcHBlZF9saW5rX2hhc2hfbG9va3VwAGJmZF9nZXRfdGFyZ2V0X2luZm8AYmZkX2xpbmtfaGFzaF9sb29rdXAAYmZkX3N0YXQAYmZkX2VsZl9nZXRfZHluX2xpYl9jbGFzcwBiZmRfaGFzaF90cmF2ZXJzZQBiZmRfY2xvc2VfYWxsX2RvbmUAeGNhbGxvYwBvYmphbGxvY19mcmVlX2Jsb2NrAGNvbmNhdABiZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlAGJmZF9saW5rX2FkZF91bmRlZgBiZmRfZW11bF9nZXRfY29tbW9ucGFnZXNpemUAYmZkX2V4dHJhY3Rfb2JqZWN0X29ubHlfc2VjdGlvbgBiZmRfZ2V0X3JlbG9jX2NvZGVfbmFtZQBiZmRfaGFzaF9sb29rdXAAYmZkX3ByaW50YWJsZV9uYW1lAGJmZF9zZXRfc2VjdGlvbl9mbGFncwBiZmRfZWxmX3BhcnNlX2VoX2ZyYW1lX2VudHJpZXMAYmZkX2hhc2hfdGFibGVfaW5pdABiZmRfaGFzaF90YWJsZV9pbml0X24AYmZkX2dldF9lcnJvcgBiZmRfbWFrZV9zZWN0aW9uX2FueXdheQBiZmRfc2V0X2Fzc2VydF9oYW5kbGVyAF9iZmRfZWxmX3Rsc19zZXR1cABodGFiX2NyZWF0ZQBfYmZkX2ZpeF9leGNsdWRlZF9zZWNfc3ltcwBtYWtlX3JlbGF0aXZlX3ByZWZpeABiZmRfc2V0X2ZpbGVfZmxhZ3MAYmZkX3NldF9mb3JtYXQAYmZkX3NlZWsAY3VycmVudF9kZW1hbmdsaW5nX3N0eWxlAGJmZF9tYXBfb3Zlcl9zZWN0aW9ucwBfYmZkX2VsZl9tYXRjaF9zZWN0aW9uc19ieV90eXBlAF9iZmRfcGVpX3dyaXRlX2NvZGV2aWV3X3JlY29yZABiZmRfc2V0X3N0YXJ0X2FkZHJlc3MAYmZkX2dldF9tYWNoAGJmZF9oYXNoX3NldF9kZWZhdWx0X3NpemUAbGJhc2VuYW1lAGJmZF9nZXRfdW5pcXVlX3NlY3Rpb25fbmFtZQByZWdpc3Rlcl9sZF9wbHVnaW5fb2JqZWN0X3AAYmZkX25ld19saW5rX29yZGVyAGJmZF9oYXNoX25ld2Z1bmMAX2JmZF9wZXg2NGlfc3dhcF9kZWJ1Z2Rpcl9vdXQAYmZkX2hpZGVfc3ltX2J5X3ZlcnNpb24AYmZkX3NldF9zZWN0aW9uX2NvbnRlbnRzAGJmZF9pbml0AGJmZF9jaGVja19mb3JtYXQAYmZkX2RlbWFuZ2xlAGJmZF9lbGZfZ2V0X2R0X3NvbmFtZQBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZV9pZgB4ZXhpdABiZmRfcGx1Z2luX3RhcmdldF9wAHhtYWxsb2Nfc2V0X3Byb2dyYW1fbmFtZQBiZmRfbGlua19jaGVja19yZWxvY3MAX2JmZF9wZWlfc3dhcF9kZWJ1Z2Rpcl9vdXQAX3NjaF90b2xvd2VyAGJmZF9tYWtlX3NlY3Rpb25fb2xkX3dheQBiZmRfbWFrZV9zZWN0aW9uX3dpdGhfZmxhZ3MAbHJlYWxwYXRoAGJmZF9zZXRfZGVmYXVsdF90YXJnZXQAYmZkX2VsZl9nZXRfbmVlZGVkX2xpc3QAaHRhYl9maW5kX3Nsb3QAYmZkX2hhc2hfYWxsb2NhdGUAYmZkX2JyZWFkAGJmZF9yZWxvY190eXBlX2xvb2t1cABiZmRfc2VjdGlvbl9hbHJlYWR5X2xpbmtlZF90YWJsZV9pbml0AGJmZF9lbGZfc2V0X2R5bl9saWJfY2xhc3MAYmZkX2VtdWxfc2V0X2NvbW1vbnBhZ2VzaXplAGJmZF9wbHVnaW5fb3Blbl9pbnB1dABiZmRfZ2V0YjE2AGJmZF9vY3RldHNfcGVyX2J5dGUAYmZkX2dldF9mdWxsX3NlY3Rpb25fY29udGVudHMAYmZkX2NyZWF0ZQBmaWxlbmFtZV9jbXAAYmZkX3NldF9ncF9zaXplAF9iZmRfZWxmX21hcF9zZWN0aW9uc190b19zZWdtZW50cwBfc2NoX2lzdGFibGUAYmZkX2Nhbm9uaWNhbGl6ZV9yZWxvYwBiZmRfZ2V0X2dwX3NpemUAYmZkX2VsZl9zaXplX2R5bnN5bV9oYXNoX2R5bnN0cgBfYmZkX3N0ZF9zZWN0aW9uAF94ZXhpdF9jbGVhbnVwAGxpYmRsLnNvLjIAZGxjbG9zZQBkbHN5bQBkbG9wZW4AZGxlcnJvcgBsaWJjLnNvLjYAZmZsdXNoAHN0cmNweQBfX3ByaW50Zl9jaGsAZm5tYXRjaABzZXRsb2NhbGUAc3RybmNtcABkY25nZXR0ZXh0AG9wdGluZABzdHJyY2hyAHBlcnJvcgBkY2dldHRleHQAZnRlbGwAc3RybmNweQB0aW1lAF9fc3RhY2tfY2hrX2ZhaWwAdW5saW5rAHB1dGNoYXIAYWJvcnQAc3RkaW4Ac3RycGJyawBta3N0ZW1wAHJld2luZABzdHJ0b2sAc3RydG9sAGlzYXR0eQBtbWFwAGZlb2YAZmdldGMAZmdldHMAc3RybGVuAHVuZ2V0YwBtZW1zZXQAZ2xvYgBzdHJzdHIAc3RyY3NwbgBfX2Vycm5vX2xvY2F0aW9uAGZzZWVrAG1lbWNtcABnZXRwYWdlc2l6ZQBfX2ZwcmludGZfY2hrAHN0ZG91dABmcHV0YwBnZXRydXNhZ2UAZnB1dHMAbHNlZWsAbWVtY3B5AGZjbG9zZQBzdHJ0b3VsAHN0cmNhdABzdHJjYXNlY21wAGdldGVudgBfb2JzdGFja19hbGxvY2F0ZWRfcABvcHRhcmcAc3RkZXJyAG11bm1hcABfb2JzdGFja19iZWdpbl8xAF9vYnN0YWNrX25ld2NodW5rAGdldG9wdF9sb25nAF9fZnhzdGF0AHN0cnRvdWxsAGZpbGVubwBfb2JzdGFja19tZW1vcnlfdXNlZABmd3JpdGUAZnJlYWQAcmVuYW1lAF9fbWVtY3B5X2NoawBzdHJjaHIAcXNvcnQAb2JzdGFja19hbGxvY19mYWlsZWRfaGFuZGxlcgBfX2N4YV9maW5hbGl6ZQBfX3NwcmludGZfY2hrAF9feHN0YXQAbWVtbW92ZQBfb2JzdGFja19iZWdpbgBiaW5kdGV4dGRvbWFpbgBvcHRlcnIAc3RyY21wAF9fbGliY19zdGFydF9tYWluAGZlcnJvcgBzdHBjcHkAZ2xvYmZyZWUAZ2V0b3B0X2xvbmdfb25seQBfb2JzdGFja19mcmVlAF9lZGF0YQBfX2Jzc19zdGFydABfZW5kAEdMSUJDXzIuMi41AEdMSUJDXzIuMjcAR0xJQkNfMi4xNABHTElCQ18yLjMuNABHTElCQ18yLjQAL3Vzci9saWI2NAAAAAIAAQABAAIAAQABAAEAAgABAAEAAQACAAIAAgACAAIAAgABAAIAAQABAAEAAgABAAEAAgACAAEAAQABAAEAAgACAAEAAQABAAIAAQABAAEAAQABAAIAAQABAAEAAQACAAIAAgACAAEAAQACAAMAAQABAAIAAgABAAEAAgABAAEAAgABAAEAAgABAAIAAgACAAEAAQABAAIAAQACAAEAAQABAAEAAgABAAIAAQABAAIAAgABAAEAAgACAAIAAQACAAEAAgABAAEAAQABAAEAAQABAAEAAQACAAEAAgABAAEAAgACAAQAAQACAAIAAQABAAEAAgABAAEABQABAAEAAQABAAIAAQACAAEAAQACAAEABgABAAEAAQACAAEAAgABAAEAAQABAAEAAgABAAIAAQABAAEAAgACAAEAAQACAAEAAQAGAAIAAQABAAIAAgABAAQAAQABAAEAAQACAAEAAQABAAEAAgACAAEAAgACAAEAAgACAAIAAQABAAEAAgABAAEAAQABAAEAAQABAAIAAQABAAIAAQABAAcAAgACAAQAAQABAAEAAQABAAEAAQABAAEAAgABAAEAAQABAAEA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AAAAALzuBgAAAAAAsLc6AAAAAAAIAAAAAAAAAM3uBgAAAAAAwLc6AAAAAAAIAAAAAAAAAOruBgAAAAAA8Lc6AAAAAAAIAAAAAAAAAPbuBgAAAAAAALg6AAAAAAAIAAAAAAAAABPvBgAAAAAAMLg6AAAAAAAIAAAAAAAAABDdBgAAAAAAQLg6AAAAAAAIAAAAAAAAACLvBgAAAAAAcLg6AAAAAAAIAAAAAAAAADjdBgAAAAAAgLg6AAAAAAAIAAAAAAAAADLvBgAAAAAAsLg6AAAAAAAIAAAAAAAAAHDdBgAAAAAAwLg6AAAAAAAIAAAAAAAAAC/vBgAAAAAA8Lg6AAAAAAAIAAAAAAAAAKDdBgAAAAAAALk6AAAAAAAIAAAAAAAAAEjvBgAAAAAAMLk6AAAAAAAIAAAAAAAAAGLvBgAAAAAAQLk6AAAAAAAIAAAAAAAAAH3vBgAAAAAAcLk6AAAAAAAIAAAAAAAAAJLvBgAAAAAAgLk6AAAAAAAIAAAAAAAAAK3vBgAAAAAAsLk6AAAAAAAIAAAAAAAAALzvBgAAAAAAwLk6AAAAAAAIAAAAAAAAANrvBgAAAAAA8Lk6AAAAAAAIAAAAAAAAANjdBgAAAAAAALo6AAAAAAAIAAAAAAAAAPLvBgAAAAAAMLo6AAAAAAAIAAAAAAAAABDeBgAAAAAAQLo6AAAAAAAIAAAAAAAAAAPwBgAAAAAAcLo6AAAAAAAIAAAAAAAAADjeBgAAAAAAgLo6AAAAAAAIAAAAAAAAABvwBgAAAAAAsLo6AAAAAAAIAAAAAAAAACzwBgAAAAAAwLo6AAAAAAAIAAAAAAAAAEXwBgAAAAAA8Lo6AAAAAAAIAAAAAAAAAGjeBgAAAAAAALs6AAAAAAAIAAAAAAAAAFTwBgAAAAAAQLs6AAAAAAAIAAAAAAAAAGPwBgAAAAAAcLs6AAAAAAAIAAAAAAAAAJjeBgAAAAAAgLs6AAAAAAAIAAAAAAAAAGzwBgAAAAAAqLs6AAAAAAAIAAAAAAAAANcoBwAAAAAAsLs6AAAAAAAIAAAAAAAAAHTwBgAAAAAAwLs6AAAAAAAIAAAAAAAAAJLwBgAAAAAA8Ls6AAAAAAAIAAAAAAAAAKbwBgAAAAAAALw6AAAAAAAIAAAAAAAAAMLwBgAAAAAAMLw6AAAAAAAIAAAAAAAAANDwBgAAAAAA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AMQ6AAAAAAAIAAAAAAAAALPzBgAAAAAAKMQ6AAAAAAAIAAAAAAAAAN7mBgAAAAAAMMQ6AAAAAAAIAAAAAAAAAIjiBgAAAAAAQMQ6AAAAAAAIAAAAAAAAAMLzBgAAAAAAaMQ6AAAAAAAIAAAAAAAAAF7sBgAAAAAAcMQ6AAAAAAAIAAAAAAAAAKjiBgAAAAAAgMQ6AAAAAAAIAAAAAAAAANrzBgAAAAAAsMQ6AAAAAAAIAAAAAAAAABDjBgAAAAAAwMQ6AAAAAAAIAAAAAAAAAOzzBgAAAAAA8MQ6AAAAAAAIAAAAAAAAADjjBgAAAAAAAMU6AAAAAAAIAAAAAAAAAAH0BgAAAAAAMMU6AAAAAAAIAAAAAAAAABv0BgAAAAAAQMU6AAAAAAAIAAAAAAAAADn0BgAAAAAAaMU6AAAAAAAIAAAAAAAAAN7mBgAAAAAAcMU6AAAAAAAIAAAAAAAAAEb0BgAAAAAAgMU6AAAAAAAIAAAAAAAAAFj0BgAAAAAAsMU6AAAAAAAIAAAAAAAAAGjjBgAAAAAAwMU6AAAAAAAIAAAAAAAAAGT0BgAAAAAA8MU6AAAAAAAIAAAAAAAAAJDjBgAAAAAAAMY6AAAAAAAIAAAAAAAAAHb0BgAAAAAAMMY6AAAAAAAIAAAAAAAAAMjjBgAAAAAAQMY6AAAAAAAIAAAAAAAAAIf0BgAAAAAAcMY6AAAAAAAIAAAAAAAAAPDjBgAAAAAAgMY6AAAAAAAIAAAAAAAAAJH0BgAAAAAAsMY6AAAAAAAIAAAAAAAAABjkBgAAAAAAwMY6AAAAAAAIAAAAAAAAAKT0BgAAAAAA8MY6AAAAAAAIAAAAAAAAAFDkBgAAAAAAAMc6AAAAAAAIAAAAAAAAALj0BgAAAAAAMMc6AAAAAAAIAAAAAAAAAHjkBgAAAAAAQMc6AAAAAAAIAAAAAAAAAMr0BgAAAAAAcMc6AAAAAAAIAAAAAAAAALDkBgAAAAAAgMc6AAAAAAAIAAAAAAAAAOL0BgAAAAAAsMc6AAAAAAAIAAAAAAAAANjkBgAAAAAAwMc6AAAAAAAIAAAAAAAAADfwBgAAAAAA8Mc6AAAAAAAIAAAAAAAAAADlBgAAAAAAAMg6AAAAAAAIAAAAAAAAAPv0BgAAAAAAKMg6AAAAAAAIAAAAAAAAAF7sBgAAAAAAMMg6AAAAAAAIAAAA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AAAAAAU0CgAAAAAAQM46AAAAAAAIAAAAAAAAAAI0CgAAAAAAgM46AAAAAAAIAAAAAAAAAGwwCgAAAAAAoM46AAAAAAAIAAAAAAAAAI8zCgAAAAAAwM46AAAAAAAIAAAAAAAAAPoyCgAAAAAA4M46AAAAAAAIAAAAAAAAAJYzCgAAAAAAAM86AAAAAAAIAAAAAAAAAK4zCgAAAAAAIM86AAAAAAAIAAAAAAAAALczCgAAAAAAQM86AAAAAAAIAAAAAAAAAMkzCgAAAAAAYM86AAAAAAAIAAAAAAAAAN0zCgAAAAAAgM86AAAAAAAIAAAAAAAAANozCgAAAAAAoM86AAAAAAAIAAAAAAAAAOozCgAAAAAAwM86AAAAAAAIAAAAAAAAAPczCgAAAAAA4M86AAAAAAAIAAAAAAAAAAU0CgAAAAAAANA6AAAAAAAIAAAAAAAAAAI0CgAAAAAAQNA6AAAAAAAIAAAAAAAAAGwwCgAAAAAAYNA6AAAAAAAIAAAAAAAAAI8zCgAAAAAAgNA6AAAAAAAIAAAAAAAAAPoyCgAAAAAAoNA6AAAAAAAIAAAAAAAAAJYzCgAAAAAAwNA6AAAAAAAIAAAAAAAAAK4zCgAAAAAA4NA6AAAAAAAIAAAAAAAAALczCgAAAAAAANE6AAAAAAAIAAAAAAAAAMkzCgAAAAAAINE6AAAAAAAIAAAAAAAAAN0zCgAAAAAAQNE6AAAAAAAIAAAAAAAAANozCgAAAAAAYNE6AAAAAAAIAAAAAAAAAOozCgAAAAAAgNE6AAAAAAAIAAAAAAAAAPczCgAAAAAAoNE6AAAAAAAIAAAAAAAAAAU0CgAAAAAAwNE6AAAAAAAIAAAAAAAAAAI0CgAAAAAAANI6AAAAAAAIAAAAAAAAAGwwCgAAAAAAINI6AAAAAAAIAAAAAAAAAI8zCgAAAAAAQNI6AAAAAAAIAAAAAAAAAPoyCgAAAAAAYNI6AAAAAAAIAAAAAAAAAJYzCgAAAAAAgNI6AAAAAAAIAAAAAAAAAK4zCgAAAAAAoNI6AAAAAAAIAAAAAAAAALczCgAAAAAAwNI6AAAAAAAIAAAAAAAAAMkzCgAAAAAA4NI6AAAAAAAIAAAAAAAAAN0zCgAAAAAAANM6AAAAAAAIAAAAAAAAANozCgAAAAAAINM6AAAAAAAIAAAAAAAAAOozCgAAAAAAQNM6AAAAAAAIAAAAAAAAAPczCgAAAAAAYNM6AAAAAAAIAAAAAAAAAAU0CgAAAAAAgNM6AAAAAAAIAAAAAAAAAAI0CgAAAAAAwNM6AAAAAAAIAAAAAAAAAGwwCgAAAAAA4NM6AAAAAAAIAAAAAAAAAI8zCgAAAAAAANQ6AAAAAAAIAAAAAAAAAPoyCgAAAAAAINQ6AAAAAAAIAAAAAAAAAJYzCgAAAAAAQNQ6AAAAAAAIAAAAAAAAAK4zCgAAAAAAYNQ6AAAAAAAIAAAAAAAAALczCgAAAAAAgNQ6AAAAAAAIAAAAAAAAAMkzCgAAAAAAoNQ6AAAAAAAIAAAAAAAAAN0zCgAAAAAAwNQ6AAAAAAAIAAAAAAAAANozCgAAAAAA4NQ6AAAAAAAIAAAAAAAAAOozCgAAAAAAANU6AAAAAAAIAAAAAAAAAPczCgAAAAAAINU6AAAAAAAIAAAAAAAAAAU0CgAAAAAAQNU6AAAAAAAIAAAAAAAAAAI0CgAAAAAAgNU6AAAAAAAIAAAAAAAAAGwwCgAAAAAAoNU6AAAAAAAIAAAAAAAAAI8zCgAAAAAAwNU6AAAAAAAIAAAAAAAAAPoyCgAAAAAA4NU6AAAAAAAIAAAAAAAAAJYzCgAAAAAAANY6AAAAAAAIAAAAAAAAAK4zCgAAAAAAINY6AAAAAAAIAAAAAAAAALczCgAAAAAAQNY6AAAAAAAIAAAAAAAAAMkzCgAAAAAAYNY6AAAAAAAIAAAAAAAAAN0zCgAAAAAAgNY6AAAAAAAIAAAAAAAAANozCgAAAAAAoNY6AAAAAAAIAAAAAAAAAOozCgAAAAAAwNY6AAAAAAAIAAAAAAAAAPczCgAAAAAA4NY6AAAAAAAIAAAAAAAAAAU0CgAAAAAAANc6AAAAAAAIAAAAAAAAAAI0CgAAAAAASNc6AAAAAAAIAAAAAAAAAPtdGAAAAAAAWNc6AAAAAAAIAAAAAAAAAOldGAAAAAAAaNc6AAAAAAAIAAAAAAAAAGpfGAAAAAAAeNc6AAAAAAAIAAAAAAAAAHlfGAAAAAAAiNc6AAAAAAAIAAAAAAAAAOldGAAAAAAAmNc6AAAAAAAIAAAAAAAAAGpfGAAAAAAAwNc6AAAAAAAIAAAAAAAAACpfGAAAAAAA0Nc6AAAAAAAIAAAAAAAAAC1fGAAAAAAA4Nc6AAAAAAAIAAAAAAAAAI9fGAAAAAAA8Nc6AAAAAAAIAAAAAAAAAJdfGAAAAAAAANg6AAAAAAAIAAAAAAAAAJ5fGAAAAAAAENg6AAAAAAAIAAAAAAAAAKdfGAAAAAAAINg6AAAAAAAIAAAAAAAAAKpfGAAAAAAAQNg6AAAAAAAIAAAAAAAAALhfGAAAAAAAYNg6AAAAAAAIAAAAAAAAAK1fGAAAAAAAgNg6AAAAAAAIAAAAAAAAAMJfGAAAAAAAoNg6AAAAAAAIAAAAAAAAAM3QGQAAAAAAwNg6AAAAAAAIAAAAAAAAAGFhGAAAAAAA4Ng6AAAAAAAIAAAAAAAAANFfGAAAAAAAANk6AAAAAAAIAAAAAAAAAOVfGAAAAAAAINk6AAAAAAAIAAAAAAAAAPZfGAAAAAAAQNk6AAAAAAAIAAAAAAAAAA5gGAAAAAAAYNk6AAAAAAAIAAAAAAAAACJgGAAAAAAAgNk6AAAAAAAIAAAAAAAAADNgGAAAAAAAoNk6AAAAAAAIAAAAAAAAAEtgGAAAAAAAwNk6AAAAAAAIAAAAAAAAAA0zCgAAAAAA4Nk6AAAAAAAIAAAAAAAAAF1gGAAAAAAAANo6AAAAAAAIAAAAAAAAAGdgGAAAAAAAINo6AAAAAAAIAAAAAAAAAJAiGQAAAAAAQNo6AAAAAAAIAAAAAAAAAHhgGAAAAAAAYNo6AAAAAAAIAAAAAAAAAHtgGAAAAAAAgNo6AAAAAAAIAAAAAAAAAI5gGAAAAAAAoNo6AAAAAAAIAAAAAAAAAI5gGAAAAAAAwNo6AAAAAAAIAAAAAAAAAJlgGAAAAAAA4No6AAAAAAAIAAAAAAAAAKxgGAAAAAAAANs6AAAAAAAIAAAAAAAAALxgGAAAAAAAINs6AAAAAAAIAAAAAAAAAOozCgAAAAAAQNs6AAAAAAAIAAAAAAAAANBgGAAAAAAAYNs6AAAAAAAIAAAAAAAAAOtgGAAAAAAAgNs6AAAAAAAIAAAAAAAAAPNgGAAAAAAAoNs6AAAAAAAIAAAAAAAAAAVhGAAAAAAAwNs6AAAAAAAIAAAAAAAAABphGAAAAAAA4Ns6AAAAAAAIAAAAAAAAADBhGAAAAAAAANw6AAAAAAAIAAAAAAAAAEdhGAAAAAAAINw6AAAAAAAIAAAAAAAAAEdhGAAAAAAAQNw6AAAAAAAIAAAAAAAAAFVhGAAAAAAAYNw6AAAAAAAIAAAAAAAAAGxhGAAAAAAAgNw6AAAAAAAIAAAAAAAAAIRhGAAAAAAAoNw6AAAAAAAIAAAAAAAAAJZhGAAAAAAAwNw6AAAAAAAIAAAAAAAAAKphGAAAAAAA4Nw6AAAAAAAIAAAAAAAAAL1hGAAAAAAAAN06AAAAAAAIAAAAAAAAANFhGAAAAAAAIN06AAAAAAAIAAAAAAAAAOhhGAAAAAAAQN06AAAAAAAIAAAAAAAAAARiGAAAAAAAYN06AAAAAAAIAAAAAAAAALAiGQAAAAAAgN06AAAAAAAIAAAAAAAAACFiGAAAAAAAoN06AAAAAAAIAAAAAAAAADtiGAAAAAAAwN06AAAAAAAIAAAAAAAAAFZiGAAAAAAA4N06AAAAAAAIAAAAAAAAAGZiGAAAAAAAAN46AAAAAAAIAAAAAAAAAHJiGAAAAAAAIN46AAAAAAAIAAAAAAAAAH1iGAAAAAAAQN46AAAAAAAIAAAAAAAAAIZiGAAAAAAAYN46AAAAAAAIAAAAAAAAAJNiGAAAAAAAgN46AAAAAAAIAAAAAAAAAJpiGAAAAAAAoN46AAAAAAAIAAAAAAAAAKJiGAAAAAAAwN46AAAAAAAIAAAAAAAAAKxiGAAAAAAA4N46AAAAAAAIAAAAAAAAALdiGAAAAAAAAN86AAAAAAAIAAAAAAAAALRiGAAAAAAAIN86AAAAAAAIAAAAAAAAAPoyCgAAAAAAYN86AAAAAAAIAAAAAAAAAB9eGAAAAAAAcN86AAAAAAAIAAAAAAAAAMhiGAAAAAAAgN86AAAAAAAIAAAAAAAAANBiGAAAAAAAkN86AAAAAAAIAAAAAAAAANhiGAAAAAAAoN86AAAAAAAIAAAAAAAAAN5iGAAAAAAAsN86AAAAAAAIAAAAAAAAAORiGAAAAAAA6N86AAAAAAAIAAAAAAAAAPtdGAAAAAAA+N86AAAAAAAIAAAAAAAAAOldGAAAAAAACOA6AAAAAAAIAAAAAAAAAGpfGAAAAAAAGOA6AAAAAAAIAAAAAAAAAHlfGAAAAAAAKOA6AAAAAAAIAAAAAAAAAOldGAAAAAAAOOA6AAAAAAAIAAAAAAAAAGpfGAAAAAAAYOA6AAAAAAAIAAAAAAAAACpfGAAAAAAAcOA6AAAAAAAIAAAAAAAAAC1fGAAAAAAAgOA6AAAAAAAIAAAAAAAAAI9fGAAAAAAAkOA6AAAAAAAIAAAAAAAAAJdfGAAAAAAAoOA6AAAAAAAIAAAAAAAAAJ5fGAAAAAAAsOA6AAAAAAAIAAAAAAAAAKdfGAAAAAAAwOA6AAAAAAAIAAAAAAAAAKpfGAAAAAAA4OA6AAAAAAAIAAAAAAAAALhfGAAAAAAAAOE6AAAAAAAIAAAAAAAAAK1fGAAAAAAAIOE6AAAAAAAIAAAAAAAAAMJfGAAAAAAAQOE6AAAAAAAIAAAAAAAAAM3QGQAAAAAAYOE6AAAAAAAIAAAAAAAAAGFhGAAAAAAAgOE6AAAAAAAIAAAAAAAAANFfGAAAAAAAoOE6AAAAAAAIAAAAAAAAAOVfGAAAAAAAwOE6AAAAAAAIAAAAAAAAAPZfGAAAAAAA4OE6AAAAAAAIAAAAAAAAAA5gGAAAAAAAAOI6AAAAAAAIAAAAAAAAACJgGAAAAAAAIOI6AAAAAAAIAAAAAAAAADNgGAAAAAAAQOI6AAAAAAAIAAAAAAAAAEtgGAAAAAAAYOI6AAAAAAAIAAAAAAAAAA0zCgAAAAAAgOI6AAAAAAAIAAAAAAAAAF1gGAAAAAAAoOI6AAAAAAAIAAAAAAAAAGdgGAAAAAAAwOI6AAAAAAAIAAAAAAAAAJAkGQAAAAAA4OI6AAAAAAAIAAAAAAAAAJAiGQAAAAAAAOM6AAAAAAAIAAAAAAAAAHhgGAAAAAAAIOM6AAAAAAAIAAAAAAAAAHtgGAAAAAAAQOM6AAAAAAAIAAAAAAAAALdiGAAAAAAAYOM6AAAAAAAIAAAAAAAAALRiGAAAAAAAgOM6AAAAAAAIAAAAAAAAAI5gGAAAAAAAoOM6AAAAAAAIAAAAAAAAAI5gGAAAAAAAwOM6AAAAAAAIAAAAAAAAAJlgGAAAAAAA4OM6AAAAAAAIAAAAAAAAAKxgGAAAAAAAAOQ6AAAAAAAIAAAAAAAAALxgGAAAAAAAIOQ6AAAAAAAIAAAAAAAAAOozCgAAAAAAQOQ6AAAAAAAIAAAAAAAAANBgGAAAAAAAYOQ6AAAAAAAIAAAAAAAAAOtgGAAAAAAAgOQ6AAAAAAAIAAAAAAAAAPNgGAAAAAAAoOQ6AAAAAAAIAAAAAAAAAAVhGAAAAAAAwOQ6AAAAAAAIAAAAAAAAABphGAAAAAAA4OQ6AAAAAAAIAAAAAAAAADBhGAAAAAAAAOU6AAAAAAAIAAAAAAAAAEdhGAAAAAAAIOU6AAAAAAAIAAAAAAAAAEdhGAAAAAAAQOU6AAAAAAAIAAAAAAAAAFVhGAAAAAAAYOU6AAAAAAAIAAAAAAAAAGxhGAAAAAAAgOU6AAAAAAAIAAAAAAAAAIRhGAAAAAAAoOU6AAAAAAAIAAAAAAAAAJZhGAAAAAAAwOU6AAAAAAAIAAAAAAAAAKphGAAAAAAA4OU6AAAAAAAIAAAAAAAAAL1hGAAAAAAAAOY6AAAAAAAIAAAAAAAAAJwkGQAAAAAAIOY6AAAAAAAIAAAAAAAAAOhhGAAAAAAAQOY6AAAAAAAIAAAAAAAAAARiGAAAAAAAYOY6AAAAAAAIAAAAAAAAAFjOGQAAAAAAgOY6AAAAAAAIAAAAAAAAALAiGQAAAAAAoOY6AAAAAAAIAAAAAAAAALokGQAAAAAAwOY6AAAAAAAIAAAAAAAAALIkGQAAAAAA4OY6AAAAAAAIAAAAAAAAACFiGAAAAAAAAOc6AAAAAAAIAAAAAAAAADtiGAAAAAAAIOc6AAAAAAAIAAAAAAAAAGZiGAAAAAAAQOc6AAAAAAAIAAAAAAAAAHJiGAAAAAAAYOc6AAAAAAAIAAAAAAAAAH1iGAAAAAAAgOc6AAAAAAAIAAAAAAAAAIZiGAAAAAAAoOc6AAAAAAAIAAAAAAAAAJNiGAAAAAAAwOc6AAAAAAAIAAAAAAAAAJpiGAAAAAAA4Oc6AAAAAAAIAAAAAAAAAKJiGAAAAAAAAOg6AAAAAAAIAAAAAAAAAKxiGAAAAAAAIOg6AAAAAAAIAAAAAAAAAPoyCgAAAAAAYOg6AAAAAAAIAAAAAAAAAB9eGAAAAAAAcOg6AAAAAAAIAAAAAAAAAMhiGAAAAAAAgOg6AAAAAAAIAAAAAAAAANBiGAAAAAAAkOg6AAAAAAAIAAAAAAAAANhiGAAAAAAAoOg6AAAAAAAIAAAAAAAAAN5iGAAAAAAAsOg6AAAAAAAIAAAAAAAAAORiGAAAAAAA4Og6AAAAAAAIAAAAAAAAAKkUBgAAAAAA8Og6AAAAAAAIAAAAAAAAAE7QGQAAAAAAAOk6AAAAAAAIAAAAAAAAAITbGQAAAAAAEOk6AAAAAAAIAAAAAAAAAFPQGQAAAAAAIOk6AAAAAAAIAAAAAAAAAJbbGQAAAAAAMOk6AAAAAAAIAAAAAAAAAM3/BgAAAAAAQOk6AAAAAAAIAAAAAAAAAFzQGQAAAAAAUOk6AAAAAAAIAAAAAAAAAGjQGQAAAAAAYOk6AAAAAAAIAAAAAAAAAFzbGQAAAAAAcOk6AAAAAAAIAAAAAAAAAHLQGQAAAAAAgOk6AAAAAAAIAAAAAAAAAHrQGQAAAAAAkOk6AAAAAAAIAAAAAAAAAIPQGQAAAAAAoOk6AAAAAAAIAAAAAAAAACDQGQAAAAAAsOk6AAAAAAAIAAAAAAAAAKjpBgAAAAAAwOk6AAAAAAAIAAAAAAAAAI7bGQAAAAAA0Ok6AAAAAAAIAAAAAAAAAIvQGQAAAAAA4Ok6AAAAAAAIAAAAAAAAAHvbGQAAAAAA8Ok6AAAAAAAIAAAAAAAAAJLQGQAAAAAAAOo6AAAAAAAIAAAAAAAAAE/bGQAAAAAAEOo6AAAAAAAIAAAAAAAAAPcRBgAAAAAAIOo6AAAAAAAIAAAAAAAAAMPQGQAAAAAAMOo6AAAAAAAIAAAAAAAAAGXbGQAAAAAAQOo6AAAAAAAIAAAAAAAAAJrQGQAAAAAAUOo6AAAAAAAIAAAAAAAAAKTQGQAAAAAAYOo6AAAAAAAIAAAAAAAAAFXbGQAAAAAAgOo6AAAAAAAIAAAAAAAAAGjaGQAAAAAAkOo6AAAAAAAIAAAAAAAAAMzcGQAAAAAAwOo6AAAAAAAIAAAAAAAAAGDaGQAAAAAA0Oo6AAAAAAAIAAAAAAAAAN3cGQAAAAAA4Oo6AAAAAAAIAAAAAAAAAKTaGQAAAAAA8Oo6AAAAAAAIAAAAAAAAAKhdGAAAAAAAAOs6AAAAAAAIAAAAAAAAAOjcGQAAAAAAEOs6AAAAAAAIAAAAAAAAAG0yCgAAAAAAQOs6AAAAAAAIAAAAAAAAABHdGQAAAAAAUOs6AAAAAAAIAAAAAAAAABndGQAAAAAAYOs6AAAAAAAIAAAAAAAAACHdGQAAAAAAcOs6AAAAAAAIAAAAAAAAAPzcGQAAAAAAgOs6AAAAAAAIAAAAAAAAAAbdGQAAAAAAkOs6AAAAAAAIAAAAAAAAABDdGQAAAAAAoOs6AAAAAAAIAAAAAAAAABjdGQAAAAAAsOs6AAAAAAAIAAAAAAAAACDdGQAAAAAAwOs6AAAAAAAIAAAAAAAAACjdGQAAAAAA0Os6AAAAAAAIAAAAAAAAADPdGQAAAAAAAOw6AAAAAAAIAAAAAAAAAFfaGQAAAAAAEOw6AAAAAAAIAAAAAAAAADzdGQAAAAAAIOw6AAAAAAAIAAAAAAAAAEbdGQAAAAAAMOw6AAAAAAAIAAAAAAAAAE3dGQAAAAAAQOw6AAAAAAAIAAAAAAAAAFbdGQAAAAAAUOw6AAAAAAAIAAAAAAAAAGDdGQAAAAAAYOw6AAAAAAAIAAAAAAAAAGvdGQAAAAAAcOw6AAAAAAAIAAAAAAAAAHbdGQAAAAAAgOw6AAAAAAAIAAAAAAAAAH3dGQAAAAAAkOw6AAAAAAAIAAAAAAAAAIfdGQAAAAAAoOw6AAAAAAAIAAAAAAAAAI/dGQAAAAAAsOw6AAAAAAAIAAAAAAAAAJbdGQAAAAAAwOw6AAAAAAAIAAAAAAAAAKDdGQAAAAAA0Ow6AAAAAAAIAAAAAAAAAK3dGQAAAAAAAO06AAAAAAAIAAAAAAAAADreGQAAAAAAEO06AAAAAAAIAAAAAAAAAFLeGQAAAAAAIO06AAAAAAAIAAAAAAAAAF7eGQAAAAAAMO06AAAAAAAIAAAAAAAAAGbeGQAAAAAAQO06AAAAAAAIAAAAAAAAAC/fGQAAAAAAUO06AAAAAAAIAAAAAAAAAHTeGQAAAAAAYO06AAAAAAAIAAAAAAAAAIbeGQAAAAAAcO06AAAAAAAIAAAAAAAAAJreGQAAAAAAgO06AAAAAAAIAAAAAAAAALbeGQAAAAAAkO06AAAAAAAIAAAAAAAAAMbeGQAAAAAAoO06AAAAAAAIAAAAAAAAANbeGQAAAAAAsO06AAAAAAAIAAAAAAAAAObeGQAAAAAAwO06AAAAAAAIAAAAAAAAAM3bGQAAAAAA0O06AAAAAAAIAAAAAAAAAPbeGQAAAAAA4O06AAAAAAAIAAAAAAAAAAffGQAAAAAA8O06AAAAAAAIAAAAAAAAAAbfGQAAAAAAAO46AAAAAAAIAAAAAAAAABLfGQAAAAAAEO46AAAAAAAIAAAAAAAAABnfGQAAAAAAIO46AAAAAAAIAAAAAAAAACHfGQAAAAAAQO46AAAAAAAIAAAAAAAAADreGQAAAAAAUO46AAAAAAAIAAAAAAAAAF7eGQAAAAAAYO46AAAAAAAIAAAAAAAAAC/fGQAAAAAAcO46AAAAAAAIAAAAAAAAAC7fGQAAAAAAgO46AAAAAAAIAAAAAAAAAM3bGQAAAAAAkO46AAAAAAAIAAAAAAAAAPbeGQAAAAAAwO46AAAAAAAIAAAAAAAAAGjaGQAAAAAA0O46AAAAAAAIAAAAAAAAAMzcGQAAAAAAAO86AAAAAAAIAAAAAAAAAGDaGQAAAAAAEO86AAAAAAAIAAAAAAAAAN3cGQAAAAAAIO86AAAAAAAIAAAAAAAAAKTaGQAAAAAAMO86AAAAAAAIAAAAAAAAAKhdGAAAAAAAQO86AAAAAAAIAAAAAAAAAOjcGQAAAAAAUO86AAAAAAAIAAAAAAAAAG0yCgAAAAAAgO86AAAAAAAIAAAAAAAAABHdGQAAAAAAkO86AAAAAAAIAAAAAAAAABndGQAAAAAAoO86AAAAAAAIAAAAAAAAACHdGQAAAAAAsO86AAAAAAAIAAAAAAAAAPzcGQAAAAAAwO86AAAAAAAIAAAAAAAAAAbdGQAAAAAA0O86AAAAAAAIAAAAAAAAABDdGQAAAAAA4O86AAAAAAAIAAAAAAAAABjdGQAAAAAA8O86AAAAAAAIAAAAAAAAACDdGQAAAAAAAPA6AAAAAAAIAAAAAAAAACjdGQAAAAAAEPA6AAAAAAAIAAAAAAAAADPdGQAAAAAAQPA6AAAAAAAIAAAAAAAAAFfaGQAAAAAAUPA6AAAAAAAIAAAAAAAAADzdGQAAAAAAYPA6AAAAAAAIAAAAAAAAAEbdGQAAAAAAcPA6AAAAAAAIAAAAAAAAAE3dGQAAAAAAgPA6AAAAAAAIAAAAAAAAAFbdGQAAAAAAkPA6AAAAAAAIAAAAAAAAAGDdGQAAAAAAoPA6AAAAAAAIAAAAAAAAAGvdGQAAAAAAsPA6AAAAAAAIAAAAAAAAAHbdGQAAAAAAwPA6AAAAAAAIAAAAAAAAAH3dGQAAAAAA0PA6AAAAAAAIAAAAAAAAAIfdGQAAAAAA4PA6AAAAAAAIAAAAAAAAAI/dGQAAAAAA8PA6AAAAAAAIAAAAAAAAAJbdGQAAAAAAAPE6AAAAAAAIAAAAAAAAAKDdGQAAAAAAEPE6AAAAAAAIAAAAAAAAAK3dGQAAAAAAQPE6AAAAAAAIAAAAAAAAADreGQAAAAAAUPE6AAAAAAAIAAAAAAAAAFLeGQAAAAAAYPE6AAAAAAAIAAAAAAAAAAHlGQAAAAAAcPE6AAAAAAAIAAAAAAAAAAzlGQAAAAAAgPE6AAAAAAAIAAAAAAAAAHskGQAAAAAAkPE6AAAAAAAIAAAAAAAAABzlGQAAAAAAoPE6AAAAAAAIAAAAAAAAADHlGQAAAAAAsPE6AAAAAAAIAAAAAAAAAGDlGQAAAAAAwPE6AAAAAAAIAAAAAAAAAEflGQAAAAAA0PE6AAAAAAAIAAAAAAAAALbeGQAAAAAA4PE6AAAAAAAIAAAAAAAAAMbeGQAAAAAA8PE6AAAAAAAIAAAAAAAAANbeGQAAAAAAAPI6AAAAAAAIAAAAAAAAAObeGQAAAAAAEPI6AAAAAAAIAAAAAAAAAM3bGQAAAAAAIPI6AAAAAAAIAAAAAAAAAPbeGQAAAAAAMPI6AAAAAAAIAAAAAAAAAAffGQAAAAAAQPI6AAAAAAAIAAAAAAAAAAbfGQAAAAAAUPI6AAAAAAAIAAAAAAAAABLfGQAAAAAAYPI6AAAAAAAIAAAAAAAAABnfGQAAAAAAcPI6AAAAAAAIAAAAAAAAACHfGQAAAAAAoPI6AAAAAAAIAAAAAAAAADreGQAAAAAAsPI6AAAAAAAIAAAAAAAAAF7eGQAAAAAAwPI6AAAAAAAIAAAAAAAAAC/fGQAAAAAA0PI6AAAAAAAIAAAAAAAAAC7fGQAAAAAA4PI6AAAAAAAIAAAAAAAAAM3bGQAAAAAA8PI6AAAAAAAIAAAAAAAAAPbeGQAAAAAACAA7AAAAAAAIAAAAAAAAAEAkOwAAAAAAEAA7AAAAAAAIAAAAAAAAAPgmOwAAAAAAGAA7AAAAAAAIAAAAAAAAAEMyCgAAAAAAIAA7AAAAAAAIAAAAAAAAANAnOwAAAAAAKAA7AAAAAAAIAAAAAAAAAIAnOwAAAAAAMAA7AAAAAAAIAAAAAAAAAGPyBgAAAAAAQAA7AAAAAAAIAAAAAAAAAPBfAgAAAAAASAA7AAAAAAAIAAAAAAAAADBlAgAAAAAAUAA7AAAAAAAIAAAAAAAAAIBsAgAAAAAAWAA7AAAAAAAIAAAAAAAAAOBrAgAAAAAAYAA7AAAAAAAIAAAAAAAAAPBpAgAAAAAAaAA7AAAAAAAIAAAAAAAAABBnAgAAAAAAcAA7AAAAAAAIAAAAAAAAAJBwAgAAAAAAeAA7AAAAAAAIAAAAAAAAAHBjAgAAAAAAgAA7AAAAAAAIAAAAAAAAABBeAgAAAAAAiAA7AAAAAAAIAAAAAAAAAMBdAgAAAAAAkAA7AAAAAAAIAAAAAAAAAGBeAgAAAAAAmAA7AAAAAAAIAAAAAAAAANDCAgAAAAAAoAA7AAAAAAAIAAAAAAAAAADCAgAAAAAAqAA7AAAAAAAIAAAAAAAAAADEAgAAAAAAsAA7AAAAAAAIAAAAAAAAAPDwAQAAAAAAuAA7AAAAAAAIAAAAAAAAACsjBwAAAAAAwAA7AAAAAAAIAAAAAAAAAAADOwAAAAAAyAA7AAAAAAAIAAAAAAAAAKAFOwAAAAAA0AA7AAAAAAAIAAAAAAAAAEAIOwAAAAAA2AA7AAAAAAAIAAAAAAAAAOAKOwAAAAAA4AA7AAAAAAAIAAAAAAAAAMALOwAAAAAA6AA7AAAAAAAIAAAAAAAAAGAOOwAAAAAA8AA7AAAAAAAIAAAAAAAAAAAROwAAAAAA+AA7AAAAAAAIAAAAAAAAAAAWOwAAAAAAAAE7AAAAAAAIAAAAAAAAAGAaOwAAAAAAEAE7AAAAAAAIAAAAAAAAALgpOwAAAAAAGAE7AAAAAAAIAAAAAAAAAKBHOwAAAAAAIAE7AAAAAAAIAAAAAAAAAEXbGQAAAAAAKAE7AAAAAAAIAAAAAAAAACgrOwAAAAAAQAE7AAAAAAAIAAAAAAAAAEMyCgAAAAAAcAE7AAAAAAAIAAAAAAAAADUyCgAAAAAAoAE7AAAAAAAIAAAAAAAAAHAzCgAAAAAA0AE7AAAAAAAIAAAAAAAAACkyCgAAAAAAAAI7AAAAAAAIAAAAAAAAAB4yCgAAAAAAYAI7AAAAAAAIAAAAAAAAAHczCgAAAAAAkAI7AAAAAAAIAAAAAAAAAH8zCgAAAAAAwAI7AAAAAAAIAAAAAAAAAIYzCgAAAAAAAAM7AAAAAAAIAAAAAAAAAFAoAwAAAAAACAM7AAAAAAAIAAAAAAAAAGCvAgAAAAAAEAM7AAAAAAAIAAAAAAAAAJCvAgAAAAAAGAM7AAAAAAAIAAAAAAAAALAnAwAAAAAAIAM7AAAAAAAIAAAAAAAAADA6AwAAAAAAKAM7AAAAAAAIAAAAAAAAAKCuAgAAAAAAMAM7AAAAAAAIAAAAAAAAAJAwAwAAAAAAOAM7AAAAAAAIAAAAAAAAABCvAgAAAAAAQAM7AAAAAAAIAAAAAAAAANCtAgAAAAAASAM7AAAAAAAIAAAAAAAAABAZAwAAAAAAUAM7AAAAAAAIAAAAAAAAABAEAwAAAAAAWAM7AAAAAAAIAAAAAAAAAIYhBwAAAAAAYAM7AAAAAAAIAAAAAAAAAB40CgAAAAAAaAM7AAAAAAAIAAAAAAAAAPAYAwAAAAAAeAM7AAAAAAAIAAAAAAAAAFAXAwAAAAAAgAM7AAAAAAAIAAAAAAAAALAoAwAAAAAAmAM7AAAAAAAIAAAAAAAAAKAWAwAAAAAAoAM7AAAAAAAIAAAAAAAAAAAJAwAAAAAAsAM7AAAAAAAIAAAAAAAAABAHAwAAAAAAuAM7AAAAAAAIAAAAAAAAAHAGAwAAAAAA4AM7AAAAAAAIAAAAAAAAAEMyCgAAAAAAEAQ7AAAAAAAIAAAAAAAAADUyCgAAAAAAQAQ7AAAAAAAIAAAAAAAAAHAzCgAAAAAAcAQ7AAAAAAAIAAAAAAAAACkyCgAAAAAAoAQ7AAAAAAAIAAAAAAAAAB4yCgAAAAAAAAU7AAAAAAAIAAAAAAAAAHczCgAAAAAAMAU7AAAAAAAIAAAAAAAAAH8zCgAAAAAAYAU7AAAAAAAIAAAAAAAAAIYzCgAAAAAAoAU7AAAAAAAIAAAAAAAAALBoAwAAAAAAqAU7AAAAAAAIAAAAAAAAAGCvAgAAAAAAsAU7AAAAAAAIAAAAAAAAAJCvAgAAAAAAuAU7AAAAAAAIAAAAAAAAABBoAwAAAAAAwAU7AAAAAAAIAAAAAAAAAJB6AwAAAAAAyAU7AAAAAAAIAAAAAAAAAKCuAgAAAAAA0AU7AAAAAAAIAAAAAAAAAPBwAwAAAAAA2AU7AAAAAAAIAAAAAAAAABCvAgAAAAAA4AU7AAAAAAAIAAAAAAAAANCtAgAAAAAA6AU7AAAAAAAIAAAAAAAAAHBZAwAAAAAA8AU7AAAAAAAIAAAAAAAAALBEAwAAAAAA+AU7AAAAAAAIAAAAAAAAAKUlDQAAAAAAAAY7AAAAAAAIAAAAAAAAALIlDQAAAAAACAY7AAAAAAAIAAAAAAAAAFBZAwAAAAAAGAY7AAAAAAAIAAAAAAAAALBXAwAAAAAAIAY7AAAAAAAIAAAAAAAAABBpAwAAAAAAOAY7AAAAAAAIAAAAAAAAAABXAwAAAAAAQAY7AAAAAAAIAAAAAAAAAIBJAwAAAAAAUAY7AAAAAAAIAAAAAAAAALBHAwAAAAAAWAY7AAAAAAAIAAAAAAAAABBHAwAAAAAAgAY7AAAAAAAIAAAAAAAAAEMyCgAAAAAAsAY7AAAAAAAIAAAAAAAAADUyCgAAAAAA4AY7AAAAAAAIAAAAAAAAAHAzCgAAAAAAEAc7AAAAAAAIAAAAAAAAACkyCgAAAAAAQAc7AAAAAAAIAAAAAAAAAB4yCgAAAAAAoAc7AAAAAAAIAAAAAAAAAHczCgAAAAAA0Ac7AAAAAAAIAAAAAAAAAH8zCgAAAAAAAAg7AAAAAAAIAAAAAAAAAIYzCgAAAAAAQAg7AAAAAAAIAAAAAAAAALCoAwAAAAAASAg7AAAAAAAIAAAAAAAAAGCvAgAAAAAAUAg7AAAAAAAIAAAAAAAAAJCvAgAAAAAAWAg7AAAAAAAIAAAAAAAAABCoAwAAAAAAYAg7AAAAAAAIAAAAAAAAAJC6AwAAAAAAaAg7AAAAAAAIAAAAAAAAAKCuAgAAAAAAcAg7AAAAAAAIAAAAAAAAAPCwAwAAAAAAeAg7AAAAAAAIAAAAAAAAABCvAgAAAAAAgAg7AAAAAAAIAAAAAAAAANCtAgAAAAAAiAg7AAAAAAAIAAAAAAAAAHCZAwAAAAAAkAg7AAAAAAAIAAAAAAAAABCFAwAAAAAAmAg7AAAAAAAIAAAAAAAAAJzpDwAAAAAAoAg7AAAAAAAIAAAAAAAAAKXpDwAAAAAAqAg7AAAAAAAIAAAAAAAAAFCZAwAAAAAAuAg7AAAAAAAIAAAAAAAAALCXAwAAAAAAwAg7AAAAAAAIAAAAAAAAABCpAwAAAAAA2Ag7AAAAAAAIAAAAAAAAAACXAwAAAAAA4Ag7AAAAAAAIAAAAAAAAALCJAwAAAAAA8Ag7AAAAAAAIAAAAAAAAABCIAwAAAAAA+Ag7AAAAAAAIAAAAAAAAAHCHAwAAAAAAIAk7AAAAAAAIAAAAAAAAAEMyCgAAAAAAUAk7AAAAAAAIAAAAAAAAADUyCgAAAAAAgAk7AAAAAAAIAAAAAAAAAHAzCgAAAAAAsAk7AAAAAAAIAAAAAAAAACkyCgAAAAAA4Ak7AAAAAAAIAAAAAAAAAB4yCgAAAAAAQAo7AAAAAAAIAAAAAAAAAHczCgAAAAAAcAo7AAAAAAAIAAAAAAAAAH8zCgAAAAAAoAo7AAAAAAAIAAAAAAAAAIYzCgAAAAAA4Ao7AAAAAAAIAAAAAAAAAIDhAwAAAAAA6Ao7AAAAAAAIAAAAAAAAAGCvAgAAAAAA8Ao7AAAAAAAIAAAAAAAAAJCvAgAAAAAA+Ao7AAAAAAAIAAAAAAAAAODgAwAAAAAAAAs7AAAAAAAIAAAAAAAAAPDuAwAAAAAACAs7AAAAAAAIAAAAAAAAAKCuAgAAAAAAEAs7AAAAAAAIAAAAAAAAAMDpAwAAAAAAGAs7AAAAAAAIAAAAAAAAABCvAgAAAAAAIAs7AAAAAAAIAAAAAAAAANCtAgAAAAAAKAs7AAAAAAAIAAAAAAAAADDYAwAAAAAAMAs7AAAAAAAIAAAAAAAAABDFAwAAAAAAOAs7AAAAAAAIAAAAAAAAAG2XEgAAAAAAQAs7AAAAAAAIAAAAAAAAAHeXEgAAAAAASAs7AAAAAAAIAAAAAAAAABDYAwAAAAAAWAs7AAAAAAAIAAAAAAAAAHDWAwAAAAAAYAs7AAAAAAAIAAAAAAAAAODhAwAAAAAAeAs7AAAAAAAIAAAAAAAAAMDVAwAAAAAAgAs7AAAAAAAIAAAAAAAAAJDJAwAAAAAAkAs7AAAAAAAIAAAAAAAAABDIAwAAAAAAmAs7AAAAAAAIAAAAAAAAAHDHAwAAAAAAwAs7AAAAAAAIAAAAAAAAAGD7AwAAAAAAyAs7AAAAAAAIAAAAAAAAAGCvAgAAAAAA0As7AAAAAAAIAAAAAAAAAJCvAgAAAAAA2As7AAAAAAAIAAAAAAAAAACuAgAAAAAA4As7AAAAAAAIAAAAAAAAAJCuAgAAAAAA6As7AAAAAAAIAAAAAAAAAKCuAgAAAAAA8As7AAAAAAAIAAAAAAAAALCuAgAAAAAA+As7AAAAAAAIAAAAAAAAABCvAgAAAAAAAAw7AAAAAAAIAAAAAAAAANCtAgAAAAAACAw7AAAAAAAIAAAAAAAAAED9AwAAAAAAEAw7AAAAAAAIAAAAAAAAAKD7AwAAAAAAGAw7AAAAAAAIAAAAAAAAADOYEgAAAAAAIAw7AAAAAAAIAAAAAAAAAD2YEgAAAAAAKAw7AAAAAAAIAAAAAAAAAOCuAgAAAAAAMAw7AAAAAAAIAAAAAAAAAFD7AwAAAAAAOAw7AAAAAAAIAAAAAAAAABD8AwAAAAAAoAw7AAAAAAAIAAAAAAAAAEMyCgAAAAAA0Aw7AAAAAAAIAAAAAAAAADUyCgAAAAAAAA07AAAAAAAIAAAAAAAAAHAzCgAAAAAAMA07AAAAAAAIAAAAAAAAACkyCgAAAAAAYA07AAAAAAAIAAAAAAAAAB4yCgAAAAAAwA07AAAAAAAIAAAAAAAAAHczCgAAAAAA8A07AAAAAAAIAAAAAAAAAH8zCgAAAAAAIA47AAAAAAAIAAAAAAAAAIYzCgAAAAAAYA47AAAAAAAIAAAAAAAAACAgBAAAAAAAaA47AAAAAAAIAAAAAAAAAGCvAgAAAAAAcA47AAAAAAAIAAAAAAAAAJCvAgAAAAAAeA47AAAAAAAIAAAAAAAAAIAfBAAAAAAAgA47AAAAAAAIAAAAAAAAAAAyBAAAAAAAiA47AAAAAAAIAAAAAAAAAKCuAgAAAAAAkA47AAAAAAAIAAAAAAAAAGAoBAAAAAAAmA47AAAAAAAIAAAAAAAAABCvAgAAAAAAoA47AAAAAAAIAAAAAAAAANCtAgAAAAAAqA47AAAAAAAIAAAAAAAAAOAQBAAAAAAAsA47AAAAAAAIAAAAAAAAAMD9AwAAAAAAuA47AAAAAAAIAAAAAAAAAHF6FQAAAAAAwA47AAAAAAAIAAAAAAAAAHp6FQAAAAAAyA47AAAAAAAIAAAAAAAAAMAQBAAAAAAA2A47AAAAAAAIAAAAAAAAACAPBAAAAAAA4A47AAAAAAAIAAAAAAAAAIAgBAAAAAAA+A47AAAAAAAIAAAAAAAAAHAOBAAAAAAAAA87AAAAAAAIAAAAAAAAAEACBAAAAAAAEA87AAAAAAAIAAAAAAAAAMAABAAAAAAAGA87AAAAAAAIAAAAAAAAACAABAAAAAAAQA87AAAAAAAIAAAAAAAAAEMyCgAAAAAAcA87AAAAAAAIAAAAAAAAADUyCgAAAAAAoA87AAAAAAAIAAAAAAAAAHAzCgAAAAAA0A87AAAAAAAIAAAAAAAAACkyCgAAAAAAABA7AAAAAAAIAAAAAAAAAB4yCgAAAAAAYBA7AAAAAAAIAAAAAAAAAHczCgAAAAAAkBA7AAAAAAAIAAAAAAAAAH8zCgAAAAAAwBA7AAAAAAAIAAAAAAAAAIYzCgAAAAAAABE7AAAAAAAIAAAAAAAAAOBeBAAAAAAACBE7AAAAAAAIAAAAAAAAAGCvAgAAAAAAEBE7AAAAAAAIAAAAAAAAAJCvAgAAAAAAGBE7AAAAAAAIAAAAAAAAAEBeBAAAAAAAIBE7AAAAAAAIAAAAAAAAAMBwBAAAAAAAKBE7AAAAAAAIAAAAAAAAAKCuAgAAAAAAMBE7AAAAAAAIAAAAAAAAACBnBAAAAAAAOBE7AAAAAAAIAAAAAAAAABCvAgAAAAAAQBE7AAAAAAAIAAAAAAAAANCtAgAAAAAASBE7AAAAAAAIAAAAAAAAAKBPBAAAAAAAUBE7AAAAAAAIAAAAAAAAAIA8BAAAAAAAWBE7AAAAAAAIAAAAAAAAANFcGAAAAAAAYBE7AAAAAAAIAAAAAAAAANpcGAAAAAAAaBE7AAAAAAAIAAAAAAAAAIBPBAAAAAAAeBE7AAAAAAAIAAAAAAAAAOBNBAAAAAAAgBE7AAAAAAAIAAAAAAAAAEBfBAAAAAAAmBE7AAAAAAAIAAAAAAAAADBNBAAAAAAAoBE7AAAAAAAIAAAAAAAAAABBBAAAAAAAsBE7AAAAAAAIAAAAAAAAAIA/BAAAAAAAuBE7AAAAAAAIAAAAAAAAAOA+BAAAAAAAABI7AAAAAAAIAAAAAAAAAEMyCgAAAAAAMBI7AAAAAAAIAAAAAAAAAKBdGAAAAAAAYBI7AAAAAAAIAAAAAAAAALFfGAAAAAAAkBI7AAAAAAAIAAAAAAAAACkyCgAAAAAAwBI7AAAAAAAIAAAAAAAAAB4yCgAAAAAAABM7AAAAAAAIAAAAAAAAADg8OwAAAAAAGBM7AAAAAAAIAAAAAAAAAF5dGAAAAAAAKBM7AAAAAAAIAAAAAAAAAOg7OwAAAAAAQBM7AAAAAAAIAAAAAAAAAApfGAAAAAAAUBM7AAAAAAAIAAAAAAAAADg8OwAAAAAAaBM7AAAAAAAIAAAAAAAAABJeGAAAAAAAeBM7AAAAAAAIAAAAAAAAAEA8OwAAAAAAkBM7AAAAAAAIAAAAAAAAABldGAAAAAAAoBM7AAAAAAAIAAAAAAAAAEg8OwAAAAAAuBM7AAAAAAAIAAAAAAAAAPdeGAAAAAAAyBM7AAAAAAAIAAAAAAAAAFA8OwAAAAAA4BM7AAAAAAAIAAAAAAAAAJ1eGAAAAAAA8BM7AAAAAAAIAAAAAAAAAFI8OwAAAAAACBQ7AAAAAAAIAAAAAAAAALJeGAAAAAAAGBQ7AAAAAAAIAAAAAAAAAFQ8OwAAAAAAMBQ7AAAAAAAIAAAAAAAAAMdeGAAAAAAAQBQ7AAAAAAAIAAAAAAAAAFY8OwAAAAAAWBQ7AAAAAAAIAAAAAAAAAN9eGAAAAAAAaBQ7AAAAAAAIAAAAAAAAAFg8OwAAAAAAgBQ7AAAAAAAIAAAAAAAAAFdeGAAAAAAAkBQ7AAAAAAAIAAAAAAAAAFo8OwAAAAAAqBQ7AAAAAAAIAAAAAAAAAHNeGAAAAAAAuBQ7AAAAAAAIAAAAAAAAAIA8OwAAAAAA0BQ7AAAAAAAIAAAAAAAAAI9eGAAAAAAA4BQ7AAAAAAAIAAAAAAAAAIg8OwAAAAAA+BQ7AAAAAAAIAAAAAAAAAG1dGAAAAAAACBU7AAAAAAAIAAAAAAAAAJA8OwAAAAAAIBU7AAAAAAAIAAAAAAAAAD5eGAAAAAAAMBU7AAAAAAAIAAAAAAAAAJg8OwAAAAAASBU7AAAAAAAIAAAAAAAAAIddGAAAAAAAWBU7AAAAAAAIAAAAAAAAAKA8OwAAAAAAcBU7AAAAAAAIAAAAAAAAACZeGAAAAAAAgBU7AAAAAAAIAAAAAAAAAKg8OwAAAAAAmBU7AAAAAAAIAAAAAAAAAPFiGAAAAAAAqBU7AAAAAAAIAAAAAAAAAII8OwAAAAAAwBU7AAAAAAAIAAAAAAAAABJfGAAAAAAAABY7AAAAAAAIAAAAAAAAAICcBAAAAAAACBY7AAAAAAAIAAAAAAAAAGCvAgAAAAAAEBY7AAAAAAAIAAAAAAAAAJCvAgAAAAAAGBY7AAAAAAAIAAAAAAAAAICbBAAAAAAAIBY7AAAAAAAIAAAAAAAAANCQBAAAAAAAKBY7AAAAAAAIAAAAAAAAAKCuAgAAAAAAMBY7AAAAAAAIAAAAAAAAALCuAgAAAAAAOBY7AAAAAAAIAAAAAAAAABCvAgAAAAAAQBY7AAAAAAAIAAAAAAAAANCtAgAAAAAASBY7AAAAAAAIAAAAAAAAALCQBAAAAAAAUBY7AAAAAAAIAAAAAAAAADCLBAAAAAAAWBY7AAAAAAAIAAAAAAAAAOliGAAAAAAAYBY7AAAAAAAIAAAAAAAAADRdGAAAAAAAaBY7AAAAAAAIAAAAAAAAAACQBAAAAAAAeBY7AAAAAAAIAAAAAAAAAICqBAAAAAAAgBY7AAAAAAAIAAAAAAAAADCEBAAAAAAAiBY7AAAAAAAIAAAAAAAAAGCoBAAAAAAAmBY7AAAAAAAIAAAAAAAAAMCDBAAAAAAAoBY7AAAAAAAIAAAAAAAAAECfBAAAAAAAqBY7AAAAAAAIAAAAAAAAACCNBAAAAAAAsBY7AAAAAAAIAAAAAAAAAGB7BAAAAAAAuBY7AAAAAAAIAAAAAAAAAOCcBAAAAAAAwBY7AAAAAAAIAAAAAAAAAEB7BAAAAAAAABc7AAAAAAAIAAAAAAAAAEMyCgAAAAAAMBc7AAAAAAAIAAAAAAAAAKBdGAAAAAAAYBc7AAAAAAAIAAAAAAAAALFfGAAAAAAAkBc7AAAAAAAIAAAAAAAAACkyCgAAAAAAwBc7AAAAAAAIAAAAAAAAAB4yCgAAAAAAABg7AAAAAAAIAAAAAAAAAFg+OwAAAAAAEBg7AAAAAAAIAAAAAAAAAF5dGAAAAAAAIBg7AAAAAAAIAAAAAAAAAAw+OwAAAAAAMBg7AAAAAAAIAAAAAAAAAApfGAAAAAAAQBg7AAAAAAAIAAAAAAAAAFg+OwAAAAAAUBg7AAAAAAAIAAAAAAAAABJeGAAAAAAAYBg7AAAAAAAIAAAAAAAAAGA+OwAAAAAAcBg7AAAAAAAIAAAAAAAAABldGAAAAAAAgBg7AAAAAAAIAAAAAAAAAGg+OwAAAAAAkBg7AAAAAAAIAAAAAAAAAPdeGAAAAAAAoBg7AAAAAAAIAAAAAAAAAHA+OwAAAAAAsBg7AAAAAAAIAAAAAAAAAJ1eGAAAAAAAwBg7AAAAAAAIAAAAAAAAAHI+OwAAAAAA0Bg7AAAAAAAIAAAAAAAAALJeGAAAAAAA4Bg7AAAAAAAIAAAAAAAAAHQ+OwAAAAAA8Bg7AAAAAAAIAAAAAAAAAMdeGAAAAAAAABk7AAAAAAAIAAAAAAAAAHY+OwAAAAAAEBk7AAAAAAAIAAAAAAAAAN9eGAAAAAAAIBk7AAAAAAAIAAAAAAAAAHg+OwAAAAAAMBk7AAAAAAAIAAAAAAAAAFdeGAAAAAAAQBk7AAAAAAAIAAAAAAAAAHo+OwAAAAAAUBk7AAAAAAAIAAAAAAAAAHNeGAAAAAAAYBk7AAAAAAAIAAAAAAAAAKA+OwAAAAAAcBk7AAAAAAAIAAAAAAAAAI9eGAAAAAAAgBk7AAAAAAAIAAAAAAAAAKg+OwAAAAAAkBk7AAAAAAAIAAAAAAAAAG1dGAAAAAAAoBk7AAAAAAAIAAAAAAAAALA+OwAAAAAAsBk7AAAAAAAIAAAAAAAAAD5eGAAAAAAAwBk7AAAAAAAIAAAAAAAAALg+OwAAAAAA0Bk7AAAAAAAIAAAAAAAAAIddGAAAAAAA4Bk7AAAAAAAIAAAAAAAAAMA+OwAAAAAA8Bk7AAAAAAAIAAAAAAAAACZeGAAAAAAAABo7AAAAAAAIAAAAAAAAAMg+OwAAAAAAEBo7AAAAAAAIAAAAAAAAAPFiGAAAAAAAIBo7AAAAAAAIAAAAAAAAAKI+OwAAAAAAMBo7AAAAAAAIAAAAAAAAABJfGAAAAAAAYBo7AAAAAAAIAAAAAAAAAFDWBAAAAAAAaBo7AAAAAAAIAAAAAAAAAGCvAgAAAAAAcBo7AAAAAAAIAAAAAAAAAJCvAgAAAAAAeBo7AAAAAAAIAAAAAAAAAFDVBAAAAAAAgBo7AAAAAAAIAAAAAAAAAODIBAAAAAAAiBo7AAAAAAAIAAAAAAAAAKCuAgAAAAAAkBo7AAAAAAAIAAAAAAAAALCuAgAAAAAAmBo7AAAAAAAIAAAAAAAAABCvAgAAAAAAoBo7AAAAAAAIAAAAAAAAANCtAgAAAAAAqBo7AAAAAAAIAAAAAAAAAMC/BAAAAAAAsBo7AAAAAAAIAAAAAAAAANDDBAAAAAAAuBo7AAAAAAAIAAAAAAAAAM4kGQAAAAAAwBo7AAAAAAAIAAAAAAAAAGAkGQAAAAAAyBo7AAAAAAAIAAAAAAAAABC/BAAAAAAA2Bo7AAAAAAAIAAAAAAAAAGDkBAAAAAAA4Bo7AAAAAAAIAAAAAAAAAAC7BAAAAAAA6Bo7AAAAAAAIAAAAAAAAACDiBAAAAAAA+Bo7AAAAAAAIAAAAAAAAAJC6BAAAAAAAABs7AAAAAAAIAAAAAAAAAMDYBAAAAAAACBs7AAAAAAAIAAAAAAAAAADGBAAAAAAAEBs7AAAAAAAIAAAAAAAAAOCxBAAAAAAAGBs7AAAAAAAIAAAAAAAAAFDEBAAAAAAAIBs7AAAAAAAIAAAAAAAAAMCxBAAAAAAAQBs7AAAAAAAIAAAAAAAAAMzQGQAAAAAAUBs7AAAAAAAIAAAAAAAAAAwzCgAAAAAAYBs7AAAAAAAIAAAAAAAAANLQGQAAAAAAcBs7AAAAAAAIAAAAAAAAANjQGQAAAAAAgBs7AAAAAAAIAAAAAAAAAODQGQAAAAAAwBs7AAAAAAAIAAAAAAAAADRdGAAAAAAAyBs7AAAAAAAIAAAAAAAAAD9dGAAAAAAA4Bs7AAAAAAAIAAAAAAAAAADtOgAAAAAA6Bs7AAAAAAAIAAAAAAAAADRdGAAAAAAA8Bs7AAAAAAAIAAAAAAAAALndGQAAAAAACBw7AAAAAAAIAAAAAAAAAADtOgAAAAAAEBw7AAAAAAAIAAAAAAAAAMrdGQAAAAAAGBw7AAAAAAAIAAAAAAAAANLdGQAAAAAAMBw7AAAAAAAIAAAAAAAAAEDuOgAAAAAAOBw7AAAAAAAIAAAAAAAAANndGQAAAAAAQBw7AAAAAAAIAAAAAAAAAOLdGQAAAAAAWBw7AAAAAAAIAAAAAAAAAEDuOgAAAAAAYBw7AAAAAAAIAAAAAAAAAO/dGQAAAAAAaBw7AAAAAAAIAAAAAAAAAAPeGQAAAAAAgBw7AAAAAAAIAAAAAAAAAEDuOgAAAAAAiBw7AAAAAAAIAAAAAAAAAOrdGQAAAAAAkBw7AAAAAAAIAAAAAAAAAP7dGQAAAAAAqBw7AAAAAAAIAAAAAAAAAEDuOgAAAAAAsBw7AAAAAAAIAAAAAAAAABHeGQAAAAAAuBw7AAAAAAAIAAAAAAAAACbeGQAAAAAA0Bw7AAAAAAAIAAAAAAAAAEDuOgAAAAAAIB07AAAAAAAIAAAAAAAAAGAkGQAAAAAAKB07AAAAAAAIAAAAAAAAAGkkGQAAAAAAQB07AAAAAAAIAAAAAAAAAEDxOgAAAAAASB07AAAAAAAIAAAAAAAAAMrdGQAAAAAAUB07AAAAAAAIAAAAAAAAANLdGQAAAAAAaB07AAAAAAAIAAAAAAAAAKDyOgAAAAAAcB07AAAAAAAIAAAAAAAAANndGQAAAAAAeB07AAAAAAAIAAAAAAAAAOLdGQAAAAAAkB07AAAAAAAIAAAAAAAAAKDyOgAAAAAAmB07AAAAAAAIAAAAAAAAAO/dGQAAAAAAoB07AAAAAAAIAAAAAAAAAAPeGQAAAAAAuB07AAAAAAAIAAAAAAAAAKDyOgAAAAAAwB07AAAAAAAIAAAAAAAAAOrdGQAAAAAAyB07AAAAAAAIAAAAAAAAAP7dGQAAAAAA4B07AAAAAAAIAAAAAAAAAKDyOgAAAAAA6B07AAAAAAAIAAAAAAAAABHeGQAAAAAA8B07AAAAAAAIAAAAAAAAACbeGQAAAAAACB47AAAAAAAIAAAAAAAAAKDyOgAAAAAAOB47AAAAAAAIAAAAAAAAAAAKBgAAAAAAQB47AAAAAAAIAAAAAAAAAGBCOwAAAAAAsP86AAAAAAAGAAAA9wAAAAAAAAAAAAAAmP86AAAAAAAGAAAACAAAAAAAAAAAAAAAoP86AAAAAAAGAAAAFAAAAAAAAAAAAAAAqP86AAAAAAAGAAAALwAAAAAAAAAAAAAAuP86AAAAAAAGAAAAUQAAAAAAAAAAAAAAwP86AAAAAAAGAAAAXQAAAAAAAAAAAAAAyP86AAAAAAAGAAAAdwAAAAAAAAAAAAAA0P86AAAAAAAGAAAApAAAAAAAAAAAAAAA2P86AAAAAAAGAAAA0wAAAAAAAAAAAAAA4P86AAAAAAAGAAAA4gAAAAAAAAAAAAAA6P86AAAAAAAGAAAA5QAAAAAAAAAAAAAA8P86AAAAAAAGAAAA+AAAAAAAAAAAAAAAIPM6AAAAAAAFAAAA9wAAAAAAAAAAAAAAIPU6AAAAAAAFAAAA8gAAAAAAAAAAAAAAICM7AAAAAAAFAAAA+AAAAAAAAAAAAAAAYB47AAAAAAAFAAAAAQEAAAAAAAAAAAAAaB47AAAAAAAFAAAAAgEAAAAAAAAAAAAAcB47AAAAAAAFAAAA/wAAAAAAAAAAAAAAeB47AAAAAAAFAAAA7gAAAAAAAAAAAAAAgB47AAAAAAAFAAAA/QAAAAAAAAAAAAAAoB47AAAAAAAFAAAA8QAAAAAAAAAAAAAAACM7AAAAAAAFAAAA+gAAAAAAAAAAAAAAECM7AAAAAAAFAAAA+wAAAAAAAAAAAAAAWPg6AAAAAAAHAAAAAQAAAAAAAAAAAAAAYPg6AAAAAAAHAAAAAgAAAAAAAAAAAAAAaPg6AAAAAAAHAAAAAwAAAAAAAAAAAAAAcPg6AAAAAAAHAAAABAAAAAAAAAAAAAAAePg6AAAAAAAHAAAABQAAAAAAAAAAAAAAgPg6AAAAAAAHAAAABgAAAAAAAAAAAAAAiPg6AAAAAAAHAAAABwAAAAAAAAAAAAAAkPg6AAAAAAAHAAAACAAAAAAAAAAAAAAAmPg6AAAAAAAHAAAACQAAAAAAAAAAAAAAoPg6AAAAAAAHAAAACgAAAAAAAAAAAAAAqPg6AAAAAAAHAAAACwAAAAAAAAAAAAAAsPg6AAAAAAAHAAAADAAAAAAAAAAAAAAAuPg6AAAAAAAHAAAADQAAAAAAAAAAAAAAwPg6AAAAAAAHAAAADgAAAAAAAAAAAAAAyPg6AAAAAAAHAAAADwAAAAAAAAAAAAAA0Pg6AAAAAAAHAAAAEAAAAAAAAAAAAAAA2Pg6AAAAAAAHAAAAEQAAAAAAAAAAAAAA4Pg6AAAAAAAHAAAAEgAAAAAAAAAAAAAA6Pg6AAAAAAAHAAAAEwAAAAAAAAAAAAAA8Pg6AAAAAAAHAAAAFQAAAAAAAAAAAAAA+Pg6AAAAAAAHAAAAFgAAAAAAAAAAAAAAAPk6AAAAAAAHAAAAFwAAAAAAAAAAAAAACPk6AAAAAAAHAAAAGAAAAAAAAAAAAAAAEPk6AAAAAAAHAAAAGQAAAAAAAAAAAAAAGPk6AAAAAAAHAAAAGgAAAAAAAAAAAAAAIPk6AAAAAAAHAAAAGwAAAAAAAAAAAAAAKPk6AAAAAAAHAAAAHAAAAAAAAAAAAAAAMPk6AAAAAAAHAAAAHQAAAAAAAAAAAAAAOPk6AAAAAAAHAAAAHgAAAAAAAAAAAAAAQPk6AAAAAAAHAAAAHwAAAAAAAAAAAAAASPk6AAAAAAAHAAAAIAAAAAAAAAAAAAAAUPk6AAAAAAAHAAAAIQAAAAAAAAAAAAAAWPk6AAAAAAAHAAAAIgAAAAAAAAAAAAAAYPk6AAAAAAAHAAAAIwAAAAAAAAAAAAAAaPk6AAAAAAAHAAAAJAAAAAAAAAAAAAAAcPk6AAAAAAAHAAAAJQAAAAAAAAAAAAAAePk6AAAAAAAHAAAAJgAAAAAAAAAAAAAAgPk6AAAAAAAHAAAAJwAAAAAAAAAAAAAAiPk6AAAAAAAHAAAAKAAAAAAAAAAAAAAAkPk6AAAAAAAHAAAAKQAAAAAAAAAAAAAAmPk6AAAAAAAHAAAAKgAAAAAAAAAAAAAAoPk6AAAAAAAHAAAAKwAAAAAAAAAAAAAAqPk6AAAAAAAHAAAALAAAAAAAAAAAAAAAsPk6AAAAAAAHAAAALQAAAAAAAAAAAAAAuPk6AAAAAAAHAAAALgAAAAAAAAAAAAAAwPk6AAAAAAAHAAAALwAAAAAAAAAAAAAAyPk6AAAAAAAHAAAAMAAAAAAAAAAAAAAA0Pk6AAAAAAAHAAAAMQAAAAAAAAAAAAAA2Pk6AAAAAAAHAAAAMgAAAAAAAAAAAAAA4Pk6AAAAAAAHAAAAMwAAAAAAAAAAAAAA6Pk6AAAAAAAHAAAANAAAAAAAAAAAAAAA8Pk6AAAAAAAHAAAANQAAAAAAAAAAAAAA+Pk6AAAAAAAHAAAANgAAAAAAAAAAAAAAAPo6AAAAAAAHAAAANwAAAAAAAAAAAAAACPo6AAAAAAAHAAAAOAAAAAAAAAAAAAAAEPo6AAAAAAAHAAAAOQAAAAAAAAAAAAAAGPo6AAAAAAAHAAAAOgAAAAAAAAAAAAAAIPo6AAAAAAAHAAAAOwAAAAAAAAAAAAAAKPo6AAAAAAAHAAAAPAAAAAAAAAAAAAAAMPo6AAAAAAAHAAAAPQAAAAAAAAAAAAAAOPo6AAAAAAAHAAAAPgAAAAAAAAAAAAAAQPo6AAAAAAAHAAAAPwAAAAAAAAAAAAAASPo6AAAAAAAHAAAAQAAAAAAAAAAAAAAAUPo6AAAAAAAHAAAAQQAAAAAAAAAAAAAAWPo6AAAAAAAHAAAAQgAAAAAAAAAAAAAAYPo6AAAAAAAHAAAAQwAAAAAAAAAAAAAAaPo6AAAAAAAHAAAARAAAAAAAAAAAAAAAcPo6AAAAAAAHAAAARQAAAAAAAAAAAAAAePo6AAAAAAAHAAAARgAAAAAAAAAAAAAAgPo6AAAAAAAHAAAARwAAAAAAAAAAAAAAiPo6AAAAAAAHAAAASAAAAAAAAAAAAAAAkPo6AAAAAAAHAAAASQAAAAAAAAAAAAAAmPo6AAAAAAAHAAAASgAAAAAAAAAAAAAAoPo6AAAAAAAHAAAASwAAAAAAAAAAAAAAqPo6AAAAAAAHAAAATAAAAAAAAAAAAAAAsPo6AAAAAAAHAAAATQAAAAAAAAAAAAAAuPo6AAAAAAAHAAAATgAAAAAAAAAAAAAAwPo6AAAAAAAHAAAATwAAAAAAAAAAAAAAyPo6AAAAAAAHAAAAUAAAAAAAAAAAAAAA0Po6AAAAAAAHAAAAUQAAAAAAAAAAAAAA2Po6AAAAAAAHAAAAUgAAAAAAAAAAAAAA4Po6AAAAAAAHAAAAUwAAAAAAAAAAAAAA6Po6AAAAAAAHAAAAVAAAAAAAAAAAAAAA8Po6AAAAAAAHAAAAVQAAAAAAAAAAAAAA+Po6AAAAAAAHAAAAVgAAAAAAAAAAAAAAAPs6AAAAAAAHAAAAVwAAAAAAAAAAAAAACPs6AAAAAAAHAAAAWAAAAAAAAAAAAAAAEPs6AAAAAAAHAAAAWQAAAAAAAAAAAAAAGPs6AAAAAAAHAAAAWgAAAAAAAAAAAAAAIPs6AAAAAAAHAAAAWwAAAAAAAAAAAAAAKPs6AAAAAAAHAAAAXAAAAAAAAAAAAAAAMPs6AAAAAAAHAAAAXgAAAAAAAAAAAAAAOPs6AAAAAAAHAAAAXwAAAAAAAAAAAAAAQPs6AAAAAAAHAAAAYAAAAAAAAAAAAAAASPs6AAAAAAAHAAAAYQAAAAAAAAAAAAAAUPs6AAAAAAAHAAAAYgAAAAAAAAAAAAAAWPs6AAAAAAAHAAAAYwAAAAAAAAAAAAAAYPs6AAAAAAAHAAAAZAAAAAAAAAAAAAAAaPs6AAAAAAAHAAAAZQAAAAAAAAAAAAAAcPs6AAAAAAAHAAAAZgAAAAAAAAAAAAAAePs6AAAAAAAHAAAAZwAAAAAAAAAAAAAAgPs6AAAAAAAHAAAAaAAAAAAAAAAAAAAAiPs6AAAAAAAHAAAAaQAAAAAAAAAAAAAAkPs6AAAAAAAHAAAAagAAAAAAAAAAAAAAmPs6AAAAAAAHAAAAawAAAAAAAAAAAAAAoPs6AAAAAAAHAAAAbAAAAAAAAAAAAAAAqPs6AAAAAAAHAAAAbQAAAAAAAAAAAAAAsPs6AAAAAAAHAAAAbgAAAAAAAAAAAAAAuPs6AAAAAAAHAAAAbwAAAAAAAAAAAAAAwPs6AAAAAAAHAAAAcAAAAAAAAAAAAAAAyPs6AAAAAAAHAAAAcQAAAAAAAAAAAAAA0Ps6AAAAAAAHAAAAcgAAAAAAAAAAAAAA2Ps6AAAAAAAHAAAAcwAAAAAAAAAAAAAA4Ps6AAAAAAAHAAAAdAAAAAAAAAAAAAAA6Ps6AAAAAAAHAAAAdQAAAAAAAAAAAAAA8Ps6AAAAAAAHAAAAdgAAAAAAAAAAAAAA+Ps6AAAAAAAHAAAAeAAAAAAAAAAAAAAAAPw6AAAAAAAHAAAAeQAAAAAAAAAAAAAACPw6AAAAAAAHAAAAegAAAAAAAAAAAAAAEPw6AAAAAAAHAAAAewAAAAAAAAAAAAAAGPw6AAAAAAAHAAAAfAAAAAAAAAAAAAAAIPw6AAAAAAAHAAAAfQAAAAAAAAAAAAAAKPw6AAAAAAAHAAAAfgAAAAAAAAAAAAAAMPw6AAAAAAAHAAAAfwAAAAAAAAAAAAAAOPw6AAAAAAAHAAAAgAAAAAAAAAAAAAAAQPw6AAAAAAAHAAAAgQAAAAAAAAAAAAAASPw6AAAAAAAHAAAAggAAAAAAAAAAAAAAUPw6AAAAAAAHAAAAgwAAAAAAAAAAAAAAWPw6AAAAAAAHAAAAhAAAAAAAAAAAAAAAYPw6AAAAAAAHAAAAhQAAAAAAAAAAAAAAaPw6AAAAAAAHAAAAhgAAAAAAAAAAAAAAcPw6AAAAAAAHAAAAhwAAAAAAAAAAAAAAePw6AAAAAAAHAAAAiAAAAAAAAAAAAAAAgPw6AAAAAAAHAAAAiQAAAAAAAAAAAAAAiPw6AAAAAAAHAAAAigAAAAAAAAAAAAAAkPw6AAAAAAAHAAAAiwAAAAAAAAAAAAAAmPw6AAAAAAAHAAAAjAAAAAAAAAAAAAAAoPw6AAAAAAAHAAAAjQAAAAAAAAAAAAAAqPw6AAAAAAAHAAAAjgAAAAAAAAAAAAAAsPw6AAAAAAAHAAAAjwAAAAAAAAAAAAAAuPw6AAAAAAAHAAAAkAAAAAAAAAAAAAAAwPw6AAAAAAAHAAAAkQAAAAAAAAAAAAAAyPw6AAAAAAAHAAAAkgAAAAAAAAAAAAAA0Pw6AAAAAAAHAAAAkwAAAAAAAAAAAAAA2Pw6AAAAAAAHAAAAlAAAAAAAAAAAAAAA4Pw6AAAAAAAHAAAAlQAAAAAAAAAAAAAA6Pw6AAAAAAAHAAAAlgAAAAAAAAAAAAAA8Pw6AAAAAAAHAAAAlwAAAAAAAAAAAAAA+Pw6AAAAAAAHAAAAmAAAAAAAAAAAAAAAAP06AAAAAAAHAAAAmQAAAAAAAAAAAAAACP06AAAAAAAHAAAAmgAAAAAAAAAAAAAAEP06AAAAAAAHAAAAmwAAAAAAAAAAAAAAGP06AAAAAAAHAAAAnAAAAAAAAAAAAAAAIP06AAAAAAAHAAAAnQAAAAAAAAAAAAAAKP06AAAAAAAHAAAAngAAAAAAAAAAAAAAMP06AAAAAAAHAAAAnwAAAAAAAAAAAAAAOP06AAAAAAAHAAAAoAAAAAAAAAAAAAAAQP06AAAAAAAHAAAAoQAAAAAAAAAAAAAASP06AAAAAAAHAAAAogAAAAAAAAAAAAAAUP06AAAAAAAHAAAAowAAAAAAAAAAAAAAWP06AAAAAAAHAAAApQAAAAAAAAAAAAAAYP06AAAAAAAHAAAApgAAAAAAAAAAAAAAaP06AAAAAAAHAAAApwAAAAAAAAAAAAAAcP06AAAAAAAHAAAAqAAAAAAAAAAAAAAAeP06AAAAAAAHAAAAqQAAAAAAAAAAAAAAgP06AAAAAAAHAAAAqgAAAAAAAAAAAAAAiP06AAAAAAAHAAAAqwAAAAAAAAAAAAAAkP06AAAAAAAHAAAArAAAAAAAAAAAAAAAmP06AAAAAAAHAAAArQAAAAAAAAAAAAAAoP06AAAAAAAHAAAArgAAAAAAAAAAAAAAqP06AAAAAAAHAAAArwAAAAAAAAAAAAAAsP06AAAAAAAHAAAAsAAAAAAAAAAAAAAAuP06AAAAAAAHAAAAsQAAAAAAAAAAAAAAwP06AAAAAAAHAAAAsgAAAAAAAAAAAAAAyP06AAAAAAAHAAAAswAAAAAAAAAAAAAA0P06AAAAAAAHAAAAtAAAAAAAAAAAAAAA2P06AAAAAAAHAAAAtQAAAAAAAAAAAAAA4P06AAAAAAAHAAAAtgAAAAAAAAAAAAAA6P06AAAAAAAHAAAAtwAAAAAAAAAAAAAA8P06AAAAAAAHAAAAuAAAAAAAAAAAAAAA+P06AAAAAAAHAAAAuQAAAAAAAAAAAAAAAP46AAAAAAAHAAAAugAAAAAAAAAAAAAACP46AAAAAAAHAAAAuwAAAAAAAAAAAAAAEP46AAAAAAAHAAAAvAAAAAAAAAAAAAAAGP46AAAAAAAHAAAAvQAAAAAAAAAAAAAAIP46AAAAAAAHAAAAvgAAAAAAAAAAAAAAKP46AAAAAAAHAAAAvwAAAAAAAAAAAAAAMP46AAAAAAAHAAAAwAAAAAAAAAAAAAAAOP46AAAAAAAHAAAAwQAAAAAAAAAAAAAAQP46AAAAAAAHAAAAwgAAAAAAAAAAAAAASP46AAAAAAAHAAAAwwAAAAAAAAAAAAAAUP46AAAAAAAHAAAAxAAAAAAAAAAAAAAAWP46AAAAAAAHAAAAxQAAAAAAAAAAAAAAYP46AAAAAAAHAAAAxgAAAAAAAAAAAAAAaP46AAAAAAAHAAAAxwAAAAAAAAAAAAAAcP46AAAAAAAHAAAAyAAAAAAAAAAAAAAAeP46AAAAAAAHAAAAyQAAAAAAAAAAAAAAgP46AAAAAAAHAAAAygAAAAAAAAAAAAAAiP46AAAAAAAHAAAAywAAAAAAAAAAAAAAkP46AAAAAAAHAAAAzAAAAAAAAAAAAAAAmP46AAAAAAAHAAAAzQAAAAAAAAAAAAAAoP46AAAAAAAHAAAAzgAAAAAAAAAAAAAAqP46AAAAAAAHAAAAzwAAAAAAAAAAAAAAsP46AAAAAAAHAAAA0AAAAAAAAAAAAAAAuP46AAAAAAAHAAAA0QAAAAAAAAAAAAAAwP46AAAAAAAHAAAA0gAAAAAAAAAAAAAAyP46AAAAAAAHAAAA1AAAAAAAAAAAAAAA0P46AAAAAAAHAAAA1QAAAAAAAAAAAAAA2P46AAAAAAAHAAAA1gAAAAAAAAAAAAAA4P46AAAAAAAHAAAA1wAAAAAAAAAAAAAA6P46AAAAAAAHAAAA2AAAAAAAAAAAAAAA8P46AAAAAAAHAAAA2QAAAAAAAAAAAAAA+P46AAAAAAAHAAAA2gAAAAAAAAAAAAAAAP86AAAAAAAHAAAA2wAAAAAAAAAAAAAACP86AAAAAAAHAAAA3AAAAAAAAAAAAAAAEP86AAAAAAAHAAAA3QAAAAAAAAAAAAAAGP86AAAAAAAHAAAA3gAAAAAAAAAAAAAAIP86AAAAAAAHAAAA3wAAAAAAAAAAAAAAKP86AAAAAAAHAAAA4AAAAAAAAAAAAAAAMP86AAAAAAAHAAAA4QAAAAAAAAAAAAAAOP86AAAAAAAHAAAA4gAAAAAAAAAAAAAAQP86AAAAAAAHAAAA4wAAAAAAAAAAAAAASP86AAAAAAAHAAAA5AAAAAAAAAAAAAAAUP86AAAAAAAHAAAA5QAAAAAAAAAAAAAAWP86AAAAAAAHAAAA5gAAAAAAAAAAAAAAYP86AAAAAAAHAAAA5wAAAAAAAAAAAAAAaP86AAAAAAAHAAAA6AAAAAAAAAAAAAAAcP86AAAAAAAHAAAA6QAAAAAAAAAAAAAAeP86AAAAAAAHAAAA6gAAAAAAAAAAAAAAgP86AAAAAAAHAAAA6wAAAAAAAAAAAAAAiP86AAAAAAAHAAAA7AAAAAAAAAAAAAAAkP86AAAAAAAHAAAA7QAAAAAAAAAAAAAA8w8e+kiD7AhIiwVBLToASIXAdAL/0EiDxAjDAAAAAAAAAAAAAAAAAP81oiU6APL/JaMlOgAPHwDzDx76aAAAAADy6eH///+Q8w8e+mgBAAAA8unR////kPMPHvpoAgAAAPLpwf///5DzDx76aAMAAADy6bH///+Q8w8e+mgEAAAA8umh////kPMPHvpoBQAAAPLpkf///5DzDx76aAYAAADy6YH///+Q8w8e+mgHAAAA8ulx////kPMPHvpoCAAAAPLpYf///5DzDx76aAkAAADy6VH///+Q8w8e+mgKAAAA8ulB////kPMPHvpoCwAAAPLpMf///5DzDx76aAwAAADy6SH///+Q8w8e+mgNAAAA8ukR////kPMPHvpoDgAAAPLpAf///5DzDx76aA8AAADy6fH+//+Q8w8e+mgQAAAA8unh/v//kPMPHvpoEQAAAPLp0f7//5DzDx76aBIAAADy6cH+//+Q8w8e+mgTAAAA8umx/v//kPMPHvpoFAAAAPLpof7//5DzDx76aBUAAADy6ZH+//+Q8w8e+mgWAAAA8umB/v//kPMPHvpoFwAAAPLpcf7//5DzDx76aBgAAADy6WH+//+Q8w8e+mgZAAAA8ulR/v//kPMPHvpoGgAAAPLpQf7//5DzDx76aBsAAADy6TH+//+Q8w8e+mgcAAAA8ukh/v//kPMPHvpoHQAAAPLpEf7//5DzDx76aB4AAADy6QH+//+Q8w8e+mgfAAAA8unx/f//kPMPHvpoIAAAAPLp4f3//5DzDx76aCEAAADy6dH9//+Q8w8e+mgiAAAA8unB/f//kPMPHvpoIwAAAPLpsf3//5DzDx76aCQAAADy6aH9//+Q8w8e+mglAAAA8umR/f//kPMPHvpoJgAAAPLpgf3//5DzDx76aCcAAADy6XH9//+Q8w8e+mgoAAAA8ulh/f//kPMPHvpoKQAAAPLpUf3//5DzDx76aCoAAADy6UH9//+Q8w8e+mgrAAAA8ukx/f//kPMPHvpoLAAAAPLpIf3//5DzDx76aC0AAADy6RH9//+Q8w8e+mguAAAA8ukB/f//kPMPHvpoLwAAAPLp8fz//5DzDx76aDAAAADy6eH8//+Q8w8e+mgxAAAA8unR/P//kPMPHvpoMgAAAPLpwfz//5DzDx76aDMAAADy6bH8//+Q8w8e+mg0AAAA8umh/P//kPMPHvpoNQAAAPLpkfz//5DzDx76aDYAAADy6YH8//+Q8w8e+mg3AAAA8ulx/P//kPMPHvpoOAAAAPLpYfz//5DzDx76aDkAAADy6VH8//+Q8w8e+mg6AAAA8ulB/P//kPMPHvpoOwAAAPLpMfz//5DzDx76aDwAAADy6SH8//+Q8w8e+mg9AAAA8ukR/P//kPMPHvpoPgAAAPLpAfz//5DzDx76aD8AAADy6fH7//+Q8w8e+mhAAAAA8unh+///kPMPHvpoQQAAAPLp0fv//5DzDx76aEIAAADy6cH7//+Q8w8e+mhDAAAA8umx+///kPMPHvpoRAAAAPLpofv//5DzDx76aEUAAADy6ZH7//+Q8w8e+mhGAAAA8umB+///kPMPHvpoRwAAAPLpcfv//5DzDx76aEgAAADy6WH7//+Q8w8e+mhJAAAA8ulR+///kPMPHvpoSgAAAPLpQfv//5DzDx76aEsAAADy6TH7//+Q8w8e+mhMAAAA8ukh+///kPMPHvpoTQAAAPLpEfv//5DzDx76aE4AAADy6QH7//+Q8w8e+mhPAAAA8unx+v//kPMPHvpoUAAAAPLp4fr//5DzDx76aFEAAADy6dH6//+Q8w8e+mhSAAAA8unB+v//kPMPHvpoUwAAAPLpsfr//5DzDx76aFQAAADy6aH6//+Q8w8e+mhVAAAA8umR+v//kPMPHvpoVgAAAPLpgfr//5DzDx76aFcAAADy6XH6//+Q8w8e+mhYAAAA8ulh+v//kPMPHvpoWQAAAPLpUfr//5DzDx76aFoAAADy6UH6//+Q8w8e+mhbAAAA8ukx+v//kPMPHvpoXAAAAPLpIfr//5DzDx76aF0AAADy6RH6//+Q8w8e+mheAAAA8ukB+v//kPMPHvpoXwAAAPLp8fn//5DzDx76aGAAAADy6eH5//+Q8w8e+mhhAAAA8unR+f//kPMPHvpoYgAAAPLpwfn//5DzDx76aGMAAADy6bH5//+Q8w8e+mhkAAAA8umh+f//kPMPHvpoZQAAAPLpkfn//5DzDx76aGYAAADy6YH5//+Q8w8e+mhnAAAA8ulx+f//kPMPHvpoaAAAAPLpYfn//5DzDx76aGkAAADy6VH5//+Q8w8e+mhqAAAA8ulB+f//kPMPHvpoawAAAPLpMfn//5DzDx76aGwAAADy6SH5//+Q8w8e+mhtAAAA8ukR+f//kPMPHvpobgAAAPLpAfn//5DzDx76aG8AAADy6fH4//+Q8w8e+mhwAAAA8unh+P//kPMPHvpocQAAAPLp0fj//5DzDx76aHIAAADy6cH4//+Q8w8e+mhzAAAA8umx+P//kPMPHvpodAAAAPLpofj//5DzDx76aHUAAADy6ZH4//+Q8w8e+mh2AAAA8umB+P//kPMPHvpodwAAAPLpcfj//5DzDx76aHgAAADy6WH4//+Q8w8e+mh5AAAA8ulR+P//kPMPHvpoegAAAPLpQfj//5DzDx76aHsAAADy6TH4//+Q8w8e+mh8AAAA8ukh+P//kPMPHvpofQAAAPLpEfj//5DzDx76aH4AAADy6QH4//+Q8w8e+mh/AAAA8unx9///kPMPHvpogAAAAPLp4ff//5DzDx76aIEAAADy6dH3//+Q8w8e+miCAAAA8unB9///kPMPHvpogwAAAPLpsff//5DzDx76aIQAAADy6aH3//+Q8w8e+miFAAAA8umR9///kPMPHvpohgAAAPLpgff//5DzDx76aIcAAADy6XH3//+Q8w8e+miIAAAA8ulh9///kPMPHvpoiQAAAPLpUff//5DzDx76aIoAAADy6UH3//+Q8w8e+miLAAAA8ukx9///kPMPHvpojAAAAPLpIff//5DzDx76aI0AAADy6RH3//+Q8w8e+miOAAAA8ukB9///kPMPHvpojwAAAPLp8fb//5DzDx76aJAAAADy6eH2//+Q8w8e+miRAAAA8unR9v//kPMPHvpokgAAAPLpwfb//5DzDx76aJMAAADy6bH2//+Q8w8e+miUAAAA8umh9v//kPMPHvpolQAAAPLpkfb//5DzDx76aJYAAADy6YH2//+Q8w8e+miXAAAA8ulx9v//kPMPHvpomAAAAPLpYfb//5DzDx76aJkAAADy6VH2//+Q8w8e+miaAAAA8ulB9v//kPMPHvpomwAAAPLpMfb//5DzDx76aJwAAADy6SH2//+Q8w8e+midAAAA8ukR9v//kPMPHvpongAAAPLpAfb//5DzDx76aJ8AAADy6fH1//+Q8w8e+migAAAA8unh9f//kPMPHvpooQAAAPLp0fX//5DzDx76aKIAAADy6cH1//+Q8w8e+mijAAAA8umx9f//kPMPHvpopAAAAPLpofX//5DzDx76aKUAAADy6ZH1//+Q8w8e+mimAAAA8umB9f//kPMPHvpopwAAAPLpcfX//5DzDx76aKgAAADy6WH1//+Q8w8e+mipAAAA8ulR9f//kPMPHvpoqgAAAPLpQfX//5DzDx76aKsAAADy6TH1//+Q8w8e+misAAAA8ukh9f//kPMPHvporQAAAPLpEfX//5DzDx76aK4AAADy6QH1//+Q8w8e+mivAAAA8unx9P//kPMPHvposAAAAPLp4fT//5DzDx76aLEAAADy6dH0//+Q8w8e+miyAAAA8unB9P//kPMPHvposwAAAPLpsfT//5DzDx76aLQAAADy6aH0//+Q8w8e+mi1AAAA8umR9P//kPMPHvpotgAAAPLpgfT//5DzDx76aLcAAADy6XH0//+Q8w8e+mi4AAAA8ulh9P//kPMPHvpouQAAAPLpUfT//5DzDx76aLoAAADy6UH0//+Q8w8e+mi7AAAA8ukx9P//kPMPHvpovAAAAPLpIfT//5DzDx76aL0AAADy6RH0//+Q8w8e+mi+AAAA8ukB9P//kPMPHvpovwAAAPLp8fP//5DzDx76aMAAAADy6eHz//+Q8w8e+mjBAAAA8unR8///kPMPHvpowgAAAPLpwfP//5DzDx76aMMAAADy6bHz//+Q8w8e+mjEAAAA8umh8///kPMPHvpoxQAAAPLpkfP//5DzDx76aMYAAADy6YHz//+Q8w8e+mjHAAAA8ulx8///kPMPHvpoyAAAAPLpYfP//5DzDx76aMkAAADy6VHz//+Q8w8e+mjKAAAA8ulB8///kPMPHvpoywAAAPLpMfP//5DzDx76aMwAAADy6SHz//+Q8w8e+mjNAAAA8ukR8///kPMPHvpozgAAAPLpAfP//5DzDx76aM8AAADy6fHy//+Q8w8e+mjQAAAA8unh8v//kPMPHvpo0QAAAPLp0fL//5DzDx76aNIAAADy6cHy//+Q8w8e+mjTAAAA8umx8v//kPMPHvpo1AAAAPLpofL//5DzDx76aNUAAADy6ZHy//+Q8w8e+mjWAAAA8umB8v//kPMPHvpo1wAAAPLpcfL//5DzDx76aNgAAADy6WHy//+Q8w8e+mjZAAAA8ulR8v//kPMPHvpo2gAAAPLpQfL//5DzDx76aNsAAADy6THy//+Q8w8e+mjcAAAA8ukh8v//kPMPHvpo3QAAAPLpEfL//5DzDx76aN4AAADy6QHy//+Q8w8e+mjfAAAA8unx8f//kPMPHvpo4AAAAPLp4fH//5DzDx76aOEAAADy6dHx//+Q8w8e+mjiAAAA8unB8f//kPMPHvpo4wAAAPLpsfH//5DzDx76aOQAAADy6aHx//+Q8w8e+mjlAAAA8umR8f//kPMPHvpo5gAAAPLpgfH//5DzDx76aOcAAADy6XHx//+Q8w8e+vL/JR0XOgAPH0QAAPMPHvry/yUVFzoADx9EAADzDx768v8lDRc6AA8fRAAA8w8e+vL/JQUXOgAPH0QAAPMPHvry/yX9FjoADx9EAADzDx768v8l9RY6AA8fRAAA8w8e+vL/Je0WOgAPH0QAAPMPHvry/yXlFjoADx9EAADzDx768v8l3RY6AA8fRAAA8w8e+vL/JdUWOgAPH0QAAPMPHvry/yXNFjoADx9EAADzDx768v8lxRY6AA8fRAAA8w8e+vL/Jb0WOgAPH0QAAPMPHvry/yW1FjoADx9EAADzDx768v8lrRY6AA8fRAAA8w8e+vL/JaUWOgAPH0QAAPMPHvry/yWdFjoADx9EAADzDx768v8llRY6AA8fRAAA8w8e+vL/JY0WOgAPH0QAAPMPHvry/yWFFjoADx9EAADzDx768v8lfRY6AA8fRAAA8w8e+vL/JXUWOgAPH0QAAPMPHvry/yVtFjoADx9EAADzDx768v8lZRY6AA8fRAAA8w8e+vL/JV0WOgAPH0QAAPMPHvry/yVVFjoADx9EAADzDx768v8lTRY6AA8fRAAA8w8e+vL/JUUWOgAPH0QAAPMPHvry/yU9FjoADx9EAADzDx768v8lNRY6AA8fRAAA8w8e+vL/JS0WOgAPH0QAAPMPHvry/yUlFjoADx9EAADzDx768v8lHRY6AA8fRAAA8w8e+vL/JRUWOgAPH0QAAPMPHvry/yUNFjoADx9EAADzDx768v8lBRY6AA8fRAAA8w8e+vL/Jf0VOgAPH0QAAPMPHvry/yX1FToADx9EAADzDx768v8l7RU6AA8fRAAA8w8e+vL/JeUVOgAPH0QAAPMPHvry/yXdFToADx9EAADzDx768v8l1RU6AA8fRAAA8w8e+vL/Jc0VOgAPH0QAAPMPHvry/yXFFToADx9EAADzDx768v8lvRU6AA8fRAAA8w8e+vL/JbUVOgAPH0QAAPMPHvry/yWtFToADx9EAADzDx768v8lpRU6AA8fRAAA8w8e+vL/JZ0VOgAPH0QAAPMPHvry/yWVFToADx9EAADzDx768v8ljRU6AA8fRAAA8w8e+vL/JYUVOgAPH0QAAPMPHvry/yV9FToADx9EAADzDx768v8ldRU6AA8fRAAA8w8e+vL/JW0VOgAPH0QAAPMPHvry/yVlFToADx9EAADzDx768v8lXRU6AA8fRAAA8w8e+vL/JVUVOgAPH0QAAPMPHvry/yVNFToADx9EAADzDx768v8lRRU6AA8fRAAA8w8e+vL/JT0VOgAPH0QAAPMPHvry/yU1FToADx9EAADzDx768v8lLRU6AA8fRAAA8w8e+vL/JSUVOgAPH0QAAPMPHvry/yUdFToADx9EAADzDx768v8lFRU6AA8fRAAA8w8e+vL/JQ0VOgAPH0QAAPMPHvry/yUFFToADx9EAADzDx768v8l/RQ6AA8fRAAA8w8e+vL/JfUUOgAPH0QAAPMPHvry/yXtFDoADx9EAADzDx768v8l5RQ6AA8fRAAA8w8e+vL/Jd0UOgAPH0QAAPMPHvry/yXVFDoADx9EAADzDx768v8lzRQ6AA8fRAAA8w8e+vL/JcUUOgAPH0QAAPMPHvry/yW9FDoADx9EAADzDx768v8ltRQ6AA8fRAAA8w8e+vL/Ja0UOgAPH0QAAPMPHvry/yWlFDoADx9EAADzDx768v8lnRQ6AA8fRAAA8w8e+vL/JZUUOgAPH0QAAPMPHvry/yWNFDoADx9EAADzDx768v8lhRQ6AA8fRAAA8w8e+vL/JX0UOgAPH0QAAPMPHvry/yV1FDoADx9EAADzDx768v8lbRQ6AA8fRAAA8w8e+vL/JWUUOgAPH0QAAPMPHvry/yVdFDoADx9EAADzDx768v8lVRQ6AA8fRAAA8w8e+vL/JU0UOgAPH0QAAPMPHvry/yVFFDoADx9EAADzDx768v8lPRQ6AA8fRAAA8w8e+vL/JTUUOgAPH0QAAPMPHvry/yUtFDoADx9EAADzDx768v8lJRQ6AA8fRAAA8w8e+vL/JR0UOgAPH0QAAPMPHvry/yUVFDoADx9EAADzDx768v8lDRQ6AA8fRAAA8w8e+vL/JQUUOgAPH0QAAPMPHvry/yX9EzoADx9EAADzDx768v8l9RM6AA8fRAAA8w8e+vL/Je0TOgAPH0QAAPMPHvry/yXlEzoADx9EAADzDx768v8l3RM6AA8fRAAA8w8e+vL/JdUTOgAPH0QAAPMPHvry/yXNEzoADx9EAADzDx768v8lxRM6AA8fRAAA8w8e+vL/Jb0TOgAPH0QAAPMPHvry/yW1EzoADx9EAADzDx768v8lrRM6AA8fRAAA8w8e+vL/JaUTOgAPH0QAAPMPHvry/yWdEzoADx9EAADzDx768v8llRM6AA8fRAAA8w8e+vL/JY0TOgAPH0QAAPMPHvry/yWFEzoADx9EAADzDx768v8lfRM6AA8fRAAA8w8e+vL/JXUTOgAPH0QAAPMPHvry/yVtEzoADx9EAADzDx768v8lZRM6AA8fRAAA8w8e+vL/JV0TOgAPH0QAAPMPHvry/yVVEzoADx9EAADzDx768v8lTRM6AA8fRAAA8w8e+vL/JUUTOgAPH0QAAPMPHvry/yU9EzoADx9EAADzDx768v8lNRM6AA8fRAAA8w8e+vL/JS0TOgAPH0QAAPMPHvry/yUlEzoADx9EAADzDx768v8lHRM6AA8fRAAA8w8e+vL/JRUTOgAPH0QAAPMPHvry/yUNEzoADx9EAADzDx768v8lBRM6AA8fRAAA8w8e+vL/Jf0SOgAPH0QAAPMPHvry/yX1EjoADx9EAADzDx768v8l7RI6AA8fRAAA8w8e+vL/JeUSOgAPH0QAAPMPHvry/yXdEjoADx9EAADzDx768v8l1RI6AA8fRAAA8w8e+vL/Jc0SOgAPH0QAAPMPHvry/yXFEjoADx9EAADzDx768v8lvRI6AA8fRAAA8w8e+vL/JbUSOgAPH0QAAPMPHvry/yWtEjoADx9EAADzDx768v8lpRI6AA8fRAAA8w8e+vL/JZ0SOgAPH0QAAPMPHvry/yWVEjoADx9EAADzDx768v8ljRI6AA8fRAAA8w8e+vL/JYUSOgAPH0QAAPMPHvry/yV9EjoADx9EAADzDx768v8ldRI6AA8fRAAA8w8e+vL/JW0SOgAPH0QAAPMPHvry/yVlEjoADx9EAADzDx768v8lXRI6AA8fRAAA8w8e+vL/JVUSOgAPH0QAAPMPHvry/yVNEjoADx9EAADzDx768v8lRRI6AA8fRAAA8w8e+vL/JT0SOgAPH0QAAPMPHvry/yU1EjoADx9EAADzDx768v8lLRI6AA8fRAAA8w8e+vL/JSUSOgAPH0QAAPMPHvry/yUdEjoADx9EAADzDx768v8lFRI6AA8fRAAA8w8e+vL/JQ0SOgAPH0QAAPMPHvry/yUFEjoADx9EAADzDx768v8l/RE6AA8fRAAA8w8e+vL/JfUROgAPH0QAAPMPHvry/yXtEToADx9EAADzDx768v8l5RE6AA8fRAAA8w8e+vL/Jd0ROgAPH0QAAPMPHvry/yXVEToADx9EAADzDx768v8lzRE6AA8fRAAA8w8e+vL/JcUROgAPH0QAAPMPHvry/yW9EToADx9EAADzDx768v8ltRE6AA8fRAAA8w8e+vL/Ja0ROgAPH0QAAPMPHvry/yWlEToADx9EAADzDx768v8lnRE6AA8fRAAA8w8e+vL/JZUROgAPH0QAAPMPHvry/yWNEToADx9EAADzDx768v8lhRE6AA8fRAAA8w8e+vL/JX0ROgAPH0QAAPMPHvry/yV1EToADx9EAADzDx768v8lbRE6AA8fRAAA8w8e+vL/JWUROgAPH0QAAPMPHvry/yVdEToADx9EAADzDx768v8lVRE6AA8fRAAA8w8e+vL/JU0ROgAPH0QAAPMPHvry/yVFEToADx9EAADzDx768v8lPRE6AA8fRAAA8w8e+vL/JTUROgAPH0QAAPMPHvry/yUtEToADx9EAADzDx768v8lJRE6AA8fRAAA8w8e+vL/JR0ROgAPH0QAAPMPHvry/yUVEToADx9EAADzDx768v8lDRE6AA8fRAAA8w8e+vL/JQUROgAPH0QAAPMPHvry/yX9EDoADx9EAADzDx768v8l9RA6AA8fRAAA8w8e+vL/Je0QOgAPH0QAAPMPHvry/yXlEDoADx9EAADzDx768v8l3RA6AA8fRAAA8w8e+vL/JdUQOgAPH0QAAPMPHvry/yXNEDoADx9EAADzDx768v8lxRA6AA8fRAAA8w8e+vL/Jb0QOgAPH0QAAPMPHvry/yW1EDoADx9EAADzDx768v8lrRA6AA8fRAAA8w8e+vL/JaUQOgAPH0QAAPMPHvry/yWdEDoADx9EAADzDx768v8llRA6AA8fRAAA8w8e+vL/JY0QOgAPH0QAAPMPHvry/yWFEDoADx9EAADzDx768v8lfRA6AA8fRAAA8w8e+vL/JXUQOgAPH0QAAPMPHvry/yVtEDoADx9EAADzDx768v8lZRA6AA8fRAAA8w8e+vL/JV0QOgAPH0QAAPMPHvry/yVVEDoADx9EAADzDx768v8lTRA6AA8fRAAA8w8e+vL/JUUQOgAPH0QAAPMPHvry/yU9EDoADx9EAADzDx768v8lNRA6AA8fRAAA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xwU2DjoANQEAALs1AQAA6av6///HBSIOOgA0AQAAuzQBAADpl/r//8cFDg46ADMBAAC7MwEAAOmD+v//xwX6DToAOwAAALs7AAAA6W/6///HBeYNOgA6AAAAuzoAAADpW/r//8cF0g06ACgAAAC7KAAAAOlH+v//xwW+DToAKQAAALspAAAA6TP6///HBaoNOgB7AAAAu3sAAADpH/r//8cFlg06AH0AAAC7fQAAAOkL+v//xwWCDToAPQAAALs9AAAA6ff5///HBW4NOgA8AAAAuzwAAADp4/n//8cFWg06ACUAAAC7JQAAAOnP+f//xwVGDToALwAAALsvAAAA6bv5///HBTINOgAtAAAAuy0AAADpp/n//8cFHg06ACsAAAC7KwAAAOmT+f//xwUKDToAKgAAALsqAAAA6X/5///HBfYMOgA/AAAAuz8AAADpa/n//8cF4gw6ACEAAAC7IQAAAOlX+f//xwXODDoAfgAAALt+AAAA6UP5///HBboMOgB8AAAAu3wAAADpL/n//8cFpgw6ACYAAAC7JgAAAOkb+f//xwWSDDoALAAAALssAAAA6Qf5///HBX4MOgA+AAAAuz4AAADp8/j//8cFagw6AA4BAAC7DgEAAOnf+P//xwVWDDoADAEAALsMAQAA6cv4///HBUIMOgALAQAAuwsBAADpt/j//8cFLgw6AAgBAAC7CAEAAOmj+P//xwUaDDoATgEAALtOAQAA6Y/4//9IizUpDDoASI093SkFAOj96///6ZX2//9IiwURDDoASI14Aei4rv//SInHSInDSIkF2ws6AOimrP//iz0ADDoAjVf+SGPSSDnCSA9H0MYEEwC7AwEAAOk0+P//SIsFzgs6ALsEAQAASI14Auhwrv//SIkFmQs6AOkT+P//SIs9rQs6ALsDAQAA6FOu//9IiQV8CzoA6fb3//9IiwWQCzoAuwQBAABIjXgC6DKu//9IiQVbCzoA6dX3//9Iiz1vCzoAuwMBAADoFa7//0iJBT4LOgDpuPf//0iLPVILOgC7AwEAAOj4rf//SIkFIQs6AOmb9///SIs9NQs6ALsDAQAA6Nut//9IiQUECzoA6X73//9Iiz0YCzoAuwMBAADovq3//0iJBecKOgDpYff//8cF2Ao6AGABAAC7YAEAAOlN9///xwXECjoAXwEAALtfAQAA6Tn3///HBbAKOgBeAQAAu14BAADpJff//8cFnAo6AHQBAAC7dAEAAOkR9///xwWICjoAcwEAALtzAQAA6f32///HBXQKOgByAQAAu3IBAADp6fb//8cFYAo6AGgBAAC7aAEAAOnV9v//xwVMCjoAZQEAALtlAQAA6cH2///HBTgKOgBkAQAAu2QBAADprfb//8cFJAo6AGkBAAC7aQEAAOmZ9v//xwUQCjoAYQEAALthAQAA6YX2///HBfwJOgBtAQAAu20BAADpcfb//8cF6Ak6AGwBAAC7bAEAAOld9v//xwXUCToAawEAALtrAQAA6Un2///HBcAJOgBdAQAAu10BAADpNfb//8cFrAk6ABcBAAC7FwEAAOkh9v//xwWYCToAVgEAALtWAQAA6Q32///HBYQJOgBjAQAAu2MBAADp+fX//8cFcAk6AGABAAC7YAEAAOnl9f//xwVcCToAXwEAALtfAQAA6dH1///HBUgJOgBeAQAAu14BAADpvfX//8cFNAk6AGwBAAC7bAEAAOmp9f//xwUgCToAggEAALuCAQAA6ZX1///HBQwJOgCBAQAAu4EBAADpgfX//8cF+Ag6AHsBAAC7ewEAAOlt9f//xwXkCDoAWwEAALtbAQAA6Vn1///HBdAIOgBaAQAAu1oBAADpRfX//8cFvAg6AFkBAAC7WQEAAOkx9f//xwWoCDoAWAEAALtYAQAA6R31///HBZQIOgCAAQAAu4ABAADpCfX//8cFgAg6AFcBAAC7VwEAAOn19P//xwVsCDoAIAEAALsgAQAA6eH0///HBVgIOgAyAQAAuzIBAADpzfT//8cFRAg6AH8BAAC7fwEAAOm59P//SIsFUwg6AA++GOmq9P//xwUhCDoAUAEAALtQAQAA6Zb0//9IiwUwCDoAgwX56DkAAQ++GOmA9P//xwX3BzoAVgEAALtWAQAA6Wz0///HBeMHOgByAQAAu3IBAADpWPT//8cFzwc6AGgBAAC7aAEAAOlE9P//xwW7BzoAZQEAALtlAQAA6TD0///HBacHOgBkAQAAu2QBAADpHPT//8cFkwc6AGkBAAC7aQEAAOkI9P//xwV/BzoAYQEAALthAQAA6fTz///HBWsHOgBtAQAAu20BAADp4PP//4sFT+g5AIPoAYkFRug5AA+FtAUAAMcFbgc6AAAAAAAx2+m68///xwUxBzoAawEAALtrAQAA6abz///HBR0HOgBdAQAAu10BAADpkvP//8cFCQc6ABcBAAC7FwEAAOl+8///gwUkBzoAAbtiAQAAxwXpBjoAYgEAAOlj8///xwXaBjoAYwEAALtjAQAA6U/z///HBcYGOgB+AQAAu34BAADpO/P//8cFsgY6AH0BAAC7fQEAAOkn8///xwWeBjoAfAEAALt8AQAA6RPz//9IizWtBjoASI09bCQFAOiB5v//6Rnx///HBXIGOgA5AQAAuzkBAADp5/L//8cFXgY6ADgBAAC7OAEAAOnT8v//xwVKBjoANwEAALs3AQAA6b/y///HBTYGOgA2AQAAuzYBAADpq/L//8cFIgY6ACkBAAC7KQEAAOmX8v//xwUOBjoAKgEAALsqAQAA6YPy//+DLe3mOQABeQrHBS3oOQARAAAASIsFCgY6AA++GOlh8v//xwXYBToAKAEAALsoAQAA6U3y///HBcQFOgAnAQAAuycBAADpOfL//8cFsAU6ADoBAAC7OgEAAOkl8v//xwWcBToATQEAALtNAQAA6RHy///HBYgFOgBMAQAAu0wBAADp/fH//8cFdAU6AEsBAAC7SwEAAOnp8f//xwVgBToAHgEAALseAQAA6dXx///HBUwFOgAdAQAAux0BAADpwfH//8cFOAU6ABwBAAC7HAEAAOmt8f//xwUkBToAGwEAALsbAQAA6Znx///HBRAFOgAaAQAAuxoBAADphfH//8cF/AQ6AEoBAAC7SgEAAOlx8f//xwXoBDoASQEAALtJAQAA6V3x///HBdQEOgBIAQAAu0gBAADpSfH//8cFwAQ6AC4BAAC7LgEAAOk18f//xwWsBDoALAEAALssAQAA6SHx///HBZgEOgBHAQAAu0cBAADpDfH//8cFhAQ6AE8BAAC7TwEAAOn58P//xwVwBDoAIwEAALsjAQAA6eXw///HBVwEOgAiAQAAuyIBAADp0fD//8cFSAQ6ACEBAAC7IQEAAOm98P//xwU0BDoAHwEAALsfAQAA6anw///HBSAEOgAvAQAAuy8BAADplfD//8cFDAQ6ADABAAC7MAEAAOmB8P//xwX4AzoALQEAALstAQAA6W3w///HBeQDOgBVAQAAu1UBAADpWfD//8cF0AM6AFEBAAC7UQEAAOlF8P//xwW8AzoAOwEAALs7AQAA6THw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/0yLbCQgg/sdfzwPH0QAAEiLNamwOQC/IAAAAIPDAehcev//g/sededIi3QkGDH/ugUAAADoZnb//0iJx+jOdP//6Rn9//+/CgAAADHb6O1z///ruzH/ugUAAABIjTU9YwUA6Dh2//9Iie5IiccxwOi7VAEA6S7h//9IiwVfsDkAMf+6BQAAAEiNNeFTBQBIiUQkGOgHdv//SIt0JBhIiccxwOiIVAEA6dzx//9Iiy0ssDkAMf+6BQAAAEiNNTN4BQDo2XX//0iJx0iJ7jHA6FxUAQDpRu3//7oFAAAASI0162IFADH/SIlEJBjor3X//0iJxzHA6DVUAQBIiy3erzkASItMJBjpIe7//zH/ugUAAABIjTXeYQUA6IF1//9IiccxwOgHVAEA6Yro//8x/7oFAAAASI01jGEFAOhfdf//SInHMcDo5VMBAOmz6P//Mf+6BQAAAEiNNQpiBQDoPXX//0iJ7kiJxzHA6MBTAQDpM+D//70IAAAAMdK+EAAAAOlb9f//ugUAAABIjTWpdwUAMf+7FwAAAOgCdf//vwEAAABIicYxwOgjfP//SIs1DK85AL8gAAAA6MJ4//+D6wF16roFAAAASI01dHcFADH/6Mp0//+/AQAAAEyNJVV3BQBIicYxwOjke///SIsdHdc5ALoFAAAAMf9IjTVadwUA6Jp0//9Iidq/AQAAAEiJxjHA6Lh7///oI3b//0iLEEiJw0iJxUiF0nQcTInmvwEAAAAxwEiDxQjoknv//0iLVQBIhdJ15EiJ3+ixcf//vwoAAADo53H//0iLHbDWOQAx/7oFAAAASI01BHcFAOgtdP//SInavwEAAABIicYxwOhLe///SIs9NK45AOiPPwEAvwoAAADopXH//0iLHW7WOQAx/7oFAAAASI016FEFAOjrc///SInavwEAAABIicYxwOgJe///ugUAAAAx/0iNNbh2BQBIix3krTkA6L9z//+/AQAAAEiJxjHA6OB6//8x/7oFAAAASI01wlEFAOidc///vgEAAABIid9IicIxwOgrff//Mf+6BQAAAEiNNVVSBQDoeHP//74BAAAASInfSInCMcDoBn3//zH/ugUAAABIjTVoUgUA6FNz//++AQAAAEiJ30iJwjHA6OF8//8x/7oFAAAASI01y1IFAOguc///vgEAAABIid9IicIxwOi8fP//Mf+6BQAAAEiNNdZSBQDoCXP//74BAAAASInfSInCMcDol3z//zH/ugUAAABIjTXxUgUA6ORy//++AQAAAEiJ30iJwjHA6HJ8//8x/7oFAAAASI01DFMFAOi/cv//vgEAAABIid9IicIxwOhNfP//Mf+6BQAAAEiNNTdTBQDomnL//74BAAAASInfSInCMcDoKHz//zH/ugUAAABIjTVSUwUA6HVy//++AQAAAEiJ30iJwjHA6AN8//8x/7oFAAAASI01fVMFAOhQcv//vgEAAABIid9IicIxwOjee///Mf+6BQAAAEiNNbBTBQDoK3L//74BAAAASInfSInCMcDouXv//zH/ugUAAABIjTXbUwUA6AZy//++AQAAAEiJ30iJwjHA6JR7//8x/7oFAAAASI01/lMFAOjhcf//vgEAAABIid9IicIxwOhve///Mf+6BQAAAEiNNSFUBQDovHH//74BAAAASInfSInCMcDoSnv//zH/ugUAAABIjTU0VAUA6Jdx//++AQAAAEiJ30iJwjHA6CV7//8x/7oFAAAASI01R1QFAOhycf//vgEAAABIid9IicIxwOgAe///Mf+6BQAAAEiNNWJUBQDoTXH//74BAAAASInfSInCMcDo23r//zH/ugUAAABIjTWFVAUA6Chx//++AQAAAEiJ30iJwjHA6LZ6//8x/7oFAAAASI01oFQFAOgDcf//vgEAAABIid9IicIxwOiRev//Mf+6BQAAAEiNNcNUBQDo3nD//74BAAAASInfSInCMcDobHr//zH/ugUAAABIjTX+VAUA6Llw//++AQAAAEiJ30iJwjHA6Ed6//8x/7oFAAAASI01KVUFAOiUcP//vgEAAABIid9IicIxwOgiev//Mf+6BQAAAEiNNVRVBQDob3D//74BAAAASInfSInCMcDo/Xn//zH/ugUAAABIjTWXVQUA6Epw//++AQAAAEiJ30iJwjHA6Nh5//8x/7oFAAAASI01wlUFAOglcP//vgEAAABIid9IicIxwOizef//Mf+6BQAAAEiNNe1VBQDoAHD//74BAAAASInfSInCMcDojnn//zH/ugUAAABIjTUYVgUA6Ntv//++AQAAAEiJ30iJwjHA6Gl5//8x/7oFAAAASI01O1YFAOi2b///vgEAAABIid9IicIxwOhEef//Mf+6BQAAAEiNNU5WBQDokW///74BAAAASInfSInCMcDoH3n//zH/ugUAAABIjTV5VgUA6Gxv//++AQAAAEiJ30iJwjHA6Pp4//8x/7oFAAAASI01nFYFAOhHb///vgEAAABIid9IicIxwOjVeP//Mf+6BQAAAEiNNbdWBQDoIm///74BAAAASInfSInCMcDosHj//zH/ugUAAABIjTXSVgUA6P1u//++AQAAAEiJ30iJwjHA6It4//8x/7oFAAAASI019VYFAOjYbv//vgEAAABIid9IicIxwOhmeP//Mf+6BQAAAEiNNThXBQDos27//74BAAAASInfSInCMcDoQXj//zH/ugUAAABIjTVbVwUA6I5u//++AQAAAEiJ30iJwjHA6Bx4//8x/7oFAAAASI01flcFAOhpbv//vgEAAABIid9IicIxwOj3d///Mf+6BQAAAEiNNaFXBQDoRG7//74BAAAASInfSInCMcDo0nf//zH/ugUAAABIjTXUVwUA6B9u//++AQAAAEiJ30iJwjHA6K13//8x/7oFAAAASI01/1cFAOj6bf//vgEAAABIid9IicIxwOiId///Mf+6BQAAAEiNNSpYBQDo1W3//74BAAAASInfSInCMcDoY3f//zH/ugUAAABIjTVFWAUA6LBt//++AQAAAEiJ30iJwjHA6D53//8x/7oFAAAASI01cFgFAOiLbf//vgEAAABIid9IicIxwOgZd///Mf+6BQAAAEiNNZtYBQDoZm3//74BAAAASInfSInCMcDo9Hb//0iLPW2nOQDoGDoBAL8KAAAA6N5q//+6BQAAAEiNNTBwBQAx/+grbf//vwEAAABIjRWfWAUASInGMcDoRXT//zH/6P50//8x/7oFAAAASI01qFgFAOj7bP//SInuSInHMcDofksBAOnx1///Mf+6BQAAAEiNNQtbBQDo1mz//0iJxzHA6FxLAQDpz9f//+gCbf//ZpDzDx76SIM6AHQWx0IIAQAAALgBAAAAw2YPH4QAAAAAAEiJMjHAw2YuDx+EAAAAAABIixdFMcBIOT2DzDkASIn4QQ+UwEiF0nRiMf9IjTXugQUAg3oID3dTi0oISGMMjkgB8T7/4Q8fAEiF/3RTRTHASInQSIsSSIXSddfDDx9AAEiJ0EiLEjH/SIXSdcXr7JBIhf90FkiLUjhIhdJ0CkiDuggBAAAAdQhIifjD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BAUATIn36OHs/v9IhcAPhIgAAABIix1xKDkASIXbdRXrxGYuDx+EAAAAAABIi1swSIXbdLFIi3MQMdJMiffoyef+/4XAdeVMielMieJIid5Iie/odLv//+vSZpBIix0pKDkASIXbD4R6////SIneTInpTIniSInv6E+7//9Ii1swSIXbdeZIg8QIW11BXEFdQV5BX8MPH4AAAAAATIn36Cj+//9IhcAPhDn///9Ig8QITInpTIniSInvW0iJxl1BXEFdQV5BX+kAu///SIX/dGtVSI0tg3r//1NIiftIg+wIi0MIg/gEdEN2MYP4DXQwg/gPdQ9Iiz2gRTkA6Mv///8PHwBIixtIhdt11UiDxAhbXcNmDx+EAAAAAACFwHXkSIt7EOij////69mQMdJIie5Iid/oI/7//+vJkMNmZi4PH4QAAAAAAA8fQABIhf8PhJEAAABBVEyNJT63//9VSIn1U0iJ++sRDx9AAIP4BHQ7SIsbSIXbdCWLQwiD+A10S4P4D3XmSIs9D0U5AEiJ7ui3////9oWQAAAABHXTW11BXMNmDx+EAAAAAABIiepMieZIid/oov3///aFkAAAAAR1rltdQVzDDx9AAEiLexBIie7odP////aFkAAAAAR1kFtdQVzDww8fRAAASIX/D4SHAgAAQVdMjT0m/QQAQVZBvgECAABBVUyNLVsDBQBBVEmJ9FVIidVTSIn7SIPsCIN7CA93VotDCEljBIdMAfg+/+BmDx+EAAAAAABIi3sY6CfW//+LhYwAAACD+AIPhJgCAAAx9oP4A0APlcaNtHYAAQAASItFOEiFwA+EYQEAAAlwIA8fhAAAAAAASIsbSIXbdZxIg8QIW11BXEFdQV5BX8NmDx+EAAAAAABIiz35QzkASInqTInm6D7///9IixtIhdsPhWb////ryEyLYxBIixtIhdsPhVT////rtmYPH0QAAEiLexBIiepMieboCf///0iLG0iF2w+FMf///+uTDx8ASItDUEiFwHQKg3gYAQ+EfQEAAEiJ6kiNNZvj//9Iid/oQ/z//0iDPRMnOQAAD4VV////SItDIEiFwA+ESP///w8fhAAAAAAASItwCEiF9nQYuQcAAABMie/zpg+XwoDaAITSD4S7AQAASIsASIXAddfpEv///2aQSItDIEiFwHQLi0AYhcAPhfz+//9Ii3sQ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/0iDxAhbXUFcQV3DSInaSI08KDH2SCnq6G/X+v/r1GYuDx+EAAAAAAAPHwDzDx76QVdJiddBVkmJ9kFVQYn9QVRMjSUEhjQAVUiNLQSGNABTTCnlSIPsCOi3w/r/SMH9A3QfMdsPH4AAAAAATIn6TIn2RInvQf8U3EiDwwFIOd116kiDxAhbXUFcQV1BXkFfw2ZmLg8fhAAAAAAA8w8e+sMAAADzDx76SIPsCEiDxAjDAAAAAAAAAAAAAAABAAIAU3RhY2sgbm93ACAlZAB0b2tlbgBudGVybQAlcyAlcyAoACVQJUY6JVM6ICVzIGluICVzCgAlUCVGOiVTOiAlcwoAU3RhcnRpbmcgcGFyc2UKAFN0YWNrIHNpemUgaW5jcmVhc2VkIHRvICVsdQoARW50ZXJpbmcgc3RhdGUgJWQKAFJlYWRpbmcgYSB0b2tlbjogAE5vdyBhdCBlbmQgb2YgaW5wdXQuCgBOZXh0IHRva2VuIGlzAFNoaWZ0aW5nACAgICQlZCA9IABNUkkgc3R5bGUgc2NyaXB0AD8AZmlsbCB2YWx1ZQAqZGVmYXVsdCoAUFRfR05VX1NUQUNLAEZJTEVIRFIAUEhEUlMAVkVSU0lPTiBzY3JpcHQAZ2xvYmFsAGxvY2FsAGV4dGVybgAtPiAkJCA9AHN5bnRheCBlcnJvcgBFcnJvcjogZGlzY2FyZGluZwBFcnJvcjogcG9wcGluZwBtZW1vcnkgZXhoYXVzdGVkAENsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkAENsZWFudXA6IHBvcHBpbmcAUFRfR05VX0VIX0ZSQU1FAFBUX05VTEwAUFRfTE9BRABQVF9EWU5BTUlDAFBUX0lOVEVSUABQVF9OT1RFAFBUX1NITElCAFBUX1BIRFIAUFRfVExTACRlbmQAJHVuZGVmaW5lZABJTlQATE5BTUUAUExVU0VRAE1JTlVTRVEATVVMVEVRAERJVkVRACc9JwBMU0hJRlRFUQBSU0hJRlRFUQBBTkRFUQBPUkVRACc/JwAnOicAT1JPUgBBTkRBTkQAJ3wnACdeJwAnJicAJzwnACc+JwBHRQBMU0hJRlQAUlNISUZUACcrJwAnLScAJyonACcvJwAnJScAVU5BUlkAJygnAEFMSUdOX0sAQkxPQ0sAQklORABTUVVBRABMT05HAFNIT1JUAEJZVEUAU0VDVElPTlMASU5TRVJUX0sAQUZURVIAQkVGT1JFAERBVEFfU0VHTUVOVF9BTElHTgBEQVRBX1NFR01FTlRfUkVMUk9fRU5EAERBVEFfU0VHTUVOVF9FTkQAU09SVF9CWV9OQU1FAFNPUlRfQllfQUxJR05NRU5UAFNPUlRfTk9ORQBTT1JUX0JZX0lOSVRfUFJJT1JJVFkAJ3snACd9JwBTSVpFT0ZfSEVBREVSUwBPVVRQVVRfRk9STUFUAEZPUkNFX0NPTU1PTl9BTExPQ0FUSU9OAE9VVFBVVF9BUkNIAElOSElCSVRfQ09NTU9OX0FMTE9DQVRJT04ARk9SQ0VfR1JPVVBfQUxMT0NBVElPTgBTRUdNRU5UX1NUQVJUAElOQ0xVREUATUVNT1JZAFJFR0lPTl9BTElBUwBMRF9GRUFUVVJFAE5PTE9BRABEU0VDVABDT1BZAElORk8AT1ZFUkxBWQBERUZJTkVEAFRBUkdFVF9LAFNFQVJDSF9ESVIATUFQAEVOVFJZAE5FWFQAU0laRU9GAEFMSUdOT0YATE9BREFERFIATUFYX0sATUlOX0sAU1RBUlRVUABITEwAU1lTTElCAE5PRkxPQVQATk9DUk9TU1JFRlMATk9DUk9TU1JFRlNfVE8AT1JJR0lOAEZJTEwATEVOR1RIAENSRUFURV9PQkpFQ1RfU1lNQk9MUwBHUk9VUABPVVRQVVQAQ09OU1RSVUNUT1JTAEFMSUdOTU9EAFNVQkFMSUdOAFBST1ZJREUAUFJPVklERV9ISURERU4AQVNfTkVFREVEAENISVAAQUJTT0xVVEUATkVXTElORQBFTkRXT1JEAE9SREVSAE5BTUVXT1JEAEFTU0VSVF9LAExPRzJDRUlMAFBVQkxJQwBERUZTWU1FTkQAQkFTRQBUUlVOQ0FURQBSRUwASU5QVVRfU0NSSVBUAElOUFVUX01SSV9TQ1JJUFQASU5QVVRfREVGU1lNAENBU0UARVhURVJOAFZFUlNfVEFHAFZFUlNfSURFTlRJRklFUgBHTE9CQUwATE9DQUwAVkVSU0lPTksASU5QVVRfVkVSU0lPTl9TQ1JJUFQAS0VFUABPTkxZX0lGX1JPAE9OTFlfSUZfUlcAU1BFQ0lBTABJTlBVVF9TRUNUSU9OX0ZMQUdTAEFMSUdOX1dJVEhfSU5QVVQARVhDTFVERV9GSUxFAElOUFVUX0RZTkFNSUNfTElTVAAnLCcAJzsnACcpJwAnWycAJ10nACchJwAnficAJGFjY2VwdABmaWxlbmFtZQBkZWZzeW1fZXhwcgAkQDEAbXJpX3NjcmlwdF9maWxlACRAMgBtcmlfc2NyaXB0X2xpbmVzAG1yaV9zY3JpcHRfY29tbWFuZAAkQDMAb3JkZXJuYW1lbGlzdABtcmlfbG9hZF9uYW1lX2xpc3QAbXJpX2Fic19uYW1lX2xpc3QAY2FzZXN5bWxpc3QAZXh0ZXJuX25hbWVfbGlzdAAkQDQAZXh0ZXJuX25hbWVfbGlzdF9ib2R5ACRANQBpZmlsZV9saXN0AGlmaWxlX3AxACRANgAkQDcAaW5wdXRfbGlzdAAkQDgAaW5wdXRfbGlzdDEAQDkAQDEwAEAxMQBzZWNfb3JfZ3JvdXBfcDEAc3RhdGVtZW50X2FueXdoZXJlACRAMTIAd2lsZGNhcmRfbmFtZQB3aWxkY2FyZF9tYXliZV9leGNsdWRlAGZpbGVuYW1lX3NwZWMAc2VjdGlvbl9uYW1lX3NwZWMAc2VjdF9mbGFnX2xpc3QAc2VjdF9mbGFncwBleGNsdWRlX25hbWVfbGlzdABzZWN0aW9uX25hbWVfbGlzdABpbnB1dF9zZWN0aW9uX3NwZWNfbm9fa2VlcABpbnB1dF9zZWN0aW9uX3NwZWMAJEAxMwBzdGF0ZW1lbnQAJEAxNAAkQDE1AHN0YXRlbWVudF9saXN0AHN0YXRlbWVudF9saXN0X29wdABsZW5ndGgAZmlsbF9leHAAZmlsbF9vcHQAYXNzaWduX29wAGFzc2lnbm1lbnQAb3B0X2NvbW1hAG1lbW9yeV9zcGVjX2xpc3Rfb3B0AG1lbW9yeV9zcGVjX2xpc3QAbWVtb3J5X3NwZWMAJEAxNgAkQDE3AG9yaWdpbl9zcGVjAGxlbmd0aF9zcGVjAGF0dHJpYnV0ZXNfb3B0AGF0dHJpYnV0ZXNfbGlzdABhdHRyaWJ1dGVzX3N0cmluZwBzdGFydHVwAGhpZ2hfbGV2ZWxfbGlicmFyeQBoaWdoX2xldmVsX2xpYnJhcnlfTkFNRV9saXN0AGxvd19sZXZlbF9saWJyYXJ5AGxvd19sZXZlbF9saWJyYXJ5X05BTUVfbGlzdABmbG9hdGluZ19wb2ludF9zdXBwb3J0AG5vY3Jvc3NyZWZfbGlzdABtdXN0YmVfZXhwACRAMTgAbWVtc3BlY19hdF9vcHQAb3B0X2F0AG9wdF9hbGlnbgBvcHRfYWxpZ25fd2l0aF9pbnB1dABvcHRfc3ViYWxpZ24Ac2VjdF9jb25zdHJhaW50ACRAMTkAJEAyMAAkQDIxACRAMjIAJEAyMwAkQDI0ACRAMjUAJEAyNgAkQDI3ACRAMjgAJEAyOQAkQDMwACRAMzEAYXR5cGUAb3B0X2V4cF93aXRoX3R5cGUAb3B0X2V4cF93aXRob3V0X3R5cGUAb3B0X25vY3Jvc3NyZWZzAG1lbXNwZWNfb3B0AHBoZHJfb3B0AG92ZXJsYXlfc2VjdGlvbgAkQDMyACRAMzMAJEAzNABwaGRycwBwaGRyX2xpc3QAcGhkcgAkQDM1ACRAMzYAcGhkcl90eXBlAHBoZHJfcXVhbGlmaWVycwBwaGRyX3ZhbABkeW5hbWljX2xpc3RfZmlsZQAkQDM3AGR5bmFtaWNfbGlzdF9ub2RlcwBkeW5hbWljX2xpc3Rfbm9kZQBkeW5hbWljX2xpc3RfdGFnAHZlcnNpb25fc2NyaXB0X2ZpbGUAJEAzOAAkQDM5AHZlcnNfbm9kZXMAdmVyc19ub2RlAHZlcmRlcAB2ZXJzX3RhZwB2ZXJzX2RlZm5zAEA0MABANDEAb3B0X3NlbWljb2xvbgAAAAAAJVA6JXM6IGZpbGUgZm9ybWF0IG5vdCByZWNvZ25pemVkOyB0cmVhdGluZyBhcyBsaW5rZXIgc2NyaXB0CgAAAFJlZHVjaW5nIHN0YWNrIGJ5IHJ1bGUgJWQgKGxpbmUgJWx1KToKAAAlUCVGOiB1bnJlY29nbmlzZWQga2V5d29yZCBpbiBNUkkgc3R5bGUgc2NyaXB0ICclcycKAAAAACVYJVA6JVM6IHVua25vd24gcGhkciB0eXBlIGAlcycgKHRyeSBpbnRlZ2VyIGxpdGVyYWwpCgAAJVglUDolUzogUEhEUlMgc3ludGF4IGVycm9yIGF0IGAlcycKAAAAAAAAAAAAAAAAAAAAAAAAAABqAPv/3uz6/3jv+v9i7/r/UOf6/1Dn+v9Q5/r/UOf6/znv+v8m7/r/UOf6/1Dn+v8U7/r/mQP7/4cD+/95A/v/ZwP7/1UD+/9DA/v/MQP7/x8D+/8NA/v/+wL7/1Dn+v9Q5/r/7QL7/9kC+//FAvv/twL7/6kC+/9Q5/r/UOf6/5YC+/8W7Pr/hgL7/1Dn+v/dAPv/zwD7/1Dn+v/BAPv/swD7/6UA+/+XAPv/wuz6/1Dn+v9Q5/r/IOz6/xbs+v9UAfv/RAH7/zQB+/8qAfv/Fuz6/1Dn+v9Q5/r/UOf6/1Dn+v9Q5/r/UOf6/1Dn+v9Q5/r/UOf6/1Dn+v9Q5/r/UOf6//sA+//rAPv/cwL7/1wC+/8+Avv/LgL7/x8C+/8QAvv/BAL7/1Dn+v/6Afv/8AH7/+IB+//PAfv/Fuz6/58B+/+RAfv/UOf6/4EB+/9uAfv/zf36/7/9+v+1/fr/Fuz6/5L9+v99/fr/aP36/1b9+v/D/vr/sf76/zns+v8X//r/Oez6/x39+v857Pr/1f76/1Dn+v9Q5/r/UOf6/1Dn+v9aAPv/UOf6/yDs+v8fAPv/EQD7/wAA+//v//r/x//6/5//+v9Q5/r/fP/6/1n/+v9Q5/r/jv76/2v++v9I/vr/Jf76/wL++v/f/fr/Nv/6//r8+v/A/Pr/hvz6/1z8+v85/Pr/Fvz6/+f7+v+4+/r/fvv6/0T7+v8u+/r/8vr6/9r6+v+6+vr/UOf6/6v6+v+c+vr/UOf6/436+v9Q5/r/fvr6/2X6+v9Q5/r/U/r6/0X6+v8g7Pr/8/n6/375+v8W7Pr/UOf6/1Dn+v9Q5/r/UOf6/5/5+v+R+fr/5fn6/9f5+v/J+fr/rfn6/1f5+v9J+fr/PPn6/y/5+v8i+fr/Ffn6/wj5+v/7+Pr/7vj6/+H4+v9Q5/r/UOf6/8Ht+v+F7fr/Zu36/0rt+v8r7fr/UOf6/1Dn+v9Q5/r/UOf6/1Dn+v9Q5/r/UOf6/1/4+v9Q5/r/TPj6/xbs+v8O+Pr/+vf6/1Dn+v9Q5/r/UOf6/1Dn+v/A9/r/pvf6/5j3+v9Q5/r/jPf6/373+v9w9/r/UOf6/2L3+v9Q5/r/U/f6/0f3+v859/r/Fvf6//P2+v8g7Pr/xPb6/6z2+v+e9vr/h/b6/2/2+v9h9vr/Sfb6/y32+v8R9vr/9fX6/9n1+v+99fr/ofX6/4X1+v9p9fr/TfX6/zH1+v8V9fr/+fT6/930+v/B9Pr/pfT6/4n0+v9p9Pr/TfT6/zH0+v8Z9Pr/AvT6/+zz+v/U8/r/vPP6/6Tz+v+M8/r/dPP6/1zz+v9E8/r/KPP6/wzz+v/w8vr/2PL6/xME+//7A/v/4wP7/8cD+/+rA/v/2fH6/8Hx+v+p8fr/ofL6/5Py+v+F8vr/d/L6/3js+v8J//r/eOz6/5Pw+v+17Pr/K/L6/3js+v8w8Pr/wvD6/7Xw+v+17Pr/IOz6/4bs+v858vr/aez6/yHu+v9Q5/r/IOz6/4bs+v+c+Pr/aez6/+fu+v9Q5/r/IOz6/6Lu+v9Q5/r/j+76/xbs+v/w8fr/Kuz6/yrs+v8q7Pr/Kuz6/1Dn+v+V7Pr/lez6/3Hw+v9b7Pr/E+76/8fy+v+58vr/W+z6/wvt+v/97Pr/0Oz6/2Dw+v9S8Pr/GvH6/1Dn+v8H8fr/aez6/8/w+v9Q5/r/UOf6/1Dn+v9Q5/r/IOz6/xbs+v+E8fr/mu/6/8r4+v/I5vr/RPH6/1vs+v+B7vr/Kvj6/6Ts+v9Q5/r/UOf6/1Dn+v+n/fr/rQH7/6Ts+v9kAfv/Fuz6/1Dn+v9Q5/r/Ge36/3/w+v9l+fr///H6/xTy+v8A7vr/PfD6/6Dw+v/0/vr/PP36/2bx+v/G7vr/QO76/93t+v/X9vr/Evr6/z4A+/+x+Pr/5vD6/3n4+v8JAfv/dAD7/2Du+v/X9/r/AAAAAAACAgICAgIBAAQAAgMAAgQBAQIBBAQDAgQDBAQEBAQCAgIEBAICAgIABQIAAwIAAQMBAwABAwACAQIDAAICAAEBAQEBAQEBAQEEBAQECAQBAQEEAAUEAAUEBAQDAwYEAAIBAwIBAwIABQAHAAYEAgIABAIABwEBAQEFAQQEAQQEBAcHBwcEAQMEAgEDAQECAwQEBQEABQIBAQEEAQQEAAgABQIBAAEBAQEBAQECAAEBAQEBAQEBAQEDAwYGBgEABAEAAwEABwAFAwMAAwECAQIEBAMDAQQDAAEBAAIDAAICAwQCAgIDAwMDAwMDAwMDAwMDAwMDBQMDBAEBBAQEBAQEBAYGBgQGBAEGBgYEBAQDAAQABAABAAQAAQEBAAAAAAAAFAAAAAAAEgAABwAFAQEBAQEDAAIDAgYKAgEAAQIAAAMAAAAACwQAAgAABgEAAwUAAwACAQIEAgACAAUBAgQFBgECAAIEBAgBAQMDAAkABwEDAQMBAwABAAAAAAAAAAAAnACdAJ0AnQCdAJ0AngCgAJ8AogChAKMAowCkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApQCkAKQApACmAKYApgCnAKcAqACoAKkAqQCpAKsAqgCsAKwArACuAK0ArwCvALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACxALAAsACyALAAsACwALAAsACwALAAsAC0ALMAtQC1ALUAtQC1ALUAtgC1ALcAtQC4ALUAuQC6ALoAugC7ALsAvAC7AL0AvQC9AL4AvgC/AL8AvwDAAMAAwADAAMAAwADAAMAAwADBAMEAwgDDAMMAxADEAMUAxQDFAMUAxQDFAMYAxwDGAMgAyADIAMgAyADIAMgAyADJAMgAygDIAMsAywDMAMwAzQDNAM0AzQDNAM4AzwDPANAA0ADQANAA0ADQANAA0ADRANEA0gDSANIA0gDSANMA0wDUANUA1QDWANYA2ADXANkA1wDaANsA3ADcAN0A3QDeAN4A3wDgAOAA4QDhAOIA4wDjAOQA5ADlAOUA5QDnAOYA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6QDpAOoA6gDrAOsA7ADsAO0A7QDuAO4A7gDuAPAA8QDyAPMA9ADvAPUA9gD3APgA+QDvAPoA+wDvAPwA7wD9AP0A/QD9AP0A/gD+AP4A/wD/AP8A/wAAAQABAQEBAQIBAgEDAQMBBAEFAQYBBwEEAQgBCQEJAQsBDAEKAQ0BDgEOAQ4BDwEPAREBEAESARIBEwEUARYBFQEYARcBGQEZARoBGgEaARsBGwEcARwBHAEcARwBHQEdAR0BHQEeAR0BHwEdAR0BHQEdAR0BHQEdASABIAEAAAAAAAAAAAAAAAAAAAAAgACBAIIAiwCUAJ0ArQCuAKEAogCfAKAAFQEWARABEQEAAK8AowAEADoAhgAZARoBOgASARMBBAAuAC8AMAA9AD4APwBAAEEAQwBEAEUARgBNAE4ATwBQAFgAWQBaAFsAXABdAF4AYwBkAGUAagBrAGwAdwCEAJYAsAC5ALsA0gDUAN8A4ADiAOQACAEXARgBBAAmAEMAZwBuAG8AcABxAHIAdAB1AHYAeQB6AHwAfQB+AIMAhACFAKQACgAEAIQAhwCIAIkAHAEdAToAGgGIAIkAFAEdARMBBgAHAAgACQAKAAsADAANAA4A0AA6ADoAMQAyACUAJQAEAJ4AOgAlACUAJQAlACUAJQAlACUAJQAlACUAJQCxACUAJQAlACUAvAAlAJUAlgDRAIoABACeAAQAAwAEAB4AHwAlACYAJwAzADQANQA8AEIATABRAFIAUwBUAFUAVgBXAF8AYQBxAHcAeACTAJoAmwDoAAQABACoAAQApwCmAAQABAAEAOgABAADAAQAqQCqAKsABABzAOgABAAQABAAOwCWABwBOwCWAOYA5wDmALoACQEEAAQABAAEALIABABDANUA1gDXAAQABAAEAJ4AngAEAJ4AlwCeAOEA4wAEAOUA5QCzALQAJQCeAAQABAAEACUAqgA6AAoAlQClAAoAlQDoAOgA6AAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUA6ADoAA8AEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAlQAKAJUA6ACVAJUABACVAAoAlQDoAJUAlQAEAKwAOgAdAR0BlgAEAIQAhwCIAIkAOwCWAOgABAA7AEMASwBkALsA7wAEADsACgGVAJcAlwCvANgAngA7AJUA0wCVAJcAlwCXAJcAlwCXAJcA0wCXANMAlQDlAJcAlwCXAAQABQBtALUAswCXAAoACgAKAOgAlwAZAegA6ACjAOgA6ACXAOgA6ADoAOgA6AAEAAQA6AAEAAQABAAEAOgA6AAEAAQA6ADoAOgABADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAAQABAAEAOgA6AADAAQABAAEAJUAHwGWAJYABACGAJYAGwHwAJ4A9QD6AAsBBAAkACUA3ADZANcABACeAJ4A5QAlAAQABQBtAJUAlwDmAOYA5gCVADsAJACVAJcAlwCVAJUAlwCVAJcAlwCXAJcAlwCXAJUAlQCXAJcAlwCVAJcAlwAQAAQAHQGJADoAhgCWACUAKADoAP4A/wD8ABAA6AAAAf8A6AANAZUABACaAN0A3gAQANUAlwC2ACUABAAFAG0AlwCXAJcABADoAOgA6ADoAOgA6AAEAOgAlgAgARAAHgFHAEgASQBKAEsAlwD9ACUAJQD+ABAAaADqALoAEABdAAEB+wAEAGgADgEEAAQAlwDeAF8A2gAkALUAuAAlAJcAlwCXAJcAlwCXAJcAlwA7AB0BHQGXAOgAEAAlACYA6wAkAOoAOgAlAA8BJQAMAZcACgDTAJcAtQC3AJYAIAGXAOgAJQCRAOwAaQDtALoA6AAOAegAlgDmAGEA2wCXALUAOwAnAP4AlwDoAO0AJQD2ADsAlwCXAAoAlwAlABAAlwDxAOgAOgAOAeYA6ACNAI4AjwDuAJcA9wCXADoABAH+APIABAA7ABAABAAPACAAKQAqACsALAAtADYAOABDAGAAYgBmAHcAjACQAJIAlgCYAL0AvgC/AMIAxQDGAMgAywDMAM0A0gAFAfgAJQAlAJ4AJQDJACUAJQAlAAQANgA3ADgAOQC+AMAAxAAlAAQANgCYAL8AyAA7ACUA0QA6ABkAAgFmAL4AvgDKAM4A5gAlAMcABADBAL0AwwAlACUAJQAlAJkA0wDEACUAxAAlAPMA5gDMAAQAaADpAJcAlwCXAMwAlwDoAAQAxQAVAJcAlwC9ADYANwC+ADYANwC+AL4AvgDAAJcAmQDEAAIBlwA7ABkAAwEkAJUAlwAEAL0AJQAlAJcAJQAlAJcAlwCXAJcA6QAGAQQACgAQAM8ABAC+AL4AvgC+AAMBAwHOAAQA+QCXAJcAlwCXAJcAzwDPANMA0QCXAJcAlwCXAPQABwHTANMAAAAAAE0AcQDfABcABAASAHYASwAEAIoAVwAZAAQA6gDrAAQA7gFeAAQABAAEAAUAFQAEAAUApwIPAAQAAAIPAA8AJAAEAAUA8QEEAAQASQIEAAoABAAEAAUAIAAEAAUAIAAgADoABAAEAAUACgCFAjsAOgA7AJUAhgCXALEChgC6AoMAhAC9AoYAhwA2ADYAOAA4AAQAjQCWAG8CAACWADICnACdAAoABAAEAKQCBACVABAABAAEAJkAOwDRAg8ADwDbAg8AlQBDAJcADwAEAMMCtAC1AAQAtwDsAMkCUQIgACAADwAgAL8AwwIEACAAVALsAkcCyQKVADoAhgBtAJkAOwBtACAACgCGADYANwDTADYANwBtAGgANgA3ADgAOQAdA5UAlQBtAJcAJQBtACcAlwCXAN0AmgBtADoAlQCaAJAAkgCSAJcAgQI6AJUAmACYAJUA9gCXAAQA+QD6AJcA/AD9AJUAlQCXAAEBAgEDAQQBBQGVAJUACAGXAMsAzACVAA0BDgGVAAQAEQESARMBZgAxADIAFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAGSAJIAYwGSADoAMgEzAZIAlQCEAJcAJQCHAIgAiQAgACEAIgAlAJIAhACVAJYAhwCIAIkAjQCOAI8ABABuAW8BcAEDAAQARwE6AAMABAAPACUAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAlQBgAZcAYgEEAB4AHwBHAEgASQBKAEsAJQAmACcADwCEABgDGQOHAIgAiQANAw4DJQAlADMANAA1ACUAJQAlACAAJQAlADwAJQCKACUAJQCEAEIAUgGHAIgAiQBHAEgASQBKAEsATAAlACUAJQAvAlEAUgBTAFQAVQBWAFcAgACBAIIAJQAlAHMBJQBfAAQAYQAEAIsABAAEALUBBAC3AbgBuQEEAJQABAAEAAQAlwBxAAQAAwBzAAQABAB3AHgAHAAdAB4AHwAgACEAIgAEANABOwAQANMB1AEQANYBlgA7AJYAlQAEAJcA3QHeAQQABAAEAJMABAAEAOUBlwADAAQAmgCbAAQABACuAQoABgAHAAgACQAKAAsADAANAA4AOwAEACUABAAEAAQABAAlAEMAOgAeAB8AlQCVACUAJQBLACUAJgAnADoAUAAlAB4AHwAgACEAIgAlACUAlQAzADQANQAEACUAHAIkAJUAlQA8AGQAJQAlACUAJQBCAGoAawBsAE0CJQAlACUAJQAlAEwAJQAlACUAdwBRAFIAUwBUAFUAVgBXAEMAJQAlACUAlgAKAEICXwBLAGEAOwCWAEgCUABKApcAOwBwApcACgAKAAQAEwIUAgQAcQBWAgQABAADAAQAdwB4AGQABACXAAoAlwAEAGoAawBsAJcAlwCXAAQAlwBrAgQAlwAEAJcAdwAEAHICBAAeAB8ABACTAAQAlQCXACUAJgAnAJoAmwAGAAcACAAJAAoACwAMAA0ADgAzADQANQAcAwQABAA7AAQAlgA8AJcABAAlACUAQwBCAJYAKgMrA5MCBADBAksAOgAQAEwAJQBQAJUAlwBRAFIAUwBUAFUAVgBXAAMABAAEAAQAlwCXAJcAXwCXAGEAZACXAJcAlwCXAJUAagBrAGwAlwCXAJcAlwCWABAAcQAlAB4AHwB3AMwCdwB4ABAAJQAmACcAKABoAF0ABAAEAF8AJACXAJcAJQA7ADMANAA1AJcAJQA6ABAAlwAmADwAJQCTACUAlQAKAEIAlQAlAJoAmwCWAJEAaQCWAGEATAAKADsAJQAlAFEAUgBTAFQAVQBWAFcAAwAEABAAOgA6ACUAJQBfABAAYQAlACUAJQAQABgAGQAaABsAHAAdAB4AHwAgACEAIgBxACUAHgAfADsAJQB3AHgAJQAlACYAJwAlADoAGQAlAAQAJQAlACUAJQAlACUAMwA0ADUABAAlAGgAOwAZAJcAPACXAJMAlwAkAJcAQgAEACUAmgCbAJcAlwCXACUAlwBMAAQAJQAlAJcAUQBSAFMAVABVAFYAVwADAAQABACXAAQAlwCXAF8AlwBhABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAHEAlwAeAB8AlwCXAHcAeADbACUAJgAnAJcAlwD7APEAoAKXAJcAkgDNAqQC1wIzADQANQC+ARADVwH7AfoCJQI8AFgCkwAaAAQAuAFCAPgAZgCaAJsA3AI+Av////8PAEwA//////////9RAFIAUwBUAFUAVgBXAP//////////IAD/////XwD//2EA////////KQAqACsALAAtAP//////////////////cQA2AP//OAD/////dwB4AP////////////8PAEMAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIA//+TAP///////////////5oAmwBgAP//YgAEAP////9mAP///////2oAawBsAP///////////////////////w8AdwARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgD/////jAAuAC8AMACQAP//kgD///////+WAP//mAD///////89AD4APwBAAEEA//9DAEQARQBGAP///////////////00ATgBPAFAA//8EAP////////////9YAFkAWgBbAFwAXQBeAP//////////YwBkAGUA////////lQBqAGsAbAD/////////////JAD//////////3cA//////////8uAC8AMAD/////////////hAD/////////////igA9AD4APwBAAEEA//9DAEQARQBGAP//lgD//////////00ATgBPAFAAlwD///////////////9YAFkAWgBbAFwAXQBeAP//////////YwBkAGUA//////////9qAGsAbAD//////////////////////////3cA////////////////////////////////hAATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8AlgARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAP//EQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwD//xEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8A//8RABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAP//EQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwD//xEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgD//w8AlwARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJcAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwCXABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8AlwARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJcAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwCXABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIA/////w8AlwARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJcAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwCXABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8AlwARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJcAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwCXABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAP///////////////////////////////////////w8AlwARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJcAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwCXABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8AlwARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJcAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwCXABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAP///////////////////////wQA////////DwCVABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAP//lQD//wQA////////////////JgD//////////////////////////5UA//////////////////////////////////8kAP//JgD//0MADwCVABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAP//lQAlAP///////0MA/////////////////////2cA/////////////5UAbgBvAHAAcQByAHMAdAB1AHYA/////3kAegD//3wAfQB+AP///////2cAgwCEAIUA////////bgBvAHAAcQByAJUAdAB1AHYA//+cAnkAegD//3wAfQB+AP//////////gwCEAIUAqgKrAv////////////////////////////////////+6Av////+9Ag8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgDSAtMC1ALVAv//1wL//9kC///bAg8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAP//EQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIABAMFA///BwMIAxIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAAAAAAAAAAAAAAAAAAALYA0gBXAWcA+QE/ANQAmAD5Ae4AwABrADABYAFiAbICHgLJALsC6ALFAcYB6gLFAcYBwgKKAn0AMQKKAooCQP/FAcYBIgLcAEwBXQInAvkA7ADFAcYBiwJoAWkBiwKLAhUArAECAgMC/ACnAkD/FQDOAU8BsgFQAdAC6gHYAuQA5QDaAucA6QC8ArwCkgKSAoYC8gCzAXgCEQDrAVAC/gD/ABADsgKyAqcCsgJWAREDFACyAtYCTQHtAooCigL5AooCVgHdAF8BigKyAt4CFQEWAV8ALQFkAeUCZAKLAosCigKLAjQBpwJfAIsCZwIDA1sCpwJWARkAFgDHAfgChwLHAYsCXgAWAO4C7wJEAfEC8gLHASgCswK0ArUCtgIlA1YBVgHHAWEBHQJqAWYCLALrAlQB+gEEAmYAMQH6AZkCmgKaAuwChAJ3AMgBvQKcAsgBcQFPAj0BdAF1AegAdwF4AcgB+gBjAnoBewF8AX0BfgFjAcgBgQFxAjoBOwH9AIYBhwGtAT0BigGLAYwBxgJ5AHoAjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGaApoCwwGaAngApwGoAZoCVgFgAPcCewBhAGIAYwAnASgBKQF8AJoCYACTAJQAYQBoAGkAewJ8An0CfQDKAcsBzAGpAaoBtgF/AJoAmwAXAYAAGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBVgHBAQwDwgGyApwAnQAVAhYCFwIYAhkCngCfAKAAigI+ASIDIwM/AUABQQEYAxkDgQCCAKEAogCjAIMAhACFAIsChgCHAKQAiACWAIkAigA+AaUAPwA/AUAB6AEVAhYCFwIYAhkCpgCLAI0AjgBOAqcAqACpAKoAqwCsAK0AAQACAAMAjwCQAGcAkgCuAJcArwCZAAQAtwC4AO4BugDzAe4B9gG9AAUAvgC/AMEAGgKwAEUBwgDIAMMAxwCxALIAIwEkASUBJgEnASgBKQHKAAkCzQDLAAoCCwLMAAwCzgDQANEA0AHXANEBDQIOAtgA2QDaALMA4QDiABACGgKaAJsAtAC1AOMA5gDnASsBbQBuAG8AcABxAHIAcwB0AHUARgHsAPEA8wD0AEUB9QD2AEcB+ACcAJ0ALgEvAQEBAgFIAZ4AnwCgADkBLACL/yUBJgEnASgBKQEDAQQBNQGhAKIAowA3AQUBQAJFAjYBWAGkAEkBBgEHAQgBCQGlADcAOAA5AGACCgELAQwBDQEOAaYADwEQAREBOgCnAKgAqQCqAKsArACtAEcBEgETARQBPAFuAVUCrgBIAa8AQgFDAVwCLABeAlEBVQF5AlkBbwFwAX8BPQI+AoABsABpAoIBRQGaAJsAsQCyAEkBgwFaATIBWwGEATcAOAA5AFwBXQFeAYUBZQF2AogBZgGJAWcBOgCNAXoCpAGcAJ0ApQGzAKYBLAFtAZ4AnwCgALQAtQBtAG4AbwBwAHEAcgBzAHQAdQChAKIAowAkA6sBsQFtAroBrwGkAHIBwAG8AcQBRwGlALABLAMtA6wC5gHdAkgB6QH9AaYAAQIsANYByQGnAKgAqQCqAKsArACtAJoAmwAIAg8C1wHZAdoBrgDbAa8ASQHcAd8B4AHkAfgBNwA4ADkA/wEFAgYCBwIRAhMCsAAcApwAnQA6AOcCsQCyAB8C7AGfAKAA7QEgAiQCKgIrAi4CMAI0AjsCMwI8AqEAogCjAD8CQgJHAkECTAJDAqQASAKzAEoCMwFNAqUAVgFWArQAtQBSAlcCWQJfAmECpgBwAmUCawJyAqcAqACpAKoAqwCsAK0AmgCbAHMCdwKCAh0CqgKuAIgCrwCrAq0CrwLyAR8BIAEhASIBIwEkASUBJgEnASgBKQGwALACnACdAMACsQKxALIAugKeAJ8AoADBAsMCxALMAs4C0gLTAtQC1QKL/9kCoQCiAKMA3wLbAuAC/AL9AuICpADjArMA5AL/AuYCpQACAwQDtAC1APsCc/8BAwUDBgOmAA8DBwMIAwkDpwCoAKkAqgCrAKwArQCaAJsAEwMKAxsDCwMdA64AHgOvABsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpAbAAHwOcAJ0AIAMhA7EAsgBSAZ4AnwCgACYDJwN2AWwBvgIoAykD9wDpAr8C9gKhAKIAowD+ARoDvwEtAg0DRgKkAGoCswBsAIkC9QGlAHMBzwC0ALUA+gJTAgAAAACKAqYAAAAAAAAAAACnAKgAqQCqAKsArACtAAAAAAAAAAAAiwIAAAAArgAAAK8AAAAAAAAAjAKNAo4CjwKQAgAAAAAAAAAAAAAAAAAAsACRAgAAkgIAAAAAsQCyAAAAAAAAAAAAAAAXAZMCGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBAACzAAAAAAAAAAAAAAAAALQAtQCUAgAAlQIcAAAAAACWAgAAAAAAADcAOAA5AAAAAAAAAAAAAAAAAAAAAAAAABcBlwIYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEAAAAAmAIdAB4AHwCZAgAAmgIAAAAAAACbAgAAnAIAAAAAAAAgACEAIgAjACQAAAAlACYAJwAoAAAAAAAAAAAAAAAAACkAKgArACwAAAAcAAAAAAAAAAAAAAAtAC4ALwAwADEAMgAzAAAAAAAAAAAANAA1ADYAAAAAAAAAKgE3ADgAOQAAAAAAAAAAAAAAuwEAAAAAAAAAADoAAAAAAAAAAAAdAB4AHwAAAAAAAAAAAAAAOwAAAAAAAAAAAAAApf4gACEAIgAjACQAAAAlACYAJwAoAAAAPAAAAAAAAAAAACkAKgArACwAeQEAAAAAAAAAAAAAAAAtAC4ALwAwADEAMgAzAAAAAAAAAAAANAA1ADYAAAAAAAAAAAA3ADgAOQAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcBPAAYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAQAAGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwEAABgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcBAAAYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAQAAGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwEAABgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEAABcB0gEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAdUBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwHYARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcB4QEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAeMBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwE1AhgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBAAAAABcBNgIYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXATcCGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwE4AhgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcBOQIYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAToCGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwFUAhgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcBaAIYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAW4CGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwFvAhgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcBdAIYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAX8CGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwGBAhgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpAQAAAAAAAAAAAAAAAAAAAAAAAEkAAAAAAAAAFwHNARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpAQAA0wEAAEkAAAAAAAAAAAAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAANQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPAQAASgAAAEsAFwHdARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpAQAA3gEdAgAA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cgJ7An8CiAKMApQClgKVApwCnQKhAqICpwKsAq0CsgK2ArYCugK5AsACwQLEAsYCygLMAs4C0ALSAtcC3gLgAuQC5gLoAuoC7ALuAvAC8gL3AvcC/AIAAwgDDAMQAxgDGAMcAx8DHwMiAyMDKAMnAy0DLAMzAzsDQwNEA0gDSQNNA08DVANZA1oDXwNhA2cDaQNrA28DcQN3A3oDgwOOA44DlAOWA5gDmgOcA54DoQOjA6UDpwOpA6sDrQOvA7EDswO1A7cDuQO7A70DvwPBA8MDxQPHA8kDywPOA9AD0gPUA9YD2APaA9wD3gPgA+ID5APtA+8D8QPzA/UD9wP5A/sDAQQCBAYEBwQLBAwEEAQRBBUEFgQaBBsEHAQdBCAEJQQoBC4EMAQgBDcEOQQ7BEAEQgQ2BEwETgRMBFQEUwRaBFsEXARdBF4EYgRjBGQEaARpBG4EbwR0BHUEegR7BIAEggSHBIoElwSbBKAEogSZBKoErQSvBLMEtASzBL0E6gTtBPoEAwUGBQ0FDQUZBRoFHgUiBSsFKwU5BTkFQwVEBUgFTAVQBVcFWwVjBWYFagVuBXIFeQV9BYEFhQWKBYkFlwWWBaAFpAWoBawFsAW0BboFvAUAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApoCAgIiFQIllyAelR8CIQICAgICAgICAgIQlhgKGQ8CAgICAgICAgICAgICAgICAgICAgICAgICAgKYApkUAgICAgICAgICAgICAgICAgICAgICAgICAgICAjoTO5sCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBAgMEBQYHCAkLDA0OERIWFxobHB0jJCYnKCkqKywtLi8wMTIzNDU2Nzg5PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5QAAAAAJUYlczogZmlsZSBub3QgcmVjb2duaXplZDogJUUKAAAlUDolUzogaWdub3JpbmcgaW52YWxpZCBjaGFyYWN0ZXIgYCVzJyVzCgAAAAAAAABvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4geXllbnN1cmVfYnVmZmVyX3N0YWNrKCkAAAAAAAAAAG91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiB5eV9jcmVhdGVfYnVmZmVyKCkAAAAAAGZhdGFsIGZsZXggc2Nhbm5lciBpbnRlcm5hbCBlcnJvci0tZW5kIG9mIGJ1ZmZlciBtaXNzZWQAZmF0YWwgZXJyb3IgLSBzY2FubmVyIGlucHV0IGJ1ZmZlciBvdmVyZmxvdwAAAAAAJUYlUDogcmVhZCBpbiBmbGV4IHNjYW5uZXIgZmFpbGVkCgAAAAAAAG91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiB5eV9nZXRfbmV4dF9idWZmZXIoKQAAAGZhdGFsIGZsZXggc2Nhbm5lciBpbnRlcm5hbCBlcnJvci0tbm8gYWN0aW9uIGZvdW5kAAAAAAAAb3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHl5X3NjYW5fYnVmZmVyKCkAAAAAAAAAb3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHl5X3NjYW5fYnl0ZXMoKQAAAAAAAAAAJUY6aW5jbHVkZXMgbmVzdGVkIHRvbyBkZWVwbHkKAFwlMDNvACVGJVA6IEVPRiBpbiBjb21tZW50CgBsZGxleC5sACBpbiBzY3JpcHQAIGluIGV4cHJlc3Npb24AYmFkIGJ1ZmZlciBpbiB5eV9zY2FuX2J5dGVzKCkAJUY6IG1hY3JvcyBuZXN0ZWQgdG9vIGRlZXBseQoAAAAAAAAAAAAAAAAAAAAAsND6/6bQ+v9A0Pr/LND6/w/Q+v/7z/r/yM/6/5DS+v//0fr/69H6/9fR+v/D0fr/r9H6/5vR+v+H0fr/c9H6/1/R+v9L0fr/N9H6/yPR+v8P0fr/+9D6/+fQ+v+I1fr/dNX6/2DV+v9M1fr/ONX6/yTV+v8Q1fr//NT6/+jU+v/U1Pr/wNT6/6zU+v+Y1Pr/hNT6/3DU+v9c1Pr/SNT6/zTU+v8g1Pr/DNT6//jT+v/k0/r/0NP6/7zT+v+o0/r/lNP6/4DT+v9s0/r/WNP6/0TT+v8w0/r/HNP6//7f+v/q3/r/1t/6/8Lf+v+u3/r/mt/6/4bf+v9y3/r/Xt/6/0rf+v823/r/It/6/w7f+v/63vr/5t76/+be+v+u3vr/mt76/4be+v9y3vr/Xt76/0re+v823vr/It76/w7e+v/63fr/5t36/9Ld+v++3fr/qt36/5bd+v+C3fr/bt36/1rd+v9G3fr/Mt36/x7d+v8K3fr/9tz6/+Lc+v/O3Pr/utz6/6bc+v+S3Pr/ftz6/2rc+v9W3Pr/Qtz6/y7c+v8a3Pr/Btz6//Lb+v/e2/r/8tv6/6jb+v+U2/r/gNv6/2zb+v9Y2/r/RNv6/wbc+v8Y2/r/BNv6//Da+v+c1fr/nNX6/5XZ+v+V2fr/ctn6/17Z+v9K2fr/Ntn6/yLZ+v8O2fr/+tj6/+bY+v/S2Pr/vtj6/6rY+v+W2Pr/bM76/8Ha+v9dzPr/Xcz6/9za+v+/2fr/rdr6/5na+v+F2vr/gtj6/0va+v832vr/I9r6/w/a+v/72fr/59n6/9PZ+v94zvr/btj6/1rY+v9G2Pr/Mtj6/x7Y+v8K2Pr/9tf6/+LX+v/O1/r/utf6/6bX+v+S1/r/ftf6/2rX+v9W1/r/Qtf6/y7X+v8a1/r/Btf6//LW+v/e1vr/wdb6/6TW+v+H1vr/atb6/0nW+v8s1vr/C9b6/1TQ+v/I1fr/bM76/13M+v8Iz/r/9M76/+DO+v8u1/r/o876/4nO+v/O0Pr/vc76/4bZ+v+p2fr/vNv6/2zO+v9dzPr/Xcz6/7DV+v8s2/r/wt76/xfP+v9f2vr/X9r6/1/a+v9f2vr/X9r6/1/a+v9f2vr/X9r6/1/a+v9f2vr/et76/wrL+v8Dy/r//Mr6/+bK+v8Ry/r/eXlsZXgAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAHgAFAAUABQAFAAUABQAFAAUABQAFAAUAJgArACsAHgAPAA8AEAAQAA8AXwAQADoAJgAtAC0AOgAvAM8ALwAPAC8AEADPAGkAXwAFAC8ABQAFADEAMwAyADEALwAvADIANAA7ADYANAAzADYANABKAGUAbABsADsAiQAyAGkABQAFAAUABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAhQAGAAYABgAGAAYABgAGAAYABgAGAAYADwAwABAAOQA5ADAAYAFlADAAPAA9AIkAZwA8ADkAYAE8ADwASgBAAD0AMABAAEAAZwAGAHoABgAGAEAAQABAAG4AbgBAAEAAegB7AHwAQACQAMIAfQCQAIUAewB9AMIAfAAgA30ABgAGAAYABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAMYAtwALAAsACwALAAsACwALAAsACwAoACgAKADZAcYAcQCLAHEAlQB/ALMClQBxAH8AcgBxAHIAtwCLACgAfwAoAHEAcQByAH8ACwByAAsACwCPAHIAcgCSAI8AkwCZAI8AkwDfAJkAkwDZAZIAmQDgAAMBswIDASgAjwAoAAsACwALAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIgNBAQwADAAMAAwADAAMAAwADAAMAHMAcwCRAHMAcwB0AJEAdADTACMD4ABzACQD3wB1AHQAdQBBAXMAcwCRANMAdAB0AHUACQEMAHQADAAMAJoAdQB1AI4AnACOAL8AjgCYAJgAmgAlAwkBjgCcAFIBvwBSASYDmACOAI4ADAAMAAwADAANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANABEAEQARABEAEQARACcDEQARABEAEQARABEAEQARAOEAEQARABEAEQARABEAEQARABEAEQCCAJsAggC9AL0AmwDLAIsBmwCbAIIAwQC+AL4AvQCLAcsAggCCAL4A/QDBACgDvgDBAMAAEQARABEAEQCfAIIA/QCfAJ8AwADLAMAAFAHhAJ8AnwCfAFwBKgOfAJ8AwAArA1wBnwAUAREAEQARABEAEgASABIAEgASABIALAMSABIAEgASABIAEgASABIALQMSABIAEgASABIAEgASABIAEgASACcAJwAnAMoAzgDMAOkAEAHpAHkBEAF5ARABygDOAMwAfwEuA00BJwAQAScAGAEQATADGAESABIAEgASAE0BGAEnAH8BygDMAOkAWQHpACEBWQEhAcwAygAxAyEBMgPOADQDJwBZAScAEgASABIAEgATABMAEwAnABMAEwDYARMAEwATABMA1wETABMANQPNABMAEwATABMAEwATABMAEwATAM0AjACMAIwAigFrAUgBawFIAUkBigFJAY8BcwE2A48BSAGKATcDSQGMAI8BjABIAUgBcwFJAUkBmAE5A5gB2AHNAIwAmAFrARMAawETAM0A1wGSAhMAogKxAjsDPAOSArICogKMAD0DjAATABMAEwATABQAFAAUAIwAFAAUAD4DFAAUABQAFAA/AxQAFABAA0EDFAAUABQAFAAUABQAFAAUABQAjQCNAI0AsQKyAkIDQwNKAUUDSgFGA/EA8QDxAEIBQgFCAUoBJAKNACQCjQBHA0gDSgFKAUkDTwFKA08B8QBLA/EAQgFMA0IBFABPARQATQNOA08DFABQA08BTwFCAVEDJAKNACQCjQBSAxQAFAAUABQAHAAcABwA8QBTA/EAQgFUA0IBHAAcABwAHAAcABwAUwFCAVMBVAFVA1QBaQFUAWkBVgNTAVcDWwNUAVwDYANpAVMBUwFhA1QBVAFjA2kBaQEcABwAHAAcABwAHABdAF0AXQBtAW0BbQFkA2UDZgNdAF0AXQBdAF0AXQCGAWcDJgKGASYChgFpAW0BawNtAWwDcAMmAoYBcQNzA4YBdAMmAiYCJgJ2A3cDeAN7A10AXQBdAF0AXQBdAGgAaABoAHUDfAN9A20BfwNtAWgAaABoAGgAaABoAHoDaACAAy8CaAAvAmgAgQNoAH8DLwKCA3YDLwKFA4YDegNoAIgDigMvAi8CiwN3A4wDaABoAGgAaABoAGgAjQNoAI4DaACPA2gAkANoAJEDdQOSA5MDlANoAHAAcABwAJUDlgOXA5gDmQObA3AAcABwAHAAcABwAJwDcACdA54DnwNwAKEDogNwAKMDpQOmA3AAcACnA6gDqQNwAKoDogOrA6wDrQOuA68DcABwAHAAcABwAHAAsANwALEDswO0A7UDtwNwALkDrwO6A7sDvANwAIgAiACIAL0DvgO/A8ADwQPCA4gAiACIAIgAiACIAMMDxAPFA8YDxwPIA8kDygPLA84DzwPSA9MD1APXA9gD2gPcA80D0QPdA94D3wPgA+EDiACIAIgAiACIAIgApwCnAKcAzQPiA9ED4wPkA+UDpwCnAKcApwCnAKcA5gPnA+gD6QPqA+sD7APuA+8D8APxA/ID9AP2A/gD+QP6A/sD/AP9A/4D/wP1AwEEAgSnAKcApwCnAKcApwCvAK8ArwD1AwMEBwQJBAoEDASvAK8ArwCvAK8ArwANBA4EEgQUBBUEFgQXBBgEGQQaBBwEHgQfBCAEIQQiBCMEJQQnBCgEKQQlBCsELQQvBK8ArwCvAK8ArwCvALwAvAC8ADAEMgQ0BDUENgQ3BLwAvAC8ALwAvAC8ADgEvAA5BDoEOwS8ABYEFQS8ADwEPQQ+BD8EQARDBEQERQS8AEYERwRIBEkESgRMBE0EvAC8ALwAvAC8ALwATgS8AE8EUARSBFMEVQS8AFYEVwRZBFsEXAS8ADsBOwE7AV0EXgRfBGAEYQRiBDsBOwE7ATsBOwE7AWMEZARlBGgEOwFpBDsBagRrBGwEbQRvBHEEcgRzBG8EdQR3BHgEegR7BH0EfwSABIEEOwE7ATsBOwE7ATsBggSDBIQEOwGFBDsBqAGoAagBhgSHBIgEiQSKBIsEqAGoAagBqAGoAagBjgSPBJAEkQSoAZIEqAGWBJcEmAScBJ0EngSfBKEEogSjBKQEpQSmBKgEqQSqBKwErQSoAagBqAGoAagBqAGuBK8EsASoAbIEqAGsAawBrAGzBLUEtgS3BLgEswSsAawBrAGsAawBrAG5BLoEuwS8BKwBvwSsAcEEwgTDBMQExQTHBMgEyQTKBMwEzgTPBNAE0QTSBNQE1QTWBKwBrAGsAawBrAGsAdgE2QTaBKwB2wSsAbABsAGwAd0E3gTfBOAE4QTjBLABsAGwAbABsAGwAeQEsAHlBOcE6ATpBOoE6wSwAewE7gTvBPEE8gTzBPQE7wSwAfUE9gT3BPgE+wT9BP4EsAGwAbABsAGwAbAB/wSwAQAFAQUCBQMFBAWwAQYFBwUJBQoFCwWwAV0DXQMMBV0DXQNdAw0FXQNdA10DXQNdAw4FXQMPBRAFEQUTBRQFFQUWBV0DXQNdA10DXQMXBRgFGQUbBRwFHQUeBSEFIwUiBSIFIgUlBR0FIgUiBSIFIgUdBSYFIgUoBSkFKgUtBS4FLwUwBTEFXQM0BTYFOAU5BToFOwU8BT0FPgU/BUAFQwVEBUUFRgVHBUgFSQVLBSIFTAUiBV0DXQNdA20DbQNOBW0DbQNtA00FbQNtA20DbQNtA1EFbQNNBVgFWgVbBVwFTQVdBW0DbQNtA20DbQNeBV8FYAVhBWIFYwVkBWUFZgVnBWgFaQVqBWsFZAVsBW0FbgVwBXMFdQV2BXcFeAV5BXoFewV8BX0FbQN+BX8FeQWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFiQWRBW0DbQNtAwUEBQSSBQUEBQQFBJMFBQQFBAUEBQQFBJUFBQSWBZcFmAWZBZoFmwWcBQUEBQQFBAUEBQSdBZ4FoAWjBaQFpQWmBagFqQWqBasFrAWtBa8FsAWxBbIFswW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFBQTBBcIFxAXHBcgFyQXKBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBQUEBQQFBBAEEATbBRAEEAQQBN0FEAQQBBAEEAQQBN4FEATfBeAF4QXiBeMF5AXlBRAEEAQQBBAEEATmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfoF+wX8Bf0F/gX/BQAGAQYCBgMGEAQFBgYGCAYJBgoGCwYMBg0GDgYQBhEGEgYTBhUGFgYXBhkGGgYbBhwGHQYeBhAEEAQQBB8GIQYiBiQGJQYmBicGKAYpBioGLAYtBi4GLwYxBjIGMwY0BjUGNgY3BjQGOAY5BjsGPQY+Bj8GQAZBBkMGQgZEBkUGNAZCBkcGSAZJBkoGSwZMBk0GTgZLBk8GUAZSBkIGVAZVBlYGVwZYBlkGWgZbBksGXAZdBl4GXwZgBmQGZQZnBmgGaQZqBmsGcAZxBnIGcwZ0BnUGdgZ3BngGfAZ9Bn8GgAaBBoIGgwaEBoUGhgaHBogGiQaKBosGjAaNBo4GjwaQBpEGkgaTBpQGlQaWBpcGmAaZBpsGnAaeBp8GoAahBqIGowakBqYGqAapBqsGrAauBq8GsAaxBrIGswa0BrUGtga3BrgGuQa6BrsGvQa+Br8GwAbBBsIGwwbEBsUGxgbHBskGygbMBs0GzgbPBtAG0QbTBtQG1QbXBtgG2QbaBtsG3AbdBt4G3wbgBuEG4wbkBuYG5wboBukG6gbsBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+wb8Bv0G/gYABwIHAwcEBwUHCAcKBw0HDwcRBxMHFAcVBxkHGQcZBxkHGQcZBxkHGQcZBxkHGQcaBxoHGgcaBxoHGgcaBxoHGgcaBxoHGwcbBxsHGwcbBxsHGwcbBxsHGwcbBxwHHAccBxwHHAccBxwHHAccBxwHHAcdBx0HHQcdBx0HHQcdBx0HHQcdBx0HHgceBx4HHgceBx4HHgceBx4HHgceBx8HHwcfBx8HHwcfBx8HHwcfByAHIAcgByAHIAcgByAHIAcgByAHIAchByEHIQchByEHIQchByEHIgceAxwDGwMiByIHGgMiByMHIwcZAyMHIwcjByMHIwckBxcDFgMVAyQHJAckByQHJQclByUHJQclByUHJQclByUHJQclByYHJgcUAyYHJgcmByYHJgcnBxMDJwcnBycHJwcnBycHJwcnBycHKAcSAygHKAcoBygHKAcoBygHKAcoBykHEQMpBykHKQcpBykHKQcpBykHKQcqBxADKgcqBysHKwcPAw4DKwcrBw0DKwcrBywHLAcsBywHLAcsBywHLActBy0HLQctBy0HLQctBy0HLgcuBwwDLgcuBy4HLgcuBy8HLwcwBwsDMAcwBzAHMAcwBzAHMAcwBzAHMQcJAzEHMQcxBzEHMQcxBzEHMQcxBzIHCAMyBzIHMgcyBzIHMgcyBzIHMgczBwcDMwczBzQHNAcFAwMDNAc0BwIDNAc0BzUHAQM1BzUHNQc1BzUHNQc1BzUHNQc2BwADNgc2BzYHNgc2BzYHNgc2BzYHNwf/AjcHNwc3BzcHNwc3BzcHNwc3BzgH/gI4BzgHOAc4BzgHOAc4BzgHOAc5BzkHOQc5BzkHOQc5BzkHOgc6BzoHOgc6BzoHOgc6B/0C+wL6AvgC9wL2AvQC8wLyAvEC8ALvAu4C7QLsAusC6gLpAugC5wLmAuUC5ALjAuIC4ALfAt4C3QLcAtsC2gLZAtgC1gLUAtMC0gLQAs8CzgLMAssCygLJAsgCxgLFAsQCwwLCAsECwAK+ArwCugK5ArgCtwK2ArQCsAKvAq4CrQKsAqsCqgKpAqgCpwKlAqQCowKhAqACnwKeAp0CnAKbApoCmQKYApcClQKUApMCkQKOAosCigKJAogChwKGAoUChAKDAoICgQKAAn8CfgJ9AnwCewJ6AnkCeAJ3AnYCdQJ0AnMCcgJwAm0CbAJrAmoCaQJoAmcCZgJlAmQCYwJhAmACXwJeAl0CXAJbAloCWQJYAlcCVgJVAlQCUwJSAlECUAJPAk4CTQJMAksCSQJIAkcCRgJFAkQCQwJCAkECQAI/Aj4CPQI6AjkCOAI3AjYCNQI0AjMCMgIxAjACLgItAiwCKwIqAikCKAInAiUCIQIeAh0CGgIZAhgCFwIWAhUCFAITAhICEQIQAg8CDgINAgwCCwIKAgkCCAIHAgYCBQIEAgMCAgIBAgAC/gH9AfwB+wH6AfkB+AH3AfYB9QHzAfIB8QHwAe8B7gHtAewB6wHqAekB6AHnAeYB5QHkAeMB4gHhAeAB3wHeAd0B3AHWAdUB0gHRAdABzwHOAc0BzAHLAcoByQHIAccBxgHFAcQBwwHCAcEBwAG/Ab4BvQG8AbsBugG5AbgBtwG2AbUBtAGxAakBpgGlAaQBowGiAaEBoAGfAZ4BnQGcAZsBmgGZAZcBlgGVAZQBkwGSAZEBkAGOAY0BjAGJAYgBhwGFAYQBgwGCAYEBgAF+AX0BfAF7AXoBeAF3AXYBdQFyAXEBcAFvAWoBaAFnAWYBZQFkAWMBYgFhAV8BXgFdAVsBWgFYAVcBVgFVAVEBUAFMATgBNAEyAS8BLgEtASwBKwEqASkBKAEnASYBJQEkASMBIgEgAR8BHgEdARwBGwEaARkBFwEWARUBEwESAREBDwEOAQ0BDAELAQoBCAEHAQYBBQEEAQIBAQEAAf8A/AD7APoA+QD4APQA5wDkAN4A2ADWANQA0gDRANAAxwDFAMQAwwC6ALUAswCxALAArgCtAKUApACjAKIAoQCgAJ4AnQCXAJYAlACDAH4AeQB4AHcAdgBtAGMAYgBcAFsAWgBYAFYAVABQAE8ATQBIAEcARgBFAEIAQQA/AD4AOAA3ADUALAAkACIAIQAbABoAGAAVABgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAGAAZABoAGwAXABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwAlADgAOQA6ADsAPAA9AD4APwBAAEEAJQBCACUAJQAlACUAQwAlAEQAJQAlAEUAJQAlACUAJQAlACUAJQAlACUARgAlACUARwAlACUASAAlACUAJQAlAEkASgBLAEwAFgBNAE4AFgBPABYAUAAWABYAUQBSABYAFgBTAFQA6gBWABYAFgAWABYAFgAWAFcAFgAWAFgA7wD0APUA6wDWAE4A1gBOANcA6gDXABUB8AD3APgAFgH5AMsB+gDYAPsA2ADMAUQB6wAWAPwAFgAWAAMBCAEFAQQB/QD+AAYBCgEXAQ4BCwEJAQ8BDAEwAT4B9AD1ABgBPgEHAUQBFgAWABYAFgBNAE4AFgBPABYAUAAWABYAUQBSABYAFgBTAFQAMAFWABYAFgAWABYAFgAWAFcAFgAWAFgA2QD/ANkAEgETAQABPgI/AQEBGQEdATUBNgEaARQBPwIbARwBMQEhAR4BAgEiASMBQAEWAFsBFgAWACQBJQEmAfcA+AAnASgBXAFdAV8BKQF5AbsBYQF6ATEBXgFiAbwBYAHRA2MBFgAWABYAWQBaABkAWwBcAFkAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AGYAeQB6AHsAfAB9AH4AZgBmAH8AZgBmAGYAZgBmAGYAZgCAAGYAgQBZAGYAggB1AHUAdQB1AHUAZgBmAGYAZgBmAGYAZgBmAGYAZgCDAGYAZgBmAGYAhACFAIYAhwBZAFoAGQBbAFwAWQCIAF4AXwBgAGEAYgBjAGQAiQCKAIsAjACNAI0AagBrAGwAbQBuAG8AjgCPAJAAkQCSAJMAlACVAJYAigCXAJgAmQCaAJsAnACdAJ4AnwCgAIoAoQCKAIoAigCKAIAAigCBAFkAigCiAIoAigCKAIoAigCKAIoAigCKAKMAigCKAKQAigCKAKUAigCKAIoAigCEAIUAhgCmAFkAWQAWAFkAWQBZAKcAWQBZAFkAWQBZAKgAWQCpAMABRAGMAI0AjQBZAFkAWQCrAFkAWQDxAPEA8QDWAcEBTwE2AU8BhAFlAdYBhQFQAWYBTwFRAU8BRAFsAfIAZwHyADoBOgE6AWgBWQBSAVkAWQB1AToBOgF+AXYBgAGLAXcBgQHWAYwBggGzAn8BjQHWAeYBdwPnAfIAeAHyAFkAWQBZAFkAWQBZABYAWQBZAFkApwBZAFkAWQBZAFkAqABZAKkA0gNEAYwAjQCNAFkAWQBZAKsAWQBZAFMBTwF7AU8BVAFPAXwBTwHQAdMD2AE6AdQD1wFPAToBTwFEAVUBOgF9AdEBOgE6AToB7QFZAFYBWQBZAI4BOgE6AW8BlAFwAbIBcQGIAYkBjwHVA+4BcgGVASwCqwEtAtYDigFzAXQBWQBZAFkAWQAXABgArACtABcArgCvAB0AHgAfACAAsACxALIAswC0ALUAtgC3ALcAuAC5ACsAugAtALsAvAC9AL4AvwDAAMEAtAC0ALQAtAC0AMIAtADDAMQAxQC0ALQAxgDHALQAtAC0ALQAtAC0AMgAtADJABcAtADKAMsAzAC/AM0AzgC0ALQAtAC0AM8AtADQANEA0gC0ANMA1AC0ALQAtABJAEoASwDVABcA1gBOABcAFwDXANcDFwAXABcAFwAXABcA2wAXANYB2AAXABcAFwDbANsAFwAXABcAFwBPAZABTwG1AbIBkQGyAW4CkgGTAToBsgG2AbIBqwFvAqsBOgE6AbcB4AGrAdgDqwG6AbIBFwAXABcAFwCYAWkB4QGZAZoBqwHFAbgB/QHZAZsBnAGdATkC2QOeAZ8BuQHaAzoCoAH+AdwAFwDdABcAFwDWAE4AFwAXANcA2wMXABcAFwAXABcAFwDbABcA3APYABcAFwAXANsA2wAXABcAFwAXAPEA8QDxALIBsgGyAfIA9QHyAFQC9gFVAvcBqwGrAasBWwLdAygC8gD4AfIAAgL5Ad4DAwIXABcAFwAXACkCBALzAFwCwwHGAfIANALyAA0CNQIOAscBxAHfAw8C4APKAeED8gA2AvIA3AAXAN0AFwAXANYATgDzABsA1wDWARcAFwAXABcA1gEXANsA4gOyAdgAFwAXABcA2wDbABcAFwAXAKsBbQFtAW0BawJKAk8BSgJPAU8BbAJPAXMCTwLjA3QCOgFtAuQDOgFFAXUCRQE6AToBIQIlAjoBfgLlA38CsgLIAW4BgAJKAt8ASgLgAMkBsQJWA+EAZgPWAeYD5wNXA9YBZwNFAegDRQHiABcA4wAXABcA1gBOAG4BGwDXAOkDFwAXABcAFwDqAxcA2wDrA+wD2AAXABcAFwDbANsAFwAXABcAbQFtAW0BdQN2A+0D7gNPAe8DJgLwA/EA8QDxAEIBQgFCAToBRQFFAUUBRQHxA/IDOgE6AfMDTwH0A08B8gD1A/IAGAf2AxgH3wA6AeAA9wP4A/kD4QD6AzoBOgFEAfsDRQFFAUUBRQH8A+IAFwDjABcA6QDpAOkA8gD9A/IAGAf+AxgH6QDpAOkA6QDpAOkATwFEAU8BTwH/A08BTwEvAk8BAAQ6AQEEAgQ6AQMEBgQ6AToBLgIHBDoBOgEIBDoBOgHpAOkA6QDpAOkA6QA7ATsBOwFtAW0BbQEJBAoECwQ7ATsBOwE7ATsBOwFjAgwETwFkAk8BZQJIAkUBDQRFAQ4EEQQ6AWYCEgQTBGcCFAT1AjoBOgHWAdYBGAQbBDsBOwE7ATsBOwE7AUEBQQFBAdYBHAQdBEUBHgRFAUIBQwFCAUMBQgFCARkERAEgBE8BRQFPAUUBIQREAR8E/gIiBBYEOgEjBCQEGgRGASUEJgQ6AToBJwQXBCgEQgFDAUIBQwFCAUIBKQREASoERQErBEUBLAREAS0EFQQuBC8EMARGAUgBSAFIATEEMgQzBDQENQQ2BEgBSQFIAUoBSAFIATcESwE4BDkEOgRMATsEPARLAT4EPwRABE0BTgFBBEIEQwRLAUQEPQRFBEYERwRIBEkESAFPAUgBTwFIAUgBSwRLAUwETQROBE8EUARLAVEESgRSBFMEVARLAWsBawFrAVUEVgRXBFgEWQRaBGsBawFrAWsBawFrAVsEXARdBF4EXwRgBGEEYgRjBGYEZwRqBGsEbARtBG4EbwRwBGQEaARxBHIEcwR0BHUEawFrAWsBawFrAWsBqAGoAagBZQR2BGkEdwR4BHkEqAGoAagBqAGoAagBegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSJBIoEiwSMBI0EjgSPBJAEkQSHBJIEkwSoAagBqAGoAagBqAGsAawBrAGIBJQElQSWBJcEmASsAawBrAGsAawBrAGZBJoEmwScBNYB1gHWAZ8EoAShBKIEowSkBKUEpgSnBKgEqQSrBKwErQSqBK4ErwSwBKwBrAGsAawBrAGsAbABsAGwAbEEsgSzBLQEtQS2BLABsQGwAbIBsAGwAbcEswG4BLkEugS0AZ4EnQSzAbsEvAS9BL4EvwTABMEEwgSzAcMExATFBMYExwTIBMkEsAGyAbABsgGwAbABygSzAcsEzATNBM4EzwSzAdAE0QTSBNME1ASzATsBOwE7AdUE1gTXBNgE2QTaBDsBOwE7ATsBOwE7AdsE3ATdBN4EIgLfBCIC4AThBOIE4wTkBOYE5wToBOUE6QTqBOsE7ATtBO4E7wTwBPEEOwE7ATsBOwE7ATsB8gTzBPQEIgL1BCICqAGoAagB9gT3BPgE+QT6BPsEqAGoAagBqAGoAagB/AT9BP4E/wSPAgAFjwIBBQIFAwUEBdYB1gEFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAWoAagBqAGoAagBqAERBRIFEwWPAhQFjwKsAawBrAEVBRcFGAUZBRoFFgWsAawBrAGsAawBrAEbBRwFHQUeBZACHwWQAiAFIQUiBSMFJAUlBSYFJwUoBSkFKgUrBSwFLQUuBS8FMAUxBawBrAGsAawBrAGsATIFMwU0BZACNQWQArABsAGwATYFNwU4BTkFOgU7BbABsgGwAbIBsAGwATwFswE9BT4FPwVABUEFQgWzAUMFRAVFBUcFSAVJBUoFRgWzAUsFTAVNBU4FTwVQBVEFsAGyAbABsgGwAbABUgWzAVMFVAVVBVYFVwWzAVgFWQVaBVsFXAWzAQQEBARdBQQEBAQEBF4FBAQEBAQEBAQEBF8FBARgBWEFYgVjBWQFZQVmBQQEBAQEBAQEBARnBWgFaQVqBWsFbAVvBXAFcgUzATMBMwFzBW0FMwEzATMBMwFuBXQFMwF1BXYFdwV4BXkFegV7BXwFBAR9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBTMBkAUzAQQEBAQEBA8EDwSUBQ8EDwQPBJEFDwQPBA8EDwQPBJUFDwSSBZYFlwWYBZkFkwWaBQ8EDwQPBA8EDwSbBZwFnQWeBZ8FoAWhBaMFpAWlBaYFpwWoBakFogWqBasFrAWtBa8FsAWxBbIFswW0BbYFtwW4BbkFDwS6BbsFtQW8Bb0FvgW/BcAFwQXCBcMFxAXFBccFyAXJBcoFywXMBc0FxgXOBQ8EDwQPBAQEBATPBQQEBAQEBNAFBAQEBAQEBAQEBNEFBATSBdMF1AXVBdYF1wXYBQQEBAQEBAQEBATZBdoF2wXcBd0F3gXfBeAF4QXiBeMF5AXlBeYF5wXoBekF6gXrBewF7QXuBe8F8AXxBfIF8wX0BfUFBAT2BfcF+AX5BfoF+wX8Bf0F/gX/BQAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgQEBAQEBA8EDwQMBg8EDwQPBA0GDwQPBA8EDwQPBA4GDwQPBhAGEQYSBhMGFAYVBg8EDwQPBA8EDwQWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxBjIGDwQzBjQGNQY2BjcGOAY5BjoGOwY8Bj0GPgY/BkAGQQZCBkMGRAZFBkYGRwZIBg8EDwQPBEkGSgZLBkwGTQZOBk8GUAZRBlIGUwZUBlUGVgZXBlgGWQZaBl0GXgZfBlsGYAZhBmIGYwZkBmUGZgZnBmsGaAZsBm0GXAZpBm4GbwZwBnEGcgZ1BnYGdwZzBngGeQZ6BmoGewZ8Bn0GfgZ/BoAGgQaCBnQGgwaEBoUGhgaHBogGiQaKBosGjAaNBo4GjwaQBpEGkgaTBpQGlQaWBpcGmAaZBpoGmwacBp0GngafBqAGoQaiBqMGpAalBqYGpwaoBqkGqgarBqwGrQauBq8GsAaxBrIGswa0BrUGtga3BrgGuQa6BrsGvAa9Br4GvwbABsEGwgbDBsQGxQbGBscGyAbJBsoGywbMBs0GzgbPBtAG0QbSBtMG1AbVBtYG1wbYBtkG2gbbBtwG3QbeBt8G4AbhBuIG4wbkBuUG5gbnBugG6QbqBusG7AbtBu4G7wbwBvEG8gbzBvQG9Qb2BvcG+Ab5BvoG+wb8Bv0G/gb/BgAHAQcCBwMHBAcFBwYHBwcIBwkHCgcLBwwHDQcOBw8HEAcRBxIHEwcUBxUHFgcXBxYAFgAWABYAFgAWABYAFgAWABYAFgBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAqgCqAKoAqgCqAKoAqgCqAKoAqgCqABcAFwAXABcAFwAXABcAFwAXABcAFwDaANoA2gDaANoA2gDaANoA2gDaANoA3gDeAN4A3gDeAN4A3gDeAN4A3gDeAOUA5QDlAOUA5QDlAOUA5QDlAOcA5wDnAOcA5wDnAOcA5wDnAOcA5wAzATMBMwEzATMBMwEzATMBNwHQA88DzgM3ATcBzQM3AToBOgHMAzoBOgE6AToBOgGnAcsDygPJA6cBpwGnAacBqQGpAakBqQGpAakBqQGpAakBqQGpAasBqwHIA6sBqwGrAasBqwGtAccDrQGtAa0BrQGtAa0BrQGtAa0BrwHGA68BrwGvAa8BrwGvAa8BrwGvAdMBxQPTAdMB0wHTAdMB0wHTAdMB0wHUAcQD1AHUAdUB1QHDA8ID1QHVAcED1QHVAR8CHwIfAh8CHwIfAh8CHwIgAiACIAIgAiACIAIgAiACIwIjAsADIwIjAiMCIwIjAiQCJAKtAb8DrQGtAa0BrQGtAa0BrQGtAa0BrwG+A68BrwGvAa8BrwGvAa8BrwGvAdMBvQPTAdMB0wHTAdMB0wHTAdMB0wHUAbwD1AHUAdUB1QG7A7oD1QHVAbkD1QHVAQUEuAMFBAUEBQQFBAUEBQQFBAUEBQQQBLcDEAQQBBAEEAQQBBAEEAQQBBAEBAS2AwQEBAQEBAQEBAQEBAQEBAQEBA8EtQMPBA8EDwQPBA8EDwQPBA8EDwRxBXEFcQVxBXEFcQVxBXEFrgWuBa4FrgWuBa4FrgWuBbQDswOyA7EDsAOvA64DrQOsA6sDqgOpA6gDpwOmA6UDpAOjA6IDoQOgA58DngOdA5wDmwOaA5kDmAOXA5YDlQOUA5MDkgORA5ADjwOOA40DjAOLA4oDiQOIA4cDhgOFA4QDgwOCA4EDgAN/A34DfQN8A3sDegN5A3gDdANzA3IDcQNwA28DbgNtA2wDawNqA2kDaANlA2QDYwNiA2EDYANfA14DXQNcA1sDWgNZA1gDVQNUA1MDUgNRA1ADTwNOA00DTANLA0oDSQNIA0cDRgNFA0QDQwNCA0EDQAM/Az4DPQM8AzsDOgM5AzgDNwM2AzUDNAMzAzIDMQMwAy8DLgMtAywDKwMqAykDKAMnAyYDJQMkAyMDIgMhAyADHwMeAx0DHAMbAxoDGQMYAxcDFgMVAxQDEwMSAxEDEAMPAw4DDQMMAwsDCgMJAwgDBwMGAwUDBAMDAwIDAQMAA/8C/QL8AvsC+gL5AvgC9wL2AvQC8wLyAvEC8ALvAu4C7QLsAusC6gLpAugC5wLmAuUC5ALjAuIC4QLgAt8C3gLdAtwC2wLaAtkC2ALXAtYC1QLUAtMC0gLRAtACzwLOAs0CzALLAsoCyQLIAscCxgLFAsQCwwLCAsECwAK/Ar4CvQK8ArsCugK5ArgCtwK2ArUCtALVAdYBsAKvAq4CrQKsAqsCqgKpAqgCpwKmAqUCpAKjAqICoQKgAp8CngKdApwCmwKaApkCmAKXApYClQKUApMCkgKRAqoBjgKNAowCiwKKAokCiAKHAoYChQKEAoMCggKBAn0CfAJ7AnoCeQJ4AncCdgJyAnECcAJqAmkCaAJiAmECYAJfAl4CXQJaAlkCWAJXAlYCUwJSAlECUAJOAk0CTAJLAkkCRwJGAkUCRAJDAkICQQJAAj0CPAI7AjgCNwIzAjICMQIwAisCKgInAiECHgIyAR0CHAIbAhoCGQIYAhcCFgIVAhQCEwISAhECEAIMAgsCCgIJAggCBwIGAgUCAQIAAv8B/AH7AfoB9AHzAfIB8QHwAe8B7AHrAeoB6QHoAeUB5AHjAeIB3wHeAd0B3AHbAdoB6ADkANYBNgEyAdIBzwHOAc0BwgG/Ab4BvQFHAUABPgE9Aa4BqgE5AaYBpQGkAaMBogGhAZcBlgGHAYYBgwFqAWQBWgFZAVgBVwFHAT0BPAHoADkB5AA4ATYBNQE0AegAMgEvAS4BLQEsASsBKgEgAR8BEQEQAQ0B9gDuAO0A7ADoAOYA5AAYBxUAGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcYBxgHGAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkHGQcYBwMAGgcaBxgHBwAYBwkAGwcbBxgHDQAcBxwHHQcdBx4HHgcYBxgHGAcYBxgHHwcgBx8HGAcYBxgHGAcfBx8HHwcfBx8HHwcfBx8HHwcYBxgHHwcYBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBxgHGAcYBx8HGAcYByAHIQcYBxgHGAcYByEHIQciByEHGAcYBxgHIAcjBxgHGAcYBxgHGAcYBxgHGAcjByMHGAdoABgHGAcYBxgHGAcYByMHcABwAHAAcABwACMHIwcjByMHIwcjByMHIwcjByMHGAcYB3AAIwcYBxgHGAcYByEHGAchByEHGAcYByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHJAcYBxgHJAcYBxgHGAclByYHJwcYBxgHGAcmByYHaABoABgHKAcYBxgHJge8ALwAvAC8ALwAJgcmByYHJgcmByYHGAcYB7wAvAC8ALwAvAAmByYHJgcmByYHJgcmBxgHKQcYBxgHKgcYBxgHGAcrBysHKwcrBxgHGAcYBx8HHwcgBxgHHAAYBxgHHwcfBx8HHwcfBx8HHwccABgHGAcfBxgHGAcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBxgHGAcYByEHIQcsBxgHLQchBxgHIwcjBxgHGAcYBy4HGAdoAGgAQgEYBxgHLwcYB3AAcABwACMHIwcjByMHcAAjByMHIwdwAHAAIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjB3AAIweIACEHGAcvByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQckByQHJQcYByYHJgcwBzAHMQcmB7ABsAEmByYHsAGwASYHJgcmByYHJgcmByYHJgcmByYHJgcmB7ABJgewAbABJgcmByYHJgcmByYHJgcmByYHJgcmByYHMgczBzQHGAc0BzQHNAcYBxgHHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HIQcsBy0HIQcjBy4HLwcjB3AAIwcjByMHIwcjByMHIwcjB3AAIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByQHJgcmByYHJgcmByYHJgcmByYHJgcmByYHJgcmByYHJgcmByYHJgcmByYHJgcmByYHJgcmByYHJgcmByYHJgcmByYHNAc0BzQHHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfByEHIQcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByYHJgcmByYHJgcmByYHJgc1ByYHJgcmByYHJgcmByYHJgcmByYHJgcmByYHJgcmBzYHJgcmByYHJgcmByYHJgc0BzQHNAcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfByEHIQcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQcmByYHJgcmByYHNwc1ByYHJgcmByYHJgcmByYHJgcmBzgHNgcmByYHJgcmBzQHNAc0Bx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HIQchByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHJgcmByYHJgcmByYHJgcmByYHJgcmByYHNAc0Bx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfByEHIQcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByYHJgcmByYHJgcmBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwc5ByEHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByMHIwcjByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQcmByYHJgcmByYHJgcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBzoHIQcjByMHIwcjByMHIwcjByMHIwcjByMHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HOgcjByMHIwcjByMHIwcjByMHIwcjByMHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfByMHIwcjByMHIwcjByMHIwcjByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfByMHIwcjByMHIwcjByMHIwcjByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchByEHHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HIwcjByMHIwcjByMHIwcjByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfByMHIwcjByMHIwcjByMHIwcjByEHIQchByEHIQchByEHIQchByEHIQchByEHIQchBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcjByMHIwcjByMHIQchByEHIQchByEHIQchByEHIQchBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcjByMHIwcjByMHIQchByEHIQchByEHIQchByEHIQchBx8H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wwUAAAAAxQUAALEFrwXDBdMF1AUAANEF1gXIBdYFAAC/BQAA2gXOBdUF0AXEBQAAxQXGBd4FAADfBcoFyAXsBQAA7QXjBfUF6gXzBQAA3AXzBfIFAADmBQEG8gX2Bf0F+QUAAO0FDAYAAO8FDgYMBv4F9QUNBvcFCQYAAAAACgYAAPUF8wUcBh8GHwYBBgMGAwYAABUGJgYAABcGKgYgBisGKAYsBjoGOwYtBgAAOwYvBjAGNAZBBj4GQgYAADkGSAZNBkoGAAAAACwGXwZNBgAAQQZYBgAAUQZZBl0GAAAAAFwGUAZbBlEGYAYAAAAAQwYAAFQGAABVBmgGXgZmBmAGXwZsBm0GXwYAAAAAbQZhBmIGZgZuBmsGbwYAAGYGdgaFBn0GAAAAAGgGAAAAAAAAAAAAAAAAhwYAAIEGhwaNBosGjQaGBo0GiQaZBpkGkQaeBpAGmgabBpMGkgamBp0GnAaqBgAAjAYAAAAApQYAAKkGpgacBqsGowaqBqAGtAaWBrAGqgaxBrcGtAaxBqoGsQatBr0GvQa1BsIGtAa+Br8Gtwa2BsoGwQbFBtYGAAC9BsAGzgbcBtQG1wbVBtUG3gbjBgAA2gYAAAAA5gbiBuwG8AYAAPEG7wbrBuwG6QbUBgAA2QbrBu4G8gbpBgAAAAD5Bv0G+wbdBuIG8Ab+BvYG+Qb3BvcG/AYBBwAA+AYAAAAABAcABwoHDgcAAA8HDQcJBwoHBwfyBg0HBAcVBwUHFQcNB/0GEAcPBwUHAAAnByoHHQcfBy0HLAcgBzAHEgczBykHOQcwByEHPQcwBz4HIAc8BzMHRAc0B0QHPAcsBz8HPgcvBwAATgdMBz4HQAdOB00HQQdRBzMHSgcAAEYHPAcAAD0HXAdPB1EHTAdNB10HAABPB1IHVwdHBwAAOAdaB0oHAABcB1cHZwdZB1wHQAdlBwAAYAdWBwAAVwd2B2kHawdmB2cHdwcAAGkHbAdxB2EHAABSB3IHZAeDB4QHegd5B2oHewcAAH0HAAB5B4AHfgdfB4AHkQdyB4QHhgcAAIQHaAeJB3sHmgebB5EHkAeBB5IHAACUBwAAkQeYB5YHdweTB5YHngedB6gHogejB5EHqwcAAAAAAACtB6EHAACfB6kHqAeyB7IHAAAAAAAAAACkB6cHrweuB7gHsgezB6EHuwcAAAAAAAC9B7EHAACwB6wHvQfDB7wHvQe7B8oHwAe/B8UHuwfHB80HxgfHB8AHvAfNB9MHzAfNB8sH2gfQB88H1QcAANIH2QcAAM8H0wfgB9gH5AfSB9gHAADhBwAA1wfpBwAA3gflBwAA2wffB+wH5AfwB94H5AfyB+cH5wf0B/cH7QfzBwAA6QfuB+4H9wf9B/IH8gf/BwII+Af+BwAA9Af4BwAA6QcICPYH/Af5BwQIAADvB/wHAQgAAPIHEQj/BwUIAggNCAsIEwgFCBEIGAgAAAgIGAgAABIIGggMCBgIHwgAAA8IEQgXCB0IGAgnCBAIHAgYCB4IJAgfCC4IFwgAAC0IIwglCCAIAAAxCAAAMggoCCoIJQgAAAAALAgAADIIAAAAAC4IAAA0CAAALwgAADAIMggzCAAAAABuC1sIZghxCHwIhwiSCJsIpgiuCLYIvgjGCNEI2QjkCO8I+gj+CAcJDwkXCR8JIQksCTcJQglGCU8JWgllCXAJewmDCYsJAAAAAAAAAAAAAAABAQIDAQEEAQEBAQMFBgcICQoKCgcBAQYBAwsLCwsLCwgICAgICAgICAgICAgICAgICAgIBwQHAwgLCwsLCwsICAgICAgICAgICAgICAgBAQEJAAAAAAAAAAAAAAAAAAABAQEBAQEBAQIDAQECAQEBAQEBAQEBAQEBAQEBAQEBAgQFBgcICQEKCwwNDg8QERITFBMTExMTExMVFhcYGRoBGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OQE6Ozw9Pj9AQUIQQ0RFRkdIEElKS0wQEE0QTk9QUVIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAC1ALUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKAMkAxwC4ALcAIADHALUAJgAdACwAKwAiACMAHAAkALUAJQAIAAgALQAuACcAKAAbACEAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1AAoACQC1AHkAdwC1ACoAHgApAB8AxgDEAMkArwAsACsAHADJAK8ArwDJAK8AyAC4ACAAyACzACYAHQAsACsAIgAjABwAJACzACUACAAIAC0ALgAnACgAGwAhALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMACgAJALMAswAqAB4AKQAfAK8AJACvACUACAAIAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAHkAdwCvAB8ABAADAAIABAAFAIgAIACHAK4AIgAjABwAJACuACUACAAIAC0ALgAoACEArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ACgAJAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgAfAMYAxQDHAL8AvgC5AMAAwQC9AL0AvQC9AMIAwwC4ALUADwAAALYACAAaABgAFgAUABUAAQAXAAgACAC1ABIAEQAOABAAEwC1ALUAtQC1ALUAfgC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ABkADQDGAK8ArwAAAAEAsACvAA8AswAGABYAFAAVAAAAFwAIAAAABwAHAAgABwAOALMABwAHAAcAswCzAH4ABwCzALMABwCzALMAswAHALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzAAcAswAIABcACAAAAK8ArwCvAK8ArwB+AK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwAEAAQAhwCHAK4ABgCJABYAigCuAAcABwAHAK4ArgCuAAcArgAHAAcArgCuAK4ArgCuAK4ArgCuAAcArgCuAK4ABwCuAAcABwCuAK4ArgCuAK4ArgCuAK4AxQC+AL0AAAC9AL0AvQALAAwAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAXgC1ALUAtQC1ALUAtQC1ALUAtQC1AEgAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAegB4ALUArwCyALAArwAIALQACACzAAcAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzAD4APwCzALMAswCzALMAswCzALMAswCzALMAswCzAAgArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAF4ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAEgAPgCvAD8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAHoAeACvAAQACACuAK4ArgCuAK4AiwCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCcAK4ArgCuAK4ArgCuAK4ArgCuAK4AvQC9AL0AtQA7ALUAtQC1ALUAtQA1ALUAZQC1AHEAtQC1ALUAtQC1ALUAtQBaALUAtQC1ALUAtQByALUAtQC1AIQAtQC1ALUAYwC1AEQAtQC1ALUAtQC1ALUAtQC1ALUAYQC1ALUAtQC1ALUAtQBsALUAtQC1ALUAtQC1ALUAtQC1AK8ArwCzADsAswCzALMANQCzALMAcQCzALMAswCzALMAswCzAHIAswCEALMAswCzAEQAswCzALMAswCzALMAswCzALMAswCzALMArwA7AK8ArwCvAK8ANQCvAGUArwBxAK8ArwCvAK8ArwCvAK8AWgCvAK8ArwCvAK8AcgCvAK8ArwCEAK8ArwCvAK8AYwCvAEQArwCvAK8ArwCvAK8ArwCvAK8AYQCvAK8ArwCvAK8ArwBsAK8ArwCvAK8ArwCvAK8ArwCvAK4ArgCuAI8AlwCOAK4ArgCZAJIAlQCuAK4AmgCuAK4ArgCuAK4AoACoAJ8ArgCuAKsAowCmAK4ArgCsAK4ArgC9AL0AvQC1AFgANwC1ALUAtQA0ALUAtQC1ALUAcABCALUAtQBgALUATgC1ALUAtQBNALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1AH0AtQC1ALUAtQC1AGQAtQC1ALUAYgC1ALUAtQC1ALUAtQC1AK8ArwCzADcAswCzADQAswCzALMAcACzAE4AswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMArwBYADcArwCvADQArwCvAK8ArwBwAEIArwCvAGAArwBOAK8ArwCvAE0ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwB9AK8ArwCvAK8ArwBkAK8ArwCvAGIArwCvAK8ArwCvAK8ArwCuAJAAjQCuAK4AmQCZAJQArgCYAK4ArgChAJ4ArgCuAKsAqwClAK4AqgCuAL0AvQC7ALUAtQC1AEEAtQBZALUAtQC1ALUAtQC1AEMAtQCBALUAtQC1AFcAtQA2ALUALwC1ALUAbwC1ADIATAC1ALUAtQC1ALUAtQBJALUAtQC1ALUAtQBfAEoAtQC1ALUArwCvALMAswCzAEEAswCzALMAswCzAIEAswCzADYAswCzALMAbwCzADIAswCzALMASQCzALMAswCzAK8ArwCvAEEAWQCvAK8ArwCvAK8ArwBDAK8AgQCvAK8ArwBXAK8ANgCvAK8ALwCvAK8AbwCvADIATACvAK8ArwCvAK8ArwBJAK8ArwCvAK8ArwBfAEoArwCvAK8ArgCuAEMAlgCTAK4ArgCuAKkApwCkAK4AvAC6ALUAPQC1ALUAtQC1ALUAtQBQALUAtQC1AHwAtQC1ALUAtQC1AGYAtQC1AGkAggC1ALUAtQC1ALUAtQC1AHYAWwC1ADMAtQC1AK8ArwCzAD0AswCzALMAswBQALMAfACzALMAswCzALMAcwCCALMAswB2ALMAswCzAK8APQCvAK8ArwCvAK8AUACvAK8ArwB8AK8ArwCvAK8ArwCvAGYArwCvAGkAggCvAK8ArwCvAK8ArwCvAHYAWwCvADMArwCvAK4ArgCuAK4ArgCuAJsAtQC1AIYAtQC1ALUAtQC1ALUAtQC1ALUAPAC1ALUAtQC1ALUAtQC1AFYAtQC1ALUAtQCAAK0AtQCvAK8AmwCzALMAhgCzALMAswA8AEAAswCzALMAswCzAIAArQCzAJsArwCGAK8ArwCvAK8ArwCvAK8ArwCvADwAQACvAK8ArwCvAK8ArwCvAFYArwCvAK8ArwCAAK0ArwCbAIwAkQCtAJ0AogC1AE8AtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAtQC1ALUAbgC1AK8ATwCzAE8AswCzALMAswCzALMAswCzALMArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwBuAK8AtQC1ALUAtQC1ALUAtQC1ALUAMQC1AHQAdQC1ALUAtQC1AEsAtQC1ALUAtQC1ALUArwCzALMAswCzALMAdAB1ALMAswCzALMArwCvAK8ArwCvAK8ArwCvAK8AMQCvAHQAdQCvAK8ArwCvAEsArwCvAK8ArwCvAK8AtQC1ALUAtQC1ALUAtQC1ALUAZwBdALUAtQC1ALUAtQC1ALUAtQC1ALMAswCzALMAZwCzALMAswCzAK8ArwCvAK8ArwCvAK8ArwCvAGcAXQCvAK8ArwCvAK8ArwCvAK8ArwC1AFIAtQC1AIUAtQC1ALUAtQC1ALUAtQAwALUAtQC1ALUAagC1ALMAswCFALMAswCzALMAswCzAK8AUgCvAK8AhQCvAK8ArwCvAK8ArwCvADAArwCvAK8ArwBqAK8AtQC1ALUAtQC1ALUAtQC1AFwAtQBHALUAtQC1ALUAswCzALMAswCzAEcAswCzAK8ArwCvAK8ArwCvAK8ArwBcAK8ARwCvAK8ArwCvALUAtQC1ALUAtQC1ALUAtQC1AGgAgwBGALUAtQBFALMAswCzALMAswBoAIMARgBFAK8ArwCvAK8ArwCvAK8ArwCvAGgAgwBGAK8ArwBFALUAtQC1ALUAtQC1ALUAtQC1ALUAtQCzALMAswCzALMArwCvAK8ArwCvAK8ArwCvAK8ArwCvAH8AtQC1ADoAtQC1ALUAtQC1ALUAtQB/ALMAOgCzALMAfwCvAK8AOgCvAK8ArwCvAK8ArwCvALUAtQC1ALUAtQC1ALUAawC1ALMAswCzAK8ArwCvAK8ArwCvAK8AawCvALUAOAC1ALUAtQC1ALUAtQA4ALMAswCvADgArwCvAK8ArwCvAK8AtQC1ALUAtQC1AHsAtQCzAHsArwCvAK8ArwCvAHsArwC1ALUAtQC1ALUAtQCzAK8ArwCvAK8ArwCvAFEAtQC1ALUAtQBtALMAUQCvAK8ArwCvAG0AOQC1AFQAtQA5ADkArwBUAK8AUwC1AFMArwC1AK8AVQBVAAAAAAAAAAAAJVAlRjogaW52YWxpZCBoZXggbnVtYmVyIGAlcycKAABTaGFyZWQgbGlicmFyeSBjb250cm9sIGZvciBIUC9VWCBjb21wYXRpYmlsaXR5AAAlUCVGOiB1c2UgdGhlIC0taGVscCBvcHRpb24gZm9yIHVzYWdlIGluZm9ybWF0aW9uCgAAAAAAACVQJUY6IHVucmVjb2duaXplZCAtYSBvcHRpb24gYCVzJwoAAAAAAAAlUCVGOiB1bnJlY29nbml6ZWQgLWFzc2VydCBvcHRpb24gYCVzJwoAJUYlUDogdW5rbm93biBkZW1hbmdsaW5nIHN0eWxlIGAlcycKAAAAACVzOiBlbXVsYXRpb24gc3BlY2lmaWMgb3B0aW9uczoKAAAAAAAAAAAgIC0tbGQtZ2VuZXJhdGVkLXVud2luZC1pbmZvICBHZW5lcmF0ZSBleGNlcHRpb24gaGFuZGxpbmcgaW5mbyBmb3IgUExUCiAgLS1uby1sZC1nZW5lcmF0ZWQtdW53aW5kLWluZm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9uJ3QgZ2VuZXJhdGUgZXhjZXB0aW9uIGhhbmRsaW5nIGluZm8gZm9yIFBMVAoAAAAAICAtLWJ1aWxkLWlkWz1TVFlMRV0gICAgICAgICAgR2VuZXJhdGUgYnVpbGQgSUQgbm90ZQoAAAAgIC0tY29tcHJlc3MtZGVidWctc2VjdGlvbnM9W25vbmV8emxpYnx6bGliLWdudXx6bGliLWdhYmldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzIERXQVJGIGRlYnVnIHNlY3Rpb25zIHVzaW5nIHpsaWIKAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IG5vbmUKAAAAICAteiBjb21tb24tcGFnZS1zaXplPVNJWkUgICAgU2V0IGNvbW1vbiBwYWdlIHNpemUgdG8gU0laRQoAAAAAACAgLXogbWF4LXBhZ2Utc2l6ZT1TSVpFICAgICAgIFNldCBtYXhpbXVtIHBhZ2Ugc2l6ZSB0byBTSVpFCgAAAAAgIC16IGRlZnMgICAgICAgICAgICAgICAgICAgICBSZXBvcnQgdW5yZXNvbHZlZCBzeW1ib2xzIGluIG9iamVjdCBmaWxlcy4KAAAAAAAAACAgLXogbXVsZGVmcyAgICAgICAgICAgICAgICAgIEFsbG93IG11bHRpcGxlIGRlZmluaXRpb25zCgAAAAAAAAAgIC16IGV4ZWNzdGFjayAgICAgICAgICAgICAgICBNYXJrIGV4ZWN1dGFibGUgYXMgcmVxdWlyaW5nIGV4ZWN1dGFibGUgc3RhY2sKAAAAACAgLXogbm9leGVjc3RhY2sgICAgICAgICAgICAgIE1hcmsgZXhlY3V0YWJsZSBhcyBub3QgcmVxdWlyaW5nIGV4ZWN1dGFibGUgc3RhY2sKAAAAAAAAAAAgIC16IGdsb2JhbGF1ZGl0ICAgICAgICAgICAgICBNYXJrIGV4ZWN1dGFibGUgcmVxdWlyaW5nIGdsb2JhbCBhdWRpdGluZwoAAAAAAAAAACAgLS1hdWRpdD1BVURJVExJQiAgICAgICAgICAgIFNwZWNpZnkgYSBsaWJyYXJ5IHRvIHVzZSBmb3IgYXVkaXRpbmcKAAAAACAgLUJncm91cCAgICAgICAgICAgICAgICAgICAgIFNlbGVjdHMgZ3JvdXAgbmFtZSBsb29rdXAgcnVsZXMgZm9yIERTTwoAACAgLS1kaXNhYmxlLW5ldy1kdGFncyAgICAgICAgIERpc2FibGUgbmV3IGR5bmFtaWMgdGFncwoAICAtLWVuYWJsZS1uZXctZHRhZ3MgICAgICAgICAgRW5hYmxlIG5ldyBkeW5hbWljIHRhZ3MKAAAgIC0tZWgtZnJhbWUtaGRyICAgICAgICAgICAgICBDcmVhdGUgLmVoX2ZyYW1lX2hkciBzZWN0aW9uCgAAAAAAICAtLW5vLWVoLWZyYW1lLWhkciAgICAgICAgICAgRG8gbm90IGNyZWF0ZSAuZWhfZnJhbWVfaGRyIHNlY3Rpb24KAAAAAAAAICAtLWV4Y2x1ZGUtbGlicz1MSUJTICAgICAgICAgTWFrZSBhbGwgc3ltYm9scyBpbiBMSUJTIGhpZGRlbgoAACAgLS1oYXNoLXN0eWxlPVNUWUxFICAgICAgICAgIFNldCBoYXNoIHN0eWxlIHRvIHN5c3YsIGdudSBvciBib3RoCgAAAAAAACAgLVAgQVVESVRMSUIsIC0tZGVwYXVkaXQ9QVVESVRMSUIKCQkJICAgICAgU3BlY2lmeSBhIGxpYnJhcnkgdG8gdXNlIGZvciBhdWRpdGluZyBkZXBlbmRlbmNpZXMKACAgLXogY29tYnJlbG9jICAgICAgICAgICAgICAgIE1lcmdlIGR5bmFtaWMgcmVsb2NzIGludG8gb25lIHNlY3Rpb24gYW5kIHNvcnQKAAAAICAteiBub2NvbWJyZWxvYyAgICAgICAgICAgICAgRG9uJ3QgbWVyZ2UgZHluYW1pYyByZWxvY3MgaW50byBvbmUgc2VjdGlvbgoAAAAAAAAgIC16IGdsb2JhbCAgICAgICAgICAgICAgICAgICBNYWtlIHN5bWJvbHMgaW4gRFNPIGF2YWlsYWJsZSBmb3Igc3Vic2VxdWVudGx5CgkJCSAgICAgICBsb2FkZWQgb2JqZWN0cwoAACAgLXogaW5pdGZpcnN0ICAgICAgICAgICAgICAgIE1hcmsgRFNPIHRvIGJlIGluaXRpYWxpemVkIGZpcnN0IGF0IHJ1bnRpbWUKAAAAAAAAICAteiBpbnRlcnBvc2UgICAgICAgICAgICAgICAgTWFyayBvYmplY3QgdG8gaW50ZXJwb3NlIGFsbCBEU09zIGJ1dCBleGVjdXRhYmxlCgAgIC16IGxhenkgICAgICAgICAgICAgICAgICAgICBNYXJrIG9iamVjdCBsYXp5IHJ1bnRpbWUgYmluZGluZyAoZGVmYXVsdCkKAAAAAAAAACAgLXogbG9hZGZsdHIgICAgICAgICAgICAgICAgIE1hcmsgb2JqZWN0IHJlcXVpcmluZyBpbW1lZGlhdGUgcHJvY2VzcwoAACAgLXogbm9jb3B5cmVsb2MgICAgICAgICAgICAgIERvbid0IGNyZWF0ZSBjb3B5IHJlbG9jcwoAICAteiBub2RlZmF1bHRsaWIgICAgICAgICAgICAgTWFyayBvYmplY3Qgbm90IHRvIHVzZSBkZWZhdWx0IHNlYXJjaCBwYXRocwoAAAAAAAAgIC16IG5vZGVsZXRlICAgICAgICAgICAgICAgICBNYXJrIERTTyBub24tZGVsZXRhYmxlIGF0IHJ1bnRpbWUKAAAAAAAAAAAgIC16IG5vZGxvcGVuICAgICAgICAgICAgICAgICBNYXJrIERTTyBub3QgYXZhaWxhYmxlIHRvIGRsb3BlbgoAICAteiBub2R1bXAgICAgICAgICAgICAgICAgICAgTWFyayBEU08gbm90IGF2YWlsYWJsZSB0byBkbGR1bXAKACAgLXogbm93ICAgICAgICAgICAgICAgICAgICAgIE1hcmsgb2JqZWN0IG5vbi1sYXp5IHJ1bnRpbWUgYmluZGluZwoAAAAAACAgLXogb3JpZ2luICAgICAgICAgICAgICAgICAgIE1hcmsgb2JqZWN0IHJlcXVpcmluZyBpbW1lZGlhdGUgJE9SSUdJTgoJCQkJcHJvY2Vzc2luZyBhdCBydW50aW1lCgAAAAAAAAAAICAteiByZWxybyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIFJFTFJPIHByb2dyYW0gaGVhZGVyIChkZWZhdWx0KQoAAAAAICAteiBub3JlbHJvICAgICAgICAgICAgICAgICAgRG9uJ3QgY3JlYXRlIFJFTFJPIHByb2dyYW0gaGVhZGVyCgAAAAAAAAAAICAteiBzZXBhcmF0ZS1jb2RlICAgICAgICAgICAgQ3JlYXRlIHNlcGFyYXRlIGNvZGUgcHJvZ3JhbSBoZWFkZXIKAAAAAAAAICAteiBub3NlcGFyYXRlLWNvZGUgICAgICAgICAgRG9uJ3QgY3JlYXRlIHNlcGFyYXRlIGNvZGUgcHJvZ3JhbSBoZWFkZXIgKGRlZmF1bHQpCgAAAAAAACAgLXogY29tbW9uICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIGNvbW1vbiBzeW1ib2xzIHdpdGggU1RUX0NPTU1PTiB0eXBlCgAAAAAAICAteiBub2NvbW1vbiAgICAgICAgICAgICAgICAgR2VuZXJhdGUgY29tbW9uIHN5bWJvbHMgd2l0aCBTVFRfT0JKRUNUIHR5cGUKAAAAAAAgIC16IHN0YWNrLXNpemU9U0laRSAgICAgICAgICBTZXQgc2l6ZSBvZiBzdGFjayBzZWdtZW50CgAAAAAAAAAAICAteiB0ZXh0ICAgICAgICAgICAgICAgICAgICAgVHJlYXQgRFRfVEVYVFJFTCBpbiBzaGFyZWQgb2JqZWN0IGFzIGVycm9yCgAAAAAAAAAgIC16IG5vdGV4dCAgICAgICAgICAgICAgICAgICBEb24ndCB0cmVhdCBEVF9URVhUUkVMIGluIHNoYXJlZCBvYmplY3QgYXMgZXJyb3IKACAgLXogdGV4dG9mZiAgICAgICAgICAgICAgICAgIERvbid0IHRyZWF0IERUX1RFWFRSRUwgaW4gc2hhcmVkIG9iamVjdCBhcyBlcnJvcgoAPGh0dHA6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhLz4AACVQJUY6IGJhZCAtLXVucmVzb2x2ZWQtc3ltYm9scyBvcHRpb246ICVzCgAAAAAAACVQJUY6IHVucmVjb2duaXNlZCBvcHRpb246ICVzCgAAJVAlRjogLXIgYW5kICVzIG1heSBub3QgYmUgdXNlZCB0b2dldGhlcgoAAAAAAAAAJVAlRjogLXIgYW5kIC1zaGFyZWQgbWF5IG5vdCBiZSB1c2VkIHRvZ2V0aGVyCgAAJVAlRjogLXIgYW5kIC1waWUgbWF5IG5vdCBiZSB1c2VkIHRvZ2V0aGVyCgAAAAAAJVA6IFNPTkFNRSBtdXN0IG5vdCBiZSBlbXB0eSBzdHJpbmc7IGtlZXBpbmcgcHJldmlvdXMgb25lCgAAAAAAACVQJUY6IGludmFsaWQgY29tbW9uIHNlY3Rpb24gc29ydGluZyBvcHRpb246ICVzCgAAAAAAAAAAJVAlRjogaW52YWxpZCBzZWN0aW9uIHNvcnRpbmcgb3B0aW9uOiAlcwoAAAAAAAAAJVAlRjogaW52YWxpZCBhcmd1bWVudCB0byBvcHRpb24gIi0tc2VjdGlvbi1zdGFydCIKAAAAAAAlUCVGOiBtaXNzaW5nIGFyZ3VtZW50KHMpIHRvIG9wdGlvbiAiLS1zZWN0aW9uLXN0YXJ0IgoAACVQJUY6IGdyb3VwIGVuZGVkIGJlZm9yZSBpdCBiZWdhbiAoLS1oZWxwIGZvciB1c2FnZSkKAAAAJVAlWDogLS1oYXNoLXNpemUgbmVlZHMgYSBudW1lcmljIGFyZ3VtZW50CgAAAAAAJVAlRjogbm8gc3RhdGUgcHVzaGVkIGJlZm9yZSBwb3BwaW5nCgAAACVQJUY6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uICItLW9ycGhhbi1oYW5kbGluZyIKAAAAJVA6IFNPTkFNRSBtdXN0IG5vdCBiZSBlbXB0eSBzdHJpbmc7IGlnbm9yZWQKAAAAJVAlRjogLUYgbWF5IG5vdCBiZSB1c2VkIHdpdGhvdXQgLXNoYXJlZAoAAAAAAAAAJVAlRjogLWYgbWF5IG5vdCBiZSB1c2VkIHdpdGhvdXQgLXNoYXJlZAoAAAAAAAAAU3BlY2lmeSB0YXJnZXQgZm9yIGZvbGxvd2luZyBpbnB1dCBmaWxlcwAAAAAAAAAARm9yY2UgY29tbW9uIHN5bWJvbHMgdG8gYmUgZGVmaW5lZAAAAAAAAEZvcmNlIGdyb3VwIG1lbWJlcnMgb3V0IG9mIGdyb3VwcwAAAAAAAABVbmRvIHRoZSBlZmZlY3Qgb2YgLS1leHBvcnQtZHluYW1pYwAAAAAAQXV4aWxpYXJ5IGZpbHRlciBmb3Igc2hhcmVkIG9iamVjdCBzeW1ib2wgdGFibGUARmlsdGVyIGZvciBzaGFyZWQgb2JqZWN0IHN5bWJvbCB0YWJsZQAAAFNtYWxsIGRhdGEgc2l6ZSAoaWYgbm8gc2l6ZSwgc2FtZSBhcyAtLXNoYXJlZCkAAFNldCBpbnRlcm5hbCBuYW1lIG9mIHNoYXJlZCBsaWJyYXJ5AAAAAABTZXQgUFJPR1JBTSBhcyB0aGUgZHluYW1pYyBsaW5rZXIgdG8gdXNlAAAAAAAAAABQcm9kdWNlIGFuIGV4ZWN1dGFibGUgd2l0aCBubyBwcm9ncmFtIGludGVycHJldGVyIGhlYWRlcgAAAAAAAAAAQWRkIERJUkVDVE9SWSB0byBsaWJyYXJ5IHNlYXJjaCBwYXRoAAAAAE92ZXJyaWRlIHRoZSBkZWZhdWx0IHN5c3Jvb3QgbG9jYXRpb24AAABQcmludCBtYXAgZmlsZSBvbiBzdGFuZGFyZCBvdXRwdXQAAAAAAAAARG8gbm90IHBhZ2UgYWxpZ24gZGF0YSwgZG8gbm90IG1ha2UgdGV4dCByZWFkb25seQAAAAAAAABQYWdlIGFsaWduIGRhdGEsIG1ha2UgdGV4dCByZWFkb25seQAAAAAAU2VuZCBhcmcgdG8gbGFzdC1sb2FkZWQgcGx1Z2luAABTdG9yZSBwbHVnaW4gaW50ZXJtZWRpYXRlIGZpbGVzIHBlcm1hbmVudGx5AAAAAABJZ25vcmVkIGZvciBHQ0MgTFRPIG9wdGlvbiBjb21wYXRpYmlsaXR5AAAAAAAAAABJZ25vcmVkIGZvciBHQ0MgbGlua2VyIG9wdGlvbiBjb21wYXRpYmlsaXR5AAAAAABJZ25vcmVkIGZvciBnb2xkIG9wdGlvbiBjb21wYXRpYmlsaXR5AAAASWdub3JlZCBmb3IgU1ZSNCBjb21wYXRpYmlsaXR5AABHZW5lcmF0ZSByZWxvY2F0aW9ucyBpbiBmaW5hbCBvdXRwdXQAAAAASnVzdCBsaW5rIHN5bWJvbHMgKGlmIGRpcmVjdG9yeSwgc2FtZSBhcyAtLXJwYXRoKQAAAAAAAABTdHJpcCBzeW1ib2xzIGluIGRpc2NhcmRlZCBzZWN0aW9ucwAAAAAARG8gbm90IHN0cmlwIHN5bWJvbHMgaW4gZGlzY2FyZGVkIHNlY3Rpb25zAAAAAAAAU3RhcnQgd2l0aCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIFNZTUJPTAAAAAAAAAAAUmVxdWlyZSBTWU1CT0wgYmUgZGVmaW5lZCBpbiB0aGUgZmluYWwgb3V0cHV0AAAARG9uJ3QgbWVyZ2UgaW5wdXQgW1NFQ1RJT04gfCBvcnBoYW5dIHNlY3Rpb25zAAAAQnVpbGQgZ2xvYmFsIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgdGFibGVzAAAAAAAAUHJpbnQgdmVyc2lvbiBhbmQgZW11bGF0aW9uIGluZm9ybWF0aW9uAERpc2NhcmQgdGVtcG9yYXJ5IGxvY2FsIHN5bWJvbHMgKGRlZmF1bHQpAAAAAAAAAERvbid0IGRpc2NhcmQgYW55IGxvY2FsIHN5bWJvbHMARGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgU29sYXJpcyBjb21wYXRpYmlsaXR5AAAAQWNjZXB0IGlucHV0IGZpbGVzIHdob3NlIGFyY2hpdGVjdHVyZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZAAAAAAAAFJlamVjdCBpbnB1dCBmaWxlcyB3aG9zZSBhcmNoaXRlY3R1cmUgaXMgdW5rbm93bgAAAAAAAAAAT25seSBzZXQgRFRfTkVFREVEIGZvciBmb2xsb3dpbmcgZHluYW1pYyBsaWJzIGlmIHVzZWQAAABBbHdheXMgc2V0IERUX05FRURFRCBmb3IgZHluYW1pYyBsaWJyYXJpZXMgbWVudGlvbmVkIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgbGluZQAAAAAAAAAASWdub3JlZCBmb3IgU3VuT1MgY29tcGF0aWJpbGl0eQBEbyBub3QgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJpZXMAAAAAQmluZCBnbG9iYWwgcmVmZXJlbmNlcyBsb2NhbGx5AABCaW5kIGdsb2JhbCBmdW5jdGlvbiByZWZlcmVuY2VzIGxvY2FsbHkAQ2hlY2sgc2VjdGlvbiBhZGRyZXNzZXMgZm9yIG92ZXJsYXBzIChkZWZhdWx0KQAARG8gbm90IGNoZWNrIHNlY3Rpb24gYWRkcmVzc2VzIGZvciBvdmVybGFwcwAAAAAAQ29weSBEVF9ORUVERUQgbGlua3MgbWVudGlvbmVkIGluc2lkZSBEU09zIHRoYXQgZm9sbG93AABEbyBub3QgY29weSBEVF9ORUVERUQgbGlua3MgbWVudGlvbmVkIGluc2lkZSBEU09zIHRoYXQgZm9sbG93AAAARGVtYW5nbGUgc3ltYm9sIG5hbWVzIFt1c2luZyBTVFlMRV0AAAAAAERvIG5vdCB0cmVhdCB3YXJuaW5ncyBhcyBlcnJvcnMgKGRlZmF1bHQpAAAAAAAAAEZvcmNlIGdlbmVyYXRpb24gb2YgZmlsZSB3aXRoIC5leGUgc3VmZml4AAAAAAAAAFJlbW92ZSB1bnVzZWQgc2VjdGlvbnMgKG9uIHNvbWUgdGFyZ2V0cykAAAAAAAAAAERvbid0IHJlbW92ZSB1bnVzZWQgc2VjdGlvbnMgKGRlZmF1bHQpAABMaXN0IHJlbW92ZWQgdW51c2VkIHNlY3Rpb25zIG9uIHN0ZGVycgAARG8gbm90IGxpc3QgcmVtb3ZlZCB1bnVzZWQgc2VjdGlvbnMAAAAAAEtlZXAgZXhwb3J0ZWQgc3ltYm9scyB3aGVuIHJlbW92aW5nIHVudXNlZCBzZWN0aW9ucwAAAAAAU2V0IGRlZmF1bHQgaGFzaCB0YWJsZSBzaXplIGNsb3NlIHRvIDxOVU1CRVI+AAAAVXNlIGxlc3MgbWVtb3J5IGFuZCBtb3JlIGRpc2sgSS9PAAAAAAAAAERvIG5vdCBhbGxvdyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgaW4gb2JqZWN0IGZpbGVzAAAAAAAAQWxsb3cgdW5yZXNvbHZlZCByZWZlcmVuY2VzIGluIHNoYXJlZCBsaWJyYXJpZXMARG8gbm90IGFsbG93IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBpbiBzaGFyZWQgbGlicwAAAAAAAABDcmVhdGUgZGVmYXVsdCBzeW1ib2wgdmVyc2lvbiBmb3IgaW1wb3J0ZWQgc3ltYm9scwAAAAAAAERvbid0IHdhcm4gYWJvdXQgbWlzbWF0Y2hlZCBpbnB1dCBmaWxlcwBEb24ndCB3YXJuIG9uIGZpbmRpbmcgYW4gaW5jb21wYXRpYmxlIGxpYnJhcnkAAABDcmVhdGUgYW4gb3V0cHV0IGZpbGUgZXZlbiBpZiBlcnJvcnMgb2NjdXIAAAAAAABPbmx5IHVzZSBsaWJyYXJ5IGRpcmVjdG9yaWVzIHNwZWNpZmllZCBvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21tYW5kIGxpbmUAAAAAAABJZ25vcmVkIGZvciBMaW51eCBjb21wYXRpYmlsaXR5AFJlZHVjZSBtZW1vcnkgb3ZlcmhlYWRzLCBwb3NzaWJseSB0YWtpbmcgbXVjaCBsb25nZXIAAAAAUmVkdWNlIGNvZGUgc2l6ZSBieSB1c2luZyB0YXJnZXQgc3BlY2lmaWMgb3B0aW1pemF0aW9ucwBEbyBub3QgdXNlIHJlbGF4YXRpb24gdGVjaG5pcXVlcyB0byByZWR1Y2UgY29kZSBzaXplAAAAAEtlZXAgb25seSBzeW1ib2xzIGxpc3RlZCBpbiBGSUxFAAAAAAAAAABTZXQgcnVudGltZSBzaGFyZWQgbGlicmFyeSBzZWFyY2ggcGF0aAAAU2V0IGxpbmsgdGltZSBzaGFyZWQgbGlicmFyeSBzZWFyY2ggcGF0aAAAAAAAAAAAQ3JlYXRlIGEgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZQAAAAAAAAAAU29ydCBjb21tb24gc3ltYm9scyBieSBhbGlnbm1lbnQgW2luIHNwZWNpZmllZCBvcmRlcl0AAABTb3J0IHNlY3Rpb25zIGJ5IG5hbWUgb3IgbWF4aW11bSBhbGlnbm1lbnQAAAAAAABIb3cgbWFueSB0YWdzIHRvIHJlc2VydmUgaW4gLmR5bmFtaWMgc2VjdGlvbgAAAABTcGxpdCBvdXRwdXQgc2VjdGlvbnMgZXZlcnkgU0laRSBvY3RldHMAU3BsaXQgb3V0cHV0IHNlY3Rpb25zIGV2ZXJ5IENPVU5UIHJlbG9jcwAAAAAAAAAARGlzcGxheSB0YXJnZXQgc3BlY2lmaWMgb3B0aW9ucwBVc2Ugc2FtZSBmb3JtYXQgYXMgbmF0aXZlIGxpbmtlcgAAAAAAAAAASG93IHRvIGhhbmRsZSB1bnJlc29sdmVkIHN5bWJvbHMuICA8bWV0aG9kPiBpczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUtYWxsLCByZXBvcnQtYWxsLCBpZ25vcmUtaW4tb2JqZWN0LWZpbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZS1pbi1zaGFyZWQtbGlicwAAAE91dHB1dCBsb3RzIG9mIGluZm9ybWF0aW9uIGR1cmluZyBsaW5rAABSZWFkIHZlcnNpb24gaW5mb3JtYXRpb24gc2NyaXB0AFRha2UgZXhwb3J0IHN5bWJvbHMgbGlzdCBmcm9tIC5leHBvcnRzLCB1c2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZTUJPTCBhcyB0aGUgdmVyc2lvbi4AAAAAQWRkIGRhdGEgc3ltYm9scyB0byBkeW5hbWljIGxpc3QAAAAAAAAAAFVzZSBDKysgb3BlcmF0b3IgbmV3L2RlbGV0ZSBkeW5hbWljIGxpc3QAAAAAAAAAAFdhcm4gYWJvdXQgZHVwbGljYXRlIGNvbW1vbiBzeW1ib2xzAAAAAABXYXJuIGlmIGdsb2JhbCBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMgYXJlIHNlZW4AAAAAAAAAAFdhcm4gaWYgdGhlIG11bHRpcGxlIEdQIHZhbHVlcyBhcmUgdXNlZABXYXJuIG9ubHkgb25jZSBwZXIgdW5kZWZpbmVkIHN5bWJvbAAAAAAAV2FybiBpZiBzdGFydCBvZiBzZWN0aW9uIGNoYW5nZXMgZHVlIHRvIGFsaWdubWVudAAAAAAAAABXYXJuIGlmIHNoYXJlZCBvYmplY3QgaGFzIERUX1RFWFRSRUwAAAAAV2FybiBpZiBhbiBvYmplY3QgaGFzIGFsdGVybmF0ZSBFTEYgbWFjaGluZSBjb2RlAAAAAAAAAABSZXBvcnQgdW5yZXNvbHZlZCBzeW1ib2xzIGFzIHdhcm5pbmdzAAAAUmVwb3J0IHVucmVzb2x2ZWQgc3ltYm9scyBhcyBlcnJvcnMAAAAAAEluY2x1ZGUgYWxsIG9iamVjdHMgZnJvbSBmb2xsb3dpbmcgYXJjaGl2ZXMAAAAAAFVzZSB3cmFwcGVyIGZ1bmN0aW9ucyBmb3IgU1lNQk9MAAAAAAAAAABVbnJlc29sdmVkIFNZTUJPTCB3aWxsIG5vdCBjYXVzZSBhbiBlcnJvciBvciB3YXJuaW5nAAAAAFB1c2ggc3RhdGUgb2YgZmxhZ3MgZ292ZXJuaW5nIGlucHV0IGZpbGUgaGFuZGxpbmcAAAAAAAAAUG9wIHN0YXRlIG9mIGZsYWdzIGdvdmVybmluZyBpbnB1dCBmaWxlIGhhbmRsaW5nAAAAAAAAAABDb250cm9sIGhvdyBvcnBoYW4gc2VjdGlvbnMgYXJlIGhhbmRsZWQuAC1waWUALUcALS1zaGFyZWQALS1saWJyYXJ5PSVzACVQOiAlczogbWlzc2luZyBhcmd1bWVudAoAZGVmYXVsdABub2RlZmluaXRpb25zAG5vc3ltYm9saWMAcHVyZS10ZXh0AC0tZGVmc3ltACVQJUY6IGludmFsaWQgbnVtYmVyIGAlcycKAFVzYWdlOiAlcyBbb3B0aW9uc10gZmlsZS4uLgoAT3B0aW9uczoKACAlcwAgIEBGSUxFAFJlYWQgb3B0aW9ucyBmcm9tIEZJTEUKACVzOiBzdXBwb3J0ZWQgdGFyZ2V0czoAJXM6IHN1cHBvcnRlZCBlbXVsYXRpb25zOiAARUxGIGVtdWxhdGlvbnM6CgBSZXBvcnQgYnVncyB0byAlcwoAaWdub3JlLWFsbAByZXBvcnQtYWxsAGlnbm9yZS1pbi1vYmplY3QtZmlsZXMAaWdub3JlLWluLXNoYXJlZC1saWJzACVQJUY6IGJhZCAtcGx1Z2luLW9wdCBvcHRpb24KACVzJWMlcwAlUCVGOiAtc2hhcmVkIG5vdCBzdXBwb3J0ZWQKACVQJUY6IC1waWUgbm90IHN1cHBvcnRlZAoAZGVzY2VuZGluZwBhc2NlbmRpbmcALnRleHQtc2VnbWVudAAucm9kYXRhLXNlZ21lbnQALmxkYXRhLXNlZ21lbnQAUCwAcGxhY2UAd2FybgBkaXNjYXJkACVQOiB1bnJlY29nbml6ZWQgb3B0aW9uICclcycKACVzLSVzJXMAJXMtJWMAS0VZV09SRABTZXQgYXJjaGl0ZWN0dXJlAG1yaS1zY3JpcHQAUmVhZCBNUkkgZm9ybWF0IGxpbmtlciBzY3JpcHQAZGMAZHAAZm9yY2UtZ3JvdXAtYWxsb2NhdGlvbgBTZXQgc3RhcnQgYWRkcmVzcwBFeHBvcnQgYWxsIGR5bmFtaWMgc3ltYm9scwBuby1leHBvcnQtZHluYW1pYwBFQgBMaW5rIGJpZy1lbmRpYW4gb2JqZWN0cwBMaW5rIGxpdHRsZS1lbmRpYW4gb2JqZWN0cwBhdXhpbGlhcnkAZmlsdGVyAElnbm9yZWQAZ3BzaXplAHNvbmFtZQBGSUxFTkFNRQBQUk9HUkFNAG5vLWR5bmFtaWMtbGlua2VyAFNlYXJjaCBmb3IgbGlicmFyeSBMSUJOQU1FAGxpYnJhcnktcGF0aABESVJFQ1RPUlkAc3lzcm9vdD08RElSRUNUT1JZPgBTZXQgZW11bGF0aW9uAHByaW50LW1hcABubWFnaWMARG8gbm90IHBhZ2UgYWxpZ24gZGF0YQBuby1vbWFnaWMAU2V0IG91dHB1dCBmaWxlIG5hbWUAT3B0aW1pemUgb3V0cHV0IGZpbGUAb3V0LWltcGxpYgBHZW5lcmF0ZSBpbXBvcnQgbGlicmFyeQBQTFVHSU4ATG9hZCBuYW1lZCBwbHVnaW4AcGx1Z2luLW9wdABBUkcAcGx1Z2luLXNhdmUtdGVtcHMAZmx0bwBmbHRvLXBhcnRpdGlvbj0AZnVzZS1sZD0Abm8tbWFwLXdob2xlLWZpbGVzAFF5AGVtaXQtcmVsb2NzAHJlbG9jYXRhYmxlAEdlbmVyYXRlIHJlbG9jYXRhYmxlIG91dHB1dABqdXN0LXN5bWJvbHMAc3RyaXAtYWxsAFN0cmlwIGFsbCBzeW1ib2xzAHN0cmlwLWRlYnVnAFN0cmlwIGRlYnVnZ2luZyBzeW1ib2xzAG5vLXN0cmlwLWRpc2NhcmRlZAB0cmFjZQBUcmFjZSBmaWxlIG9wZW5zAFJlYWQgbGlua2VyIHNjcmlwdABkZWZhdWx0LXNjcmlwdABSZWFkIGRlZmF1bHQgbGlua2VyIHNjcmlwdABkVAByZXF1aXJlLWRlZmluZWQAdW5pcXVlAFs9U0VDVElPTl0AVXIAUHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbgBkaXNjYXJkLWFsbABEaXNjYXJkIGFsbCBsb2NhbCBzeW1ib2xzAGRpc2NhcmQtbG9jYWxzAGRpc2NhcmQtbm9uZQB0cmFjZS1zeW1ib2wAVHJhY2UgbWVudGlvbnMgb2YgU1lNQk9MAHN0YXJ0LWdyb3VwAFN0YXJ0IGEgZ3JvdXAAZW5kLWdyb3VwAEVuZCBhIGdyb3VwAG5vLWFjY2VwdC11bmtub3duLWlucHV0LWFyY2gAbm8tYWRkLW5lZWRlZABuby1hcy1uZWVkZWQAYXNzZXJ0AEJkeW5hbWljAExpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyaWVzAGNhbGxfc2hhcmVkAEJzdGF0aWMAZG4Abm9uX3NoYXJlZABCc3ltYm9saWMAQnN5bWJvbGljLWZ1bmN0aW9ucwBuby1jaGVjay1zZWN0aW9ucwBuby1jb3B5LWR0LW5lZWRlZC1lbnRyaWVzAGNyZWYAT3V0cHV0IGNyb3NzIHJlZmVyZW5jZSB0YWJsZQBTWU1CT0w9RVhQUkVTU0lPTgBEZWZpbmUgYSBzeW1ib2wAWz1TVFlMRV0AZW1iZWRkZWQtcmVsb2NzAEdlbmVyYXRlIGVtYmVkZGVkIHJlbG9jcwBUcmVhdCB3YXJuaW5ncyBhcyBlcnJvcnMAbm8tZmF0YWwtd2FybmluZ3MAQ2FsbCBTWU1CT0wgYXQgdW5sb2FkLXRpbWUAZm9yY2UtZXhlLXN1ZmZpeABuby1nYy1zZWN0aW9ucwBuby1wcmludC1nYy1zZWN0aW9ucwBnYy1rZWVwLWV4cG9ydGVkAGhhc2gtc2l6ZT08TlVNQkVSPgBQcmludCBvcHRpb24gaGVscABDYWxsIFNZTUJPTCBhdCBsb2FkLXRpbWUATWFwAFdyaXRlIGEgbWFwIGZpbGUAbm8tZGVmaW5lLWNvbW1vbgBEbyBub3QgZGVmaW5lIENvbW1vbiBzdG9yYWdlAG5vLWRlbWFuZ2xlAERvIG5vdCBkZW1hbmdsZSBzeW1ib2wgbmFtZXMAbm8ta2VlcC1tZW1vcnkAbm8tdW5kZWZpbmVkAG5vLWFsbG93LXNobGliLXVuZGVmaW5lZABhbGxvdy1tdWx0aXBsZS1kZWZpbml0aW9uAEFsbG93IG11bHRpcGxlIGRlZmluaXRpb25zAG5vLXVuZGVmaW5lZC12ZXJzaW9uAERpc2FsbG93IHVuZGVmaW5lZCB2ZXJzaW9uAGRlZmF1bHQtc3ltdmVyAENyZWF0ZSBkZWZhdWx0IHN5bWJvbCB2ZXJzaW9uAGRlZmF1bHQtaW1wb3J0ZWQtc3ltdmVyAG5vLXdhcm4tbWlzbWF0Y2gAbm8td2Fybi1zZWFyY2gtbWlzbWF0Y2gAbm8td2hvbGUtYXJjaGl2ZQBUdXJuIG9mZiAtLXdob2xlLWFyY2hpdmUAbm9pbmhpYml0LWV4ZWMAbm9pbmhpYml0X2V4ZWMAbm9zdGRsaWIAb2Zvcm1hdABTcGVjaWZ5IHRhcmdldCBvZiBvdXRwdXQgZmlsZQBwcmludC1vdXRwdXQtZm9ybWF0AFByaW50IGRlZmF1bHQgb3V0cHV0IGZvcm1hdABwcmludC1zeXNyb290AFByaW50IGN1cnJlbnQgc3lzcm9vdABxbWFnaWMAcmVkdWNlLW1lbW9yeS1vdmVyaGVhZHMAbm8tcmVsYXgAcmV0YWluLXN5bWJvbHMtZmlsZQBycGF0aABycGF0aC1saW5rAENyZWF0ZSBhIHNoYXJlZCBsaWJyYXJ5AEJzaGFyZWFibGUAcGljLWV4ZWN1dGFibGUAc29ydC1jb21tb24AWz1hc2NlbmRpbmd8ZGVzY2VuZGluZ10Ac29ydF9jb21tb24Ac29ydC1zZWN0aW9uAG5hbWV8YWxpZ25tZW50AHNwYXJlLWR5bmFtaWMtdGFncwBDT1VOVABzcGxpdC1ieS1maWxlAFs9U0laRV0Ac3BsaXQtYnktcmVsb2MAWz1DT1VOVF0Ac3RhdHMAUHJpbnQgbWVtb3J5IHVzYWdlIHN0YXRpc3RpY3MAdGFyZ2V0LWhlbHAAdGFzay1saW5rAERvIHRhc2sgbGV2ZWwgbGlua2luZwB0cmFkaXRpb25hbC1mb3JtYXQAc2VjdGlvbi1zdGFydABTRUNUSU9OPUFERFJFU1MAU2V0IGFkZHJlc3Mgb2YgbmFtZWQgc2VjdGlvbgBUYnNzAFNldCBhZGRyZXNzIG9mIC5ic3Mgc2VjdGlvbgBUZGF0YQBTZXQgYWRkcmVzcyBvZiAuZGF0YSBzZWN0aW9uAFR0ZXh0AFNldCBhZGRyZXNzIG9mIC50ZXh0IHNlY3Rpb24AVHRleHQtc2VnbWVudABTZXQgYWRkcmVzcyBvZiB0ZXh0IHNlZ21lbnQAVHJvZGF0YS1zZWdtZW50AFNldCBhZGRyZXNzIG9mIHJvZGF0YSBzZWdtZW50AFRsZGF0YS1zZWdtZW50AFNldCBhZGRyZXNzIG9mIGxkYXRhIHNlZ21lbnQAdW5yZXNvbHZlZC1zeW1ib2xzPTxtZXRob2Q+AFs9TlVNQkVSXQBkbGwtdmVyYm9zZQB2ZXJzaW9uLXNjcmlwdAB2ZXJzaW9uLWV4cG9ydHMtc2VjdGlvbgBkeW5hbWljLWxpc3QtZGF0YQBkeW5hbWljLWxpc3QtY3BwLW5ldwBkeW5hbWljLWxpc3QtY3BwLXR5cGVpbmZvAFVzZSBDKysgdHlwZWluZm8gZHluYW1pYyBsaXN0AGR5bmFtaWMtbGlzdABSZWFkIGR5bmFtaWMgbGlzdAB3YXJuLWNvbW1vbgB3YXJuLWNvbnN0cnVjdG9ycwB3YXJuLW11bHRpcGxlLWdwAHdhcm4tb25jZQB3YXJuLXNlY3Rpb24tYWxpZ24Ad2Fybi1zaGFyZWQtdGV4dHJlbAB3YXJuLWFsdGVybmF0ZS1lbQB3YXJuLXVucmVzb2x2ZWQtc3ltYm9scwBlcnJvci11bnJlc29sdmVkLXN5bWJvbHMAd3JhcABpZ25vcmUtdW5yZXNvbHZlZC1zeW1ib2wAcHVzaC1zdGF0ZQBwb3Atc3RhdGUAcHJpbnQtbWVtb3J5LXVzYWdlAFJlcG9ydCB0YXJnZXQgbWVtb3J5IHVzYWdlAG9ycGhhbi1oYW5kbGluZwA9TU9ERQAAAJhb+v/UcPr/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v/eb/r/xW/6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/wdb+v+YW/r/tG/6/5hb+v+YW/r/mFv6/6hv+v+Vb/r/L3D6/5hb+v8VcPr/mFv6/5hb+v//b/r/7G/6/7Rw+v+CcPr/mFv6/5hb+v8JXvr/S236/41u+v+YW/r/dG76/5hb+v9cbvr/DG76/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+jbfr/km36/3Jt+v9jbfr/O2/6/8Zu+v/UWfr/Hm36/5Ns+v+YW/r/mFv6/35s+v/UWfr/V2z6/0Rs+v+YW/r/OGz6/5Ns+v8sbPr/HWz6/wds+v/xa/r/mFv6/+Vr+v/Ua/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/5hb+v+YW/r/mFv6/ytr+v8fa/r/CWv6/8Fq+v+Mavr/FXD6/4Bq+v/UWfr/WWr6/0pq+v87avr/LGr6/6hv+v8gavr/F3X6/9RZ+v8Navr//mn6//Jp+v/jafr/1Gn6/8Vp+v+5afr/rWn6/5Zp+v+Hafr/eGn6//xh+v8qXvr/bWL6/w1i+v8ebfr/amP6/xhj+v8JY/r/+mL6/1Vk+v+BWvr/PWT6/yVk+v8NZPr/9WP6/91j+v/FY/r/YGb6/4ha+v/0Zfr/BnX6/8Zl+v+zZfr/W2X6/ydl+v/zZPr/zWT6/75k+v+vZPr/oGT6/5Fk+v+CZPr/c2T6/2Rk+v9Uafr/L2n6/yNp+v8Xafr/C2n6//9o+v/zaPr/4mj6/9No+v/HaPr/u2j6/69o+v+jaPr/l2j6/3Jo+v9maPr/Wmj6/zto+v8oaPr/FWj6/zln+v8fZ/r/DGf6//Rm+v/bZvr/z2b6/8Nm+v+3Zvr/q2b6/5Nm+v94Zvr/bGb6/5dh+v9+Yfr/cmH6/2Zh+v+1Yfr/pmH6/8Rh+v/tYPr/qmD6/2pg+v9eYPr/UmD6/y1g+v8cYPr/5l/6/9df+v/EX/r/tV/6/9V2+v+dX/r/e1/6/1Zf+v9HX/r/bWz6/1Fv+v9xavr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH76/yh++v8wfvr/MH76/0B++v9Afvr/QH76/0B++v9Afvr/QH76/zB++v8wfvr/QH76/zB++v8wfvr/QH76/1iC+v8Qgvr/hIH6/4SB+v9ogfr/oIH6/4SB+v+wg/r/OIP6/7iC+v+Egfr/hIH6/xCD+v/Qgfr/hIH6/+CB+v9Ap/r/WKL6/wCj+v8wo/r/cKP6/0Ck+v84pfr/YKT6/+ik+v9Ypfr/CKb6/0Co+v+AqPr/OKb6/6Cm+v/gpvr/wKr6/6Cq+v+Aqvr/YKr6/0Cq+v9Qqfr/IKr6/4Sr+v9ErPr/LKz6/xSs+v8ErPr/l736/ye9+v9ivfr/QL36/yC9+v+Xvfr/cL36/5TD+v/Ew/r/1MP6/+TD+v9Uw/r/hMP6//zE+v/rxPr/68T6/+vE+v8cxfr/68T6/+vE+v/rxPr/68T6/+vE+v/rxPr/68T6/+vE+v8Fxfr/68T6/9zE+v/cyvr/RM76/5XI+v+VyPr/rMr6/7zJ+v+kyfr/hMn6/xzJ+v/MyPr/lcj6/5XI+v/szfr/7M76/5XI+v8Uzvr/DNv6/xzb+v/02vr/PNv6/xXb+v8V2/r/Fdv6//7a+v/02vr/ePn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v9o+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/1j5+v+Q+fr/kPn6/1j5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/0j5+v+Q+fr/kPn6/5D5+v+Q+fr/QPn6/xj5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/2j5+v+Q+fr/kPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/WPn6/5D5+v+Q+fr/WPn6/5D5+v+Q+fr/kPn6/5D5+v+Q+fr/SPn6/5D5+v+Q+fr/kPn6/5D5+v9A+fr/GPn6/8gE+/8oBfv/mAT7/0gE+//QA/v/WAP7/5gE+/+YBPv/GAP7/5gE+/+YA/v/WAP7/5gE+/+wA/v/WAP7/3gD+//YCPv/2Ab7/+AH+//oBvv/mAf7/+gG+//oBvv/6Ab7/+gG+//oBvv/eAf7/+gG+//oBvv/SAf7/+gG+/8oB/v/AAAAAAAAAAAIAAAACAAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjbWRsaW5lX3JlbW92ZV9vYmplY3Rfb25seV9maWxlcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY21kbGluZV9vYmplY3Rfb25seV9saXN0X2FwcGVuZABjbWRsaW5lX2NoZWNrX29iamVjdF9vbmx5X3NlY3Rpb24AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY21kbGluZV9nZXRfb2JqZWN0X29ubHlfaW5wdXRfZmlsZXMAAAAAAAAAAAAAAAAAY29tcGFyZV9zZWN0aW9uAHByaW50X2NtZGxpbmVfbGlzdAAAAAAAAAAAAAAAAAAAbGFuZ19kb19hc3NpZ25tZW50c18xAAAAAAAAAAAAAABsYW5nX3NpemVfc2VjdGlvbnNfMQAAAAAAAAAAAAAAAGNtZGxpbmVfb25fb2JqZWN0X29ubHlfYXJjaGl2ZV9saXN0X3AAAABsb2FkX3N5bWJvbHMAAAAAAAAAAAAAAABwcmludF9kYXRhX3N0YXRlbWVudAAAAABwb3Bfc3RhdF9wdHIAAAAAcHVzaF9zdGF0X3B0cgAlRiVQOiBpbnZhbGlkIGRhdGEgc3RhdGVtZW50CgBsZGxhbmcuYwByZWxvY2F0aW9uIGNvdW50IGlzIG5lZ2F0aXZlACVQJUY6IGNvcHlfc2VjdGlvbjogJXM6ICVzCgBmYWlsZWQgdG8gY29weSBwcml2YXRlIGRhdGEAJVAlRjogc2V0dXBfc2VjdGlvbjogJXM6ICVzCgAlMTBsdSBHQgAlMTBsdSBNQgAlMTBsdSBLQgAgJTEwbHUgQgAuaW5pdAAuZmluaQAweCVWICAgACAgICAgICAgICAgICAlVAoAMHglViAlVyAlQgoAJVcgKHNpemUgYmVmb3JlIHJlbGF4aW5nKQoARmFpbCB3aXRoICVkCgAgU09SVCAoQ09OU1RSVUNUT1JTKQoAIENPTlNUUlVDVE9SUwoARVhDTFVERV9GSUxFKCVzACkgAFNPUlRfQllfTkFNRSgAU09SVF9CWV9BTElHTk1FTlQoAFNPUlRfTk9ORSgAU09SVF9CWV9JTklUX1BSSU9SSVRZKABBZGRyZXNzIG9mIHNlY3Rpb24gJXMgc2V0IHRvIAAgQ1JFQVRFX09CSkVDVF9TWU1CT0xTCgAgRklMTCBtYXNrIDB4ACUwMngAMHglViAlVyAlcyAweCV2ADB4JVYgJVcgUkVMT0MgJXMgACVzKwAgKmZpbGwqADB4JVYgJVcgAAolcwAweCVWICVXACBsb2FkIGFkZHJlc3MgMHglVgBbMHglVl0AW3VucmVzb2x2ZWRdAFshcHJvdmlkZV0AKnVuZGVmKiAgIAAgICAgICAgICAgICAgICAgAFRBUkdFVCglcykKAE9VVFBVVCglcwBMT0FEICVzCgBTVEFSVCBHUk9VUAoARU5EIEdST1VQCgBJTlNFUlQgJXMgJXMKACBbJUJdAGVsZjMyLWJpZwBlbGY2NC1iaWcAZWxmMzItbGl0dGxlAGVsZjY0LWxpdHRsZQAKQWxsb2NhdGluZyBjb21tb24gc3ltYm9scwoAJWx4ACUwMTZseAA/KlsAL0RJU0NBUkQvAC5pbml0X2FycmF5LgAuZmluaV9hcnJheS4ALmN0b3JzLgAuZHRvcnMuAC1sACRTWVNST09UAGxvYWQgYmFzZQAqQUJTKgAKRGlzY2FyZGVkIGlucHV0IHNlY3Rpb25zCgoACk1lbW9yeSBDb25maWd1cmF0aW9uCgoAQXR0cmlidXRlcwBMZW5ndGgAT3JpZ2luAE5hbWUAJS0xNnMgJS0xOHMgJS0xOHMgJXMKACUtMTZzIAAweCVzIAAgIQBDT01NT04ALDoAJVAlRjogdGFyZ2V0ICVzIG5vdCBmb3VuZAoAJUI6IGZpbGUgbm90IHJlY29nbml6ZWQ6ICVFCgAlQjogbWF0Y2hpbmcgZm9ybWF0czoAJUYKACVJCgBBTEwAc3Vic2VjdGlvbiBhbGlnbm1lbnQAKj9bACVQJUY6IG11bHRpcGxlIFNUQVJUVVAgZmlsZXMKAHByb2dyYW0gaGVhZGVyIHR5cGUAX19sb2FkX3N0YXJ0XyVzAF9fbG9hZF9zdG9wXyVzAEMrKwBKYXZhAE9iamVjdC1vbmx5IGlucHV0IGZpbGVzOgogACVCIAAoJVQpCgAuZXhwb3J0cwAuc3RhcnRvZi4lcwBwaGRyIGZsYWdzAHBoZHIgbG9hZCBhZGRyZXNzAF9fc3RhcnRfJXMAdHlwZWluZm8gbmFtZSBmb3IqAHR5cGVpbmZvIGZvcioAb3BlcmF0b3IgbmV3KgBvcGVyYXRvciBkZWxldGUqAFNBTkVfRVhQUgAlWCVQOiB1bmtub3duIGZlYXR1cmUgYCVzJwoAJTE2czogACAgICAlNi4yZiUlCgAub2JqLW9ubHkubwBlcnJvciBzZXR0aW5nIHVwIHNlY3Rpb25zAC5nbnVfb2JqZWN0X29ubHkAZXJyb3IgY29weWluZyBzZWN0aW9ucwAAJUYlUDogaW52YWxpZCByZWxvYyBzdGF0ZW1lbnQKAAAlUCVGOiBiZmRfbGlua19oYXNoX2xvb2t1cCBmYWlsZWQ6ICVFCgAAJVAlRjogUmVsb2NhdGFibGUgbGlua2luZyB3aXRoIHJlbG9jYXRpb25zIGZyb20gZm9ybWF0ICVzICglQikgdG8gZm9ybWF0ICVzICglQikgaXMgbm90IHN1cHBvcnRlZAoAAAAAAAAlUCVYOiAlcyBhcmNoaXRlY3R1cmUgb2YgaW5wdXQgZmlsZSBgJUInIGlzIGluY29tcGF0aWJsZSB3aXRoICVzIG91dHB1dAoAAAAAAAAAACVQJVg6IGZhaWxlZCB0byBtZXJnZSB0YXJnZXQgc3BlY2lmaWMgZGF0YSBvZiBmaWxlICVCCgAAJVglUDogc2VjdGlvbiAlcyBWTUEgd3JhcHMgYXJvdW5kIGFkZHJlc3Mgc3BhY2UKAAAAAAAAAAAlWCVQOiBzZWN0aW9uICVzIExNQSB3cmFwcyBhcm91bmQgYWRkcmVzcyBzcGFjZQoAAAAAAAAAACVYJVA6IHNlY3Rpb24gJXMgTE1BIFslViwlVl0gb3ZlcmxhcHMgc2VjdGlvbiAlcyBMTUEgWyVWLCVWXQoAAAAlWCVQOiBzZWN0aW9uICVzIFZNQSBbJVYsJVZdIG92ZXJsYXBzIHNlY3Rpb24gJXMgVk1BIFslViwlVl0KAAAAJVglUDogcmVnaW9uIGAlcycgb3ZlcmZsb3dlZCBieSAlbHUgYnl0ZXMKAAAAAAAAJVglUDogcmVnaW9uIGAlcycgb3ZlcmZsb3dlZCBieSAlbHUgYnl0ZQoAAAAAAAAAJVAlRjogZ2Mtc2VjdGlvbnMgcmVxdWlyZXMgZWl0aGVyIGFuIGVudHJ5IG9yIGFuIHVuZGVmaW5lZCBzeW1ib2wKAAAAAAAAJVAlRjolczogY2FuJ3Qgc2V0IHN0YXJ0IGFkZHJlc3MKAAAAAAAAACVQJUY6IGNhbid0IHNldCBzdGFydCBhZGRyZXNzCgAAJVA6IHdhcm5pbmc6IGNhbm5vdCBmaW5kIGVudHJ5IHN5bWJvbCAlczsgZGVmYXVsdGluZyB0byAlVgoAAAAAACVQOiB3YXJuaW5nOiBjYW5ub3QgZmluZCBlbnRyeSBzeW1ib2wgJXM7IG5vdCBzZXR0aW5nIHN0YXJ0IGFkZHJlc3MKAAAAAGZhaWxlZCB0byBjcmVhdGUgb3V0cHV0IHNlY3Rpb24AJVglUDogYWRkcmVzcyAweCV2IG9mICVCIHNlY3Rpb24gYCVzJyBpcyBub3Qgd2l0aGluIHJlZ2lvbiBgJXMnCgAAAAAAAAAAJVglUDogJUIgc2VjdGlvbiBgJXMnIHdpbGwgbm90IGZpdCBpbiByZWdpb24gYCVzJwoAAAAAAABTT1JUX0JZX05BTUUoU09SVF9CWV9BTElHTk1FTlQoAFNPUlRfQllfQUxJR05NRU5UKFNPUlRfQllfTkFNRSgAJVAlRjogQ291bGQgbm90IGRlZmluZSBjb21tb24gc3ltYm9sIGAlVCc6ICVFCgAAQ29tbW9uIHN5bWJvbCAgICAgICBzaXplICAgICAgICAgICAgICBmaWxlCgoAAAAAJVAlRjogY2Fubm90IGV4dHJhY3Qgb2JqZWN0LW9ubHkgc2VjdGlvbiBmcm9tICVCOiAlRQAAAAAlUDolUzogd2FybmluZzogcmVkZWNsYXJhdGlvbiBvZiBtZW1vcnkgcmVnaW9uIGAlcycKAAAAACVQOiVTOiB3YXJuaW5nOiBtZW1vcnkgcmVnaW9uIGAlcycgbm90IGRlY2xhcmVkCgAAAAAAAAAAJUYlUzogbm9uIGNvbnN0YW50IG9yIGZvcndhcmQgcmVmZXJlbmNlIGFkZHJlc3MgZXhwcmVzc2lvbiBmb3Igc2VjdGlvbiAlcwoAAAAAAAAlUCVYOiBJbnRlcm5hbCBlcnJvciBvbiBDT0ZGIHNoYXJlZCBsaWJyYXJ5IHNlY3Rpb24gJXMKACVQJUY6IGVycm9yOiBubyBtZW1vcnkgcmVnaW9uIHNwZWNpZmllZCBmb3IgbG9hZGFibGUgc2VjdGlvbiBgJXMnCgAAAAAAACVQOiB3YXJuaW5nOiBubyBtZW1vcnkgcmVnaW9uIHNwZWNpZmllZCBmb3IgbG9hZGFibGUgc2VjdGlvbiBgJXMnCgAAAAAAACVQOiB3YXJuaW5nOiBjaGFuZ2luZyBzdGFydCBvZiBzZWN0aW9uICVzIGJ5ICVsdSBieXRlcwoAJVA6IHdhcm5pbmc6IGNoYW5naW5nIHN0YXJ0IG9mIHNlY3Rpb24gJXMgYnkgJWx1IGJ5dGUKAAAlUDogd2FybmluZzogZG90IG1vdmVkIGJhY2t3YXJkcyBiZWZvcmUgYCVzJwoAAAAlUCVGOiBjYW4ndCByZWxheCBzZWN0aW9uOiAlRQoAACVYJVA6JVM6IHNlY3Rpb24gaGFzIGJvdGggYSBsb2FkIGFkZHJlc3MgYW5kIGEgbG9hZCByZWdpb24KAAAAAAAlRiVQOiVTOiBlcnJvcjogYWxpYXMgZm9yIGRlZmF1bHQgbWVtb3J5IHJlZ2lvbgoAAAAAAAAAACVGJVA6JVM6IGVycm9yOiByZWRlZmluaXRpb24gb2YgbWVtb3J5IHJlZ2lvbiBhbGlhcyBgJXMnCgAAAAAAAAAlRiVQOiVTOiBlcnJvcjogbWVtb3J5IHJlZ2lvbiBgJXMnIGZvciBhbGlhcyBgJXMnIGRvZXMgbm90IGV4aXN0CgAAAAAAAAAlUCVGOiBmYWlsZWQgY3JlYXRpbmcgc2VjdGlvbiBgJXMnOiAlRQoAJVAlRjogY2FuIG5vdCBjcmVhdGUgaGFzaCB0YWJsZTogJUUKAAAAACVQJUY6IElsbGVnYWwgdXNlIG9mIGAlcycgc2VjdGlvbgoAAAAAAAAlUCVGOiBvdXRwdXQgZm9ybWF0ICVzIGNhbm5vdCByZXByZXNlbnQgc2VjdGlvbiBjYWxsZWQgJXM6ICVFCgAACkxpbmtlciBzY3JpcHQgYW5kIG1lbW9yeSBtYXAKCgAlWCVQOiBlcnJvcjogdW5wbGFjZWQgb3JwaGFuIHNlY3Rpb24gYCVBJyBmcm9tIGAlQicuCgAAACVQOiB3YXJuaW5nOiBvcnBoYW4gc2VjdGlvbiBgJUEnIGZyb20gYCVCJyBiZWluZyBwbGFjZWQgaW4gc2VjdGlvbiBgJXMnLgoAAAAAAAAAJVA6IHdhcm5pbmc6IGNvdWxkIG5vdCBmaW5kIGFueSB0YXJnZXRzIHRoYXQgbWF0Y2ggZW5kaWFubmVzcyByZXF1aXJlbWVudAoAAAAAAAAlUCVGOiBjYW5ub3Qgb3BlbiBvdXRwdXQgZmlsZSAlczogJUUKAAAAJVAlRjolczogY2FuIG5vdCBtYWtlIG9iamVjdCBmaWxlOiAlRQoAACVQJUY6JXM6IGNhbiBub3Qgc2V0IGFyY2hpdGVjdHVyZTogJUUKAAAlUCVGOiBpbnZhbGlkIGNoYXJhY3RlciAlYyAoJWQpIGluIGZsYWdzCgAAAAAAAAAlRiVCOiBmaWxlIG5vdCByZWNvZ25pemVkOiAlRQoAACVGJUI6IG1lbWJlciAlQiBpbiBhcmNoaXZlIGlzIG5vdCBhbiBvYmplY3QKAAAAACVGJUI6IGVycm9yIGFkZGluZyBzeW1ib2xzOiAlRQoAJVA6IHdhcm5pbmc6ICVzIGNvbnRhaW5zIG91dHB1dCBzZWN0aW9uczsgZGlkIHlvdSBmb3JnZXQgLVQ/CgAAACVGJVA6JVM6IGVycm9yOiBhbGlnbiB3aXRoIGlucHV0IGFuZCBleHBsaWNpdCBhbGlnbiBzcGVjaWZpZWQKAAAlWCVQOiVTOiBQSERSUyBhbmQgRklMRUhEUiBhcmUgbm90IHN1cHBvcnRlZCB3aGVuIHByaW9yIFBUX0xPQUQgaGVhZGVycyBsYWNrIHRoZW0KAAAAAAAAJVglUDogdW5rbm93biBsYW5ndWFnZSBgJXMnIGluIHZlcnNpb24gaW5mb3JtYXRpb24KAAAAAAAlWCVQOiBhbm9ueW1vdXMgdmVyc2lvbiB0YWcgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdmVyc2lvbiB0YWdzCgAlWCVQOiBkdXBsaWNhdGUgdmVyc2lvbiB0YWcgYCVzJwoAAAAAAAAAJVglUDogZHVwbGljYXRlIGV4cHJlc3Npb24gYCVzJyBpbiB2ZXJzaW9uIGluZm9ybWF0aW9uCgAlUCVGOiBGYWlsZWQgdG8gY3JlYXRlIGhhc2ggdGFibGUKAAAAAAAAJVAlRjogJXM6IHBsdWdpbiByZXBvcnRlZCBlcnJvciBhZnRlciBhbGwgc3ltYm9scyByZWFkCgAKQXMtbmVlZGVkIGxpYnJhcnkgaW5jbHVkZWQgdG8gc2F0aXNmeSByZWZlcmVuY2UgYnkgZmlsZSAoc3ltYm9sKQoKAAAAAAAlWCVQOiB1bmFibGUgdG8gcmVhZCAuZXhwb3J0cyBzZWN0aW9uIGNvbnRlbnRzCgAlRiVQOiBpbnZhbGlkIG9yaWdpbiBmb3IgbWVtb3J5IHJlZ2lvbiAlcwoAAAAAAAAlRiVQOiBpbnZhbGlkIGxlbmd0aCBmb3IgbWVtb3J5IHJlZ2lvbiAlcwoAAAAAAAAlRiVQOiBiZmRfcmVjb3JkX3BoZHIgZmFpbGVkOiAlRQoAAAAAAAAAJVglUDogc2VjdGlvbiBgJXMnIGFzc2lnbmVkIHRvIG5vbi1leGlzdGVudCBwaGRyIGAlcycKAAAlUCVYOiByZXF1aXJlZCBzeW1ib2wgYCVzJyBub3QgZGVmaW5lZAoAJUYlUDogbm8gc2VjdGlvbnMgYXNzaWduZWQgdG8gcGhkcnMKAAAAACVGJVA6ICVzIG5vdCBmb3VuZCBmb3IgaW5zZXJ0CgAAJVglUDogdW5hYmxlIHRvIGZpbmQgdmVyc2lvbiBkZXBlbmRlbmN5IGAlcycKAAAATWVtb3J5IHJlZ2lvbiAgICAgICAgIFVzZWQgU2l6ZSAgUmVnaW9uIFNpemUgICUlYWdlIFVzZWQKAAAAAAAAACVQJUY6JXM6IGZpbmFsIGNsb3NlIGZhaWxlZCBvbiBvYmplY3Qtb25seSBvdXRwdXQ6ICVFCgAAJVAlRjolczogY2Fubm90IG9wZW4gb2JqZWN0LW9ubHkgb3V0cHV0OiAlRQAAAAAAJVAlRjolczogY2Fubm90IHN0YXQgb2JqZWN0LW9ubHkgb3V0cHV0OiAlRQAAAAAAJVAlRjolczogcmVhZCBmYWlsZWQgb24gb2JqZWN0LW9ubHkgb3V0cHV0OiAlRQAAZXJyb3IgY29weWluZyBwcml2YXRlIGhlYWRlciBkYXRhAAAAAAAAAGNhbid0IGNyZWF0ZSBvYmplY3Qtb25seSBzZWN0aW9uAAAAAAAAAABjYW4ndCBzZXQgb2JqZWN0LW9ubHkgc2VjdGlvbiBzaXplAAAAAAAAZXJyb3IgYWRkaW5nIG9iamVjdC1vbmx5IHNlY3Rpb24AAAAAAAAAAGVycm9yIGNvcHlpbmcgcHJpdmF0ZSBCRkQgZGF0YQAAJVAlRjogZmFpbGVkIHRvIGZpbmlzaCBvdXRwdXQgd2l0aCBvYmplY3Qtb25seSBzZWN0aW9uCgAlUCVGOiBmYWlsZWQgdG8gcmVuYW1lIG91dHB1dCB3aXRoIG9iamVjdC1vbmx5IHNlY3Rpb24KACVQJUY6IGZhaWxlZCB0byBhZGQgb2JqZWN0LW9ubHkgc2VjdGlvbjogJXMKAAAAAAAAAAAAAFlAc3JlYwBJRUVFAGllZWUAQ09GRgBjb2ZmLW02OGsAJVAlRjogdW5rbm93biBmb3JtYXQgdHlwZSAlcwoAR0xPQkFMXwAKU2V0ICAgICAgICAgICAgICAgICBTeW1ib2wKCgAlRwoAAAAlUCVYOiBEaWZmZXJlbnQgcmVsb2NzIHVzZWQgaW4gc2V0ICVzCgAAJVAlWDogRGlmZmVyZW50IG9iamVjdCBmaWxlIGZvcm1hdHMgY29tcG9zaW5nIHNldCAlcwoAAAAlUCVYOiAlcyBkb2VzIG5vdCBzdXBwb3J0IHJlbG9jICVzIGZvciBzZXQgJXMKAAAlUCVYOiBTcGVjaWFsIHNlY3Rpb24gJXMgZG9lcyBub3Qgc3VwcG9ydCByZWxvYyAlcyBmb3Igc2V0ICVzCgAAJVAlWDogVW5zdXBwb3J0ZWQgc2l6ZSAlZCBmb3Igc2V0ICVzCgAAACVYJUg6IHJlbG9jIHJlZmVycyB0byBzeW1ib2wgYCVUJyB3aGljaCBpcyBub3QgYmVpbmcgb3V0cHV0CgAAAAAlWCVIOiBkYW5nZXJvdXMgcmVsb2NhdGlvbjogJXMKACVCJUY6IGNvdWxkIG5vdCByZWFkIHN5bWJvbHM6ICVFCgAAAAAAAAAlSTogbm8gbmV3IElSIHN5bWJvbHMgdG8gY2xhaW1pCgAAAAAAAAAAQXJjaGl2ZSBtZW1iZXIgaW5jbHVkZWQgdG8gc2F0aXNmeSByZWZlcmVuY2UgYnkgZmlsZSAoc3ltYm9sKQoKACBhZGRpdGlvbmFsIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9taXR0ZWQgZnJvbSB0aGUgb3V0cHV0CgAAAAAAAAAgcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiAlcyBhZ2FpbnN0IHVuZGVmaW5lZCBzeW1ib2wgYCVUJwAAIHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogJXMgYWdhaW5zdCBzeW1ib2wgYCVUJyBkZWZpbmVkIGluICVBIHNlY3Rpb24gaW4gJUIAAAAAAAAAACByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6ICVzIGFnYWluc3QgYCVUJwAAACVYJUM6IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYCVUJwoAAAAAAAAlUDogRGlzYWJsaW5nIHJlbGF4YXRpb246IGl0IHdpbGwgbm90IHdvcmsgd2l0aCBtdWx0aXBsZSBkZWZpbml0aW9ucwoAAAAlQiVGOiBjb3VsZCBub3QgcmVhZCByZWxvY3M6ICVFCgAAAAAAAAAAJVA6IHdhcm5pbmc6IGdsb2JhbCBjb25zdHJ1Y3RvciAlcyB1c2VkCgAAAAAAAAAAJVAlRjogQkZEIGJhY2tlbmQgZXJyb3I6IEJGRF9SRUxPQ19DVE9SIHVuc3VwcG9ydGVkCgAAAAAlQjogd2FybmluZzogZGVmaW5pdGlvbiBvZiBgJVQnIG92ZXJyaWRpbmcgY29tbW9uCgAAAAAAACVCOiB3YXJuaW5nOiBjb21tb24gb2YgYCVUJyBvdmVycmlkZGVuIGJ5IGRlZmluaXRpb24KAAAAJUI6IHdhcm5pbmc6IGNvbW1vbiBvZiBgJVQnIG92ZXJyaWRkZW4gYnkgbGFyZ2VyIGNvbW1vbgoAAAAAAAAAACVCOiB3YXJuaW5nOiBsYXJnZXIgY29tbW9uIGlzIGhlcmUKAAAAAAAlQjogd2FybmluZzogY29tbW9uIG9mIGAlVCcgb3ZlcnJpZGluZyBzbWFsbGVyIGNvbW1vbgoAACVCOiB3YXJuaW5nOiBzbWFsbGVyIGNvbW1vbiBpcyBoZXJlCgAAAAAlQjogd2FybmluZzogbXVsdGlwbGUgY29tbW9uIG9mIGAlVCcKAAAAJUI6IHdhcm5pbmc6IHByZXZpb3VzIGNvbW1vbiBpcyBoZXJlCgAAACVQJUY6IGJmZF9oYXNoX3RhYmxlX2luaXQgZmFpbGVkOiAlRQoAAAAlUCVGOiBiZmRfaGFzaF9sb29rdXAgZmFpbGVkOiAlRQoAAAAAAAAAJVglQzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgJVQnCgAAAAAAACVDOiB3YXJuaW5nOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGAlVCcKAAAAAAAAACVYJUQ6IG1vcmUgdW5kZWZpbmVkIHJlZmVyZW5jZXMgdG8gYCVUJyBmb2xsb3cKACVEOiB3YXJuaW5nOiBtb3JlIHVuZGVmaW5lZCByZWZlcmVuY2VzIHRvIGAlVCcgZm9sbG93CgAAJVglQjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgJVQnCgAAAAAAACVCOiB3YXJuaW5nOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGAlVCcKAAAAAAAAACVYJUI6IG1vcmUgdW5kZWZpbmVkIHJlZmVyZW5jZXMgdG8gYCVUJyBmb2xsb3cKACVCOiB3YXJuaW5nOiBtb3JlIHVuZGVmaW5lZCByZWZlcmVuY2VzIHRvIGAlVCcgZm9sbG93CgAAJVglUDogZXJyb3I6IGR1cGxpY2F0ZSByZXRhaW4tc3ltYm9scy1maWxlCgAAAAAAJVAlRjogYmZkX2hhc2hfbG9va3VwIGZvciBpbnNlcnRpb24gZmFpbGVkOiAlRQoAJVA6IGAtcmV0YWluLXN5bWJvbHMtZmlsZScgb3ZlcnJpZGVzIGAtcycgYW5kIGAtUycKAAAAAAAlWCVQOiBjYW4ndCBzZXQgQkZEIGRlZmF1bHQgdGFyZ2V0IHRvIGAlcyc6ICVFCgAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KAAAAACVQJUY6IC0tbm8tZGVmaW5lLWNvbW1vbiBtYXkgbm90IGJlIHVzZWQgd2l0aG91dCAtc2hhcmVkCgAAAAAAAAAlUCVGOiBjYW5ub3Qgb3BlbiBtYXAgZmlsZSAlczogJUUKAAAAAAAAJVA6IGxpbmsgZXJyb3JzIGZvdW5kLCBkZWxldGluZyBleGVjdXRhYmxlIGAlcycKAAAAAAAAAAAlUCVGOiB1bmFibGUgdG8gb3BlbiBmb3Igc291cmNlIG9mIGNvcHkgYCVzJwoAAAAlUCVGOiB1bmFibGUgdG8gb3BlbiBmb3IgZGVzdGluYXRpb24gb2YgY29weSBgJXMnCgAAAAAAACVzOiB0b3RhbCB0aW1lIGluIGxpbms6ICVsZC4lMDZsZAoAJUI6IHJlZmVyZW5jZSB0byAlcwoAJUI6IGRlZmluaXRpb24gb2YgJXMKACVzKCVzKQAlWCVIOgAuL2xkbWFpbi5jACsldgAlRDogZmlyc3QgZGVmaW5lZCBoZXJlCgB1c2luZyBtdWx0aXBsZSBncCB2YWx1ZXMAJUM6ICVzJXMKACVQOiAlcyVzCgAlQjogJXMlcwoAJUI6IHdhcm5pbmc6IGNvbW1vbiBpcyBoZXJlCgAlQjogd2FybmluZzogZGVmaW5lZCBoZXJlCgAlWCVQOiAlczogJUUKAGJ1aWx0IGluIGxpbmtlciBzY3JpcHQAZWxmX3g4Nl82NAAvdXNyL3NoYXJlL2xvY2FsZQAtLXN5c3Jvb3Q9AHg4Nl82NC1yZWRoYXQtbGludXgtZ251AENPTExFQ1RfTk9fREVNQU5HTEUAX2luaXQAX2ZpbmkATERFTVVMQVRJT04ALW0AJVAlRjogbWlzc2luZyBhcmd1bWVudCB0byAtbQoALW1pcHMxAC1taXBzMgAtbWlwczMALW1pcHM0AC1taXBzNQAtbWlwczMyAC1taXBzMzJyMgAtbWlwczMycjYALW1pcHM2NAAtbWlwczY0cjIALW1pcHM2NHI2AC1tNDg2AHVzaW5nIGV4dGVybmFsIGxpbmtlciBzY3JpcHQ6AHVzaW5nIGludGVybmFsIGxpbmtlciBzY3JpcHQ6ACVQJUY6IG5vIGlucHV0IGZpbGVzCgAlUDogbW9kZSAlcwoAJUYlQjogZmluYWwgY2xvc2UgZmFpbGVkOiAlRQoAJVA6IEVycm9yIHdyaXRpbmcgZmlsZSBgJXMnCgAlUDogRXJyb3IgY2xvc2luZyBmaWxlIGAlcycKAGEub3V0AAAAAAAAAAAAAAAAAAAAAOA/+//gPfv/4D37//g++//4Pvv/4D77/wAAAAAAAAAAbXVsdGlwbGVfZGVmaW5pdGlvbgAAAAAAcmVsb2Nfb3ZlcmZsb3cAbGR3cml0ZS5jAC5zdGFiAHN0cgAkR0RCX1NUUklOR1MkACRHREJfU1lNQk9MUyQAJUYlUDogZmluYWwgbGluayBmYWlsZWQ6ICVFCgAAAAAAJVAlRjogYmZkX25ld19saW5rX29yZGVyIGZhaWxlZAoAAAAAAAAAACVGJVA6IGNhbm5vdCBjcmVhdGUgc3BsaXQgc2VjdGlvbiBuYW1lIGZvciAlcwoAACVGJVA6IGNsb25lIHNlY3Rpb24gZmFpbGVkOiAlRQoAEFb7/xBW+//gVfv/sFX7/zhW+//8Vvv//Fb7/9dW+/+yVvv/D1X7/wAAAAAAAAAAYnVpbGRfbGlua19vcmRlcgAAAAAAAAAAJVAlRjogYmZkX2hhc2hfYWxsb2NhdGUgZmFpbGVkIGNyZWF0aW5nIHN5bWJvbCAlcwoAAAAAAAAlUDogd2FybmluZzogYWRkcmVzcyBvZiBgJXMnIGlzbid0IG11bHRpcGxlIG9mIG1heGltdW0gcGFnZSBzaXplCgAAAAAAAAAlRiVTIGNhbiBub3QgUFJPVklERSBhc3NpZ25tZW50IHRvIGxvY2F0aW9uIGNvdW50ZXIKAAAAACVGJVMgaW52YWxpZCBhc3NpZ25tZW50IHRvIGxvY2F0aW9uIGNvdW50ZXIKAAAAACVGJVMgYXNzaWdubWVudCB0byBsb2NhdGlvbiBjb3VudGVyIGludmFsaWQgb3V0c2lkZSBvZiBTRUNUSU9OUwoAAAAAAAAAACVGJVMgY2Fubm90IG1vdmUgbG9jYXRpb24gY291bnRlciBiYWNrd2FyZHMgKGZyb20gJVYgdG8gJVYpCgAAAAAlUCVGOiVzOiBoYXNoIGNyZWF0aW9uIGZhaWxlZAoAACVQJUY6IGJmZF9oYXNoX2xvb2t1cCBmYWlsZWQgY3JlYXRpbmcgc3ltYm9sICVzCgAAAAAAAAAAJVglUzogdW5yZXNvbHZhYmxlIHN5bWJvbCBgJXMnIHJlZmVyZW5jZWQgaW4gZXhwcmVzc2lvbgoAAAAAAAAAACVGJVM6IHVuZGVmaW5lZCBzeW1ib2wgYCVzJyByZWZlcmVuY2VkIGluIGV4cHJlc3Npb24KAAAAJUYlUzogdW5kZWZpbmVkIHNlY3Rpb24gYCVzJyByZWZlcmVuY2VkIGluIGV4cHJlc3Npb24KAAAlRiVTOiB1bmRlZmluZWQgTUVNT1JZIHJlZ2lvbiBgJXMnIHJlZmVyZW5jZWQgaW4gZXhwcmVzc2lvbgoAAAAAJUYlUzogdW5rbm93biBjb25zdGFudCBgJXMnIHJlZmVyZW5jZWQgaW4gZXhwcmVzc2lvbgoAAAAlRiVTOiBub25jb25zdGFudCBleHByZXNzaW9u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/Mf7/+zH+//cx/v/zMf7/7zH+/+sx/v/nMf7/4zH+/98x/v/bMf7/1zH+/+1xfv/tcX7/7XF+/+1xfv/tcX7/7XF+/+Mxfv/AAMBAmdldF9zeW1ib2xzAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAARAAAAAwAAAA8AAAAFAAAABgAAAAcAAAAIAAAADAAAABIAAAANAAAACQAAABkAAAAKAAAADgAAABAAAABtZDUAc2hhMQB1dWlkAC9kZXYvdXJhbmRvbQAALyogU2NyaXB0IGZvciBsZCAtVXI6IGxpbmsgdy9vdXQgcmVsb2NhdGlvbiwgZG8gY3JlYXRlIGNvbnN0cnVjdG9ycyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCiAvKiBGb3Igc29tZSByZWFzb24sIHRoZSBTb2xhcmlzIGxpbmtlciBtYWtlcyBiYWQgZXhlY3V0YWJsZXMKICBpZiBnbGQgLXIgaXMgdXNlZCBhbmQgdGhlIGludGVybWVkaWF0ZSBmaWxlIGhhcyBzZWN0aW9ucyBzdGFydGluZwogIGF0IG5vbi16ZXJvIGFkZHJlc3Nlcy4gIENvdWxkIGJlIGEgU29sYXJpcyBsZCBidWcsIGNvdWxkIGJlIGEgR05VIGxkCiAgYnVnLiAgQnV0IGZvciBub3cgYXNzaWduaW5nIHRoZSB6ZXJvIHZtYXMgd29ya3MuICAqLwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLmludGVycCAgICAgICAwIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAwIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgIDAgOiB7ICooLnJlbGEudGV4dCkgfQogIC5yZWxhLmZpbmkgICAgMCA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAwIDogeyAqKC5yZWxhLnJvZGF0YSkgfQogIC5yZWxhLmRhdGEucmVsLnJvIDAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8pIH0KICAucmVsYS5kYXRhICAgIDAgOiB7ICooLnJlbGEuZGF0YSkgfQogIC5yZWxhLnRkYXRhCTAgOiB7ICooLnJlbGEudGRhdGEpIH0KICAucmVsYS50YnNzCTAgOiB7ICooLnJlbGEudGJzcykgfQogIC5yZWxhLmN0b3JzICAgMCA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgMCA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgMCA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgIDAgOiB7ICooLnJlbGEuYnNzKSB9CiAgLnJlbGEubGRhdGEgICAwIDogeyAqKC5yZWxhLmxkYXRhKSB9CiAgLnJlbGEubGJzcyAgICAwIDogeyAqKC5yZWxhLmxic3MpIH0KICAucmVsYS5scm9kYXRhIDAgOiB7ICooLnJlbGEubHJvZGF0YSkgfQogIC5yZWxhLmlmdW5jICAgMCA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgMCA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAwIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgMCA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgLnJvZGF0YSAgICAgICAwIDogeyAqKC5yb2RhdGEpIH0KICAucm9kYXRhMSAgICAgIDAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAwIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOiB7ICooLnRkYXRhKSB9CiAgLnRic3MJCTAgOiB7ICooLnRic3MpIH0KICAuamNyICAgICAgICAgIDAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZHluYW1pYyAgICAgIDAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgIDAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgMCA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguYnNzKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICB9CiAgLmxic3MgMCA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MpCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLmxyb2RhdGEgMCAgOgogIHsKICAgICooLmxyb2RhdGEpCiAgfQogIC5sZGF0YSAwICA6CiAgewogICAgKigubGRhdGEpCiAgfQogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoALyogU2NyaXB0IGZvciBsZCAtcjogbGluayB3aXRob3V0IHJlbG9jYXRpb24gKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgMCA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgMCA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgIDAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgMCA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAwIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kIDA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yIDA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgMCA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAwIDogeyAqKC5yZWxhLnRleHQpIH0KICAucmVsYS5maW5pICAgIDAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgMCA6IHsgKigucmVsYS5yb2RhdGEpIH0KICAucmVsYS5kYXRhLnJlbC5ybyAwIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvKSB9CiAgLnJlbGEuZGF0YSAgICAwIDogeyAqKC5yZWxhLmRhdGEpIH0KICAucmVsYS50ZGF0YQkwIDogeyAqKC5yZWxhLnRkYXRhKSB9CiAgLnJlbGEudGJzcwkwIDogeyAqKC5yZWxhLnRic3MpIH0KICAucmVsYS5jdG9ycyAgIDAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgIDAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgIDAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAwIDogeyAqKC5yZWxhLmJzcykgfQogIC5yZWxhLmxkYXRhICAgMCA6IHsgKigucmVsYS5sZGF0YSkgfQogIC5yZWxhLmxic3MgICAgMCA6IHsgKigucmVsYS5sYnNzKSB9CiAgLnJlbGEubHJvZGF0YSAwIDogeyAqKC5yZWxhLmxyb2RhdGEpIH0KICAucmVsYS5pZnVuYyAgIDAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgIDAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgMCA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgIDAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgIDAgOgogIHsKICAgICooLnRleHQgLnN0dWIpCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIC5yb2RhdGEgICAgICAgMCA6IHsgKigucm9kYXRhKSB9CiAgLnJvZGF0YTEgICAgICAwIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAgfQogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgMCA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdudV9leHRhYiAgICAwIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkwIDogeyAqKC50ZGF0YSkgfQogIC50YnNzCQkwIDogeyAqKC50YnNzKSB9CiAgLmpjciAgICAgICAgICAwIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmR5bmFtaWMgICAgICAwIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAwIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuZ290LnBsdCAgICAgIDAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgMCA6CiAgewogICAgKiguZGF0YSkKICB9CiAgLmRhdGExICAgICAgICAwIDogeyAqKC5kYXRhMSkgfQogIC5ic3MgICAgICAgICAgMCA6CiAgewogICAqKC5ic3MpCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogIH0KICAubGJzcyAwIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcykKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAubHJvZGF0YSAwICA6CiAgewogICAgKigubHJvZGF0YSkKICB9CiAgLmxkYXRhIDAgIDoKICB7CiAgICAqKC5sZGF0YSkKICB9CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8pIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIC1OOiBtaXggdGV4dCBhbmQgZGF0YSBvbiBzYW1lIHBhZ2U7IGRvbid0IGFsaWduIGRhdGEgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IC47CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgLW46IG1peCB0ZXh0IGFuZCBkYXRhIG9uIHNhbWUgcGFnZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm8gLXogc2VwYXJhdGUtY29kZTogcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSwgY29tYmluZSAmIHNvcnQgcmVsb2NzIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZTogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYzogcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSwgY29tYmluZSAmIHNvcnQgcmVsb2NzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLXBpZSAteiBzZXBhcmF0ZS1jb2RlOiBsaW5rIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciBsZCAtcGllOiBsaW5rIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm8gLXogc2VwYXJhdGUtY29kZTogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgLS1zaGFyZWQgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZTogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2M6IHNoYXJlZCBsaWJyYXJ5LCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciBsZCAtLXNoYXJlZCAteiBzZXBhcmF0ZS1jb2RlOiBsaW5rIHNoYXJlZCBsaWJyYXJ5IHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLS1zaGFyZWQ6IGxpbmsgc2hhcmVkIGxpYnJhcnkgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm8gLXogc2VwYXJhdGUtY29kZTogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlOiBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlLCBjb21iaW5lICYgc29ydCByZWxvY3Mgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSByb2RhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInJvZGF0YS1zZWdtZW50IiwgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAC8qIFNjcmlwdCBmb3IgLXogY29tYnJlbG9jOiBjb21iaW5lIGFuZCBzb3J0IHJlbG9jIHNlY3Rpb25zICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAC8qIFNjcmlwdCBmb3IgLXogc2VwYXJhdGUtY29kZTogZ2VuZXJhdGUgbm9ybWFsIGV4ZWN1dGFibGVzIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAC8qIERlZmF1bHQgbGlua2VyIHNjcmlwdCwgZm9yIG5vcm1hbCBleGVjdXRhYmxlcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAJVAlRjogLS1qdXN0LXN5bWJvbHMgbWF5IG5vdCBiZSB1c2VkIG9uIERTTzogJUIKAAAAAAAAAAAgIC16IG5vZXh0ZXJuLXByb3RlY3RlZC1kYXRhICBEbyBub3QgdHJlYXQgcHJvdGVjdGVkIGRhdGEgc3ltYm9sIGFzIGV4dGVybmFsCgAAACAgLXogZHluYW1pYy11bmRlZmluZWQtd2VhayAgIE1ha2UgdW5kZWZpbmVkIHdlYWsgc3ltYm9scyBkeW5hbWljCiAgLXogbm9keW5hbWljLXVuZGVmaW5lZC13ZWFrIERvIG5vdCBtYWtlIHVuZGVmaW5lZCB3ZWFrIHN5bWJvbHMgZHluYW1pYwoAAAAAACAgLXogbm9yZWxvYy1vdmVyZmxvdyAgICAgICAgIERpc2FibGUgcmVsb2NhdGlvbiBvdmVyZmxvdyBjaGVjawoAAAAAAAAAACAgLXogY2FsbC1ub3A9UEFERElORyAgICAgICAgIFVzZSBQQURESU5HIGFzIDEtYnl0ZSBOT1AgZm9yIGJyYW5jaAoAAAAAACAgLXogaWJ0cGx0ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIElCVC1lbmFibGVkIFBMVCBlbnRyaWVzCiAgLXogaWJ0ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8xX0lCVAogIC16IHNoc3RrICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBHTlVfUFJPUEVSVFlfWDg2X0ZFQVRVUkVfMV9TSFNUSwogIC16IGNldC1yZXBvcnQ9W25vbmV8d2FybmluZ3xlcnJvcl0gKGRlZmF1bHQ6IG5vbmUpCgAAAAAAACAgLXogYm5kcGx0ICAgICAgICAgICAgICAgICAgIEFsd2F5cyBnZW5lcmF0ZSBCTkQgcHJlZml4IGluIFBMVCBlbnRyaWVzCgAAAAAAAAAAJVAlRjogaW52YWxpZCAtLWNvbXByZXNzLWRlYnVnLXNlY3Rpb25zIG9wdGlvbjogYCVzJwoAAAAlUCVGOiBpbnZhbGlkIGhhc2ggc3R5bGUgYCVzJwoAACVQJUY6IGludmFsaWQgbWF4aXVtIHBhZ2Ugc2l6ZSBgJXMnCgAAAAAlUCVGOiBpbnZhbGlkIGNvbW1vbiBwYWdlIHNpemUgYCVzJwoAAAAAJVAlRjogaW52YWxpZCBzdGFjayBzaXplIGAlcycKAAAlUCVGOiBpbnZhbGlkIG51bWJlciBmb3IgLXogY2FsbC1ub3A9cHJlZml4LTogJXMKAAAAAAAAACVQJUY6IGludmFsaWQgbnVtYmVyIGZvciAteiBjYWxsLW5vcD1zdWZmaXgtOiAlcwoAAAAAAAAAJVAlRjogdW5zdXBwb3J0ZWQgb3B0aW9uOiAteiAlcwoAAAAAAAAAACVGJVA6IGludmFsaWQgb3B0aW9uIGZvciAteiBjZXQtcmVwb3J0PTogJXMKAAAAACVQJUY6IGZhaWxlZCB0byBzZXQgZHluYW1pYyBzZWN0aW9uIHNpemVzOiAlRQoAACVGJUI6IENhbid0IHJlYWQgY29udGVudHMgb2Ygc2VjdGlvbiAuZ251Lndhcm5pbmc6ICVFCgAAJVAlRjogZmFpbGVkIHRvIHJlY29yZCBhc3NpZ25tZW50IHRvICVzOiAlRQoAAAAAJVA6IHdhcm5pbmc6IC5ub3RlLmdudS5idWlsZC1pZCBzZWN0aW9uIGRpc2NhcmRlZCwgLS1idWlsZC1pZCBpZ25vcmVkLgoAJVA6IHdhcm5pbmc6ICVzLCBuZWVkZWQgYnkgJUIsIG1heSBjb25mbGljdCB3aXRoICVzCgAAAAAlUDogd2FybmluZzogLXogZHluYW1pYy11bmRlZmluZWQtd2VhayBpZ25vcmVkCgAlWCVQOiAuZWhfZnJhbWUvLnN0YWIgZWRpdDogJUUKACVGJVA6IG1hcCBzZWN0aW9ucyB0byBzZWdtZW50cyBmYWlsZWQ6ICVFCgAAAAAAACVGJVA6JUI6IGJmZF9lbGZfZ2V0X2JmZF9uZWVkZWRfbGlzdCBmYWlsZWQ6ICVFCgAAAAAAAAAAdW5yZWNvZ25pc2VkIG9yIHVuc3VwcG9ydGVkIHRva2VuICclcycgaW4gc2VhcmNoIHBhdGgKAAAlRiVzOiBDYW4ndCBvcGVuIGZvciB3cml0aW5nOiAlRQoAAAAAAAAAJVA6IHdhcm5pbmc6IHVucmVjb2duaXplZCAtLWJ1aWxkLWlkIHN0eWxlIGlnbm9yZWQuCgAAAAAlUDogd2FybmluZzogQ2Fubm90IGNyZWF0ZSAubm90ZS5nbnUuYnVpbGQtaWQgc2VjdGlvbiwgLS1idWlsZC1pZCBpZ25vcmVkLgoAAAAAACVQJUY6IGNvbXBhY3QgZnJhbWUgZGVzY3JpcHRpb25zIGluY29tcGF0aWJsZSB3aXRoIERXQVJGMiAuZWhfZnJhbWUgZnJvbSAlQgoAAAAAJVA6IHdhcm5pbmc6IENhbm5vdCBjcmVhdGUgLmVoX2ZyYW1lX2hkciBzZWN0aW9uLCAtLWVoLWZyYW1lLWhkciBpZ25vcmVkLgoAAAAAAAAlUCVGOiBGYWlsZWQgdG8gcGFyc2UgRUggZnJhbWUgZW50cmllcy4KAAAAAAAAAAAlUDogd2FybmluZzogJXMsIG5lZWRlZCBieSAlQiwgbm90IGZvdW5kICh0cnkgdXNpbmcgLXJwYXRoIG9yIC1ycGF0aC1saW5rKQoAemxpYgB6bGliLWdudQB6bGliLWdhYmkAc3lzdgBib3RoAHVuZGVmcwBtdWxkZWZzAG1heC1wYWdlLXNpemU9AGNvbW1vbi1wYWdlLXNpemU9AHN0YWNrLXNpemU9AG5vZXhlY3N0YWNrAGdsb2JhbGF1ZGl0AGluaXRmaXJzdABpbnRlcnBvc2UAbG9hZGZsdHIAbm9kZWZhdWx0bGliAG5vZGVsZXRlAG5vZGxvcGVuAG5vZHVtcABsYXp5AG9yaWdpbgBub2NvbWJyZWxvYwBub2NvcHlyZWxvYwBub3JlbHJvAG5vc2VwYXJhdGUtY29kZQBub2NvbW1vbgBub3RleHQAdGV4dG9mZgBub2V4dGVybi1wcm90ZWN0ZWQtZGF0YQBub2R5bmFtaWMtdW5kZWZpbmVkLXdlYWsAbm9yZWxvYy1vdmVyZmxvdwBjYWxsLW5vcD0AcHJlZml4LWFkZHIAc3VmZml4LW5vcABwcmVmaXgtAHN1ZmZpeC0AaWJ0cGx0AGlidABzaHN0awBjZXQtcmVwb3J0PQBibmRwbHQAJVA6IHdhcm5pbmc6IC16ICVzIGlnbm9yZWQuCgAlcy9saWIlcyVzLnNvAGVlbGZfeDg2XzY0LmMAX19laGRyX3N0YXJ0AExEX1JVTl9QQVRIAC5nbnUud2FybmluZwBpbmNsdWRlAC5zby4AaTM4Njp4ODYtNjQALm1iaW5kLmJzcwAubWJpbmQuZGF0YQAubWJpbmQucm9kYXRhAC5tYmluZC50ZXh0AC5yZWxhLmR5bgAucmVsLmR5bgAucmVsAC5nbnUud2FybmluZy4ALm5vdGUALnBsdAAlUCVGOiBsb29waW5nIGluIG1hcF9zZWdtZW50cwBsaWJjLnNvACVGJVA6JUI6IGJmZF9zdGF0IGZhaWxlZDogJUUKAGZvdW5kICVzIGF0ICVzCgBsaWI2NABSSUdJTn0ASUJ9ACUuKnMlcy8lcwAlLipzJXMALm5vdGUuZ251LmJ1aWxkLWlkAC5ub3RlLkdOVS1zdGFjawAuZWhfZnJhbWVfZW50cnkALmVoX2ZyYW1lAC5laF9mcmFtZV9oZHIAJXMgbmVlZGVkIGJ5ICVCCgBMRF9MSUJSQVJZX1BBVEgAL3Vzci9ldGMvbGQuc28uY29uZgAudGRhdGEALmludGVycAAuc2RhdGEALmNvbW1lbnQAQmdyb3VwAGNvbXByZXNzLWRlYnVnLXNlY3Rpb25zAGRlcGF1ZGl0AGRpc2FibGUtbmV3LWR0YWdzAGVuYWJsZS1uZXctZHRhZ3MAbm8tZWgtZnJhbWUtaGRyAGV4Y2x1ZGUtbGlicwBoYXNoLXN0eWxlAG5vLWxkLWdlbmVyYXRlZC11bndpbmQtaW5mbwBlbGY2NC14ODYtNjQAAOTp+P/E6fj/vOn4/6vp+P+E6fj/9On4//Tp+P96OlA6AAAAAC8qIFNjcmlwdCBmb3IgbGQgLVVyOiBsaW5rIHcvb3V0IHJlbG9jYXRpb24sIGRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgMCA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgMCA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgIDAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgMCA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAwIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kIDA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yIDA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgMCA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAwIDogeyAqKC5yZWxhLnRleHQpIH0KICAucmVsYS5maW5pICAgIDAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgMCA6IHsgKigucmVsYS5yb2RhdGEpIH0KICAucmVsYS5kYXRhLnJlbC5ybyAwIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvKSB9CiAgLnJlbGEuZGF0YSAgICAwIDogeyAqKC5yZWxhLmRhdGEpIH0KICAucmVsYS50ZGF0YQkwIDogeyAqKC5yZWxhLnRkYXRhKSB9CiAgLnJlbGEudGJzcwkwIDogeyAqKC5yZWxhLnRic3MpIH0KICAucmVsYS5jdG9ycyAgIDAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgIDAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgIDAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAwIDogeyAqKC5yZWxhLmJzcykgfQogIC5yZWxhLmxkYXRhICAgMCA6IHsgKigucmVsYS5sZGF0YSkgfQogIC5yZWxhLmxic3MgICAgMCA6IHsgKigucmVsYS5sYnNzKSB9CiAgLnJlbGEubHJvZGF0YSAwIDogeyAqKC5yZWxhLmxyb2RhdGEpIH0KICAucmVsYS5pZnVuYyAgIDAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgIDAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgMCA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgIDAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgIDAgOgogIHsKICAgICooLnRleHQgLnN0dWIpCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIC5yb2RhdGEgICAgICAgMCA6IHsgKigucm9kYXRhKSB9CiAgLnJvZGF0YTEgICAgICAwIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAgfQogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgMCA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdudV9leHRhYiAgICAwIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkwIDogeyAqKC50ZGF0YSkgfQogIC50YnNzCQkwIDogeyAqKC50YnNzKSB9CiAgLmpjciAgICAgICAgICAwIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmR5bmFtaWMgICAgICAwIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAwIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuZ290LnBsdCAgICAgIDAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgMCA6CiAgewogICAgKiguZGF0YSkKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC5sYnNzIDAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC5scm9kYXRhIDAgIDoKICB7CiAgICAqKC5scm9kYXRhKQogIH0KICAubGRhdGEgMCAgOgogIHsKICAgICooLmxkYXRhKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KfQoKAC8qIFNjcmlwdCBmb3IgbGQgLXI6IGxpbmsgd2l0aG91dCByZWxvY2F0aW9uICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKIC8qIEZvciBzb21lIHJlYXNvbiwgdGhlIFNvbGFyaXMgbGlua2VyIG1ha2VzIGJhZCBleGVjdXRhYmxlcwogIGlmIGdsZCAtciBpcyB1c2VkIGFuZCB0aGUgaW50ZXJtZWRpYXRlIGZpbGUgaGFzIHNlY3Rpb25zIHN0YXJ0aW5nCiAgYXQgbm9uLXplcm8gYWRkcmVzc2VzLiAgQ291bGQgYmUgYSBTb2xhcmlzIGxkIGJ1ZywgY291bGQgYmUgYSBHTlUgbGQKICBidWcuICBCdXQgZm9yIG5vdyBhc3NpZ25pbmcgdGhlIHplcm8gdm1hcyB3b3Jrcy4gICovClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuaW50ZXJwICAgICAgIDAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgIDAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgIDAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAwIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgIDAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgMCA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAwOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAwOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgIDAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgMCA6IHsgKigucmVsYS50ZXh0KSB9CiAgLnJlbGEuZmluaSAgICAwIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgIDAgOiB7ICooLnJlbGEucm9kYXRhKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gMCA6IHsgKigucmVsYS5kYXRhLnJlbC5ybykgfQogIC5yZWxhLmRhdGEgICAgMCA6IHsgKigucmVsYS5kYXRhKSB9CiAgLnJlbGEudGRhdGEJMCA6IHsgKigucmVsYS50ZGF0YSkgfQogIC5yZWxhLnRic3MJMCA6IHsgKigucmVsYS50YnNzKSB9CiAgLnJlbGEuY3RvcnMgICAwIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAwIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAwIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgMCA6IHsgKigucmVsYS5ic3MpIH0KICAucmVsYS5sZGF0YSAgIDAgOiB7ICooLnJlbGEubGRhdGEpIH0KICAucmVsYS5sYnNzICAgIDAgOiB7ICooLnJlbGEubGJzcykgfQogIC5yZWxhLmxyb2RhdGEgMCA6IHsgKigucmVsYS5scm9kYXRhKSB9CiAgLnJlbGEuaWZ1bmMgICAwIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAwIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgIDAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgIDAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAwIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAwIDoKICB7CiAgICAqKC50ZXh0IC5zdHViKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICAucm9kYXRhICAgICAgIDAgOiB7ICooLnJvZGF0YSkgfQogIC5yb2RhdGExICAgICAgMCA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgIH0KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiIDAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nbnVfZXh0YWIgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJMCA6IHsgKigudGRhdGEpIH0KICAudGJzcwkJMCA6IHsgKigudGJzcykgfQogIC5qY3IgICAgICAgICAgMCA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5keW5hbWljICAgICAgMCA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgMCA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAwIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgIDAgOgogIHsKICAgICooLmRhdGEpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguYnNzKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICB9CiAgLmxic3MgMCA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MpCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLmxyb2RhdGEgMCAgOgogIHsKICAgICooLmxyb2RhdGEpCiAgfQogIC5sZGF0YSAwICA6CiAgewogICAgKigubGRhdGEpCiAgfQogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtTjogbWl4IHRleHQgYW5kIGRhdGEgb24gc2FtZSBwYWdlOyBkb24ndCBhbGlnbiBkYXRhICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gLjsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1uOiBtaXggdGV4dCBhbmQgZGF0YSBvbiBzYW1lIHBhZ2UgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm8gLXogc2VwYXJhdGUtY29kZTogcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSwgY29tYmluZSAmIHNvcnQgcmVsb2NzIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZTogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jOiBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlLCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAALyogU2NyaXB0IGZvciBsZCAtcGllIC16IHNlcGFyYXRlLWNvZGU6IGxpbmsgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAvKiBTY3JpcHQgZm9yIGxkIC1waWU6IGxpbmsgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLS1zaGFyZWQgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybyAteiBzZXBhcmF0ZS1jb2RlOiBzaGFyZWQgbGlicmFyeSwgY29tYmluZSAmIHNvcnQgcmVsb2NzIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvOiBzaGFyZWQgbGlicmFyeSwgY29tYmluZSAmIHNvcnQgcmVsb2NzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlOiBzaGFyZWQgbGlicmFyeSwgY29tYmluZSAmIHNvcnQgcmVsb2NzIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYzogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIGxkIC0tc2hhcmVkIC16IHNlcGFyYXRlLWNvZGU6IGxpbmsgc2hhcmVkIGxpYnJhcnkgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAALyogU2NyaXB0IGZvciBsZCAtLXNoYXJlZDogbGluayBzaGFyZWQgbGlicmFyeSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybyAteiBzZXBhcmF0ZS1jb2RlOiBjb21iaW5lIGFuZCBzb3J0IHJlbG9jIHNlY3Rpb25zIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZTogcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSwgY29tYmluZSAmIHNvcnQgcmVsb2NzIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYzogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAvKiBTY3JpcHQgZm9yIC16IHNlcGFyYXRlLWNvZGU6IGdlbmVyYXRlIG5vcm1hbCBleGVjdXRhYmxlcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAC8qIERlZmF1bHQgbGlua2VyIHNjcmlwdCwgZm9yIG5vcm1hbCBleGVjdXRhYmxlcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAGVlbGYzMl94ODZfNjQuYwBpMzg2Ong2NC0zMgBlbGYzMl94ODZfNjQAZWxmMzIteDg2LTY0AACwOPb/kDj2/4g49v93OPb/UDj2/8A49v/AOPb/ejpQOgAAAAAAAAAALyogU2NyaXB0IGZvciBsZCAtVXI6IGxpbmsgdy9vdXQgcmVsb2NhdGlvbiwgZG8gY3JlYXRlIGNvbnN0cnVjdG9ycyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKIC8qIEZvciBzb21lIHJlYXNvbiwgdGhlIFNvbGFyaXMgbGlua2VyIG1ha2VzIGJhZCBleGVjdXRhYmxlcwogIGlmIGdsZCAtciBpcyB1c2VkIGFuZCB0aGUgaW50ZXJtZWRpYXRlIGZpbGUgaGFzIHNlY3Rpb25zIHN0YXJ0aW5nCiAgYXQgbm9uLXplcm8gYWRkcmVzc2VzLiAgQ291bGQgYmUgYSBTb2xhcmlzIGxkIGJ1ZywgY291bGQgYmUgYSBHTlUgbGQKICBidWcuICBCdXQgZm9yIG5vdyBhc3NpZ25pbmcgdGhlIHplcm8gdm1hcyB3b3Jrcy4gICovClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuaW50ZXJwICAgICAgIDAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgIDAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgIDAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAwIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgIDAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgMCA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAwOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAwOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgIDAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAwIDogeyAqKC5yZWwudGV4dCkgfQogIC5yZWwuZmluaSAgICAgMCA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgIDAgOiB7ICooLnJlbC5yb2RhdGEpIH0KICAucmVsLmRhdGEucmVsLnJvIDAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybykgfQogIC5yZWwuZGF0YSAgICAgMCA6IHsgKigucmVsLmRhdGEpIH0KICAucmVsLnRkYXRhCTAgOiB7ICooLnJlbC50ZGF0YSkgfQogIC5yZWwudGJzcwkwIDogeyAqKC5yZWwudGJzcykgfQogIC5yZWwuY3RvcnMgICAgMCA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAwIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgIDAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgIDAgOiB7ICooLnJlbC5ic3MpIH0KICAucmVsLmlmdW5jICAgIDAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgMCA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgIDAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgIDAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAwIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAwIDoKICB7CiAgICAqKC50ZXh0IC5zdHViKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICAucm9kYXRhICAgICAgIDAgOiB7ICooLnJvZGF0YSkgfQogIC5yb2RhdGExICAgICAgMCA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgIH0KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiIDAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nbnVfZXh0YWIgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJMCA6IHsgKigudGRhdGEpIH0KICAudGJzcwkJMCA6IHsgKigudGJzcykgfQogIC5qY3IgICAgICAgICAgMCA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5keW5hbWljICAgICAgMCA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgMCA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAwIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgIDAgOgogIHsKICAgICooLmRhdGEpCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAwIDogeyAqKC5kYXRhMSkgfQogIC5ic3MgICAgICAgICAgMCA6CiAgewogICAqKC5ic3MpCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciBsZCAtcjogbGluayB3aXRob3V0IHJlbG9jYXRpb24gKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCiAvKiBGb3Igc29tZSByZWFzb24sIHRoZSBTb2xhcmlzIGxpbmtlciBtYWtlcyBiYWQgZXhlY3V0YWJsZXMKICBpZiBnbGQgLXIgaXMgdXNlZCBhbmQgdGhlIGludGVybWVkaWF0ZSBmaWxlIGhhcyBzZWN0aW9ucyBzdGFydGluZwogIGF0IG5vbi16ZXJvIGFkZHJlc3Nlcy4gIENvdWxkIGJlIGEgU29sYXJpcyBsZCBidWcsIGNvdWxkIGJlIGEgR05VIGxkCiAgYnVnLiAgQnV0IGZvciBub3cgYXNzaWduaW5nIHRoZSB6ZXJvIHZtYXMgd29ya3MuICAqLwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLmludGVycCAgICAgICAwIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAwIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgMCA6IHsgKigucmVsLnRleHQpIH0KICAucmVsLmZpbmkgICAgIDAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAwIDogeyAqKC5yZWwucm9kYXRhKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAwIDogeyAqKC5yZWwuZGF0YS5yZWwucm8pIH0KICAucmVsLmRhdGEgICAgIDAgOiB7ICooLnJlbC5kYXRhKSB9CiAgLnJlbC50ZGF0YQkwIDogeyAqKC5yZWwudGRhdGEpIH0KICAucmVsLnRic3MJMCA6IHsgKigucmVsLnRic3MpIH0KICAucmVsLmN0b3JzICAgIDAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgMCA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAwIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAwIDogeyAqKC5yZWwuYnNzKSB9CiAgLnJlbC5pZnVuYyAgICAwIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgIDAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAwIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgMCA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgLnJvZGF0YSAgICAgICAwIDogeyAqKC5yb2RhdGEpIH0KICAucm9kYXRhMSAgICAgIDAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAwIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOiB7ICooLnRkYXRhKSB9CiAgLnRic3MJCTAgOiB7ICooLnRic3MpIH0KICAuamNyICAgICAgICAgIDAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZHluYW1pYyAgICAgIDAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgIDAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgMCA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoAAAAALyogU2NyaXB0IGZvciAtTjogbWl4IHRleHQgYW5kIGRhdGEgb24gc2FtZSBwYWdlOyBkb24ndCBhbGlnbiBkYXRhICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2kzODYtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IC47CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAALyogU2NyaXB0IGZvciAtbjogbWl4IHRleHQgYW5kIGRhdGEgb24gc2FtZSBwYWdlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2kzODYtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm8gLXogc2VwYXJhdGUtY29kZTogcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSwgY29tYmluZSAmIHNvcnQgcmVsb2NzIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2kzODYtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZTogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jOiBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlLCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAALyogU2NyaXB0IGZvciBsZCAtcGllIC16IHNlcGFyYXRlLWNvZGU6IGxpbmsgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciBsZCAtcGllOiBsaW5rIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvIC16IHNlcGFyYXRlLWNvZGU6IHNoYXJlZCBsaWJyYXJ5LCBjb21iaW5lICYgc29ydCByZWxvY3Mgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAAAC8qIFNjcmlwdCBmb3IgLS1zaGFyZWQgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZTogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSByb2RhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInJvZGF0YS1zZWdtZW50IiwgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYzogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAvKiBTY3JpcHQgZm9yIGxkIC0tc2hhcmVkIC16IHNlcGFyYXRlLWNvZGU6IGxpbmsgc2hhcmVkIGxpYnJhcnkgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLS1zaGFyZWQ6IGxpbmsgc2hhcmVkIGxpYnJhcnkgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvIC16IHNlcGFyYXRlLWNvZGU6IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSByb2RhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInJvZGF0YS1zZWdtZW50IiwgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IHNlcGFyYXRlLWNvZGU6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoALyogU2NyaXB0IGZvciAteiBjb21icmVsb2M6IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC16IHNlcGFyYXRlLWNvZGU6IGdlbmVyYXRlIG5vcm1hbCBleGVjdXRhYmxlcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAvKiBEZWZhdWx0IGxpbmtlciBzY3JpcHQsIGZvciBub3JtYWwgZXhlY3V0YWJsZXMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1yZWRoYXQtbGludXgvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgBlZWxmX2kzODYuYwBlbGZfaTM4NgBlbGYzMi1pMzg2AMC08/+gtPP/mLTz/4e08/9gtPP/0LTz/9C08/96OlA6AAAAAAAAAAAvKiBTY3JpcHQgZm9yIGxkIC1VcjogbGluayB3L291dCByZWxvY2F0aW9uLCBkbyBjcmVhdGUgY29uc3RydWN0b3JzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKIC8qIEZvciBzb21lIHJlYXNvbiwgdGhlIFNvbGFyaXMgbGlua2VyIG1ha2VzIGJhZCBleGVjdXRhYmxlcwogIGlmIGdsZCAtciBpcyB1c2VkIGFuZCB0aGUgaW50ZXJtZWRpYXRlIGZpbGUgaGFzIHNlY3Rpb25zIHN0YXJ0aW5nCiAgYXQgbm9uLXplcm8gYWRkcmVzc2VzLiAgQ291bGQgYmUgYSBTb2xhcmlzIGxkIGJ1ZywgY291bGQgYmUgYSBHTlUgbGQKICBidWcuICBCdXQgZm9yIG5vdyBhc3NpZ25pbmcgdGhlIHplcm8gdm1hcyB3b3Jrcy4gICovClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuaW50ZXJwICAgICAgIDAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgIDAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgIDAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAwIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgIDAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgMCA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAwOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAwOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgIDAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAwIDogeyAqKC5yZWwudGV4dCkgfQogIC5yZWwuZmluaSAgICAgMCA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgIDAgOiB7ICooLnJlbC5yb2RhdGEpIH0KICAucmVsLmRhdGEucmVsLnJvIDAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybykgfQogIC5yZWwuZGF0YSAgICAgMCA6IHsgKigucmVsLmRhdGEpIH0KICAucmVsLnRkYXRhCTAgOiB7ICooLnJlbC50ZGF0YSkgfQogIC5yZWwudGJzcwkwIDogeyAqKC5yZWwudGJzcykgfQogIC5yZWwuY3RvcnMgICAgMCA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAwIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgIDAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgIDAgOiB7ICooLnJlbC5ic3MpIH0KICAucmVsLmlmdW5jICAgIDAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgMCA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgIDAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgIDAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgIDAgOgogIHsKICAgICooLnRleHQgLnN0dWIpCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIC5yb2RhdGEgICAgICAgMCA6IHsgKigucm9kYXRhKSB9CiAgLnJvZGF0YTEgICAgICAwIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAgfQogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgMCA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdudV9leHRhYiAgICAwIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkwIDogeyAqKC50ZGF0YSkgfQogIC50YnNzCQkwIDogeyAqKC50YnNzKSB9CiAgLmpjciAgICAgICAgICAwIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmR5bmFtaWMgICAgICAwIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAwIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuZ290LnBsdCAgICAgIDAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgMCA6CiAgewogICAgKiguZGF0YSkKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoAAAAALyogU2NyaXB0IGZvciBsZCAtcjogbGluayB3aXRob3V0IHJlbG9jYXRpb24gKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgMCA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgMCA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgIDAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgMCA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAwIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kIDA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yIDA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgMCA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgIDAgOiB7ICooLnJlbC50ZXh0KSB9CiAgLnJlbC5maW5pICAgICAwIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgMCA6IHsgKigucmVsLnJvZGF0YSkgfQogIC5yZWwuZGF0YS5yZWwucm8gMCA6IHsgKigucmVsLmRhdGEucmVsLnJvKSB9CiAgLnJlbC5kYXRhICAgICAwIDogeyAqKC5yZWwuZGF0YSkgfQogIC5yZWwudGRhdGEJMCA6IHsgKigucmVsLnRkYXRhKSB9CiAgLnJlbC50YnNzCTAgOiB7ICooLnJlbC50YnNzKSB9CiAgLnJlbC5jdG9ycyAgICAwIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgIDAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgMCA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgMCA6IHsgKigucmVsLmJzcykgfQogIC5yZWwuaWZ1bmMgICAgMCA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAwIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgMCA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgLnJvZGF0YSAgICAgICAwIDogeyAqKC5yb2RhdGEpIH0KICAucm9kYXRhMSAgICAgIDAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAwIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOiB7ICooLnRkYXRhKSB9CiAgLnRic3MJCTAgOiB7ICooLnRic3MpIH0KICAuamNyICAgICAgICAgIDAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZHluYW1pYyAgICAgIDAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgIDAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgMCA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoAAC8qIFNjcmlwdCBmb3IgLU46IG1peCB0ZXh0IGFuZCBkYXRhIG9uIHNhbWUgcGFnZTsgZG9uJ3QgYWxpZ24gZGF0YSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IC47CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAALyogU2NyaXB0IGZvciAtbjogbWl4IHRleHQgYW5kIGRhdGEgb24gc2FtZSBwYWdlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybyAteiBzZXBhcmF0ZS1jb2RlOiBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlLCBjb21iaW5lICYgc29ydCByZWxvY3Mgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvOiBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlLCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZTogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2M6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAC8qIFNjcmlwdCBmb3IgbGQgLXBpZSAteiBzZXBhcmF0ZS1jb2RlOiBsaW5rIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciBsZCAtcGllOiBsaW5rIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm8gLXogc2VwYXJhdGUtY29kZTogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IHNoYXJlZCBsaWJyYXJ5LCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZTogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAAAC8qIFNjcmlwdCBmb3IgLS1zaGFyZWQgLXogY29tYnJlbG9jOiBzaGFyZWQgbGlicmFyeSwgY29tYmluZSAmIHNvcnQgcmVsb2NzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoALyogU2NyaXB0IGZvciBsZCAtLXNoYXJlZCAteiBzZXBhcmF0ZS1jb2RlOiBsaW5rIHNoYXJlZCBsaWJyYXJ5IHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLS1zaGFyZWQ6IGxpbmsgc2hhcmVkIGxpYnJhcnkgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm8gLXogc2VwYXJhdGUtY29kZTogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IHNlcGFyYXRlLWNvZGU6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYzogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAALyogU2NyaXB0IGZvciAteiBzZXBhcmF0ZS1jb2RlOiBnZW5lcmF0ZSBub3JtYWwgZXhlY3V0YWJsZXMgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAvKiBEZWZhdWx0IGxpbmtlciBzY3JpcHQsIGZvciBub3JtYWwgZXhlY3V0YWJsZXMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAGVlbGZfaWFtY3UuYwBlbGZfaWFtY3UAZWxmMzItaWFtY3UAAKxF8f+MRfH/hEXx/3NF8f9MRfH/vEXx/7xF8f96OlA6AGxkc2NyaXB0cy9pMzg2bGludXgueHUAbGRzY3JpcHRzL2kzODZsaW51eC54cgBsZHNjcmlwdHMvaTM4NmxpbnV4LnhibgBsZHNjcmlwdHMvaTM4NmxpbnV4LngAbGRzY3JpcHRzL2kzODZsaW51eC54bgAlcy9saWIlcyVzLnNhAGVpMzg2bGludXguYwBpMzg2bGludXgAYS5vdXQtaTM4Ni1saW51eAAAAC8qIFNjcmlwdCBmb3IgbGQgLVVyOiBsaW5rIHcvb3V0IHJlbG9jYXRpb24sIGRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWwxb20iLCAiZWxmNjQtbDFvbSIsCgkgICAgICAiZWxmNjQtbDFvbSIpCk9VVFBVVF9BUkNIKGwxb20pCiAvKiBGb3Igc29tZSByZWFzb24sIHRoZSBTb2xhcmlzIGxpbmtlciBtYWtlcyBiYWQgZXhlY3V0YWJsZXMKICBpZiBnbGQgLXIgaXMgdXNlZCBhbmQgdGhlIGludGVybWVkaWF0ZSBmaWxlIGhhcyBzZWN0aW9ucyBzdGFydGluZwogIGF0IG5vbi16ZXJvIGFkZHJlc3Nlcy4gIENvdWxkIGJlIGEgU29sYXJpcyBsZCBidWcsIGNvdWxkIGJlIGEgR05VIGxkCiAgYnVnLiAgQnV0IGZvciBub3cgYXNzaWduaW5nIHRoZSB6ZXJvIHZtYXMgd29ya3MuICAqLwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLmludGVycCAgICAgICAwIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAwIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgIDAgOiB7ICooLnJlbGEudGV4dCkgfQogIC5yZWxhLmZpbmkgICAgMCA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAwIDogeyAqKC5yZWxhLnJvZGF0YSkgfQogIC5yZWxhLmRhdGEucmVsLnJvIDAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8pIH0KICAucmVsYS5kYXRhICAgIDAgOiB7ICooLnJlbGEuZGF0YSkgfQogIC5yZWxhLnRkYXRhCTAgOiB7ICooLnJlbGEudGRhdGEpIH0KICAucmVsYS50YnNzCTAgOiB7ICooLnJlbGEudGJzcykgfQogIC5yZWxhLmN0b3JzICAgMCA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgMCA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgMCA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgIDAgOiB7ICooLnJlbGEuYnNzKSB9CiAgLnJlbGEubGRhdGEgICAwIDogeyAqKC5yZWxhLmxkYXRhKSB9CiAgLnJlbGEubGJzcyAgICAwIDogeyAqKC5yZWxhLmxic3MpIH0KICAucmVsYS5scm9kYXRhIDAgOiB7ICooLnJlbGEubHJvZGF0YSkgfQogIC5yZWxhLmlmdW5jICAgMCA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgMCA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgIDAgOgogIHsKICAgICooLnRleHQgLnN0dWIpCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIC5yb2RhdGEgICAgICAgMCA6IHsgKigucm9kYXRhKSB9CiAgLnJvZGF0YTEgICAgICAwIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAgfQogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgMCA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdudV9leHRhYiAgICAwIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkwIDogeyAqKC50ZGF0YSkgfQogIC50YnNzCQkwIDogeyAqKC50YnNzKSB9CiAgLmpjciAgICAgICAgICAwIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmR5bmFtaWMgICAgICAwIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAwIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuZ290LnBsdCAgICAgIDAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgMCA6CiAgewogICAgKiguZGF0YSkKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC5sYnNzIDAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC5scm9kYXRhIDAgIDoKICB7CiAgICAqKC5scm9kYXRhKQogIH0KICAubGRhdGEgMCAgOgogIHsKICAgICooLmxkYXRhKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KfQoKAAAvKiBTY3JpcHQgZm9yIGxkIC1yOiBsaW5rIHdpdGhvdXQgcmVsb2NhdGlvbiAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKIC8qIEZvciBzb21lIHJlYXNvbiwgdGhlIFNvbGFyaXMgbGlua2VyIG1ha2VzIGJhZCBleGVjdXRhYmxlcwogIGlmIGdsZCAtciBpcyB1c2VkIGFuZCB0aGUgaW50ZXJtZWRpYXRlIGZpbGUgaGFzIHNlY3Rpb25zIHN0YXJ0aW5nCiAgYXQgbm9uLXplcm8gYWRkcmVzc2VzLiAgQ291bGQgYmUgYSBTb2xhcmlzIGxkIGJ1ZywgY291bGQgYmUgYSBHTlUgbGQKICBidWcuICBCdXQgZm9yIG5vdyBhc3NpZ25pbmcgdGhlIHplcm8gdm1hcyB3b3Jrcy4gICovClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuaW50ZXJwICAgICAgIDAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgIDAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgIDAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAwIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgIDAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgMCA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAwOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAwOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgIDAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgMCA6IHsgKigucmVsYS50ZXh0KSB9CiAgLnJlbGEuZmluaSAgICAwIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgIDAgOiB7ICooLnJlbGEucm9kYXRhKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gMCA6IHsgKigucmVsYS5kYXRhLnJlbC5ybykgfQogIC5yZWxhLmRhdGEgICAgMCA6IHsgKigucmVsYS5kYXRhKSB9CiAgLnJlbGEudGRhdGEJMCA6IHsgKigucmVsYS50ZGF0YSkgfQogIC5yZWxhLnRic3MJMCA6IHsgKigucmVsYS50YnNzKSB9CiAgLnJlbGEuY3RvcnMgICAwIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAwIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAwIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgMCA6IHsgKigucmVsYS5ic3MpIH0KICAucmVsYS5sZGF0YSAgIDAgOiB7ICooLnJlbGEubGRhdGEpIH0KICAucmVsYS5sYnNzICAgIDAgOiB7ICooLnJlbGEubGJzcykgfQogIC5yZWxhLmxyb2RhdGEgMCA6IHsgKigucmVsYS5scm9kYXRhKSB9CiAgLnJlbGEuaWZ1bmMgICAwIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAwIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgIDAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgLnJvZGF0YSAgICAgICAwIDogeyAqKC5yb2RhdGEpIH0KICAucm9kYXRhMSAgICAgIDAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAwIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOiB7ICooLnRkYXRhKSB9CiAgLnRic3MJCTAgOiB7ICooLnRic3MpIH0KICAuamNyICAgICAgICAgIDAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZHluYW1pYyAgICAgIDAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgIDAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgMCA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC5sYnNzIDAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC5scm9kYXRhIDAgIDoKICB7CiAgICAqKC5scm9kYXRhKQogIH0KICAubGRhdGEgMCAgOgogIHsKICAgICooLmxkYXRhKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC1OOiBtaXggdGV4dCBhbmQgZGF0YSBvbiBzYW1lIHBhZ2U7IGRvbid0IGFsaWduIGRhdGEgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWwxb20iLCAiZWxmNjQtbDFvbSIsCgkgICAgICAiZWxmNjQtbDFvbSIpCk9VVFBVVF9BUkNIKGwxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gLjsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtbjogbWl4IHRleHQgYW5kIGRhdGEgb24gc2FtZSBwYWdlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvIC16IHNlcGFyYXRlLWNvZGU6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlOiBjb21iaW5lIGFuZCBzb3J0IHJlbG9jIHNlY3Rpb25zIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2M6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLXBpZSAteiBzZXBhcmF0ZS1jb2RlOiBsaW5rIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWwxb20iLCAiZWxmNjQtbDFvbSIsCgkgICAgICAiZWxmNjQtbDFvbSIpCk9VVFBVVF9BUkNIKGwxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAvKiBTY3JpcHQgZm9yIGxkIC1waWU6IGxpbmsgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvIC16IHNlcGFyYXRlLWNvZGU6IHNoYXJlZCBsaWJyYXJ5LCBjb21iaW5lICYgc29ydCByZWxvY3Mgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWwxb20iLCAiZWxmNjQtbDFvbSIsCgkgICAgICAiZWxmNjQtbDFvbSIpCk9VVFBVVF9BUkNIKGwxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgICooLnJlbGEuaXBsdCkKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgLS1zaGFyZWQgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlOiBzaGFyZWQgbGlicmFyeSwgY29tYmluZSAmIHNvcnQgcmVsb2NzIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgLS1zaGFyZWQgLXogY29tYnJlbG9jOiBzaGFyZWQgbGlicmFyeSwgY29tYmluZSAmIHNvcnQgcmVsb2NzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciBsZCAtLXNoYXJlZCAteiBzZXBhcmF0ZS1jb2RlOiBsaW5rIHNoYXJlZCBsaWJyYXJ5IHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgICooLnJlbGEuaXBsdCkKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciBsZCAtLXNoYXJlZDogbGluayBzaGFyZWQgbGlicmFyeSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvIC16IHNlcGFyYXRlLWNvZGU6IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWwxb20iLCAiZWxmNjQtbDFvbSIsCgkgICAgICAiZWxmNjQtbDFvbSIpCk9VVFBVVF9BUkNIKGwxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IHNlcGFyYXRlLWNvZGU6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYzogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAC8qIFNjcmlwdCBmb3IgLXogc2VwYXJhdGUtY29kZTogZ2VuZXJhdGUgbm9ybWFsIGV4ZWN1dGFibGVzIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoALyogRGVmYXVsdCBsaW5rZXIgc2NyaXB0LCBmb3Igbm9ybWFsIGV4ZWN1dGFibGVzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAGVlbGZfbDFvbS5jAGVsZl9sMW9tAGVsZjY0LWwxb20AAAAAWJvu/zib7v8wm+7/H5vu//ia7v9om+7/aJvu/3o6UDoAAAAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLVVyOiBsaW5rIHcvb3V0IHJlbG9jYXRpb24sIGRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWsxb20iLCAiZWxmNjQtazFvbSIsCgkgICAgICAiZWxmNjQtazFvbSIpCk9VVFBVVF9BUkNIKGsxb20pCiAvKiBGb3Igc29tZSByZWFzb24sIHRoZSBTb2xhcmlzIGxpbmtlciBtYWtlcyBiYWQgZXhlY3V0YWJsZXMKICBpZiBnbGQgLXIgaXMgdXNlZCBhbmQgdGhlIGludGVybWVkaWF0ZSBmaWxlIGhhcyBzZWN0aW9ucyBzdGFydGluZwogIGF0IG5vbi16ZXJvIGFkZHJlc3Nlcy4gIENvdWxkIGJlIGEgU29sYXJpcyBsZCBidWcsIGNvdWxkIGJlIGEgR05VIGxkCiAgYnVnLiAgQnV0IGZvciBub3cgYXNzaWduaW5nIHRoZSB6ZXJvIHZtYXMgd29ya3MuICAqLwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLmludGVycCAgICAgICAwIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAwIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgIDAgOiB7ICooLnJlbGEudGV4dCkgfQogIC5yZWxhLmZpbmkgICAgMCA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAwIDogeyAqKC5yZWxhLnJvZGF0YSkgfQogIC5yZWxhLmRhdGEucmVsLnJvIDAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8pIH0KICAucmVsYS5kYXRhICAgIDAgOiB7ICooLnJlbGEuZGF0YSkgfQogIC5yZWxhLnRkYXRhCTAgOiB7ICooLnJlbGEudGRhdGEpIH0KICAucmVsYS50YnNzCTAgOiB7ICooLnJlbGEudGJzcykgfQogIC5yZWxhLmN0b3JzICAgMCA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgMCA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgMCA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgIDAgOiB7ICooLnJlbGEuYnNzKSB9CiAgLnJlbGEubGRhdGEgICAwIDogeyAqKC5yZWxhLmxkYXRhKSB9CiAgLnJlbGEubGJzcyAgICAwIDogeyAqKC5yZWxhLmxic3MpIH0KICAucmVsYS5scm9kYXRhIDAgOiB7ICooLnJlbGEubHJvZGF0YSkgfQogIC5yZWxhLmlmdW5jICAgMCA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgMCA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgIDAgOgogIHsKICAgICooLnRleHQgLnN0dWIpCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIC5yb2RhdGEgICAgICAgMCA6IHsgKigucm9kYXRhKSB9CiAgLnJvZGF0YTEgICAgICAwIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAgfQogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgMCA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdudV9leHRhYiAgICAwIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkwIDogeyAqKC50ZGF0YSkgfQogIC50YnNzCQkwIDogeyAqKC50YnNzKSB9CiAgLmpjciAgICAgICAgICAwIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmR5bmFtaWMgICAgICAwIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAwIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuZ290LnBsdCAgICAgIDAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgMCA6CiAgewogICAgKiguZGF0YSkKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC5sYnNzIDAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC5scm9kYXRhIDAgIDoKICB7CiAgICAqKC5scm9kYXRhKQogIH0KICAubGRhdGEgMCAgOgogIHsKICAgICooLmxkYXRhKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KfQoKAAAvKiBTY3JpcHQgZm9yIGxkIC1yOiBsaW5rIHdpdGhvdXQgcmVsb2NhdGlvbiAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKIC8qIEZvciBzb21lIHJlYXNvbiwgdGhlIFNvbGFyaXMgbGlua2VyIG1ha2VzIGJhZCBleGVjdXRhYmxlcwogIGlmIGdsZCAtciBpcyB1c2VkIGFuZCB0aGUgaW50ZXJtZWRpYXRlIGZpbGUgaGFzIHNlY3Rpb25zIHN0YXJ0aW5nCiAgYXQgbm9uLXplcm8gYWRkcmVzc2VzLiAgQ291bGQgYmUgYSBTb2xhcmlzIGxkIGJ1ZywgY291bGQgYmUgYSBHTlUgbGQKICBidWcuICBCdXQgZm9yIG5vdyBhc3NpZ25pbmcgdGhlIHplcm8gdm1hcyB3b3Jrcy4gICovClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuaW50ZXJwICAgICAgIDAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgIDAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgIDAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAwIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgIDAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgMCA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAwOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAwOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgIDAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgMCA6IHsgKigucmVsYS50ZXh0KSB9CiAgLnJlbGEuZmluaSAgICAwIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgIDAgOiB7ICooLnJlbGEucm9kYXRhKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gMCA6IHsgKigucmVsYS5kYXRhLnJlbC5ybykgfQogIC5yZWxhLmRhdGEgICAgMCA6IHsgKigucmVsYS5kYXRhKSB9CiAgLnJlbGEudGRhdGEJMCA6IHsgKigucmVsYS50ZGF0YSkgfQogIC5yZWxhLnRic3MJMCA6IHsgKigucmVsYS50YnNzKSB9CiAgLnJlbGEuY3RvcnMgICAwIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAwIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAwIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgMCA6IHsgKigucmVsYS5ic3MpIH0KICAucmVsYS5sZGF0YSAgIDAgOiB7ICooLnJlbGEubGRhdGEpIH0KICAucmVsYS5sYnNzICAgIDAgOiB7ICooLnJlbGEubGJzcykgfQogIC5yZWxhLmxyb2RhdGEgMCA6IHsgKigucmVsYS5scm9kYXRhKSB9CiAgLnJlbGEuaWZ1bmMgICAwIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAwIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgIDAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgLnJvZGF0YSAgICAgICAwIDogeyAqKC5yb2RhdGEpIH0KICAucm9kYXRhMSAgICAgIDAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAwIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOiB7ICooLnRkYXRhKSB9CiAgLnRic3MJCTAgOiB7ICooLnRic3MpIH0KICAuamNyICAgICAgICAgIDAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZHluYW1pYyAgICAgIDAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgIDAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgMCA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC5sYnNzIDAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC5scm9kYXRhIDAgIDoKICB7CiAgICAqKC5scm9kYXRhKQogIH0KICAubGRhdGEgMCAgOgogIHsKICAgICooLmxkYXRhKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC1OOiBtaXggdGV4dCBhbmQgZGF0YSBvbiBzYW1lIHBhZ2U7IGRvbid0IGFsaWduIGRhdGEgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWsxb20iLCAiZWxmNjQtazFvbSIsCgkgICAgICAiZWxmNjQtazFvbSIpCk9VVFBVVF9BUkNIKGsxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gLjsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtbjogbWl4IHRleHQgYW5kIGRhdGEgb24gc2FtZSBwYWdlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1rMW9tIiwgImVsZjY0LWsxb20iLAoJICAgICAgImVsZjY0LWsxb20iKQpPVVRQVVRfQVJDSChrMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvIC16IHNlcGFyYXRlLWNvZGU6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlOiBjb21iaW5lIGFuZCBzb3J0IHJlbG9jIHNlY3Rpb25zIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1rMW9tIiwgImVsZjY0LWsxb20iLAoJICAgICAgImVsZjY0LWsxb20iKQpPVVRQVVRfQVJDSChrMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2M6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLXBpZSAteiBzZXBhcmF0ZS1jb2RlOiBsaW5rIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWsxb20iLCAiZWxmNjQtazFvbSIsCgkgICAgICAiZWxmNjQtazFvbSIpCk9VVFBVVF9BUkNIKGsxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAvKiBTY3JpcHQgZm9yIGxkIC1waWU6IGxpbmsgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvIC16IHNlcGFyYXRlLWNvZGU6IHNoYXJlZCBsaWJyYXJ5LCBjb21iaW5lICYgc29ydCByZWxvY3Mgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWsxb20iLCAiZWxmNjQtazFvbSIsCgkgICAgICAiZWxmNjQtazFvbSIpCk9VVFBVVF9BUkNIKGsxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgICooLnJlbGEuaXBsdCkKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgLS1zaGFyZWQgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlOiBzaGFyZWQgbGlicmFyeSwgY29tYmluZSAmIHNvcnQgcmVsb2NzIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1rMW9tIiwgImVsZjY0LWsxb20iLAoJICAgICAgImVsZjY0LWsxb20iKQpPVVRQVVRfQVJDSChrMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgLS1zaGFyZWQgLXogY29tYnJlbG9jOiBzaGFyZWQgbGlicmFyeSwgY29tYmluZSAmIHNvcnQgcmVsb2NzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1rMW9tIiwgImVsZjY0LWsxb20iLAoJICAgICAgImVsZjY0LWsxb20iKQpPVVRQVVRfQVJDSChrMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciBsZCAtLXNoYXJlZCAteiBzZXBhcmF0ZS1jb2RlOiBsaW5rIHNoYXJlZCBsaWJyYXJ5IHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1rMW9tIiwgImVsZjY0LWsxb20iLAoJICAgICAgImVsZjY0LWsxb20iKQpPVVRQVVRfQVJDSChrMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgICooLnJlbGEuaXBsdCkKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciBsZCAtLXNoYXJlZDogbGluayBzaGFyZWQgbGlicmFyeSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IC47CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgKiguZ251X29iamVjdF9vbmx5KSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvIC16IHNlcGFyYXRlLWNvZGU6IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgd2l0aCBzZXBhcmF0ZSBjb2RlIHNlZ21lbnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWsxb20iLCAiZWxmNjQtazFvbSIsCgkgICAgICAiZWxmNjQtazFvbSIpCk9VVFBVVF9BUkNIKGsxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXJlZGhhdC1saW51eC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAAAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IHNlcGFyYXRlLWNvZGU6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyB3aXRoIHNlcGFyYXRlIGNvZGUgc2VnbWVudCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYzogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcmVkaGF0LWxpbnV4L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoAAAAAAC8qIFNjcmlwdCBmb3IgLXogc2VwYXJhdGUtY29kZTogZ2VuZXJhdGUgbm9ybWFsIGV4ZWN1dGFibGVzIHdpdGggc2VwYXJhdGUgY29kZSBzZWdtZW50ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1rMW9tIiwgImVsZjY0LWsxb20iLAoJICAgICAgImVsZjY0LWsxb20iKQpPVVRQVVRfQVJDSChrMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSAuOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopICooLmdudV9vYmplY3Rfb25seSkgfQp9CgoALyogRGVmYXVsdCBsaW5rZXIgc2NyaXB0LCBmb3Igbm9ybWFsIGV4ZWN1dGFibGVzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1rMW9tIiwgImVsZjY0LWsxb20iLAoJICAgICAgImVsZjY0LWsxb20iKQpPVVRQVVRfQVJDSChrMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1yZWRoYXQtbGludXgvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gLjsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSAqKC5nbnVfb2JqZWN0X29ubHkpIH0KfQoKAGVlbGZfazFvbS5jAGVsZl9rMW9tAGVsZjY0LWsxb20AAAAAuPfr/5j36/+Q9+v/f/fr/1j36//I9+v/yPfr/3o6UDoALmRlYnVnXwAuaWRhdGEkAF9fc2VjdGlvbl9hbGlnbm1lbnRfXwArJXMKAHBlaS14ODYtNjQAcGUteDg2LTY0AGVpMzg2cGVwLmMALmRlZgAuREVGAF9faW1hZ2VfYmFzZV9fAF9fc2l6ZV9vZl9zdGFja19yZXNlcnZlX18AX19zaXplX29mX2hlYXBfcmVzZXJ2ZV9fAC5pZGF0YQBfX2hlYWRfACVzKCkKAC0lcwoAKiVzCgAuYnVpbGRpZAAlczolcwoALT4lcwoALmlkYXRhJDIALm9iagAlcy4lYwBXaW5NYWluQ1JUU3RhcnR1cABOdFByb2Nlc3NTdGFydHVwAGEuZXhlAF9fX0ltYWdlQmFzZQBuYXRpdmUAX19zaXplX29mX2hlYXBfY29tbWl0X18AX19zaXplX29mX3N0YWNrX2NvbW1pdF9fAF9fbWFqb3Jfc3Vic3lzdGVtX3ZlcnNpb25fXwBfX21pbm9yX3N1YnN5c3RlbV92ZXJzaW9uX18AX19zdWJzeXN0ZW1fXwBfX21ham9yX29zX3ZlcnNpb25fXwBfX21pbm9yX29zX3ZlcnNpb25fXwBfX21ham9yX2ltYWdlX3ZlcnNpb25fXwBfX21pbm9yX2ltYWdlX3ZlcnNpb25fXwBfX2ZpbGVfYWxpZ25tZW50X18AX19kbGxfXwBfX2RsbF9jaGFyYWN0ZXJpc3RpY3NfXwBsaWIlcy5kbGwuYQAlcy8AYXJlbGVudDogJXNAJSNseDogYWRkPSVsaQoAIHBjcmVsACAlZCBiaXQgcmVsLgoAbWFpbkNSVFN0YXJ0dXAAX19Qb3NpeFByb2Nlc3NTdGFydHVwAGxpYiVzLmEAJXMubGliACVzJXMuZGxsAGxpYiVzLmRsbAAucmRhdGEAYmFzZS1maWxlAGZpbGUtYWxpZ25tZW50AG1ham9yLWltYWdlLXZlcnNpb24AbWFqb3Itb3MtdmVyc2lvbgBtYWpvci1zdWJzeXN0ZW0tdmVyc2lvbgBtaW5vci1pbWFnZS12ZXJzaW9uAG1pbm9yLW9zLXZlcnNpb24AbWlub3Itc3Vic3lzdGVtLXZlcnNpb24Ac2VjdGlvbi1hbGlnbm1lbnQAc3Vic3lzdGVtAHN1cHBvcnQtb2xkLWNvZGUAbm8tbGVhZGluZy11bmRlcnNjb3JlAG91dHB1dC1kZWYAZXhwb3J0LWFsbC1zeW1ib2xzAGV4Y2x1ZGUtc3ltYm9scwBleGNsdWRlLWFsbC1zeW1ib2xzAGV4Y2x1ZGUtbW9kdWxlcy1mb3ItaW1wbGliAGtpbGwtYXQAYWRkLXN0ZGNhbGwtYWxpYXMAZW5hYmxlLXN0ZGNhbGwtZml4dXAAZGlzYWJsZS1zdGRjYWxsLWZpeHVwAHdhcm4tZHVwbGljYXRlLWV4cG9ydHMAY29tcGF0LWltcGxpYgBlbmFibGUtYXV0by1pbWFnZS1iYXNlAGRpc2FibGUtYXV0by1pbWFnZS1iYXNlAGRsbC1zZWFyY2gtcHJlZml4AG5vLWRlZmF1bHQtZXhjbHVkZXMAZW5hYmxlLWF1dG8taW1wb3J0AGRpc2FibGUtYXV0by1pbXBvcnQAZW5hYmxlLWV4dHJhLXBlcC1kZWJ1ZwBlbmFibGUtcnVudGltZS1wc2V1ZG8tcmVsb2MAZGlzYWJsZS1ydW50aW1lLXBzZXVkby1yZWxvYwBlbmFibGUtbG9uZy1zZWN0aW9uLW5hbWVzAGRpc2FibGUtbG9uZy1zZWN0aW9uLW5hbWVzAGhpZ2gtZW50cm9weS12YQBkeW5hbWljYmFzZQBmb3JjZWludGVnAG54Y29tcGF0AG5vLWlzb2xhdGlvbgBuby1zZWgAbm8tYmluZAB3ZG1kcml2ZXIAdHNhd2FyZQBuby1pbnNlcnQtdGltZXN0YW1wAHdpbmRvd3MAY29uc29sZQBwb3NpeAB3aW5jZQB4Ym94AGkzODZwZXAAX19sb2FkZXJfZmxhZ3NfXwAAAAAAAAAgIC0tYmFzZV9maWxlIDxiYXNlZmlsZT4gICAgICAgICAgICAgR2VuZXJhdGUgYSBiYXNlIGZpbGUgZm9yIHJlbG9jYXRhYmxlIERMTHMKACAgLS1kbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgaW1hZ2UgYmFzZSB0byB0aGUgZGVmYXVsdCBmb3IgRExMcwoAAAAAICAtLWZpbGUtYWxpZ25tZW50IDxzaXplPiAgICAgICAgICAgIFNldCBmaWxlIGFsaWdubWVudAoAAAAAAAAAACAgLS1oZWFwIDxzaXplPiAgICAgICAgICAgICAgICAgICAgICBTZXQgaW5pdGlhbCBzaXplIG9mIHRoZSBoZWFwCgAAAAAAACAgLS1pbWFnZS1iYXNlIDxhZGRyZXNzPiAgICAgICAgICAgICBTZXQgc3RhcnQgYWRkcmVzcyBvZiB0aGUgZXhlY3V0YWJsZQoAAAAAAAAAICAtLW1ham9yLWltYWdlLXZlcnNpb24gPG51bWJlcj4gICAgIFNldCB2ZXJzaW9uIG51bWJlciBvZiB0aGUgZXhlY3V0YWJsZQoAAAAAAAAgIC0tbWFqb3Itb3MtdmVyc2lvbiA8bnVtYmVyPiAgICAgICAgU2V0IG1pbmltdW0gcmVxdWlyZWQgT1MgdmVyc2lvbgoAAAAgIC0tbWFqb3Itc3Vic3lzdGVtLXZlcnNpb24gPG51bWJlcj4gU2V0IG1pbmltdW0gcmVxdWlyZWQgT1Mgc3Vic3lzdGVtIHZlcnNpb24KACAgLS1taW5vci1pbWFnZS12ZXJzaW9uIDxudW1iZXI+ICAgICBTZXQgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBleGVjdXRhYmxlCgAAAAAAICAtLW1pbm9yLW9zLXZlcnNpb24gPG51bWJlcj4gICAgICAgIFNldCBtaW5pbXVtIHJlcXVpcmVkIE9TIHJldmlzaW9uCgAAICAtLW1pbm9yLXN1YnN5c3RlbS12ZXJzaW9uIDxudW1iZXI+IFNldCBtaW5pbXVtIHJlcXVpcmVkIE9TIHN1YnN5c3RlbSByZXZpc2lvbgoAAAAAAAAAACAgLS1zZWN0aW9uLWFsaWdubWVudCA8c2l6ZT4gICAgICAgICBTZXQgc2VjdGlvbiBhbGlnbm1lbnQKAAAAAAAgIC0tc3RhY2sgPHNpemU+ICAgICAgICAgICAgICAgICAgICAgU2V0IHNpemUgb2YgdGhlIGluaXRpYWwgc3RhY2sKAAAAAAAgIC0tc3Vic3lzdGVtIDxuYW1lPls6PHZlcnNpb24+XSAgICAgU2V0IHJlcXVpcmVkIE9TIHN1YnN5c3RlbSBbJiB2ZXJzaW9uXQoAAAAAACAgLS1zdXBwb3J0LW9sZC1jb2RlICAgICAgICAgICAgICAgICBTdXBwb3J0IGludGVyd29ya2luZyB3aXRoIG9sZCBjb2RlCgAAAAAAAAAAICAtLVtuby1dbGVhZGluZy11bmRlcnNjb3JlICAgICAgICAgIFNldCBleHBsaWNpdCBzeW1ib2wgdW5kZXJzY29yZSBwcmVmaXggbW9kZQoAAAAAAAAAACAgLS1bbm8tXWluc2VydC10aW1lc3RhbXAgICAgICAgICAgICBVc2UgYSByZWFsIHRpbWVzdGFtcCByYXRoZXIgdGhhbiB6ZXJvLiAoZGVmYXVsdCkKAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtYWtlcyBiaW5hcmllcyBub24tZGV0ZXJtaW5pc3RpYwoAAAAAACAgLS1hZGQtc3RkY2FsbC1hbGlhcyAgICAgICAgICAgICAgICBFeHBvcnQgc3ltYm9scyB3aXRoIGFuZCB3aXRob3V0IEBubgoAAAAAAAAAICAtLWRpc2FibGUtc3RkY2FsbC1maXh1cCAgICAgICAgICAgIERvbid0IGxpbmsgX3N5bSB0byBfc3ltQG5uCgAAAAAAAAAAICAtLWVuYWJsZS1zdGRjYWxsLWZpeHVwICAgICAgICAgICAgIExpbmsgX3N5bSB0byBfc3ltQG5uIHdpdGhvdXQgd2FybmluZ3MKAAAAAAAgIC0tZXhjbHVkZS1zeW1ib2xzIHN5bSxzeW0sLi4uICAgICAgRXhjbHVkZSBzeW1ib2xzIGZyb20gYXV0b21hdGljIGV4cG9ydAoAAAAAACAgLS1leGNsdWRlLWFsbC1zeW1ib2xzICAgICAgICAgICAgICBFeGNsdWRlIGFsbCBzeW1ib2xzIGZyb20gYXV0b21hdGljIGV4cG9ydAoAICAtLWV4Y2x1ZGUtbGlicyBsaWIsbGliLC4uLiAgICAgICAgIEV4Y2x1ZGUgbGlicmFyaWVzIGZyb20gYXV0b21hdGljIGV4cG9ydAoAAAAgIC0tZXhjbHVkZS1tb2R1bGVzLWZvci1pbXBsaWIgbW9kLG1vZCwuLi4KAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZSBvYmplY3RzLCBhcmNoaXZlIG1lbWJlcnMgZnJvbSBhdXRvCgAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydCwgcGxhY2UgaW50byBpbXBvcnQgbGlicmFyeSBpbnN0ZWFkLgoAAAAAAAAAACAgLS1leHBvcnQtYWxsLXN5bWJvbHMgICAgICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGV4cG9ydCBhbGwgZ2xvYmFscyB0byBETEwKAAAAICAtLWtpbGwtYXQgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZSBAbm4gZnJvbSBleHBvcnRlZCBzeW1ib2xzCgAAICAtLW91dHB1dC1kZWYgPGZpbGU+ICAgICAgICAgICAgICAgIEdlbmVyYXRlIGEgLkRFRiBmaWxlIGZvciB0aGUgYnVpbHQgRExMCgAAAAAgIC0td2Fybi1kdXBsaWNhdGUtZXhwb3J0cyAgICAgICAgICAgV2FybiBhYm91dCBkdXBsaWNhdGUgZXhwb3J0cy4KAAAAAAAgIC0tY29tcGF0LWltcGxpYiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIGJhY2t3YXJkIGNvbXBhdGlibGUgaW1wb3J0IGxpYnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBfX2ltcF88U1lNQk9MPiBhcyB3ZWxsLgoAAAAAACAgLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGNob29zZSBpbWFnZSBiYXNlIGZvciBETExzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyB1c2VyIHNwZWNpZmllcyBvbmUKACAgLS1kaXNhYmxlLWF1dG8taW1hZ2UtYmFzZSAgICAgICAgICBEbyBub3QgYXV0by1jaG9vc2UgaW1hZ2UgYmFzZS4gKGRlZmF1bHQpCgAAICAtLWRsbC1zZWFyY2gtcHJlZml4PTxzdHJpbmc+ICAgICAgIFdoZW4gbGlua2luZyBkeW5hbWljYWxseSB0byBhIGRsbCB3aXRob3V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGltcG9ydGxpYiwgdXNlIDxzdHJpbmc+PGJhc2VuYW1lPi5kbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gcHJlZmVyZW5jZSB0byBsaWI8YmFzZW5hbWU+LmRsbCAKAAAAAAAAICAtLWVuYWJsZS1hdXRvLWltcG9ydCAgICAgICAgICAgICAgIERvIHNvcGhpc3RpY2F0ZWQgbGlua2luZyBvZiBfc3ltIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW1wX3N5bSBmb3IgREFUQSByZWZlcmVuY2VzCgAAICAtLWRpc2FibGUtYXV0by1pbXBvcnQgICAgICAgICAgICAgIERvIG5vdCBhdXRvLWltcG9ydCBEQVRBIGl0ZW1zIGZyb20gRExMcwoAAAAgIC0tZW5hYmxlLXJ1bnRpbWUtcHNldWRvLXJlbG9jICAgICAgV29yayBhcm91bmQgYXV0by1pbXBvcnQgbGltaXRhdGlvbnMgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaW5nIHBzZXVkby1yZWxvY2F0aW9ucyByZXNvbHZlZCBhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lLgoAAAAAAAAAICAtLWRpc2FibGUtcnVudGltZS1wc2V1ZG8tcmVsb2MgICAgIERvIG5vdCBhZGQgcnVudGltZSBwc2V1ZG8tcmVsb2NhdGlvbnMgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8taW1wb3J0ZWQgREFUQS4KAAAAAAAAICAtLWVuYWJsZS1leHRyYS1wZXAtZGVidWcgICAgICAgICAgICBFbmFibGUgdmVyYm9zZSBkZWJ1ZyBvdXRwdXQgd2hlbiBidWlsZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBsaW5raW5nIHRvIERMTHMgKGVzcC4gYXV0by1pbXBvcnQpCgAAACAgLS1lbmFibGUtbG9uZy1zZWN0aW9uLW5hbWVzICAgICAgICBVc2UgbG9uZyBDT0ZGIHNlY3Rpb24gbmFtZXMgZXZlbiBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlIGltYWdlIGZpbGVzCgAgIC0tZGlzYWJsZS1sb25nLXNlY3Rpb24tbmFtZXMgICAgICAgTmV2ZXIgdXNlIGxvbmcgQ09GRiBzZWN0aW9uIG5hbWVzLCBldmVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIG9iamVjdCBmaWxlcwoAAAAAICAtLWhpZ2gtZW50cm9weS12YSAgICAgICAgICAgICAgICAgIEltYWdlIGlzIGNvbXBhdGlibGUgd2l0aCA2NC1iaXQgYWRkcmVzcyBzcGFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQgcmFuZG9taXphdGlvbiAoQVNMUikKAAAgIC0tZHluYW1pY2Jhc2UJCQkgSW1hZ2UgYmFzZSBhZGRyZXNzIG1heSBiZSByZWxvY2F0ZWQgdXNpbmcKCQkJCSAgICAgICBhZGRyZXNzIHNwYWNlIGxheW91dCByYW5kb21pemF0aW9uIChBU0xSKQoAAAAAAAAgIC0tZm9yY2VpbnRlZwkJIENvZGUgaW50ZWdyaXR5IGNoZWNrcyBhcmUgZW5mb3JjZWQKAAAAACAgLS1ueGNvbXBhdAkJIEltYWdlIGlzIGNvbXBhdGlibGUgd2l0aCBkYXRhIGV4ZWN1dGlvbiBwcmV2ZW50aW9uCgAAAAAAACAgLS1uby1pc29sYXRpb24JCSBJbWFnZSB1bmRlcnN0YW5kcyBpc29sYXRpb24gYnV0IGRvIG5vdCBpc29sYXRlIHRoZSBpbWFnZQoAAAAAICAtLW5vLXNlaAkJCSBJbWFnZSBkb2VzIG5vdCB1c2UgU0VILiBObyBTRSBoYW5kbGVyIG1heQoJCQkJICAgICAgIGJlIGNhbGxlZCBpbiB0aGlzIGltYWdlCgAAAAAAICAtLW5vLWJpbmQJCQkgRG8gbm90IGJpbmQgdGhpcyBpbWFnZQoAACAgLS13ZG1kcml2ZXIJCSBEcml2ZXIgdXNlcyB0aGUgV0RNIG1vZGVsCgAAAAAAACAgLS10c2F3YXJlICAgICAgICAgICAgICAgICAgSW1hZ2UgaXMgVGVybWluYWwgU2VydmVyIGF3YXJlCgAAAAAgIC0tYnVpbGQtaWRbPVNUWUxFXSAgICAgICAgIEdlbmVyYXRlIGJ1aWxkIElECgBXYXJuaW5nOiByZXNvbHZpbmcgJXMgYnkgbGlua2luZyB0byAlcwoAVXNlIC0tZW5hYmxlLXN0ZGNhbGwtZml4dXAgdG8gZGlzYWJsZSB0aGVzZSB3YXJuaW5ncwoAAABVc2UgLS1kaXNhYmxlLXN0ZGNhbGwtZml4dXAgdG8gZGlzYWJsZSB0aGVzZSBmaXh1cHMKAAAAAC8qIFNjcmlwdCBmb3IgbGQgLVVyOiBsaW5rIHcvb3V0IHJlbG9jYXRpb24sIGRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQocGUteDg2LTY0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcGVwL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAudGV4dCAgOgogIHsKICAgICooLnRleHQpCiAgICAuID0gQUxJR04oOCk7CiAgICAgICBQUk9WSURFKF9fX0NUT1JfTElTVF9fID0gLik7CiAgICAgICBQUk9WSURFKF9fQ1RPUl9MSVNUX18gPSAuKTsKICAgICAgIExPTkcgKC0xKTsgTE9ORyAoLTEpOwogICAgICAgS0VFUCAoKiguY3RvcnMpKTsKICAgICAgIEtFRVAgKCooLmN0b3IpKTsKICAgICAgIEtFRVAgKCooU09SVF9CWV9OQU1FKC5jdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7IExPTkcgKDApOwogICAgICAgUFJPVklERShfX19EVE9SX0xJU1RfXyA9IC4pOwogICAgICAgUFJPVklERShfX0RUT1JfTElTVF9fID0gLik7CiAgICAgICBMT05HICgtMSk7IExPTkcgKC0xKTsKICAgICAgIEtFRVAgKCooLmR0b3JzKSk7CiAgICAgICBLRUVQICgqKC5kdG9yKSk7CiAgICAgICBLRUVQICgqKFNPUlRfQllfTkFNRSguZHRvcnMuKikpKTsKICAgICAgIExPTkcgKDApOyBMT05HICgwKTsKICAgIC8qID8/PyBXaHkgaXMgLmdjY19leGMgaGVyZT8gICovCiAgfQogIC8qIFRoZSBDeWd3aW4zMiBsaWJyYXJ5IHVzZXMgYSBzZWN0aW9uIHRvIGF2b2lkIGNvcHlpbmcgY2VydGFpbiBkYXRhCiAgICAgb24gZm9yay4gIFRoaXMgdXNlZCB0byBiZSBuYW1lZCAiLmRhdGEiLiAgVGhlIGxpbmtlciB1c2VkCiAgICAgdG8gaW5jbHVkZSB0aGlzIGJldHdlZW4gX19kYXRhX3N0YXJ0X18gYW5kIF9fZGF0YV9lbmRfXywgYnV0IHRoYXQKICAgICBicmVha3MgYnVpbGRpbmcgdGhlIGN5Z3dpbjMyIGRsbC4gIEluc3RlYWQsIHdlIG5hbWUgdGhlIHNlY3Rpb24KICAgICAiLmRhdGFfY3lnd2luX25vY29weSIgYW5kIGV4cGxpY2l0bHkgaW5jbHVkZSBpdCBhZnRlciBfX2RhdGFfZW5kX18uICovCiAgLmRhdGEgIDoKICB7CiAgICAqKC5kYXRhKQogICAgS0VFUCgqKC5qY3IpKQogIH0KICAucmRhdGEgIDoKICB7CiAgICAqKC5yZGF0YSkKICB9CiAgLmVoX2ZyYW1lICA6CiAgewogICAgS0VFUCAoKiguZWhfZnJhbWUpKQogIH0KICAucGRhdGEgIDoKICB7CiAgICBLRUVQKCooLnBkYXRhKSkKICB9CiAgLnhkYXRhICA6CiAgewogICAgS0VFUCgqKC54ZGF0YSkpCiAgfQogIC5ic3MgIDoKICB7CiAgICAqKC5ic3MpCiAgICAqKENPTU1PTikKICB9CiAgLmVkYXRhICA6CiAgewogICAgKiguZWRhdGEpCiAgfQogIC9ESVNDQVJELyA6CiAgewogICAgKiguZGVidWckUykKICAgICooLmRlYnVnJFQpCiAgICAqKC5kZWJ1ZyRGKQogICAgKiguZHJlY3R2ZSkKICB9CiAgLmlkYXRhICA6CiAgewogICAgLyogVGhpcyBjYW5ub3QgY3VycmVudGx5IGJlIGhhbmRsZWQgd2l0aCBncm91cGVkIHNlY3Rpb25zLgoJU2VlIHBlcC5lbTpzb3J0X3NlY3Rpb25zLiAgKi8KICB9CiAgLkNSVCAgOgogIHsKICAgIC8qIF9fX2NydF94bF9lbmRfXyBpcyBkZWZpbmVkIGluIHRoZSBUTFMgRGlyZWN0b3J5IHN1cHBvcnQgY29kZSAqLwogIH0KICAvKiBXaW5kb3dzIFRMUyBleHBlY3RzIC50bHMkQUFBIHRvIGJlIGF0IHRoZSBzdGFydCBhbmQgLnRscyRaWlogdG8gYmUKICAgICBhdCB0aGUgZW5kIG9mIHRoZSAudGxzIHNlY3Rpb24uICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIF90bHNfc3RhcnQgTVVTVAogICAgIGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY3Rpb24gdG8gZW5hYmxlIFNFQ1JFTDMyIHJlbG9jYXRpb25zIHdpdGggVExTCiAgICAgZGF0YS4gICovCiAgLnRscyAgOgogIHsKICAgICooLnRscykKICB9CiAgLmVuZGp1bmsgIDoKICB7CiAgICAvKiBlbmQgaXMgZGVwcmVjYXRlZCwgZG9uJ3QgdXNlIGl0ICovCiAgfQogIC5yc3JjICA6IFNVQkFMSUdOKDQpCiAgewogICAgKigucnNyYykKICB9CiAgLnJlbG9jICA6CiAgewogICAgKigucmVsb2MpCiAgfQogIC5zdGFiICAgOgogIHsKICAgICooLnN0YWIpCiAgfQogIC5zdGFic3RyICAgOgogIHsKICAgICooLnN0YWJzdHIpCiAgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uLiAgVW5saWtlIG90aGVyIHRhcmdldHMgdGhhdCBmYWtlIHRoaXMgYnkgcHV0dGluZyB0aGUKICAgICBzZWN0aW9uIFZNQSBhdCAwLCB0aGUgUEUgZm9ybWF0IHdpbGwgbm90IGFsbG93IGl0LiAgKi8KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAgOgogIHsKICAgICooLmRlYnVnX2FyYW5nZXMpCiAgfQogIC56ZGVidWdfYXJhbmdlcyAgIDoKICB7CiAgICAqKC56ZGVidWdfYXJhbmdlcykKICB9CiAgLmRlYnVnX3B1Ym5hbWVzICAgOgogIHsKICAgICooLmRlYnVnX3B1Ym5hbWVzKQogIH0KICAuemRlYnVnX3B1Ym5hbWVzICAgOgogIHsKICAgICooLnpkZWJ1Z19wdWJuYW1lcykKICB9CiAgLmRlYnVnX3B1YnR5cGVzICAgOgogIHsKICAgICooLmRlYnVnX3B1YnR5cGVzKQogIH0KICAuemRlYnVnX3B1YnR5cGVzICAgOgogIHsKICAgICooLnpkZWJ1Z19wdWJ0eXBlcykKICB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICA6CiAgewogICAgKiguZGVidWdfaW5mbykKICB9CiAgLnpkZWJ1Z19pbmZvICAgOgogIHsKICAgICooLnpkZWJ1Z19pbmZvKQogIH0KICAuZGVidWdfYWJicmV2ICAgOgogIHsKICAgICooLmRlYnVnX2FiYnJldikKICB9CiAgLnpkZWJ1Z19hYmJyZXYgICA6CiAgewogICAgKiguemRlYnVnX2FiYnJldikKICB9CiAgLmRlYnVnX2xpbmUgICA6CiAgewogICAgKiguZGVidWdfbGluZSkKICB9CiAgLnpkZWJ1Z19saW5lICAgOgogIHsKICAgICooLnpkZWJ1Z19saW5lKQogIH0KICAuZGVidWdfZnJhbWUgICA6CiAgewogICAgKiguZGVidWdfZnJhbWUpCiAgfQogIC56ZGVidWdfZnJhbWUgICA6CiAgewogICAgKiguemRlYnVnX2ZyYW1lKQogIH0KICAuZGVidWdfc3RyICAgOgogIHsKICAgICooLmRlYnVnX3N0cikKICB9CiAgLnpkZWJ1Z19zdHIgICA6CiAgewogICAgKiguemRlYnVnX3N0cikKICB9CiAgLmRlYnVnX2xvYyAgIDoKICB7CiAgICAqKC5kZWJ1Z19sb2MpCiAgfQogIC56ZGVidWdfbG9jICAgOgogIHsKICAgICooLnpkZWJ1Z19sb2MpCiAgfQogIC5kZWJ1Z19tYWNpbmZvICAgOgogIHsKICAgICooLmRlYnVnX21hY2luZm8pCiAgfQogIC56ZGVidWdfbWFjaW5mbyAgIDoKICB7CiAgICAqKC56ZGVidWdfbWFjaW5mbykKICB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzICAgOgogIHsKICAgICooLmRlYnVnX3dlYWtuYW1lcykKICB9CiAgLnpkZWJ1Z193ZWFrbmFtZXMgICA6CiAgewogICAgKiguemRlYnVnX3dlYWtuYW1lcykKICB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19mdW5jbmFtZXMpCiAgfQogIC56ZGVidWdfZnVuY25hbWVzICAgOgogIHsKICAgICooLnpkZWJ1Z19mdW5jbmFtZXMpCiAgfQogIC5kZWJ1Z190eXBlbmFtZXMgICA6CiAgewogICAgKiguZGVidWdfdHlwZW5hbWVzKQogIH0KICAuemRlYnVnX3R5cGVuYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfdHlwZW5hbWVzKQogIH0KICAuZGVidWdfdmFybmFtZXMgICA6CiAgewogICAgKiguZGVidWdfdmFybmFtZXMpCiAgfQogIC56ZGVidWdfdmFybmFtZXMgICA6CiAgewogICAgKiguemRlYnVnX3Zhcm5hbWVzKQogIH0KICAuZGVidWdfbWFjcm8gICA6CiAgewogICAgKiguZGVidWdfbWFjcm8pCiAgfQogIC56ZGVidWdfbWFjcm8gICA6CiAgewogICAgKiguemRlYnVnX21hY3JvKQogIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcmFuZ2VzICAgOgogIHsKICAgICooLmRlYnVnX3JhbmdlcykKICB9CiAgLnpkZWJ1Z19yYW5nZXMgICA6CiAgewogICAgKiguemRlYnVnX3JhbmdlcykKICB9CiAgLyogRFdBUkYgNC4gICovCiAgLmRlYnVnX3R5cGVzICAgOgogIHsKICAgICooLmRlYnVnX3R5cGVzKQogIH0KICAuemRlYnVnX3R5cGVzICAgOgogIHsKICAgICooLnpkZWJ1Z190eXBlcykKICB9CiAgLyogRm9yIEdvIGFuZCBSdXN0LiAgKi8KICAuZGVidWdfZ2RiX3NjcmlwdHMgICA6CiAgewogICAgKiguZGVidWdfZ2RiX3NjcmlwdHMpCiAgfQogIC56ZGVidWdfZ2RiX3NjcmlwdHMgICA6CiAgewogICAgKiguemRlYnVnX2dkYl9zY3JpcHRzKQogIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciBsZCAtcjogbGluayB3aXRob3V0IHJlbG9jYXRpb24gKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQocGUteDg2LTY0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcGVwL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAudGV4dCAgOgogIHsKICAgICooLnRleHQpCiAgICAvKiA/Pz8gV2h5IGlzIC5nY2NfZXhjIGhlcmU/ICAqLwogIH0KICAvKiBUaGUgQ3lnd2luMzIgbGlicmFyeSB1c2VzIGEgc2VjdGlvbiB0byBhdm9pZCBjb3B5aW5nIGNlcnRhaW4gZGF0YQogICAgIG9uIGZvcmsuICBUaGlzIHVzZWQgdG8gYmUgbmFtZWQgIi5kYXRhIi4gIFRoZSBsaW5rZXIgdXNlZAogICAgIHRvIGluY2x1ZGUgdGhpcyBiZXR3ZWVuIF9fZGF0YV9zdGFydF9fIGFuZCBfX2RhdGFfZW5kX18sIGJ1dCB0aGF0CiAgICAgYnJlYWtzIGJ1aWxkaW5nIHRoZSBjeWd3aW4zMiBkbGwuICBJbnN0ZWFkLCB3ZSBuYW1lIHRoZSBzZWN0aW9uCiAgICAgIi5kYXRhX2N5Z3dpbl9ub2NvcHkiIGFuZCBleHBsaWNpdGx5IGluY2x1ZGUgaXQgYWZ0ZXIgX19kYXRhX2VuZF9fLiAqLwogIC5kYXRhICA6CiAgewogICAgKiguZGF0YSkKICAgIEtFRVAoKiguamNyKSkKICB9CiAgLnJkYXRhICA6CiAgewogICAgKigucmRhdGEpCiAgfQogIC5laF9mcmFtZSAgOgogIHsKICAgIEtFRVAgKCooLmVoX2ZyYW1lKSkKICB9CiAgLnBkYXRhICA6CiAgewogICAgS0VFUCgqKC5wZGF0YSkpCiAgfQogIC54ZGF0YSAgOgogIHsKICAgIEtFRVAoKigueGRhdGEpKQogIH0KICAuYnNzICA6CiAgewogICAgKiguYnNzKQogICAgKihDT01NT04pCiAgfQogIC5lZGF0YSAgOgogIHsKICAgICooLmVkYXRhKQogIH0KICAvRElTQ0FSRC8gOgogIHsKICAgICooLmRlYnVnJFMpCiAgICAqKC5kZWJ1ZyRUKQogICAgKiguZGVidWckRikKICAgICooLmRyZWN0dmUpCiAgfQogIC5pZGF0YSAgOgogIHsKICAgIC8qIFRoaXMgY2Fubm90IGN1cnJlbnRseSBiZSBoYW5kbGVkIHdpdGggZ3JvdXBlZCBzZWN0aW9ucy4KCVNlZSBwZXAuZW06c29ydF9zZWN0aW9ucy4gICovCiAgfQogIC5DUlQgIDoKICB7CiAgICAvKiBfX19jcnRfeGxfZW5kX18gaXMgZGVmaW5lZCBpbiB0aGUgVExTIERpcmVjdG9yeSBzdXBwb3J0IGNvZGUgKi8KICB9CiAgLyogV2luZG93cyBUTFMgZXhwZWN0cyAudGxzJEFBQSB0byBiZSBhdCB0aGUgc3RhcnQgYW5kIC50bHMkWlpaIHRvIGJlCiAgICAgYXQgdGhlIGVuZCBvZiB0aGUgLnRscyBzZWN0aW9uLiAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBfdGxzX3N0YXJ0IE1VU1QKICAgICBiZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWN0aW9uIHRvIGVuYWJsZSBTRUNSRUwzMiByZWxvY2F0aW9ucyB3aXRoIFRMUwogICAgIGRhdGEuICAqLwogIC50bHMgIDoKICB7CiAgICAqKC50bHMpCiAgfQogIC5lbmRqdW5rICA6CiAgewogICAgLyogZW5kIGlzIGRlcHJlY2F0ZWQsIGRvbid0IHVzZSBpdCAqLwogIH0KICAucnNyYyAgOiBTVUJBTElHTig0KQogIHsKICAgICooLnJzcmMpCiAgfQogIC5yZWxvYyAgOgogIHsKICAgICooLnJlbG9jKQogIH0KICAuc3RhYiAgIDoKICB7CiAgICAqKC5zdGFiKQogIH0KICAuc3RhYnN0ciAgIDoKICB7CiAgICAqKC5zdGFic3RyKQogIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbi4gIFVubGlrZSBvdGhlciB0YXJnZXRzIHRoYXQgZmFrZSB0aGlzIGJ5IHB1dHRpbmcgdGhlCiAgICAgc2VjdGlvbiBWTUEgYXQgMCwgdGhlIFBFIGZvcm1hdCB3aWxsIG5vdCBhbGxvdyBpdC4gICovCiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19hcmFuZ2VzKQogIH0KICAuemRlYnVnX2FyYW5nZXMgICA6CiAgewogICAgKiguemRlYnVnX2FyYW5nZXMpCiAgfQogIC5kZWJ1Z19wdWJuYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJuYW1lcykKICB9CiAgLnpkZWJ1Z19wdWJuYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfcHVibmFtZXMpCiAgfQogIC5kZWJ1Z19wdWJ0eXBlcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJ0eXBlcykKICB9CiAgLnpkZWJ1Z19wdWJ0eXBlcyAgIDoKICB7CiAgICAqKC56ZGVidWdfcHVidHlwZXMpCiAgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgOgogIHsKICAgICooLmRlYnVnX2luZm8pCiAgfQogIC56ZGVidWdfaW5mbyAgIDoKICB7CiAgICAqKC56ZGVidWdfaW5mbykKICB9CiAgLmRlYnVnX2FiYnJldiAgIDoKICB7CiAgICAqKC5kZWJ1Z19hYmJyZXYpCiAgfQogIC56ZGVidWdfYWJicmV2ICAgOgogIHsKICAgICooLnpkZWJ1Z19hYmJyZXYpCiAgfQogIC5kZWJ1Z19saW5lICAgOgogIHsKICAgICooLmRlYnVnX2xpbmUpCiAgfQogIC56ZGVidWdfbGluZSAgIDoKICB7CiAgICAqKC56ZGVidWdfbGluZSkKICB9CiAgLmRlYnVnX2ZyYW1lICAgOgogIHsKICAgICooLmRlYnVnX2ZyYW1lKQogIH0KICAuemRlYnVnX2ZyYW1lICAgOgogIHsKICAgICooLnpkZWJ1Z19mcmFtZSkKICB9CiAgLmRlYnVnX3N0ciAgIDoKICB7CiAgICAqKC5kZWJ1Z19zdHIpCiAgfQogIC56ZGVidWdfc3RyICAgOgogIHsKICAgICooLnpkZWJ1Z19zdHIpCiAgfQogIC5kZWJ1Z19sb2MgICA6CiAgewogICAgKiguZGVidWdfbG9jKQogIH0KICAuemRlYnVnX2xvYyAgIDoKICB7CiAgICAqKC56ZGVidWdfbG9jKQogIH0KICAuZGVidWdfbWFjaW5mbyAgIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNpbmZvKQogIH0KICAuemRlYnVnX21hY2luZm8gICA6CiAgewogICAgKiguemRlYnVnX21hY2luZm8pCiAgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC56ZGVidWdfd2Vha25hbWVzICAgOgogIHsKICAgICooLnpkZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC5kZWJ1Z19mdW5jbmFtZXMgICA6CiAgewogICAgKiguZGVidWdfZnVuY25hbWVzKQogIH0KICAuemRlYnVnX2Z1bmNuYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfZnVuY25hbWVzKQogIH0KICAuZGVidWdfdHlwZW5hbWVzICAgOgogIHsKICAgICooLmRlYnVnX3R5cGVuYW1lcykKICB9CiAgLnpkZWJ1Z190eXBlbmFtZXMgICA6CiAgewogICAgKiguemRlYnVnX3R5cGVuYW1lcykKICB9CiAgLmRlYnVnX3Zhcm5hbWVzICAgOgogIHsKICAgICooLmRlYnVnX3Zhcm5hbWVzKQogIH0KICAuemRlYnVnX3Zhcm5hbWVzICAgOgogIHsKICAgICooLnpkZWJ1Z192YXJuYW1lcykKICB9CiAgLmRlYnVnX21hY3JvICAgOgogIHsKICAgICooLmRlYnVnX21hY3JvKQogIH0KICAuemRlYnVnX21hY3JvICAgOgogIHsKICAgICooLnpkZWJ1Z19tYWNybykKICB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3JhbmdlcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19yYW5nZXMpCiAgfQogIC56ZGVidWdfcmFuZ2VzICAgOgogIHsKICAgICooLnpkZWJ1Z19yYW5nZXMpCiAgfQogIC8qIERXQVJGIDQuICAqLwogIC5kZWJ1Z190eXBlcyAgIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlcykKICB9CiAgLnpkZWJ1Z190eXBlcyAgIDoKICB7CiAgICAqKC56ZGVidWdfdHlwZXMpCiAgfQogIC8qIEZvciBHbyBhbmQgUnVzdC4gICovCiAgLmRlYnVnX2dkYl9zY3JpcHRzICAgOgogIHsKICAgICooLmRlYnVnX2dkYl9zY3JpcHRzKQogIH0KICAuemRlYnVnX2dkYl9zY3JpcHRzICAgOgogIHsKICAgICooLnpkZWJ1Z19nZGJfc2NyaXB0cykKICB9Cn0KCgAvKiBTY3JpcHQgZm9yIC1OOiBtaXggdGV4dCBhbmQgZGF0YSBvbiBzYW1lIHBhZ2U7IGRvbid0IGFsaWduIGRhdGEgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQocGVpLXg4Ni02NCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXBlcC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogTWFrZSB0aGUgdmlydHVhbCBhZGRyZXNzIGFuZCBmaWxlIG9mZnNldCBzeW5jZWQgaWYgdGhlIGFsaWdubWVudCBpcwogICAgIGxvd2VyIHRoYW4gdGhlIHRhcmdldCBwYWdlIHNpemUuICovCiAgLiA9IFNJWkVPRl9IRUFERVJTOwogIC4gPSBBTElHTihfX3NlY3Rpb25fYWxpZ25tZW50X18pOwogIC50ZXh0ICBfX2ltYWdlX2Jhc2VfXyArICggX19zZWN0aW9uX2FsaWdubWVudF9fIDwgMHgxMDAwID8gLiA6IF9fc2VjdGlvbl9hbGlnbm1lbnRfXyApIDoKICB7CiAgICAgS0VFUCgqKC5pbml0KSkKICAgICooLnRleHQpCiAgICAqKFNPUlQoLnRleHQkKikpCiAgICAgKigudGV4dC4qKQogICAgICooLmdudS5saW5rb25jZS50LiopCiAgICAqKC5nbHVlXzd0KQogICAgKiguZ2x1ZV83KQogICAgLiA9IEFMSUdOKDgpOwogICAgICAgUFJPVklERShfX19DVE9SX0xJU1RfXyA9IC4pOwogICAgICAgUFJPVklERShfX0NUT1JfTElTVF9fID0gLik7CiAgICAgICBMT05HICgtMSk7IExPTkcgKC0xKTsKICAgICAgIEtFRVAgKCooLmN0b3JzKSk7CiAgICAgICBLRUVQICgqKC5jdG9yKSk7CiAgICAgICBLRUVQICgqKFNPUlRfQllfTkFNRSguY3RvcnMuKikpKTsKICAgICAgIExPTkcgKDApOyBMT05HICgwKTsKICAgICAgIFBST1ZJREUoX19fRFRPUl9MSVNUX18gPSAuKTsKICAgICAgIFBST1ZJREUoX19EVE9SX0xJU1RfXyA9IC4pOwogICAgICAgTE9ORyAoLTEpOyBMT05HICgtMSk7CiAgICAgICBLRUVQICgqKC5kdG9ycykpOwogICAgICAgS0VFUCAoKiguZHRvcikpOwogICAgICAgS0VFUCAoKihTT1JUX0JZX05BTUUoLmR0b3JzLiopKSk7CiAgICAgICBMT05HICgwKTsgTE9ORyAoMCk7CiAgICAgS0VFUCAoKiguZmluaSkpCiAgICAvKiA/Pz8gV2h5IGlzIC5nY2NfZXhjIGhlcmU/ICAqLwogICAgICooLmdjY19leGMpCiAgICBQUk9WSURFIChldGV4dCA9IC4pOwogICAgIEtFRVAgKCooLmdjY19leGNlcHRfdGFibGUpKQogIH0KICAvKiBUaGUgQ3lnd2luMzIgbGlicmFyeSB1c2VzIGEgc2VjdGlvbiB0byBhdm9pZCBjb3B5aW5nIGNlcnRhaW4gZGF0YQogICAgIG9uIGZvcmsuICBUaGlzIHVzZWQgdG8gYmUgbmFtZWQgIi5kYXRhIi4gIFRoZSBsaW5rZXIgdXNlZAogICAgIHRvIGluY2x1ZGUgdGhpcyBiZXR3ZWVuIF9fZGF0YV9zdGFydF9fIGFuZCBfX2RhdGFfZW5kX18sIGJ1dCB0aGF0CiAgICAgYnJlYWtzIGJ1aWxkaW5nIHRoZSBjeWd3aW4zMiBkbGwuICBJbnN0ZWFkLCB3ZSBuYW1lIHRoZSBzZWN0aW9uCiAgICAgIi5kYXRhX2N5Z3dpbl9ub2NvcHkiIGFuZCBleHBsaWNpdGx5IGluY2x1ZGUgaXQgYWZ0ZXIgX19kYXRhX2VuZF9fLiAqLwogIC5kYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fZGF0YV9zdGFydF9fID0gLiA7CiAgICAqKC5kYXRhKQogICAgKiguZGF0YTIpCiAgICAqKFNPUlQoLmRhdGEkKikpCiAgICBLRUVQKCooLmpjcikpCiAgICBfX2RhdGFfZW5kX18gPSAuIDsKICAgICooLmRhdGFfY3lnd2luX25vY29weSkKICB9CiAgLnJkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLnJkYXRhKQoJICAgICAqKFNPUlQoLnJkYXRhJCopKQogICAgX19ydF9wc3JlbG9jc19zdGFydCA9IC47CiAgICBLRUVQKCooLnJkYXRhX3J1bnRpbWVfcHNldWRvX3JlbG9jKSkKICAgIF9fcnRfcHNyZWxvY3NfZW5kID0gLjsKICB9CiAgX19ydF9wc3JlbG9jc19zaXplID0gX19ydF9wc3JlbG9jc19lbmQgLSBfX3J0X3BzcmVsb2NzX3N0YXJ0OwogIF9fX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfRU5EX18gPSAuOwogIF9fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9FTkRfXyA9IC47CiAgX19fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9fID0gLiAtIF9fcnRfcHNyZWxvY3Nfc2l6ZTsKICBfX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfXyA9IC4gLSBfX3J0X3BzcmVsb2NzX3NpemU7CiAgLmVoX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAgKCooLmVoX2ZyYW1lKikpCiAgfQogIC5wZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBLRUVQKCooLnBkYXRhKikpCiAgfQogIC54ZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBLRUVQKCooLnhkYXRhKikpCiAgfQogIC5ic3MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19ic3Nfc3RhcnRfXyA9IC4gOwogICAgKiguYnNzKQogICAgKihDT01NT04pCiAgICBfX2Jzc19lbmRfXyA9IC4gOwogIH0KICAuZWRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKiguZWRhdGEpCiAgfQogIC9ESVNDQVJELyA6CiAgewogICAgKiguZGVidWckUykKICAgICooLmRlYnVnJFQpCiAgICAqKC5kZWJ1ZyRGKQogICAgKiguZHJlY3R2ZSkKICAgICAqKC5ub3RlLkdOVS1zdGFjaykKICAgICAqKC5nbnUubHRvXyopCiAgICAgKiguZ251X29iamVjdF9vbmx5KQogIH0KICAuaWRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgLyogVGhpcyBjYW5ub3QgY3VycmVudGx5IGJlIGhhbmRsZWQgd2l0aCBncm91cGVkIHNlY3Rpb25zLgoJU2VlIHBlcC5lbTpzb3J0X3NlY3Rpb25zLiAgKi8KICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDIpKQogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkMykpCiAgICAvKiBUaGVzZSB6ZXJvZXMgbWFyayB0aGUgZW5kIG9mIHRoZSBpbXBvcnQgbGlzdC4gICovCiAgICBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7CiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ0KSkKICAgIF9fSUFUX3N0YXJ0X18gPSAuOwogICAgU09SVCgqKSguaWRhdGEkNSkKICAgIF9fSUFUX2VuZF9fID0gLjsKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDYpKQogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNykpCiAgfQogIC5DUlQgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19fY3J0X3hjX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhDKikpKSAgLyogQyBpbml0aWFsaXphdGlvbiAqLwogICAgX19fY3J0X3hjX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeGlfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEkqKSkpICAvKiBDKysgaW5pdGlhbGl6YXRpb24gKi8KICAgIF9fX2NydF94aV9lbmRfXyA9IC4gOwogICAgX19fY3J0X3hsX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhMKikpKSAgLyogVExTIGNhbGxiYWNrcyAqLwogICAgLyogX19fY3J0X3hsX2VuZF9fIGlzIGRlZmluZWQgaW4gdGhlIFRMUyBEaXJlY3Rvcnkgc3VwcG9ydCBjb2RlICovCiAgICBfX19jcnRfeHBfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWFAqKSkpICAvKiBQcmUtdGVybWluYXRpb24gKi8KICAgIF9fX2NydF94cF9lbmRfXyA9IC4gOwogICAgX19fY3J0X3h0X3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhUKikpKSAgLyogVGVybWluYXRpb24gKi8KICAgIF9fX2NydF94dF9lbmRfXyA9IC4gOwogIH0KICAvKiBXaW5kb3dzIFRMUyBleHBlY3RzIC50bHMkQUFBIHRvIGJlIGF0IHRoZSBzdGFydCBhbmQgLnRscyRaWlogdG8gYmUKICAgICBhdCB0aGUgZW5kIG9mIHRoZSAudGxzIHNlY3Rpb24uICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIF90bHNfc3RhcnQgTVVTVAogICAgIGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY3Rpb24gdG8gZW5hYmxlIFNFQ1JFTDMyIHJlbG9jYXRpb25zIHdpdGggVExTCiAgICAgZGF0YS4gICovCiAgLnRscyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX190bHNfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKigudGxzJEFBQSkpCiAgICBLRUVQICgqKC50bHMpKQogICAgS0VFUCAoKigudGxzJCkpCiAgICBLRUVQICgqKFNPUlQoLnRscyQqKSkpCiAgICBLRUVQICgqKC50bHMkWlpaKSkKICAgIF9fX3Rsc19lbmRfXyA9IC4gOwogIH0KICAuZW5kanVuayBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAvKiBlbmQgaXMgZGVwcmVjYXRlZCwgZG9uJ3QgdXNlIGl0ICovCiAgICBQUk9WSURFIChlbmQgPSAuKTsKICAgIFBST1ZJREUgKCBfZW5kID0gLik7CiAgICAgX19lbmRfXyA9IC47CiAgfQogIC5yc3JjIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOiBTVUJBTElHTig0KQogIHsKICAgIEtFRVAgKCooLnJzcmMpKQogICAgS0VFUCAoKigucnNyYyQqKSkKICB9CiAgLnJlbG9jIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLnJlbG9jKQogIH0KICAuc3RhYiBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5zdGFiKQogIH0KICAuc3RhYnN0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5zdGFic3RyKQogIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbi4gIFVubGlrZSBvdGhlciB0YXJnZXRzIHRoYXQgZmFrZSB0aGlzIGJ5IHB1dHRpbmcgdGhlCiAgICAgc2VjdGlvbiBWTUEgYXQgMCwgdGhlIFBFIGZvcm1hdCB3aWxsIG5vdCBhbGxvdyBpdC4gICovCiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19hcmFuZ2VzKQogIH0KICAuemRlYnVnX2FyYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2FyYW5nZXMpCiAgfQogIC5kZWJ1Z19wdWJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJuYW1lcykKICB9CiAgLnpkZWJ1Z19wdWJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfcHVibmFtZXMpCiAgfQogIC5kZWJ1Z19wdWJ0eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJ0eXBlcykKICB9CiAgLnpkZWJ1Z19wdWJ0eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfcHVidHlwZXMpCiAgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKQogIH0KICAuemRlYnVnX2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2luZm8gLnpkZWJ1Zy5nbnUubGlua29uY2Uud2kuKikKICB9CiAgLmRlYnVnX2FiYnJldiBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19hYmJyZXYpCiAgfQogIC56ZGVidWdfYWJicmV2IEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19hYmJyZXYpCiAgfQogIC5kZWJ1Z19saW5lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2xpbmUpCiAgfQogIC56ZGVidWdfbGluZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbGluZSkKICB9CiAgLmRlYnVnX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2ZyYW1lKQogIH0KICAuemRlYnVnX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19mcmFtZSkKICB9CiAgLmRlYnVnX3N0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19zdHIpCiAgfQogIC56ZGVidWdfc3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19zdHIpCiAgfQogIC5kZWJ1Z19sb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbG9jKQogIH0KICAuemRlYnVnX2xvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbG9jKQogIH0KICAuZGVidWdfbWFjaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNpbmZvKQogIH0KICAuemRlYnVnX21hY2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX21hY2luZm8pCiAgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC56ZGVidWdfd2Vha25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC5kZWJ1Z19mdW5jbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZnVuY25hbWVzKQogIH0KICAuemRlYnVnX2Z1bmNuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfZnVuY25hbWVzKQogIH0KICAuZGVidWdfdHlwZW5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3R5cGVuYW1lcykKICB9CiAgLnpkZWJ1Z190eXBlbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVuYW1lcykKICB9CiAgLmRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3Zhcm5hbWVzKQogIH0KICAuemRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z192YXJuYW1lcykKICB9CiAgLmRlYnVnX21hY3JvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX21hY3JvKQogIH0KICAuemRlYnVnX21hY3JvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19tYWNybykKICB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3JhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19yYW5nZXMpCiAgfQogIC56ZGVidWdfcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19yYW5nZXMpCiAgfQogIC8qIERXQVJGIDQuICAqLwogIC5kZWJ1Z190eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlcyAuZ251LmxpbmtvbmNlLnd0LiopCiAgfQogIC56ZGVidWdfdHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVzIC56ZGVidWcuZ251LmxpbmtvbmNlLnd0LiopCiAgfQogIC8qIEZvciBHbyBhbmQgUnVzdC4gICovCiAgLmRlYnVnX2dkYl9zY3JpcHRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2dkYl9zY3JpcHRzKQogIH0KICAuemRlYnVnX2dkYl9zY3JpcHRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19nZGJfc2NyaXB0cykKICB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLW46IG1peCB0ZXh0IGFuZCBkYXRhIG9uIHNhbWUgcGFnZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVChwZWkteDg2LTY0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcGVwL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBNYWtlIHRoZSB2aXJ0dWFsIGFkZHJlc3MgYW5kIGZpbGUgb2Zmc2V0IHN5bmNlZCBpZiB0aGUgYWxpZ25tZW50IGlzCiAgICAgbG93ZXIgdGhhbiB0aGUgdGFyZ2V0IHBhZ2Ugc2l6ZS4gKi8KICAuID0gU0laRU9GX0hFQURFUlM7CiAgLiA9IEFMSUdOKF9fc2VjdGlvbl9hbGlnbm1lbnRfXyk7CiAgLnRleHQgIF9faW1hZ2VfYmFzZV9fICsgKCBfX3NlY3Rpb25fYWxpZ25tZW50X18gPCAweDEwMDAgPyAuIDogX19zZWN0aW9uX2FsaWdubWVudF9fICkgOgogIHsKICAgICBLRUVQKCooLmluaXQpKQogICAgKigudGV4dCkKICAgICooU09SVCgudGV4dCQqKSkKICAgICAqKC50ZXh0LiopCiAgICAgKiguZ251LmxpbmtvbmNlLnQuKikKICAgICooLmdsdWVfN3QpCiAgICAqKC5nbHVlXzcpCiAgICAuID0gQUxJR04oOCk7CiAgICAgICBQUk9WSURFKF9fX0NUT1JfTElTVF9fID0gLik7CiAgICAgICBQUk9WSURFKF9fQ1RPUl9MSVNUX18gPSAuKTsKICAgICAgIExPTkcgKC0xKTsgTE9ORyAoLTEpOwogICAgICAgS0VFUCAoKiguY3RvcnMpKTsKICAgICAgIEtFRVAgKCooLmN0b3IpKTsKICAgICAgIEtFRVAgKCooU09SVF9CWV9OQU1FKC5jdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7IExPTkcgKDApOwogICAgICAgUFJPVklERShfX19EVE9SX0xJU1RfXyA9IC4pOwogICAgICAgUFJPVklERShfX0RUT1JfTElTVF9fID0gLik7CiAgICAgICBMT05HICgtMSk7IExPTkcgKC0xKTsKICAgICAgIEtFRVAgKCooLmR0b3JzKSk7CiAgICAgICBLRUVQICgqKC5kdG9yKSk7CiAgICAgICBLRUVQICgqKFNPUlRfQllfTkFNRSguZHRvcnMuKikpKTsKICAgICAgIExPTkcgKDApOyBMT05HICgwKTsKICAgICBLRUVQICgqKC5maW5pKSkKICAgIC8qID8/PyBXaHkgaXMgLmdjY19leGMgaGVyZT8gICovCiAgICAgKiguZ2NjX2V4YykKICAgIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgICAgS0VFUCAoKiguZ2NjX2V4Y2VwdF90YWJsZSkpCiAgfQogIC8qIFRoZSBDeWd3aW4zMiBsaWJyYXJ5IHVzZXMgYSBzZWN0aW9uIHRvIGF2b2lkIGNvcHlpbmcgY2VydGFpbiBkYXRhCiAgICAgb24gZm9yay4gIFRoaXMgdXNlZCB0byBiZSBuYW1lZCAiLmRhdGEiLiAgVGhlIGxpbmtlciB1c2VkCiAgICAgdG8gaW5jbHVkZSB0aGlzIGJldHdlZW4gX19kYXRhX3N0YXJ0X18gYW5kIF9fZGF0YV9lbmRfXywgYnV0IHRoYXQKICAgICBicmVha3MgYnVpbGRpbmcgdGhlIGN5Z3dpbjMyIGRsbC4gIEluc3RlYWQsIHdlIG5hbWUgdGhlIHNlY3Rpb24KICAgICAiLmRhdGFfY3lnd2luX25vY29weSIgYW5kIGV4cGxpY2l0bHkgaW5jbHVkZSBpdCBhZnRlciBfX2RhdGFfZW5kX18uICovCiAgLmRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19kYXRhX3N0YXJ0X18gPSAuIDsKICAgICooLmRhdGEpCiAgICAqKC5kYXRhMikKICAgICooU09SVCguZGF0YSQqKSkKICAgIEtFRVAoKiguamNyKSkKICAgIF9fZGF0YV9lbmRfXyA9IC4gOwogICAgKiguZGF0YV9jeWd3aW5fbm9jb3B5KQogIH0KICAucmRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKigucmRhdGEpCgkgICAgICooU09SVCgucmRhdGEkKikpCiAgICBfX3J0X3BzcmVsb2NzX3N0YXJ0ID0gLjsKICAgIEtFRVAoKigucmRhdGFfcnVudGltZV9wc2V1ZG9fcmVsb2MpKQogICAgX19ydF9wc3JlbG9jc19lbmQgPSAuOwogIH0KICBfX3J0X3BzcmVsb2NzX3NpemUgPSBfX3J0X3BzcmVsb2NzX2VuZCAtIF9fcnRfcHNyZWxvY3Nfc3RhcnQ7CiAgX19fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9FTkRfXyA9IC47CiAgX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX0VORF9fID0gLjsKICBfX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX18gPSAuIC0gX19ydF9wc3JlbG9jc19zaXplOwogIF9fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9fID0gLiAtIF9fcnRfcHNyZWxvY3Nfc2l6ZTsKICAuZWhfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgS0VFUCAoKiguZWhfZnJhbWUqKSkKICB9CiAgLnBkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAoKigucGRhdGEqKSkKICB9CiAgLnhkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAoKigueGRhdGEqKSkKICB9CiAgLmJzcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX2Jzc19zdGFydF9fID0gLiA7CiAgICAqKC5ic3MpCiAgICAqKENPTU1PTikKICAgIF9fYnNzX2VuZF9fID0gLiA7CiAgfQogIC5lZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAqKC5lZGF0YSkKICB9CiAgL0RJU0NBUkQvIDoKICB7CiAgICAqKC5kZWJ1ZyRTKQogICAgKiguZGVidWckVCkKICAgICooLmRlYnVnJEYpCiAgICAqKC5kcmVjdHZlKQogICAgICooLm5vdGUuR05VLXN0YWNrKQogICAgICooLmdudS5sdG9fKikKICAgICAqKC5nbnVfb2JqZWN0X29ubHkpCiAgfQogIC5pZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAvKiBUaGlzIGNhbm5vdCBjdXJyZW50bHkgYmUgaGFuZGxlZCB3aXRoIGdyb3VwZWQgc2VjdGlvbnMuCglTZWUgcGVwLmVtOnNvcnRfc2VjdGlvbnMuICAqLwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkMikpCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQzKSkKICAgIC8qIFRoZXNlIHplcm9lcyBtYXJrIHRoZSBlbmQgb2YgdGhlIGltcG9ydCBsaXN0LiAgKi8KICAgIExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDQpKQogICAgX19JQVRfc3RhcnRfXyA9IC47CiAgICBTT1JUKCopKC5pZGF0YSQ1KQogICAgX19JQVRfZW5kX18gPSAuOwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNikpCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ3KSkKICB9CiAgLkNSVCBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX19jcnRfeGNfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEMqKSkpICAvKiBDIGluaXRpYWxpemF0aW9uICovCiAgICBfX19jcnRfeGNfZW5kX18gPSAuIDsKICAgIF9fX2NydF94aV9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYSSopKSkgIC8qIEMrKyBpbml0aWFsaXphdGlvbiAqLwogICAgX19fY3J0X3hpX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeGxfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEwqKSkpICAvKiBUTFMgY2FsbGJhY2tzICovCiAgICAvKiBfX19jcnRfeGxfZW5kX18gaXMgZGVmaW5lZCBpbiB0aGUgVExTIERpcmVjdG9yeSBzdXBwb3J0IGNvZGUgKi8KICAgIF9fX2NydF94cF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYUCopKSkgIC8qIFByZS10ZXJtaW5hdGlvbiAqLwogICAgX19fY3J0X3hwX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeHRfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWFQqKSkpICAvKiBUZXJtaW5hdGlvbiAqLwogICAgX19fY3J0X3h0X2VuZF9fID0gLiA7CiAgfQogIC8qIFdpbmRvd3MgVExTIGV4cGVjdHMgLnRscyRBQUEgdG8gYmUgYXQgdGhlIHN0YXJ0IGFuZCAudGxzJFpaWiB0byBiZQogICAgIGF0IHRoZSBlbmQgb2YgdGhlIC50bHMgc2VjdGlvbi4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgX3Rsc19zdGFydCBNVVNUCiAgICAgYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VjdGlvbiB0byBlbmFibGUgU0VDUkVMMzIgcmVsb2NhdGlvbnMgd2l0aCBUTFMKICAgICBkYXRhLiAgKi8KICAudGxzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fX3Rsc19zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKC50bHMkQUFBKSkKICAgIEtFRVAgKCooLnRscykpCiAgICBLRUVQICgqKC50bHMkKSkKICAgIEtFRVAgKCooU09SVCgudGxzJCopKSkKICAgIEtFRVAgKCooLnRscyRaWlopKQogICAgX19fdGxzX2VuZF9fID0gLiA7CiAgfQogIC5lbmRqdW5rIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIC8qIGVuZCBpcyBkZXByZWNhdGVkLCBkb24ndCB1c2UgaXQgKi8KICAgIFBST1ZJREUgKGVuZCA9IC4pOwogICAgUFJPVklERSAoIF9lbmQgPSAuKTsKICAgICBfX2VuZF9fID0gLjsKICB9CiAgLnJzcmMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6IFNVQkFMSUdOKDQpCiAgewogICAgS0VFUCAoKigucnNyYykpCiAgICBLRUVQICgqKC5yc3JjJCopKQogIH0KICAucmVsb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKigucmVsb2MpCiAgfQogIC5zdGFiIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnN0YWIpCiAgfQogIC5zdGFic3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnN0YWJzdHIpCiAgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uLiAgVW5saWtlIG90aGVyIHRhcmdldHMgdGhhdCBmYWtlIHRoaXMgYnkgcHV0dGluZyB0aGUKICAgICBzZWN0aW9uIFZNQSBhdCAwLCB0aGUgUEUgZm9ybWF0IHdpbGwgbm90IGFsbG93IGl0LiAgKi8KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2FyYW5nZXMpCiAgfQogIC56ZGVidWdfYXJhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfYXJhbmdlcykKICB9CiAgLmRlYnVnX3B1Ym5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3B1Ym5hbWVzKQogIH0KICAuemRlYnVnX3B1Ym5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19wdWJuYW1lcykKICB9CiAgLmRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3B1YnR5cGVzKQogIH0KICAuemRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19wdWJ0eXBlcykKICB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopCiAgfQogIC56ZGVidWdfaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfaW5mbyAuemRlYnVnLmdudS5saW5rb25jZS53aS4qKQogIH0KICAuZGVidWdfYWJicmV2IEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2FiYnJldikKICB9CiAgLnpkZWJ1Z19hYmJyZXYgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2FiYnJldikKICB9CiAgLmRlYnVnX2xpbmUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbGluZSkKICB9CiAgLnpkZWJ1Z19saW5lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19saW5lKQogIH0KICAuZGVidWdfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZnJhbWUpCiAgfQogIC56ZGVidWdfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2ZyYW1lKQogIH0KICAuZGVidWdfc3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3N0cikKICB9CiAgLnpkZWJ1Z19zdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3N0cikKICB9CiAgLmRlYnVnX2xvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19sb2MpCiAgfQogIC56ZGVidWdfbG9jIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19sb2MpCiAgfQogIC5kZWJ1Z19tYWNpbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX21hY2luZm8pCiAgfQogIC56ZGVidWdfbWFjaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbWFjaW5mbykKICB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3dlYWtuYW1lcykKICB9CiAgLnpkZWJ1Z193ZWFrbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3dlYWtuYW1lcykKICB9CiAgLmRlYnVnX2Z1bmNuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19mdW5jbmFtZXMpCiAgfQogIC56ZGVidWdfZnVuY25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19mdW5jbmFtZXMpCiAgfQogIC5kZWJ1Z190eXBlbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfdHlwZW5hbWVzKQogIH0KICAuemRlYnVnX3R5cGVuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfdHlwZW5hbWVzKQogIH0KICAuZGVidWdfdmFybmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfdmFybmFtZXMpCiAgfQogIC56ZGVidWdfdmFybmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3Zhcm5hbWVzKQogIH0KICAuZGVidWdfbWFjcm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbWFjcm8pCiAgfQogIC56ZGVidWdfbWFjcm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX21hY3JvKQogIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3JhbmdlcykKICB9CiAgLnpkZWJ1Z19yYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3JhbmdlcykKICB9CiAgLyogRFdBUkYgNC4gICovCiAgLmRlYnVnX3R5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3R5cGVzIC5nbnUubGlua29uY2Uud3QuKikKICB9CiAgLnpkZWJ1Z190eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfdHlwZXMgLnpkZWJ1Zy5nbnUubGlua29uY2Uud3QuKikKICB9CiAgLyogRm9yIEdvIGFuZCBSdXN0LiAgKi8KICAuZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZ2RiX3NjcmlwdHMpCiAgfQogIC56ZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2dkYl9zY3JpcHRzKQogIH0KfQoKAAAAAAAvKiBEZWZhdWx0IGxpbmtlciBzY3JpcHQsIGZvciBub3JtYWwgZXhlY3V0YWJsZXMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQocGVpLXg4Ni02NCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXBlcC9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogTWFrZSB0aGUgdmlydHVhbCBhZGRyZXNzIGFuZCBmaWxlIG9mZnNldCBzeW5jZWQgaWYgdGhlIGFsaWdubWVudCBpcwogICAgIGxvd2VyIHRoYW4gdGhlIHRhcmdldCBwYWdlIHNpemUuICovCiAgLiA9IFNJWkVPRl9IRUFERVJTOwogIC4gPSBBTElHTihfX3NlY3Rpb25fYWxpZ25tZW50X18pOwogIC50ZXh0ICBfX2ltYWdlX2Jhc2VfXyArICggX19zZWN0aW9uX2FsaWdubWVudF9fIDwgMHgxMDAwID8gLiA6IF9fc2VjdGlvbl9hbGlnbm1lbnRfXyApIDoKICB7CiAgICAgS0VFUCgqKC5pbml0KSkKICAgICooLnRleHQpCiAgICAqKFNPUlQoLnRleHQkKikpCiAgICAgKigudGV4dC4qKQogICAgICooLmdudS5saW5rb25jZS50LiopCiAgICAqKC5nbHVlXzd0KQogICAgKiguZ2x1ZV83KQogICAgLiA9IEFMSUdOKDgpOwogICAgICAgUFJPVklERShfX19DVE9SX0xJU1RfXyA9IC4pOwogICAgICAgUFJPVklERShfX0NUT1JfTElTVF9fID0gLik7CiAgICAgICBMT05HICgtMSk7IExPTkcgKC0xKTsKICAgICAgIEtFRVAgKCooLmN0b3JzKSk7CiAgICAgICBLRUVQICgqKC5jdG9yKSk7CiAgICAgICBLRUVQICgqKFNPUlRfQllfTkFNRSguY3RvcnMuKikpKTsKICAgICAgIExPTkcgKDApOyBMT05HICgwKTsKICAgICAgIFBST1ZJREUoX19fRFRPUl9MSVNUX18gPSAuKTsKICAgICAgIFBST1ZJREUoX19EVE9SX0xJU1RfXyA9IC4pOwogICAgICAgTE9ORyAoLTEpOyBMT05HICgtMSk7CiAgICAgICBLRUVQICgqKC5kdG9ycykpOwogICAgICAgS0VFUCAoKiguZHRvcikpOwogICAgICAgS0VFUCAoKihTT1JUX0JZX05BTUUoLmR0b3JzLiopKSk7CiAgICAgICBMT05HICgwKTsgTE9ORyAoMCk7CiAgICAgS0VFUCAoKiguZmluaSkpCiAgICAvKiA/Pz8gV2h5IGlzIC5nY2NfZXhjIGhlcmU/ICAqLwogICAgICooLmdjY19leGMpCiAgICBQUk9WSURFIChldGV4dCA9IC4pOwogICAgIEtFRVAgKCooLmdjY19leGNlcHRfdGFibGUpKQogIH0KICAvKiBUaGUgQ3lnd2luMzIgbGlicmFyeSB1c2VzIGEgc2VjdGlvbiB0byBhdm9pZCBjb3B5aW5nIGNlcnRhaW4gZGF0YQogICAgIG9uIGZvcmsuICBUaGlzIHVzZWQgdG8gYmUgbmFtZWQgIi5kYXRhIi4gIFRoZSBsaW5rZXIgdXNlZAogICAgIHRvIGluY2x1ZGUgdGhpcyBiZXR3ZWVuIF9fZGF0YV9zdGFydF9fIGFuZCBfX2RhdGFfZW5kX18sIGJ1dCB0aGF0CiAgICAgYnJlYWtzIGJ1aWxkaW5nIHRoZSBjeWd3aW4zMiBkbGwuICBJbnN0ZWFkLCB3ZSBuYW1lIHRoZSBzZWN0aW9uCiAgICAgIi5kYXRhX2N5Z3dpbl9ub2NvcHkiIGFuZCBleHBsaWNpdGx5IGluY2x1ZGUgaXQgYWZ0ZXIgX19kYXRhX2VuZF9fLiAqLwogIC5kYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fZGF0YV9zdGFydF9fID0gLiA7CiAgICAqKC5kYXRhKQogICAgKiguZGF0YTIpCiAgICAqKFNPUlQoLmRhdGEkKikpCiAgICBLRUVQKCooLmpjcikpCiAgICBfX2RhdGFfZW5kX18gPSAuIDsKICAgICooLmRhdGFfY3lnd2luX25vY29weSkKICB9CiAgLnJkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLnJkYXRhKQoJICAgICAqKFNPUlQoLnJkYXRhJCopKQogICAgX19ydF9wc3JlbG9jc19zdGFydCA9IC47CiAgICBLRUVQKCooLnJkYXRhX3J1bnRpbWVfcHNldWRvX3JlbG9jKSkKICAgIF9fcnRfcHNyZWxvY3NfZW5kID0gLjsKICB9CiAgX19ydF9wc3JlbG9jc19zaXplID0gX19ydF9wc3JlbG9jc19lbmQgLSBfX3J0X3BzcmVsb2NzX3N0YXJ0OwogIF9fX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfRU5EX18gPSAuOwogIF9fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9FTkRfXyA9IC47CiAgX19fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9fID0gLiAtIF9fcnRfcHNyZWxvY3Nfc2l6ZTsKICBfX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfXyA9IC4gLSBfX3J0X3BzcmVsb2NzX3NpemU7CiAgLmVoX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAgKCooLmVoX2ZyYW1lKikpCiAgfQogIC5wZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBLRUVQKCooLnBkYXRhKikpCiAgfQogIC54ZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBLRUVQKCooLnhkYXRhKikpCiAgfQogIC5ic3MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19ic3Nfc3RhcnRfXyA9IC4gOwogICAgKiguYnNzKQogICAgKihDT01NT04pCiAgICBfX2Jzc19lbmRfXyA9IC4gOwogIH0KICAuZWRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKiguZWRhdGEpCiAgfQogIC9ESVNDQVJELyA6CiAgewogICAgKiguZGVidWckUykKICAgICooLmRlYnVnJFQpCiAgICAqKC5kZWJ1ZyRGKQogICAgKiguZHJlY3R2ZSkKICAgICAqKC5ub3RlLkdOVS1zdGFjaykKICAgICAqKC5nbnUubHRvXyopCiAgICAgKiguZ251X29iamVjdF9vbmx5KQogIH0KICAuaWRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgLyogVGhpcyBjYW5ub3QgY3VycmVudGx5IGJlIGhhbmRsZWQgd2l0aCBncm91cGVkIHNlY3Rpb25zLgoJU2VlIHBlcC5lbTpzb3J0X3NlY3Rpb25zLiAgKi8KICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDIpKQogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkMykpCiAgICAvKiBUaGVzZSB6ZXJvZXMgbWFyayB0aGUgZW5kIG9mIHRoZSBpbXBvcnQgbGlzdC4gICovCiAgICBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7CiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ0KSkKICAgIF9fSUFUX3N0YXJ0X18gPSAuOwogICAgU09SVCgqKSguaWRhdGEkNSkKICAgIF9fSUFUX2VuZF9fID0gLjsKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDYpKQogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNykpCiAgfQogIC5DUlQgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19fY3J0X3hjX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhDKikpKSAgLyogQyBpbml0aWFsaXphdGlvbiAqLwogICAgX19fY3J0X3hjX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeGlfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEkqKSkpICAvKiBDKysgaW5pdGlhbGl6YXRpb24gKi8KICAgIF9fX2NydF94aV9lbmRfXyA9IC4gOwogICAgX19fY3J0X3hsX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhMKikpKSAgLyogVExTIGNhbGxiYWNrcyAqLwogICAgLyogX19fY3J0X3hsX2VuZF9fIGlzIGRlZmluZWQgaW4gdGhlIFRMUyBEaXJlY3Rvcnkgc3VwcG9ydCBjb2RlICovCiAgICBfX19jcnRfeHBfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWFAqKSkpICAvKiBQcmUtdGVybWluYXRpb24gKi8KICAgIF9fX2NydF94cF9lbmRfXyA9IC4gOwogICAgX19fY3J0X3h0X3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhUKikpKSAgLyogVGVybWluYXRpb24gKi8KICAgIF9fX2NydF94dF9lbmRfXyA9IC4gOwogIH0KICAvKiBXaW5kb3dzIFRMUyBleHBlY3RzIC50bHMkQUFBIHRvIGJlIGF0IHRoZSBzdGFydCBhbmQgLnRscyRaWlogdG8gYmUKICAgICBhdCB0aGUgZW5kIG9mIHRoZSAudGxzIHNlY3Rpb24uICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIF90bHNfc3RhcnQgTVVTVAogICAgIGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY3Rpb24gdG8gZW5hYmxlIFNFQ1JFTDMyIHJlbG9jYXRpb25zIHdpdGggVExTCiAgICAgZGF0YS4gICovCiAgLnRscyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX190bHNfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKigudGxzJEFBQSkpCiAgICBLRUVQICgqKC50bHMpKQogICAgS0VFUCAoKigudGxzJCkpCiAgICBLRUVQICgqKFNPUlQoLnRscyQqKSkpCiAgICBLRUVQICgqKC50bHMkWlpaKSkKICAgIF9fX3Rsc19lbmRfXyA9IC4gOwogIH0KICAuZW5kanVuayBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAvKiBlbmQgaXMgZGVwcmVjYXRlZCwgZG9uJ3QgdXNlIGl0ICovCiAgICBQUk9WSURFIChlbmQgPSAuKTsKICAgIFBST1ZJREUgKCBfZW5kID0gLik7CiAgICAgX19lbmRfXyA9IC47CiAgfQogIC5yc3JjIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOiBTVUJBTElHTig0KQogIHsKICAgIEtFRVAgKCooLnJzcmMpKQogICAgS0VFUCAoKigucnNyYyQqKSkKICB9CiAgLnJlbG9jIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLnJlbG9jKQogIH0KICAuc3RhYiBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5zdGFiKQogIH0KICAuc3RhYnN0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5zdGFic3RyKQogIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbi4gIFVubGlrZSBvdGhlciB0YXJnZXRzIHRoYXQgZmFrZSB0aGlzIGJ5IHB1dHRpbmcgdGhlCiAgICAgc2VjdGlvbiBWTUEgYXQgMCwgdGhlIFBFIGZvcm1hdCB3aWxsIG5vdCBhbGxvdyBpdC4gICovCiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19hcmFuZ2VzKQogIH0KICAuemRlYnVnX2FyYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2FyYW5nZXMpCiAgfQogIC5kZWJ1Z19wdWJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJuYW1lcykKICB9CiAgLnpkZWJ1Z19wdWJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfcHVibmFtZXMpCiAgfQogIC5kZWJ1Z19wdWJ0eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJ0eXBlcykKICB9CiAgLnpkZWJ1Z19wdWJ0eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfcHVidHlwZXMpCiAgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKQogIH0KICAuemRlYnVnX2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2luZm8gLnpkZWJ1Zy5nbnUubGlua29uY2Uud2kuKikKICB9CiAgLmRlYnVnX2FiYnJldiBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19hYmJyZXYpCiAgfQogIC56ZGVidWdfYWJicmV2IEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19hYmJyZXYpCiAgfQogIC5kZWJ1Z19saW5lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2xpbmUpCiAgfQogIC56ZGVidWdfbGluZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbGluZSkKICB9CiAgLmRlYnVnX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2ZyYW1lKQogIH0KICAuemRlYnVnX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19mcmFtZSkKICB9CiAgLmRlYnVnX3N0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19zdHIpCiAgfQogIC56ZGVidWdfc3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19zdHIpCiAgfQogIC5kZWJ1Z19sb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbG9jKQogIH0KICAuemRlYnVnX2xvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbG9jKQogIH0KICAuZGVidWdfbWFjaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNpbmZvKQogIH0KICAuemRlYnVnX21hY2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX21hY2luZm8pCiAgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC56ZGVidWdfd2Vha25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC5kZWJ1Z19mdW5jbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZnVuY25hbWVzKQogIH0KICAuemRlYnVnX2Z1bmNuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfZnVuY25hbWVzKQogIH0KICAuZGVidWdfdHlwZW5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3R5cGVuYW1lcykKICB9CiAgLnpkZWJ1Z190eXBlbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVuYW1lcykKICB9CiAgLmRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3Zhcm5hbWVzKQogIH0KICAuemRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z192YXJuYW1lcykKICB9CiAgLmRlYnVnX21hY3JvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX21hY3JvKQogIH0KICAuemRlYnVnX21hY3JvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19tYWNybykKICB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3JhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19yYW5nZXMpCiAgfQogIC56ZGVidWdfcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19yYW5nZXMpCiAgfQogIC8qIERXQVJGIDQuICAqLwogIC5kZWJ1Z190eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlcyAuZ251LmxpbmtvbmNlLnd0LiopCiAgfQogIC56ZGVidWdfdHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVzIC56ZGVidWcuZ251LmxpbmtvbmNlLnd0LiopCiAgfQogIC8qIEZvciBHbyBhbmQgUnVzdC4gICovCiAgLmRlYnVnX2dkYl9zY3JpcHRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2dkYl9zY3JpcHRzKQogIH0KICAuemRlYnVnX2dkYl9zY3JpcHRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19nZGJfc2NyaXB0cykKICB9Cn0KCgAAAAAALyogU2NyaXB0IGZvciBsZCAtLWVuYWJsZS1hdXRvLWltcG9ydDogTGlrZSB0aGUgZGVmYXVsdCBzY3JpcHQgZXhjZXB0IHJlYWQgb25seSBkYXRhIGlzIHBsYWNlZCBpbnRvIC5kYXRhICAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVChwZWkteDg2LTY0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcGVwL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBNYWtlIHRoZSB2aXJ0dWFsIGFkZHJlc3MgYW5kIGZpbGUgb2Zmc2V0IHN5bmNlZCBpZiB0aGUgYWxpZ25tZW50IGlzCiAgICAgbG93ZXIgdGhhbiB0aGUgdGFyZ2V0IHBhZ2Ugc2l6ZS4gKi8KICAuID0gU0laRU9GX0hFQURFUlM7CiAgLiA9IEFMSUdOKF9fc2VjdGlvbl9hbGlnbm1lbnRfXyk7CiAgLnRleHQgIF9faW1hZ2VfYmFzZV9fICsgKCBfX3NlY3Rpb25fYWxpZ25tZW50X18gPCAweDEwMDAgPyAuIDogX19zZWN0aW9uX2FsaWdubWVudF9fICkgOgogIHsKICAgICBLRUVQKCooLmluaXQpKQogICAgKigudGV4dCkKICAgICooU09SVCgudGV4dCQqKSkKICAgICAqKC50ZXh0LiopCiAgICAgKiguZ251LmxpbmtvbmNlLnQuKikKICAgICooLmdsdWVfN3QpCiAgICAqKC5nbHVlXzcpCiAgICAuID0gQUxJR04oOCk7CiAgICAgICBQUk9WSURFKF9fX0NUT1JfTElTVF9fID0gLik7CiAgICAgICBQUk9WSURFKF9fQ1RPUl9MSVNUX18gPSAuKTsKICAgICAgIExPTkcgKC0xKTsgTE9ORyAoLTEpOwogICAgICAgS0VFUCAoKiguY3RvcnMpKTsKICAgICAgIEtFRVAgKCooLmN0b3IpKTsKICAgICAgIEtFRVAgKCooU09SVF9CWV9OQU1FKC5jdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7IExPTkcgKDApOwogICAgICAgUFJPVklERShfX19EVE9SX0xJU1RfXyA9IC4pOwogICAgICAgUFJPVklERShfX0RUT1JfTElTVF9fID0gLik7CiAgICAgICBMT05HICgtMSk7IExPTkcgKC0xKTsKICAgICAgIEtFRVAgKCooLmR0b3JzKSk7CiAgICAgICBLRUVQICgqKC5kdG9yKSk7CiAgICAgICBLRUVQICgqKFNPUlRfQllfTkFNRSguZHRvcnMuKikpKTsKICAgICAgIExPTkcgKDApOyBMT05HICgwKTsKICAgICBLRUVQICgqKC5maW5pKSkKICAgIC8qID8/PyBXaHkgaXMgLmdjY19leGMgaGVyZT8gICovCiAgICAgKiguZ2NjX2V4YykKICAgIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgICAgS0VFUCAoKiguZ2NjX2V4Y2VwdF90YWJsZSkpCiAgfQogIC8qIFRoZSBDeWd3aW4zMiBsaWJyYXJ5IHVzZXMgYSBzZWN0aW9uIHRvIGF2b2lkIGNvcHlpbmcgY2VydGFpbiBkYXRhCiAgICAgb24gZm9yay4gIFRoaXMgdXNlZCB0byBiZSBuYW1lZCAiLmRhdGEiLiAgVGhlIGxpbmtlciB1c2VkCiAgICAgdG8gaW5jbHVkZSB0aGlzIGJldHdlZW4gX19kYXRhX3N0YXJ0X18gYW5kIF9fZGF0YV9lbmRfXywgYnV0IHRoYXQKICAgICBicmVha3MgYnVpbGRpbmcgdGhlIGN5Z3dpbjMyIGRsbC4gIEluc3RlYWQsIHdlIG5hbWUgdGhlIHNlY3Rpb24KICAgICAiLmRhdGFfY3lnd2luX25vY29weSIgYW5kIGV4cGxpY2l0bHkgaW5jbHVkZSBpdCBhZnRlciBfX2RhdGFfZW5kX18uICovCiAgLmRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19kYXRhX3N0YXJ0X18gPSAuIDsKICAgICooLmRhdGEpCiAgICAqKC5kYXRhMikKICAgICooU09SVCguZGF0YSQqKSkKCSAgICAqKC5yZGF0YSkKCSAgICAqKFNPUlQoLnJkYXRhJCopKQogICAgS0VFUCgqKC5qY3IpKQogICAgX19kYXRhX2VuZF9fID0gLiA7CiAgICAqKC5kYXRhX2N5Z3dpbl9ub2NvcHkpCiAgfQogIC5yZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX3J0X3BzcmVsb2NzX3N0YXJ0ID0gLjsKICAgIEtFRVAoKigucmRhdGFfcnVudGltZV9wc2V1ZG9fcmVsb2MpKQogICAgX19ydF9wc3JlbG9jc19lbmQgPSAuOwogIH0KICBfX3J0X3BzcmVsb2NzX3NpemUgPSBfX3J0X3BzcmVsb2NzX2VuZCAtIF9fcnRfcHNyZWxvY3Nfc3RhcnQ7CiAgX19fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9FTkRfXyA9IC47CiAgX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX0VORF9fID0gLjsKICBfX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX18gPSAuIC0gX19ydF9wc3JlbG9jc19zaXplOwogIF9fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9fID0gLiAtIF9fcnRfcHNyZWxvY3Nfc2l6ZTsKICAuZWhfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgS0VFUCAoKiguZWhfZnJhbWUqKSkKICB9CiAgLnBkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAoKigucGRhdGEqKSkKICB9CiAgLnhkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAoKigueGRhdGEqKSkKICB9CiAgLmJzcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX2Jzc19zdGFydF9fID0gLiA7CiAgICAqKC5ic3MpCiAgICAqKENPTU1PTikKICAgIF9fYnNzX2VuZF9fID0gLiA7CiAgfQogIC5lZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAqKC5lZGF0YSkKICB9CiAgL0RJU0NBUkQvIDoKICB7CiAgICAqKC5kZWJ1ZyRTKQogICAgKiguZGVidWckVCkKICAgICooLmRlYnVnJEYpCiAgICAqKC5kcmVjdHZlKQogICAgICooLm5vdGUuR05VLXN0YWNrKQogICAgICooLmdudS5sdG9fKikKICAgICAqKC5nbnVfb2JqZWN0X29ubHkpCiAgfQogIC5pZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAvKiBUaGlzIGNhbm5vdCBjdXJyZW50bHkgYmUgaGFuZGxlZCB3aXRoIGdyb3VwZWQgc2VjdGlvbnMuCglTZWUgcGVwLmVtOnNvcnRfc2VjdGlvbnMuICAqLwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkMikpCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQzKSkKICAgIC8qIFRoZXNlIHplcm9lcyBtYXJrIHRoZSBlbmQgb2YgdGhlIGltcG9ydCBsaXN0LiAgKi8KICAgIExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDQpKQogICAgX19JQVRfc3RhcnRfXyA9IC47CiAgICBTT1JUKCopKC5pZGF0YSQ1KQogICAgX19JQVRfZW5kX18gPSAuOwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNikpCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ3KSkKICB9CiAgLkNSVCBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX19jcnRfeGNfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEMqKSkpICAvKiBDIGluaXRpYWxpemF0aW9uICovCiAgICBfX19jcnRfeGNfZW5kX18gPSAuIDsKICAgIF9fX2NydF94aV9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYSSopKSkgIC8qIEMrKyBpbml0aWFsaXphdGlvbiAqLwogICAgX19fY3J0X3hpX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeGxfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEwqKSkpICAvKiBUTFMgY2FsbGJhY2tzICovCiAgICAvKiBfX19jcnRfeGxfZW5kX18gaXMgZGVmaW5lZCBpbiB0aGUgVExTIERpcmVjdG9yeSBzdXBwb3J0IGNvZGUgKi8KICAgIF9fX2NydF94cF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYUCopKSkgIC8qIFByZS10ZXJtaW5hdGlvbiAqLwogICAgX19fY3J0X3hwX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeHRfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWFQqKSkpICAvKiBUZXJtaW5hdGlvbiAqLwogICAgX19fY3J0X3h0X2VuZF9fID0gLiA7CiAgfQogIC8qIFdpbmRvd3MgVExTIGV4cGVjdHMgLnRscyRBQUEgdG8gYmUgYXQgdGhlIHN0YXJ0IGFuZCAudGxzJFpaWiB0byBiZQogICAgIGF0IHRoZSBlbmQgb2YgdGhlIC50bHMgc2VjdGlvbi4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgX3Rsc19zdGFydCBNVVNUCiAgICAgYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VjdGlvbiB0byBlbmFibGUgU0VDUkVMMzIgcmVsb2NhdGlvbnMgd2l0aCBUTFMKICAgICBkYXRhLiAgKi8KICAudGxzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fX3Rsc19zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKC50bHMkQUFBKSkKICAgIEtFRVAgKCooLnRscykpCiAgICBLRUVQICgqKC50bHMkKSkKICAgIEtFRVAgKCooU09SVCgudGxzJCopKSkKICAgIEtFRVAgKCooLnRscyRaWlopKQogICAgX19fdGxzX2VuZF9fID0gLiA7CiAgfQogIC5lbmRqdW5rIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIC8qIGVuZCBpcyBkZXByZWNhdGVkLCBkb24ndCB1c2UgaXQgKi8KICAgIFBST1ZJREUgKGVuZCA9IC4pOwogICAgUFJPVklERSAoIF9lbmQgPSAuKTsKICAgICBfX2VuZF9fID0gLjsKICB9CiAgLnJzcmMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6IFNVQkFMSUdOKDQpCiAgewogICAgS0VFUCAoKigucnNyYykpCiAgICBLRUVQICgqKC5yc3JjJCopKQogIH0KICAucmVsb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKigucmVsb2MpCiAgfQogIC5zdGFiIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnN0YWIpCiAgfQogIC5zdGFic3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnN0YWJzdHIpCiAgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uLiAgVW5saWtlIG90aGVyIHRhcmdldHMgdGhhdCBmYWtlIHRoaXMgYnkgcHV0dGluZyB0aGUKICAgICBzZWN0aW9uIFZNQSBhdCAwLCB0aGUgUEUgZm9ybWF0IHdpbGwgbm90IGFsbG93IGl0LiAgKi8KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2FyYW5nZXMpCiAgfQogIC56ZGVidWdfYXJhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfYXJhbmdlcykKICB9CiAgLmRlYnVnX3B1Ym5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3B1Ym5hbWVzKQogIH0KICAuemRlYnVnX3B1Ym5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19wdWJuYW1lcykKICB9CiAgLmRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3B1YnR5cGVzKQogIH0KICAuemRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19wdWJ0eXBlcykKICB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopCiAgfQogIC56ZGVidWdfaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfaW5mbyAuemRlYnVnLmdudS5saW5rb25jZS53aS4qKQogIH0KICAuZGVidWdfYWJicmV2IEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2FiYnJldikKICB9CiAgLnpkZWJ1Z19hYmJyZXYgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2FiYnJldikKICB9CiAgLmRlYnVnX2xpbmUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbGluZSkKICB9CiAgLnpkZWJ1Z19saW5lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19saW5lKQogIH0KICAuZGVidWdfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZnJhbWUpCiAgfQogIC56ZGVidWdfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2ZyYW1lKQogIH0KICAuZGVidWdfc3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3N0cikKICB9CiAgLnpkZWJ1Z19zdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3N0cikKICB9CiAgLmRlYnVnX2xvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19sb2MpCiAgfQogIC56ZGVidWdfbG9jIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19sb2MpCiAgfQogIC5kZWJ1Z19tYWNpbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX21hY2luZm8pCiAgfQogIC56ZGVidWdfbWFjaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbWFjaW5mbykKICB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3dlYWtuYW1lcykKICB9CiAgLnpkZWJ1Z193ZWFrbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3dlYWtuYW1lcykKICB9CiAgLmRlYnVnX2Z1bmNuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19mdW5jbmFtZXMpCiAgfQogIC56ZGVidWdfZnVuY25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19mdW5jbmFtZXMpCiAgfQogIC5kZWJ1Z190eXBlbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfdHlwZW5hbWVzKQogIH0KICAuemRlYnVnX3R5cGVuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfdHlwZW5hbWVzKQogIH0KICAuZGVidWdfdmFybmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfdmFybmFtZXMpCiAgfQogIC56ZGVidWdfdmFybmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3Zhcm5hbWVzKQogIH0KICAuZGVidWdfbWFjcm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbWFjcm8pCiAgfQogIC56ZGVidWdfbWFjcm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX21hY3JvKQogIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3JhbmdlcykKICB9CiAgLnpkZWJ1Z19yYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3JhbmdlcykKICB9CiAgLyogRFdBUkYgNC4gICovCiAgLmRlYnVnX3R5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3R5cGVzIC5nbnUubGlua29uY2Uud3QuKikKICB9CiAgLnpkZWJ1Z190eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfdHlwZXMgLnpkZWJ1Zy5nbnUubGlua29uY2Uud3QuKikKICB9CiAgLyogRm9yIEdvIGFuZCBSdXN0LiAgKi8KICAuZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZ2RiX3NjcmlwdHMpCiAgfQogIC56ZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2dkYl9zY3JpcHRzKQogIH0KfQoKAAAAJVA6IHdhcm5pbmc6IENhbm5vdCBjcmVhdGUgLmJ1aWxkaWQgc2VjdGlvbiwgLS1idWlsZC1pZCBpZ25vcmVkLgoAAAAAAAAAJUYlUDogY2Fubm90IHBlcmZvcm0gUEUgb3BlcmF0aW9ucyBvbiBub24gUEUgb3V0cHV0IGZpbGUgJyVCJy4KACVYJVA6IHVuYWJsZSB0byBwcm9jZXNzIHJlbG9jczogJUUKAAAAAAAlUDogd2FybmluZzogLS1leHBvcnQtZHluYW1pYyBpcyBub3Qgc3VwcG9ydGVkIGZvciBQRSsgdGFyZ2V0cywgZGlkIHlvdSBtZWFuIC0tZXhwb3J0LWFsbC1zeW1ib2xzPwoAAAAAACVQJUY6IGludmFsaWQgaGV4IG51bWJlciBmb3IgUEUgcGFyYW1ldGVyICclcycKACVQJUY6IHN0cmFuZ2UgaGV4IGluZm8gZm9yIFBFIHBhcmFtZXRlciAnJXMnCgAAACVGJVA6IGNhbm5vdCBvcGVuIGJhc2UgZmlsZSAlcwoAJVA6IHdhcm5pbmc6IGJhZCB2ZXJzaW9uIG51bWJlciBpbiAtc3Vic3lzdGVtIG9wdGlvbgoAAAAlUCVGOiBpbnZhbGlkIHN1YnN5c3RlbSB0eXBlICVzCgAAAAAAAAAAJVA6IHdhcm5pbmcsIGZpbGUgYWxpZ25tZW50ID4gc2VjdGlvbiBhbGlnbm1lbnQuCgAAAAAAAAAlUDogd2FybmluZzogLmJ1aWxkaWQgc2VjdGlvbiBkaXNjYXJkZWQsIC0tYnVpbGQtaWQgaWdub3JlZC4KAAAAJUM6IENhbm5vdCBnZXQgc2VjdGlvbiBjb250ZW50cyAtIGF1dG8taW1wb3J0IGV4Y2VwdGlvbgoAAAAAAAAAAGltcG9ydCBvZiAweCVseCgweCVseCkgc2VjX2FkZHI9MHglbHgAAAB1c2UtbnVsLXByZWZpeGVkLWltcG9ydC10YWJsZXMAAGVuYWJsZS1ydW50aW1lLXBzZXVkby1yZWxvYy12MgAAQILr/2B/6/9Af+v/IH/r/wB/6//gfuv/wH7r/6B+6/+Afuv/YH7r/0B+6/8gfuv/gH/r/8CB6/8gfev/oIHr/+CA6//AgOv/oIDr/4iA6/8Afuv/4H3r/8B96/+gfev/iH3r/0CB6/8ggev/AIHr/2CB6/8Aguv/4IHr/yCC6/+Agev/cH3r/8CE6/9wfev/oITr/4CE6/9ghOv/QITr/yCE6/8AhOv/4IPr/8CD6/+gg+v/gIPr/2CD6/9Ag+v/IIPr/wCD6//gguv/wILr/6CC6//AfOv/bWFpbkNSVFN0YXJ0dXAAAAAAAAAAAAAAcGVwX2ZpeHVwX3N0ZGNhbGxzAAAAAAAAAAAAAAAAAABwZXBfZmluZF9kYXRhX2ltcG9ydHMAAAAAAAAAAAAAAGdsZF9pMzg2cGVwX2FmdGVyX29wZW4AAAAAAAAAAAAAZ2xkX2kzODZwZXBfc2V0X3N5bWJvbHMAc2V0X3BlcF9uYW1lAAAAAAAAAAAAAAAAaXNfdW5kZXJzY29yaW5nAHBlaS1pMzg2AHBlLWkzODYAZWkzODZwZS5jAERsbE1haW5DUlRTdGFydHVwQDEyAHRodW1iLWVudHJ5AGVuYWJsZS1leHRyYS1wZS1kZWJ1ZwBkaXNhYmxlLWxhcmdlLWFkZHJlc3MtYXdhcmUAaTM4NnBlAAAAACAgLS10aHVtYi1lbnRyeT08c3ltYm9sPiAgICAgICAgICAgICBTZXQgdGhlIGVudHJ5IHBvaW50IHRvIGJlIFRodW1iIDxzeW1ib2w+CgAAICAtLVtuby1daW5zZXJ0LXRpbWVzdGFtcCAgICAgICAgICAgIFVzZSBhIHJlYWwgdGltZXN0YW1wIHJhdGhlciB0aGFuIHplcm8gKGRlZmF1bHQpLgoAACAgLS13YXJuLWR1cGxpY2F0ZS1leHBvcnRzICAgICAgICAgICBXYXJuIGFib3V0IGR1cGxpY2F0ZSBleHBvcnRzCgAAAAAAACAgLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlWz08YWRkcmVzcz5dIEF1dG9tYXRpY2FsbHkgY2hvb3NlIGltYWdlIGJhc2UgZm9yIERMTHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbmFsbHkgc3RhcnRpbmcgd2l0aCBhZGRyZXNzKSB1bmxlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhbGx5IHNldCB3aXRoIC0taW1hZ2UtYmFzZQoAAAAAACAgLS1lbmFibGUtZXh0cmEtcGUtZGVidWcgICAgICAgICAgICBFbmFibGUgdmVyYm9zZSBkZWJ1ZyBvdXRwdXQgd2hlbiBidWlsZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBsaW5raW5nIHRvIERMTHMgKGVzcC4gYXV0by1pbXBvcnQpCgAAAAAgIC0tbGFyZ2UtYWRkcmVzcy1hd2FyZSAgICAgICAgICAgICAgRXhlY3V0YWJsZSBzdXBwb3J0cyB2aXJ0dWFsIGFkZHJlc3NlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVhdGVyIHRoYW4gMiBnaWdhYnl0ZXMKAAAAAAAgIC0tZGlzYWJsZS1sYXJnZS1hZGRyZXNzLWF3YXJlICAgICAgRXhlY3V0YWJsZSBkb2VzIG5vdCBzdXBwb3J0IHZpcnR1YWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzIGdyZWF0ZXIgdGhhbiAyIGdpZ2FieXRlcwoAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLVVyOiBsaW5rIHcvb3V0IHJlbG9jYXRpb24sIGRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQocGUtaTM4NikKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXBlcC9saWIiKTsKU0VDVElPTlMKewogIC50ZXh0ICA6CiAgewogICAgKigudGV4dCkKICAgICAgIFBST1ZJREUoX19fQ1RPUl9MSVNUX18gPSAuKTsKICAgICAgIFBST1ZJREUoX19DVE9SX0xJU1RfXyA9IC4pOwogICAgICAgTE9ORyAoLTEpOwogICAgICAgS0VFUCgqKC5jdG9ycykpOwogICAgICAgS0VFUCgqKC5jdG9yKSk7CiAgICAgICBLRUVQKCooU09SVF9CWV9OQU1FKC5jdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7CiAgICAgICBQUk9WSURFKF9fX0RUT1JfTElTVF9fID0gLik7CiAgICAgICBQUk9WSURFKF9fRFRPUl9MSVNUX18gPSAuKTsKICAgICAgIExPTkcgKC0xKTsKICAgICAgIEtFRVAoKiguZHRvcnMpKTsKICAgICAgIEtFRVAoKiguZHRvcikpOwogICAgICAgS0VFUCgqKFNPUlRfQllfTkFNRSguZHRvcnMuKikpKTsKICAgICAgIExPTkcgKDApOwogICAgLyogPz8/IFdoeSBpcyAuZ2NjX2V4YyBoZXJlPyAgKi8KICB9CiAgLyogVGhlIEN5Z3dpbjMyIGxpYnJhcnkgdXNlcyBhIHNlY3Rpb24gdG8gYXZvaWQgY29weWluZyBjZXJ0YWluIGRhdGEKICAgICBvbiBmb3JrLiAgVGhpcyB1c2VkIHRvIGJlIG5hbWVkICIuZGF0YSIuICBUaGUgbGlua2VyIHVzZWQKICAgICB0byBpbmNsdWRlIHRoaXMgYmV0d2VlbiBfX2RhdGFfc3RhcnRfXyBhbmQgX19kYXRhX2VuZF9fLCBidXQgdGhhdAogICAgIGJyZWFrcyBidWlsZGluZyB0aGUgY3lnd2luMzIgZGxsLiAgSW5zdGVhZCwgd2UgbmFtZSB0aGUgc2VjdGlvbgogICAgICIuZGF0YV9jeWd3aW5fbm9jb3B5IiBhbmQgZXhwbGljaXRseSBpbmNsdWRlIGl0IGFmdGVyIF9fZGF0YV9lbmRfXy4gKi8KICAuZGF0YSAgOgogIHsKICAgICooLmRhdGEpCiAgICBLRUVQKCooLmpjcikpCiAgfQogIC5yZGF0YSAgOgogIHsKICAgICooLnJkYXRhKQogIH0KICAuZWhfZnJhbWUgIDoKICB7CiAgICBLRUVQKCooLmVoX2ZyYW1lKSkKICB9CiAgLnBkYXRhICA6CiAgewogICAgS0VFUCgqKC5wZGF0YSkpCiAgfQogIC5ic3MgIDoKICB7CiAgICAqKC5ic3MpCiAgICAqKENPTU1PTikKICB9CiAgLmVkYXRhICA6CiAgewogICAgKiguZWRhdGEpCiAgfQogIC9ESVNDQVJELyA6CiAgewogICAgKiguZGVidWckUykKICAgICooLmRlYnVnJFQpCiAgICAqKC5kZWJ1ZyRGKQogICAgKiguZHJlY3R2ZSkKICB9CiAgLmlkYXRhICA6CiAgewogICAgLyogVGhpcyBjYW5ub3QgY3VycmVudGx5IGJlIGhhbmRsZWQgd2l0aCBncm91cGVkIHNlY3Rpb25zLgoJU2VlIHBlLmVtOnNvcnRfc2VjdGlvbnMuICAqLwogIH0KICAuQ1JUICA6CiAgewogICAgLyogX19fY3J0X3hsX2VuZF9fIGlzIGRlZmluZWQgaW4gdGhlIFRMUyBEaXJlY3Rvcnkgc3VwcG9ydCBjb2RlICovCiAgfQogIC8qIFdpbmRvd3MgVExTIGV4cGVjdHMgLnRscyRBQUEgdG8gYmUgYXQgdGhlIHN0YXJ0IGFuZCAudGxzJFpaWiB0byBiZQogICAgIGF0IHRoZSBlbmQgb2Ygc2VjdGlvbi4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgX3Rsc19zdGFydCBNVVNUCiAgICAgYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VjdGlvbiB0byBlbmFibGUgU0VDUkVMMzIgcmVsb2NhdGlvbnMgd2l0aCBUTFMKICAgICBkYXRhLiAgKi8KICAudGxzICA6CiAgewogICAgKigudGxzKQogIH0KICAuZW5kanVuayAgOgogIHsKICAgIC8qIGVuZCBpcyBkZXByZWNhdGVkLCBkb24ndCB1c2UgaXQgKi8KICB9CiAgLnJzcmMgIDogU1VCQUxJR04oNCkKICB7CiAgICAqKC5yc3JjKQogIH0KICAucmVsb2MgIDoKICB7CiAgICAqKC5yZWxvYykKICB9CiAgLnN0YWIgICA6CiAgewogICAgKiguc3RhYikKICB9CiAgLnN0YWJzdHIgICA6CiAgewogICAgKiguc3RhYnN0cikKICB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24uICBVbmxpa2Ugb3RoZXIgdGFyZ2V0cyB0aGF0IGZha2UgdGhpcyBieSBwdXR0aW5nIHRoZQogICAgIHNlY3Rpb24gVk1BIGF0IDAsIHRoZSBQRSBmb3JtYXQgd2lsbCBub3QgYWxsb3cgaXQuICAqLwogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgICA6CiAgewogICAgKiguZGVidWdfYXJhbmdlcykKICB9CiAgLnpkZWJ1Z19hcmFuZ2VzICAgOgogIHsKICAgICooLnpkZWJ1Z19hcmFuZ2VzKQogIH0KICAuZGVidWdfcHVibmFtZXMgICA6CiAgewogICAgKiguZGVidWdfcHVibmFtZXMpCiAgfQogIC56ZGVidWdfcHVibmFtZXMgICA6CiAgewogICAgKiguemRlYnVnX3B1Ym5hbWVzKQogIH0KICAuZGVidWdfcHVidHlwZXMgICA6CiAgewogICAgKiguZGVidWdfcHVidHlwZXMpCiAgfQogIC56ZGVidWdfcHVidHlwZXMgICA6CiAgewogICAgKiguemRlYnVnX3B1YnR5cGVzKQogIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgIDoKICB7CiAgICAqKC5kZWJ1Z19pbmZvKQogIH0KICAuemRlYnVnX2luZm8gICA6CiAgewogICAgKiguemRlYnVnX2luZm8pCiAgfQogIC5kZWJ1Z19hYmJyZXYgICA6CiAgewogICAgKiguZGVidWdfYWJicmV2KQogIH0KICAuemRlYnVnX2FiYnJldiAgIDoKICB7CiAgICAqKC56ZGVidWdfYWJicmV2KQogIH0KICAuZGVidWdfbGluZSAgIDoKICB7CiAgICAqKC5kZWJ1Z19saW5lKQogIH0KICAuemRlYnVnX2xpbmUgICA6CiAgewogICAgKiguemRlYnVnX2xpbmUpCiAgfQogIC5kZWJ1Z19mcmFtZSAgIDoKICB7CiAgICAqKC5kZWJ1Z19mcmFtZSopCiAgfQogIC56ZGVidWdfZnJhbWUgICA6CiAgewogICAgKiguemRlYnVnX2ZyYW1lKikKICB9CiAgLmRlYnVnX3N0ciAgIDoKICB7CiAgICAqKC5kZWJ1Z19zdHIpCiAgfQogIC56ZGVidWdfc3RyICAgOgogIHsKICAgICooLnpkZWJ1Z19zdHIpCiAgfQogIC5kZWJ1Z19sb2MgICA6CiAgewogICAgKiguZGVidWdfbG9jKQogIH0KICAuemRlYnVnX2xvYyAgIDoKICB7CiAgICAqKC56ZGVidWdfbG9jKQogIH0KICAuZGVidWdfbWFjaW5mbyAgIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNpbmZvKQogIH0KICAuemRlYnVnX21hY2luZm8gICA6CiAgewogICAgKiguemRlYnVnX21hY2luZm8pCiAgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC56ZGVidWdfd2Vha25hbWVzICAgOgogIHsKICAgICooLnpkZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC5kZWJ1Z19mdW5jbmFtZXMgICA6CiAgewogICAgKiguZGVidWdfZnVuY25hbWVzKQogIH0KICAuemRlYnVnX2Z1bmNuYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfZnVuY25hbWVzKQogIH0KICAuZGVidWdfdHlwZW5hbWVzICAgOgogIHsKICAgICooLmRlYnVnX3R5cGVuYW1lcykKICB9CiAgLnpkZWJ1Z190eXBlbmFtZXMgICA6CiAgewogICAgKiguemRlYnVnX3R5cGVuYW1lcykKICB9CiAgLmRlYnVnX3Zhcm5hbWVzICAgOgogIHsKICAgICooLmRlYnVnX3Zhcm5hbWVzKQogIH0KICAuemRlYnVnX3Zhcm5hbWVzICAgOgogIHsKICAgICooLnpkZWJ1Z192YXJuYW1lcykKICB9CiAgLmRlYnVnX21hY3JvICAgOgogIHsKICAgICooLmRlYnVnX21hY3JvKQogIH0KICAuemRlYnVnX21hY3JvICAgOgogIHsKICAgICooLnpkZWJ1Z19tYWNybykKICB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3JhbmdlcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19yYW5nZXMpCiAgfQogIC56ZGVidWdfcmFuZ2VzICAgOgogIHsKICAgICooLnpkZWJ1Z19yYW5nZXMpCiAgfQogIC8qIERXQVJGIDQuICAqLwogIC5kZWJ1Z190eXBlcyAgIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlcykKICB9CiAgLnpkZWJ1Z190eXBlcyAgIDoKICB7CiAgICAqKC56ZGVidWdfdHlwZXMpCiAgfQogIC8qIEZvciBHbyBhbmQgUnVzdC4gICovCiAgLmRlYnVnX2dkYl9zY3JpcHRzICAgOgogIHsKICAgICooLmRlYnVnX2dkYl9zY3JpcHRzKQogIH0KICAuemRlYnVnX2dkYl9zY3JpcHRzICAgOgogIHsKICAgICooLnpkZWJ1Z19nZGJfc2NyaXB0cykKICB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgbGQgLXI6IGxpbmsgd2l0aG91dCByZWxvY2F0aW9uICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKHBlLWkzODYpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1wZXAvbGliIik7ClNFQ1RJT05TCnsKICAudGV4dCAgOgogIHsKICAgICooLnRleHQpCiAgICAvKiA/Pz8gV2h5IGlzIC5nY2NfZXhjIGhlcmU/ICAqLwogIH0KICAvKiBUaGUgQ3lnd2luMzIgbGlicmFyeSB1c2VzIGEgc2VjdGlvbiB0byBhdm9pZCBjb3B5aW5nIGNlcnRhaW4gZGF0YQogICAgIG9uIGZvcmsuICBUaGlzIHVzZWQgdG8gYmUgbmFtZWQgIi5kYXRhIi4gIFRoZSBsaW5rZXIgdXNlZAogICAgIHRvIGluY2x1ZGUgdGhpcyBiZXR3ZWVuIF9fZGF0YV9zdGFydF9fIGFuZCBfX2RhdGFfZW5kX18sIGJ1dCB0aGF0CiAgICAgYnJlYWtzIGJ1aWxkaW5nIHRoZSBjeWd3aW4zMiBkbGwuICBJbnN0ZWFkLCB3ZSBuYW1lIHRoZSBzZWN0aW9uCiAgICAgIi5kYXRhX2N5Z3dpbl9ub2NvcHkiIGFuZCBleHBsaWNpdGx5IGluY2x1ZGUgaXQgYWZ0ZXIgX19kYXRhX2VuZF9fLiAqLwogIC5kYXRhICA6CiAgewogICAgKiguZGF0YSkKICAgIEtFRVAoKiguamNyKSkKICB9CiAgLnJkYXRhICA6CiAgewogICAgKigucmRhdGEpCiAgfQogIC5laF9mcmFtZSAgOgogIHsKICAgIEtFRVAoKiguZWhfZnJhbWUpKQogIH0KICAucGRhdGEgIDoKICB7CiAgICBLRUVQKCooLnBkYXRhKSkKICB9CiAgLmJzcyAgOgogIHsKICAgICooLmJzcykKICAgICooQ09NTU9OKQogIH0KICAuZWRhdGEgIDoKICB7CiAgICAqKC5lZGF0YSkKICB9CiAgL0RJU0NBUkQvIDoKICB7CiAgICAqKC5kZWJ1ZyRTKQogICAgKiguZGVidWckVCkKICAgICooLmRlYnVnJEYpCiAgICAqKC5kcmVjdHZlKQogIH0KICAuaWRhdGEgIDoKICB7CiAgICAvKiBUaGlzIGNhbm5vdCBjdXJyZW50bHkgYmUgaGFuZGxlZCB3aXRoIGdyb3VwZWQgc2VjdGlvbnMuCglTZWUgcGUuZW06c29ydF9zZWN0aW9ucy4gICovCiAgfQogIC5DUlQgIDoKICB7CiAgICAvKiBfX19jcnRfeGxfZW5kX18gaXMgZGVmaW5lZCBpbiB0aGUgVExTIERpcmVjdG9yeSBzdXBwb3J0IGNvZGUgKi8KICB9CiAgLyogV2luZG93cyBUTFMgZXhwZWN0cyAudGxzJEFBQSB0byBiZSBhdCB0aGUgc3RhcnQgYW5kIC50bHMkWlpaIHRvIGJlCiAgICAgYXQgdGhlIGVuZCBvZiBzZWN0aW9uLiAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBfdGxzX3N0YXJ0IE1VU1QKICAgICBiZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWN0aW9uIHRvIGVuYWJsZSBTRUNSRUwzMiByZWxvY2F0aW9ucyB3aXRoIFRMUwogICAgIGRhdGEuICAqLwogIC50bHMgIDoKICB7CiAgICAqKC50bHMpCiAgfQogIC5lbmRqdW5rICA6CiAgewogICAgLyogZW5kIGlzIGRlcHJlY2F0ZWQsIGRvbid0IHVzZSBpdCAqLwogIH0KICAucnNyYyAgOiBTVUJBTElHTig0KQogIHsKICAgICooLnJzcmMpCiAgfQogIC5yZWxvYyAgOgogIHsKICAgICooLnJlbG9jKQogIH0KICAuc3RhYiAgIDoKICB7CiAgICAqKC5zdGFiKQogIH0KICAuc3RhYnN0ciAgIDoKICB7CiAgICAqKC5zdGFic3RyKQogIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbi4gIFVubGlrZSBvdGhlciB0YXJnZXRzIHRoYXQgZmFrZSB0aGlzIGJ5IHB1dHRpbmcgdGhlCiAgICAgc2VjdGlvbiBWTUEgYXQgMCwgdGhlIFBFIGZvcm1hdCB3aWxsIG5vdCBhbGxvdyBpdC4gICovCiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19hcmFuZ2VzKQogIH0KICAuemRlYnVnX2FyYW5nZXMgICA6CiAgewogICAgKiguemRlYnVnX2FyYW5nZXMpCiAgfQogIC5kZWJ1Z19wdWJuYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJuYW1lcykKICB9CiAgLnpkZWJ1Z19wdWJuYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfcHVibmFtZXMpCiAgfQogIC5kZWJ1Z19wdWJ0eXBlcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJ0eXBlcykKICB9CiAgLnpkZWJ1Z19wdWJ0eXBlcyAgIDoKICB7CiAgICAqKC56ZGVidWdfcHVidHlwZXMpCiAgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgOgogIHsKICAgICooLmRlYnVnX2luZm8pCiAgfQogIC56ZGVidWdfaW5mbyAgIDoKICB7CiAgICAqKC56ZGVidWdfaW5mbykKICB9CiAgLmRlYnVnX2FiYnJldiAgIDoKICB7CiAgICAqKC5kZWJ1Z19hYmJyZXYpCiAgfQogIC56ZGVidWdfYWJicmV2ICAgOgogIHsKICAgICooLnpkZWJ1Z19hYmJyZXYpCiAgfQogIC5kZWJ1Z19saW5lICAgOgogIHsKICAgICooLmRlYnVnX2xpbmUpCiAgfQogIC56ZGVidWdfbGluZSAgIDoKICB7CiAgICAqKC56ZGVidWdfbGluZSkKICB9CiAgLmRlYnVnX2ZyYW1lICAgOgogIHsKICAgICooLmRlYnVnX2ZyYW1lKikKICB9CiAgLnpkZWJ1Z19mcmFtZSAgIDoKICB7CiAgICAqKC56ZGVidWdfZnJhbWUqKQogIH0KICAuZGVidWdfc3RyICAgOgogIHsKICAgICooLmRlYnVnX3N0cikKICB9CiAgLnpkZWJ1Z19zdHIgICA6CiAgewogICAgKiguemRlYnVnX3N0cikKICB9CiAgLmRlYnVnX2xvYyAgIDoKICB7CiAgICAqKC5kZWJ1Z19sb2MpCiAgfQogIC56ZGVidWdfbG9jICAgOgogIHsKICAgICooLnpkZWJ1Z19sb2MpCiAgfQogIC5kZWJ1Z19tYWNpbmZvICAgOgogIHsKICAgICooLmRlYnVnX21hY2luZm8pCiAgfQogIC56ZGVidWdfbWFjaW5mbyAgIDoKICB7CiAgICAqKC56ZGVidWdfbWFjaW5mbykKICB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzICAgOgogIHsKICAgICooLmRlYnVnX3dlYWtuYW1lcykKICB9CiAgLnpkZWJ1Z193ZWFrbmFtZXMgICA6CiAgewogICAgKiguemRlYnVnX3dlYWtuYW1lcykKICB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19mdW5jbmFtZXMpCiAgfQogIC56ZGVidWdfZnVuY25hbWVzICAgOgogIHsKICAgICooLnpkZWJ1Z19mdW5jbmFtZXMpCiAgfQogIC5kZWJ1Z190eXBlbmFtZXMgICA6CiAgewogICAgKiguZGVidWdfdHlwZW5hbWVzKQogIH0KICAuemRlYnVnX3R5cGVuYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfdHlwZW5hbWVzKQogIH0KICAuZGVidWdfdmFybmFtZXMgICA6CiAgewogICAgKiguZGVidWdfdmFybmFtZXMpCiAgfQogIC56ZGVidWdfdmFybmFtZXMgICA6CiAgewogICAgKiguemRlYnVnX3Zhcm5hbWVzKQogIH0KICAuZGVidWdfbWFjcm8gICA6CiAgewogICAgKiguZGVidWdfbWFjcm8pCiAgfQogIC56ZGVidWdfbWFjcm8gICA6CiAgewogICAgKiguemRlYnVnX21hY3JvKQogIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcmFuZ2VzICAgOgogIHsKICAgICooLmRlYnVnX3JhbmdlcykKICB9CiAgLnpkZWJ1Z19yYW5nZXMgICA6CiAgewogICAgKiguemRlYnVnX3JhbmdlcykKICB9CiAgLyogRFdBUkYgNC4gICovCiAgLmRlYnVnX3R5cGVzICAgOgogIHsKICAgICooLmRlYnVnX3R5cGVzKQogIH0KICAuemRlYnVnX3R5cGVzICAgOgogIHsKICAgICooLnpkZWJ1Z190eXBlcykKICB9CiAgLyogRm9yIEdvIGFuZCBSdXN0LiAgKi8KICAuZGVidWdfZ2RiX3NjcmlwdHMgICA6CiAgewogICAgKiguZGVidWdfZ2RiX3NjcmlwdHMpCiAgfQogIC56ZGVidWdfZ2RiX3NjcmlwdHMgICA6CiAgewogICAgKiguemRlYnVnX2dkYl9zY3JpcHRzKQogIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLU46IG1peCB0ZXh0IGFuZCBkYXRhIG9uIHNhbWUgcGFnZTsgZG9uJ3QgYWxpZ24gZGF0YSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVChwZWktaTM4NikKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXBlcC9saWIiKTsKU0VDVElPTlMKewogIC8qIE1ha2UgdGhlIHZpcnR1YWwgYWRkcmVzcyBhbmQgZmlsZSBvZmZzZXQgc3luY2VkIGlmIHRoZSBhbGlnbm1lbnQgaXMKICAgICBsb3dlciB0aGFuIHRoZSB0YXJnZXQgcGFnZSBzaXplLiAqLwogIC4gPSBTSVpFT0ZfSEVBREVSUzsKICAuID0gQUxJR04oX19zZWN0aW9uX2FsaWdubWVudF9fKTsKICAudGV4dCAgX19pbWFnZV9iYXNlX18gKyAoIF9fc2VjdGlvbl9hbGlnbm1lbnRfXyA8IDB4MTAwMCA/IC4gOiBfX3NlY3Rpb25fYWxpZ25tZW50X18gKSA6CiAgewogICAgIEtFRVAoKiguaW5pdCkpCiAgICAqKC50ZXh0KQogICAgKihTT1JUKC50ZXh0JCopKQogICAgICooLnRleHQuKikKICAgICAqKC5nbnUubGlua29uY2UudC4qKQogICAgKiguZ2x1ZV83dCkKICAgICooLmdsdWVfNykKICAgICAgIFBST1ZJREUoX19fQ1RPUl9MSVNUX18gPSAuKTsKICAgICAgIFBST1ZJREUoX19DVE9SX0xJU1RfXyA9IC4pOwogICAgICAgTE9ORyAoLTEpOwogICAgICAgS0VFUCgqKC5jdG9ycykpOwogICAgICAgS0VFUCgqKC5jdG9yKSk7CiAgICAgICBLRUVQKCooU09SVF9CWV9OQU1FKC5jdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7CiAgICAgICBQUk9WSURFKF9fX0RUT1JfTElTVF9fID0gLik7CiAgICAgICBQUk9WSURFKF9fRFRPUl9MSVNUX18gPSAuKTsKICAgICAgIExPTkcgKC0xKTsKICAgICAgIEtFRVAoKiguZHRvcnMpKTsKICAgICAgIEtFRVAoKiguZHRvcikpOwogICAgICAgS0VFUCgqKFNPUlRfQllfTkFNRSguZHRvcnMuKikpKTsKICAgICAgIExPTkcgKDApOwogICAgIEtFRVAgKCooLmZpbmkpKQogICAgLyogPz8/IFdoeSBpcyAuZ2NjX2V4YyBoZXJlPyAgKi8KICAgICAqKC5nY2NfZXhjKQogICAgUFJPVklERSAoZXRleHQgPSAuKTsKICAgIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogICAgIEtFRVAgKCooLmdjY19leGNlcHRfdGFibGUpKQogIH0KICAvKiBUaGUgQ3lnd2luMzIgbGlicmFyeSB1c2VzIGEgc2VjdGlvbiB0byBhdm9pZCBjb3B5aW5nIGNlcnRhaW4gZGF0YQogICAgIG9uIGZvcmsuICBUaGlzIHVzZWQgdG8gYmUgbmFtZWQgIi5kYXRhIi4gIFRoZSBsaW5rZXIgdXNlZAogICAgIHRvIGluY2x1ZGUgdGhpcyBiZXR3ZWVuIF9fZGF0YV9zdGFydF9fIGFuZCBfX2RhdGFfZW5kX18sIGJ1dCB0aGF0CiAgICAgYnJlYWtzIGJ1aWxkaW5nIHRoZSBjeWd3aW4zMiBkbGwuICBJbnN0ZWFkLCB3ZSBuYW1lIHRoZSBzZWN0aW9uCiAgICAgIi5kYXRhX2N5Z3dpbl9ub2NvcHkiIGFuZCBleHBsaWNpdGx5IGluY2x1ZGUgaXQgYWZ0ZXIgX19kYXRhX2VuZF9fLiAqLwogIC5kYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fZGF0YV9zdGFydF9fID0gLiA7CiAgICAqKC5kYXRhKQogICAgKiguZGF0YTIpCiAgICAqKFNPUlQoLmRhdGEkKikpCiAgICBLRUVQKCooLmpjcikpCiAgICBfX2RhdGFfZW5kX18gPSAuIDsKICAgICooLmRhdGFfY3lnd2luX25vY29weSkKICB9CiAgLnJkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLnJkYXRhKQoJICAgICAqKFNPUlQoLnJkYXRhJCopKQogICAgX19ydF9wc3JlbG9jc19zdGFydCA9IC47CiAgICBLRUVQKCooLnJkYXRhX3J1bnRpbWVfcHNldWRvX3JlbG9jKSkKICAgIF9fcnRfcHNyZWxvY3NfZW5kID0gLjsKICB9CiAgX19ydF9wc3JlbG9jc19zaXplID0gX19ydF9wc3JlbG9jc19lbmQgLSBfX3J0X3BzcmVsb2NzX3N0YXJ0OwogIF9fX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfRU5EX18gPSAuOwogIF9fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9FTkRfXyA9IC47CiAgX19fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9fID0gLiAtIF9fcnRfcHNyZWxvY3Nfc2l6ZTsKICBfX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfXyA9IC4gLSBfX3J0X3BzcmVsb2NzX3NpemU7CiAgLmVoX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAoKiguZWhfZnJhbWUqKSkKICB9CiAgLnBkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAoKigucGRhdGEqKSkKICB9CiAgLmJzcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX2Jzc19zdGFydF9fID0gLiA7CiAgICAqKC5ic3MpCiAgICAqKENPTU1PTikKICAgIF9fYnNzX2VuZF9fID0gLiA7CiAgfQogIC5lZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAqKC5lZGF0YSkKICB9CiAgL0RJU0NBUkQvIDoKICB7CiAgICAqKC5kZWJ1ZyRTKQogICAgKiguZGVidWckVCkKICAgICooLmRlYnVnJEYpCiAgICAqKC5kcmVjdHZlKQogICAgICooLm5vdGUuR05VLXN0YWNrKQogICAgICooLmdudS5sdG9fKikKICAgICAqKC5nbnVfb2JqZWN0X29ubHkpCiAgfQogIC5pZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAvKiBUaGlzIGNhbm5vdCBjdXJyZW50bHkgYmUgaGFuZGxlZCB3aXRoIGdyb3VwZWQgc2VjdGlvbnMuCglTZWUgcGUuZW06c29ydF9zZWN0aW9ucy4gICovCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQyKSkKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDMpKQogICAgLyogVGhlc2UgemVyb2VzIG1hcmsgdGhlIGVuZCBvZiB0aGUgaW1wb3J0IGxpc3QuICAqLwogICAgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNCkpCiAgICBfX0lBVF9zdGFydF9fID0gLjsKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDUpKQogICAgX19JQVRfZW5kX18gPSAuOwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNikpCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ3KSkKICB9CiAgLkNSVCBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX19jcnRfeGNfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEMqKSkpICAvKiBDIGluaXRpYWxpemF0aW9uICovCiAgICBfX19jcnRfeGNfZW5kX18gPSAuIDsKICAgIF9fX2NydF94aV9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYSSopKSkgIC8qIEMrKyBpbml0aWFsaXphdGlvbiAqLwogICAgX19fY3J0X3hpX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeGxfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEwqKSkpICAvKiBUTFMgY2FsbGJhY2tzICovCiAgICAvKiBfX19jcnRfeGxfZW5kX18gaXMgZGVmaW5lZCBpbiB0aGUgVExTIERpcmVjdG9yeSBzdXBwb3J0IGNvZGUgKi8KICAgIF9fX2NydF94cF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYUCopKSkgIC8qIFByZS10ZXJtaW5hdGlvbiAqLwogICAgX19fY3J0X3hwX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeHRfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWFQqKSkpICAvKiBUZXJtaW5hdGlvbiAqLwogICAgX19fY3J0X3h0X2VuZF9fID0gLiA7CiAgfQogIC8qIFdpbmRvd3MgVExTIGV4cGVjdHMgLnRscyRBQUEgdG8gYmUgYXQgdGhlIHN0YXJ0IGFuZCAudGxzJFpaWiB0byBiZQogICAgIGF0IHRoZSBlbmQgb2Ygc2VjdGlvbi4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgX3Rsc19zdGFydCBNVVNUCiAgICAgYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VjdGlvbiB0byBlbmFibGUgU0VDUkVMMzIgcmVsb2NhdGlvbnMgd2l0aCBUTFMKICAgICBkYXRhLiAgKi8KICAudGxzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fX3Rsc19zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKC50bHMkQUFBKSkKICAgIEtFRVAgKCooLnRscykpCiAgICBLRUVQICgqKC50bHMkKSkKICAgIEtFRVAgKCooU09SVCgudGxzJCopKSkKICAgIEtFRVAgKCooLnRscyRaWlopKQogICAgX19fdGxzX2VuZF9fID0gLiA7CiAgfQogIC5lbmRqdW5rIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIC8qIGVuZCBpcyBkZXByZWNhdGVkLCBkb24ndCB1c2UgaXQgKi8KICAgIFBST1ZJREUgKGVuZCA9IC4pOwogICAgUFJPVklERSAoIF9lbmQgPSAuKTsKICAgICBfX2VuZF9fID0gLjsKICB9CiAgLnJzcmMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6IFNVQkFMSUdOKDQpCiAgewogICAgS0VFUCAoKigucnNyYykpCiAgICBLRUVQICgqKC5yc3JjJCopKQogIH0KICAucmVsb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKigucmVsb2MpCiAgfQogIC5zdGFiIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnN0YWIpCiAgfQogIC5zdGFic3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnN0YWJzdHIpCiAgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uLiAgVW5saWtlIG90aGVyIHRhcmdldHMgdGhhdCBmYWtlIHRoaXMgYnkgcHV0dGluZyB0aGUKICAgICBzZWN0aW9uIFZNQSBhdCAwLCB0aGUgUEUgZm9ybWF0IHdpbGwgbm90IGFsbG93IGl0LiAgKi8KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2FyYW5nZXMpCiAgfQogIC56ZGVidWdfYXJhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfYXJhbmdlcykKICB9CiAgLmRlYnVnX3B1Ym5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3B1Ym5hbWVzKQogIH0KICAuemRlYnVnX3B1Ym5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19wdWJuYW1lcykKICB9CiAgLmRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3B1YnR5cGVzKQogIH0KICAuemRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19wdWJ0eXBlcykKICB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopCiAgfQogIC56ZGVidWdfaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfaW5mbyAuemRlYnVnLmdudS5saW5rb25jZS53aS4qKQogIH0KICAuZGVidWdfYWJicmV2IEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2FiYnJldikKICB9CiAgLnpkZWJ1Z19hYmJyZXYgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2FiYnJldikKICB9CiAgLmRlYnVnX2xpbmUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbGluZSkKICB9CiAgLnpkZWJ1Z19saW5lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19saW5lKQogIH0KICAuZGVidWdfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZnJhbWUqKQogIH0KICAuemRlYnVnX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19mcmFtZSopCiAgfQogIC5kZWJ1Z19zdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfc3RyKQogIH0KICAuemRlYnVnX3N0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfc3RyKQogIH0KICAuZGVidWdfbG9jIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2xvYykKICB9CiAgLnpkZWJ1Z19sb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2xvYykKICB9CiAgLmRlYnVnX21hY2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbWFjaW5mbykKICB9CiAgLnpkZWJ1Z19tYWNpbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19tYWNpbmZvKQogIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfd2Vha25hbWVzKQogIH0KICAuemRlYnVnX3dlYWtuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfd2Vha25hbWVzKQogIH0KICAuZGVidWdfZnVuY25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2Z1bmNuYW1lcykKICB9CiAgLnpkZWJ1Z19mdW5jbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2Z1bmNuYW1lcykKICB9CiAgLmRlYnVnX3R5cGVuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlbmFtZXMpCiAgfQogIC56ZGVidWdfdHlwZW5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z190eXBlbmFtZXMpCiAgfQogIC5kZWJ1Z192YXJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z192YXJuYW1lcykKICB9CiAgLnpkZWJ1Z192YXJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfdmFybmFtZXMpCiAgfQogIC5kZWJ1Z19tYWNybyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNybykKICB9CiAgLnpkZWJ1Z19tYWNybyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbWFjcm8pCiAgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19yYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcmFuZ2VzKQogIH0KICAuemRlYnVnX3JhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfcmFuZ2VzKQogIH0KICAvKiBEV0FSRiA0LiAgKi8KICAuZGVidWdfdHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfdHlwZXMgLmdudS5saW5rb25jZS53dC4qKQogIH0KICAuemRlYnVnX3R5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z190eXBlcyAuZ251LmxpbmtvbmNlLnd0LiopCiAgfQogIC8qIEZvciBHbyBhbmQgUnVzdC4gICovCiAgLmRlYnVnX2dkYl9zY3JpcHRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2dkYl9zY3JpcHRzKQogIH0KICAuemRlYnVnX2dkYl9zY3JpcHRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19nZGJfc2NyaXB0cykKICB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLW46IG1peCB0ZXh0IGFuZCBkYXRhIG9uIHNhbWUgcGFnZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVChwZWktaTM4NikKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXBlcC9saWIiKTsKU0VDVElPTlMKewogIC8qIE1ha2UgdGhlIHZpcnR1YWwgYWRkcmVzcyBhbmQgZmlsZSBvZmZzZXQgc3luY2VkIGlmIHRoZSBhbGlnbm1lbnQgaXMKICAgICBsb3dlciB0aGFuIHRoZSB0YXJnZXQgcGFnZSBzaXplLiAqLwogIC4gPSBTSVpFT0ZfSEVBREVSUzsKICAuID0gQUxJR04oX19zZWN0aW9uX2FsaWdubWVudF9fKTsKICAudGV4dCAgX19pbWFnZV9iYXNlX18gKyAoIF9fc2VjdGlvbl9hbGlnbm1lbnRfXyA8IDB4MTAwMCA/IC4gOiBfX3NlY3Rpb25fYWxpZ25tZW50X18gKSA6CiAgewogICAgIEtFRVAoKiguaW5pdCkpCiAgICAqKC50ZXh0KQogICAgKihTT1JUKC50ZXh0JCopKQogICAgICooLnRleHQuKikKICAgICAqKC5nbnUubGlua29uY2UudC4qKQogICAgKiguZ2x1ZV83dCkKICAgICooLmdsdWVfNykKICAgICAgIFBST1ZJREUoX19fQ1RPUl9MSVNUX18gPSAuKTsKICAgICAgIFBST1ZJREUoX19DVE9SX0xJU1RfXyA9IC4pOwogICAgICAgTE9ORyAoLTEpOwogICAgICAgS0VFUCgqKC5jdG9ycykpOwogICAgICAgS0VFUCgqKC5jdG9yKSk7CiAgICAgICBLRUVQKCooU09SVF9CWV9OQU1FKC5jdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7CiAgICAgICBQUk9WSURFKF9fX0RUT1JfTElTVF9fID0gLik7CiAgICAgICBQUk9WSURFKF9fRFRPUl9MSVNUX18gPSAuKTsKICAgICAgIExPTkcgKC0xKTsKICAgICAgIEtFRVAoKiguZHRvcnMpKTsKICAgICAgIEtFRVAoKiguZHRvcikpOwogICAgICAgS0VFUCgqKFNPUlRfQllfTkFNRSguZHRvcnMuKikpKTsKICAgICAgIExPTkcgKDApOwogICAgIEtFRVAgKCooLmZpbmkpKQogICAgLyogPz8/IFdoeSBpcyAuZ2NjX2V4YyBoZXJlPyAgKi8KICAgICAqKC5nY2NfZXhjKQogICAgUFJPVklERSAoZXRleHQgPSAuKTsKICAgIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogICAgIEtFRVAgKCooLmdjY19leGNlcHRfdGFibGUpKQogIH0KICAvKiBUaGUgQ3lnd2luMzIgbGlicmFyeSB1c2VzIGEgc2VjdGlvbiB0byBhdm9pZCBjb3B5aW5nIGNlcnRhaW4gZGF0YQogICAgIG9uIGZvcmsuICBUaGlzIHVzZWQgdG8gYmUgbmFtZWQgIi5kYXRhIi4gIFRoZSBsaW5rZXIgdXNlZAogICAgIHRvIGluY2x1ZGUgdGhpcyBiZXR3ZWVuIF9fZGF0YV9zdGFydF9fIGFuZCBfX2RhdGFfZW5kX18sIGJ1dCB0aGF0CiAgICAgYnJlYWtzIGJ1aWxkaW5nIHRoZSBjeWd3aW4zMiBkbGwuICBJbnN0ZWFkLCB3ZSBuYW1lIHRoZSBzZWN0aW9uCiAgICAgIi5kYXRhX2N5Z3dpbl9ub2NvcHkiIGFuZCBleHBsaWNpdGx5IGluY2x1ZGUgaXQgYWZ0ZXIgX19kYXRhX2VuZF9fLiAqLwogIC5kYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fZGF0YV9zdGFydF9fID0gLiA7CiAgICAqKC5kYXRhKQogICAgKiguZGF0YTIpCiAgICAqKFNPUlQoLmRhdGEkKikpCiAgICBLRUVQKCooLmpjcikpCiAgICBfX2RhdGFfZW5kX18gPSAuIDsKICAgICooLmRhdGFfY3lnd2luX25vY29weSkKICB9CiAgLnJkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLnJkYXRhKQoJICAgICAqKFNPUlQoLnJkYXRhJCopKQogICAgX19ydF9wc3JlbG9jc19zdGFydCA9IC47CiAgICBLRUVQKCooLnJkYXRhX3J1bnRpbWVfcHNldWRvX3JlbG9jKSkKICAgIF9fcnRfcHNyZWxvY3NfZW5kID0gLjsKICB9CiAgX19ydF9wc3JlbG9jc19zaXplID0gX19ydF9wc3JlbG9jc19lbmQgLSBfX3J0X3BzcmVsb2NzX3N0YXJ0OwogIF9fX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfRU5EX18gPSAuOwogIF9fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9FTkRfXyA9IC47CiAgX19fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9fID0gLiAtIF9fcnRfcHNyZWxvY3Nfc2l6ZTsKICBfX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfXyA9IC4gLSBfX3J0X3BzcmVsb2NzX3NpemU7CiAgLmVoX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAoKiguZWhfZnJhbWUqKSkKICB9CiAgLnBkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAoKigucGRhdGEqKSkKICB9CiAgLmJzcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX2Jzc19zdGFydF9fID0gLiA7CiAgICAqKC5ic3MpCiAgICAqKENPTU1PTikKICAgIF9fYnNzX2VuZF9fID0gLiA7CiAgfQogIC5lZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAqKC5lZGF0YSkKICB9CiAgL0RJU0NBUkQvIDoKICB7CiAgICAqKC5kZWJ1ZyRTKQogICAgKiguZGVidWckVCkKICAgICooLmRlYnVnJEYpCiAgICAqKC5kcmVjdHZlKQogICAgICooLm5vdGUuR05VLXN0YWNrKQogICAgICooLmdudS5sdG9fKikKICAgICAqKC5nbnVfb2JqZWN0X29ubHkpCiAgfQogIC5pZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAvKiBUaGlzIGNhbm5vdCBjdXJyZW50bHkgYmUgaGFuZGxlZCB3aXRoIGdyb3VwZWQgc2VjdGlvbnMuCglTZWUgcGUuZW06c29ydF9zZWN0aW9ucy4gICovCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQyKSkKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDMpKQogICAgLyogVGhlc2UgemVyb2VzIG1hcmsgdGhlIGVuZCBvZiB0aGUgaW1wb3J0IGxpc3QuICAqLwogICAgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNCkpCiAgICBfX0lBVF9zdGFydF9fID0gLjsKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDUpKQogICAgX19JQVRfZW5kX18gPSAuOwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNikpCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ3KSkKICB9CiAgLkNSVCBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX19jcnRfeGNfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEMqKSkpICAvKiBDIGluaXRpYWxpemF0aW9uICovCiAgICBfX19jcnRfeGNfZW5kX18gPSAuIDsKICAgIF9fX2NydF94aV9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYSSopKSkgIC8qIEMrKyBpbml0aWFsaXphdGlvbiAqLwogICAgX19fY3J0X3hpX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeGxfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEwqKSkpICAvKiBUTFMgY2FsbGJhY2tzICovCiAgICAvKiBfX19jcnRfeGxfZW5kX18gaXMgZGVmaW5lZCBpbiB0aGUgVExTIERpcmVjdG9yeSBzdXBwb3J0IGNvZGUgKi8KICAgIF9fX2NydF94cF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYUCopKSkgIC8qIFByZS10ZXJtaW5hdGlvbiAqLwogICAgX19fY3J0X3hwX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeHRfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWFQqKSkpICAvKiBUZXJtaW5hdGlvbiAqLwogICAgX19fY3J0X3h0X2VuZF9fID0gLiA7CiAgfQogIC8qIFdpbmRvd3MgVExTIGV4cGVjdHMgLnRscyRBQUEgdG8gYmUgYXQgdGhlIHN0YXJ0IGFuZCAudGxzJFpaWiB0byBiZQogICAgIGF0IHRoZSBlbmQgb2Ygc2VjdGlvbi4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgX3Rsc19zdGFydCBNVVNUCiAgICAgYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VjdGlvbiB0byBlbmFibGUgU0VDUkVMMzIgcmVsb2NhdGlvbnMgd2l0aCBUTFMKICAgICBkYXRhLiAgKi8KICAudGxzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fX3Rsc19zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKC50bHMkQUFBKSkKICAgIEtFRVAgKCooLnRscykpCiAgICBLRUVQICgqKC50bHMkKSkKICAgIEtFRVAgKCooU09SVCgudGxzJCopKSkKICAgIEtFRVAgKCooLnRscyRaWlopKQogICAgX19fdGxzX2VuZF9fID0gLiA7CiAgfQogIC5lbmRqdW5rIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIC8qIGVuZCBpcyBkZXByZWNhdGVkLCBkb24ndCB1c2UgaXQgKi8KICAgIFBST1ZJREUgKGVuZCA9IC4pOwogICAgUFJPVklERSAoIF9lbmQgPSAuKTsKICAgICBfX2VuZF9fID0gLjsKICB9CiAgLnJzcmMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6IFNVQkFMSUdOKDQpCiAgewogICAgS0VFUCAoKigucnNyYykpCiAgICBLRUVQICgqKC5yc3JjJCopKQogIH0KICAucmVsb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKigucmVsb2MpCiAgfQogIC5zdGFiIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnN0YWIpCiAgfQogIC5zdGFic3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnN0YWJzdHIpCiAgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uLiAgVW5saWtlIG90aGVyIHRhcmdldHMgdGhhdCBmYWtlIHRoaXMgYnkgcHV0dGluZyB0aGUKICAgICBzZWN0aW9uIFZNQSBhdCAwLCB0aGUgUEUgZm9ybWF0IHdpbGwgbm90IGFsbG93IGl0LiAgKi8KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2FyYW5nZXMpCiAgfQogIC56ZGVidWdfYXJhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfYXJhbmdlcykKICB9CiAgLmRlYnVnX3B1Ym5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3B1Ym5hbWVzKQogIH0KICAuemRlYnVnX3B1Ym5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19wdWJuYW1lcykKICB9CiAgLmRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3B1YnR5cGVzKQogIH0KICAuemRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19wdWJ0eXBlcykKICB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopCiAgfQogIC56ZGVidWdfaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfaW5mbyAuemRlYnVnLmdudS5saW5rb25jZS53aS4qKQogIH0KICAuZGVidWdfYWJicmV2IEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2FiYnJldikKICB9CiAgLnpkZWJ1Z19hYmJyZXYgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2FiYnJldikKICB9CiAgLmRlYnVnX2xpbmUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbGluZSkKICB9CiAgLnpkZWJ1Z19saW5lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19saW5lKQogIH0KICAuZGVidWdfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZnJhbWUqKQogIH0KICAuemRlYnVnX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19mcmFtZSopCiAgfQogIC5kZWJ1Z19zdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfc3RyKQogIH0KICAuemRlYnVnX3N0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfc3RyKQogIH0KICAuZGVidWdfbG9jIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2xvYykKICB9CiAgLnpkZWJ1Z19sb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2xvYykKICB9CiAgLmRlYnVnX21hY2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbWFjaW5mbykKICB9CiAgLnpkZWJ1Z19tYWNpbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19tYWNpbmZvKQogIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfd2Vha25hbWVzKQogIH0KICAuemRlYnVnX3dlYWtuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfd2Vha25hbWVzKQogIH0KICAuZGVidWdfZnVuY25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2Z1bmNuYW1lcykKICB9CiAgLnpkZWJ1Z19mdW5jbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2Z1bmNuYW1lcykKICB9CiAgLmRlYnVnX3R5cGVuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlbmFtZXMpCiAgfQogIC56ZGVidWdfdHlwZW5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z190eXBlbmFtZXMpCiAgfQogIC5kZWJ1Z192YXJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z192YXJuYW1lcykKICB9CiAgLnpkZWJ1Z192YXJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfdmFybmFtZXMpCiAgfQogIC5kZWJ1Z19tYWNybyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNybykKICB9CiAgLnpkZWJ1Z19tYWNybyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbWFjcm8pCiAgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19yYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcmFuZ2VzKQogIH0KICAuemRlYnVnX3JhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfcmFuZ2VzKQogIH0KICAvKiBEV0FSRiA0LiAgKi8KICAuZGVidWdfdHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfdHlwZXMgLmdudS5saW5rb25jZS53dC4qKQogIH0KICAuemRlYnVnX3R5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z190eXBlcyAuZ251LmxpbmtvbmNlLnd0LiopCiAgfQogIC8qIEZvciBHbyBhbmQgUnVzdC4gICovCiAgLmRlYnVnX2dkYl9zY3JpcHRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2dkYl9zY3JpcHRzKQogIH0KICAuemRlYnVnX2dkYl9zY3JpcHRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19nZGJfc2NyaXB0cykKICB9Cn0KCgAAAAAALyogRGVmYXVsdCBsaW5rZXIgc2NyaXB0LCBmb3Igbm9ybWFsIGV4ZWN1dGFibGVzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKHBlaS1pMzg2KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcGVwL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogTWFrZSB0aGUgdmlydHVhbCBhZGRyZXNzIGFuZCBmaWxlIG9mZnNldCBzeW5jZWQgaWYgdGhlIGFsaWdubWVudCBpcwogICAgIGxvd2VyIHRoYW4gdGhlIHRhcmdldCBwYWdlIHNpemUuICovCiAgLiA9IFNJWkVPRl9IRUFERVJTOwogIC4gPSBBTElHTihfX3NlY3Rpb25fYWxpZ25tZW50X18pOwogIC50ZXh0ICBfX2ltYWdlX2Jhc2VfXyArICggX19zZWN0aW9uX2FsaWdubWVudF9fIDwgMHgxMDAwID8gLiA6IF9fc2VjdGlvbl9hbGlnbm1lbnRfXyApIDoKICB7CiAgICAgS0VFUCgqKC5pbml0KSkKICAgICooLnRleHQpCiAgICAqKFNPUlQoLnRleHQkKikpCiAgICAgKigudGV4dC4qKQogICAgICooLmdudS5saW5rb25jZS50LiopCiAgICAqKC5nbHVlXzd0KQogICAgKiguZ2x1ZV83KQogICAgICAgUFJPVklERShfX19DVE9SX0xJU1RfXyA9IC4pOwogICAgICAgUFJPVklERShfX0NUT1JfTElTVF9fID0gLik7CiAgICAgICBMT05HICgtMSk7CiAgICAgICBLRUVQKCooLmN0b3JzKSk7CiAgICAgICBLRUVQKCooLmN0b3IpKTsKICAgICAgIEtFRVAoKihTT1JUX0JZX05BTUUoLmN0b3JzLiopKSk7CiAgICAgICBMT05HICgwKTsKICAgICAgIFBST1ZJREUoX19fRFRPUl9MSVNUX18gPSAuKTsKICAgICAgIFBST1ZJREUoX19EVE9SX0xJU1RfXyA9IC4pOwogICAgICAgTE9ORyAoLTEpOwogICAgICAgS0VFUCgqKC5kdG9ycykpOwogICAgICAgS0VFUCgqKC5kdG9yKSk7CiAgICAgICBLRUVQKCooU09SVF9CWV9OQU1FKC5kdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7CiAgICAgS0VFUCAoKiguZmluaSkpCiAgICAvKiA/Pz8gV2h5IGlzIC5nY2NfZXhjIGhlcmU/ICAqLwogICAgICooLmdjY19leGMpCiAgICBQUk9WSURFIChldGV4dCA9IC4pOwogICAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgICAgS0VFUCAoKiguZ2NjX2V4Y2VwdF90YWJsZSkpCiAgfQogIC8qIFRoZSBDeWd3aW4zMiBsaWJyYXJ5IHVzZXMgYSBzZWN0aW9uIHRvIGF2b2lkIGNvcHlpbmcgY2VydGFpbiBkYXRhCiAgICAgb24gZm9yay4gIFRoaXMgdXNlZCB0byBiZSBuYW1lZCAiLmRhdGEiLiAgVGhlIGxpbmtlciB1c2VkCiAgICAgdG8gaW5jbHVkZSB0aGlzIGJldHdlZW4gX19kYXRhX3N0YXJ0X18gYW5kIF9fZGF0YV9lbmRfXywgYnV0IHRoYXQKICAgICBicmVha3MgYnVpbGRpbmcgdGhlIGN5Z3dpbjMyIGRsbC4gIEluc3RlYWQsIHdlIG5hbWUgdGhlIHNlY3Rpb24KICAgICAiLmRhdGFfY3lnd2luX25vY29weSIgYW5kIGV4cGxpY2l0bHkgaW5jbHVkZSBpdCBhZnRlciBfX2RhdGFfZW5kX18uICovCiAgLmRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19kYXRhX3N0YXJ0X18gPSAuIDsKICAgICooLmRhdGEpCiAgICAqKC5kYXRhMikKICAgICooU09SVCguZGF0YSQqKSkKICAgIEtFRVAoKiguamNyKSkKICAgIF9fZGF0YV9lbmRfXyA9IC4gOwogICAgKiguZGF0YV9jeWd3aW5fbm9jb3B5KQogIH0KICAucmRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKigucmRhdGEpCgkgICAgICooU09SVCgucmRhdGEkKikpCiAgICBfX3J0X3BzcmVsb2NzX3N0YXJ0ID0gLjsKICAgIEtFRVAoKigucmRhdGFfcnVudGltZV9wc2V1ZG9fcmVsb2MpKQogICAgX19ydF9wc3JlbG9jc19lbmQgPSAuOwogIH0KICBfX3J0X3BzcmVsb2NzX3NpemUgPSBfX3J0X3BzcmVsb2NzX2VuZCAtIF9fcnRfcHNyZWxvY3Nfc3RhcnQ7CiAgX19fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9FTkRfXyA9IC47CiAgX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX0VORF9fID0gLjsKICBfX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX18gPSAuIC0gX19ydF9wc3JlbG9jc19zaXplOwogIF9fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9fID0gLiAtIF9fcnRfcHNyZWxvY3Nfc2l6ZTsKICAuZWhfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgS0VFUCgqKC5laF9mcmFtZSopKQogIH0KICAucGRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgS0VFUCgqKC5wZGF0YSopKQogIH0KICAuYnNzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fYnNzX3N0YXJ0X18gPSAuIDsKICAgICooLmJzcykKICAgICooQ09NTU9OKQogICAgX19ic3NfZW5kX18gPSAuIDsKICB9CiAgLmVkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLmVkYXRhKQogIH0KICAvRElTQ0FSRC8gOgogIHsKICAgICooLmRlYnVnJFMpCiAgICAqKC5kZWJ1ZyRUKQogICAgKiguZGVidWckRikKICAgICooLmRyZWN0dmUpCiAgICAgKigubm90ZS5HTlUtc3RhY2spCiAgICAgKiguZ251Lmx0b18qKQogICAgICooLmdudV9vYmplY3Rfb25seSkKICB9CiAgLmlkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIC8qIFRoaXMgY2Fubm90IGN1cnJlbnRseSBiZSBoYW5kbGVkIHdpdGggZ3JvdXBlZCBzZWN0aW9ucy4KCVNlZSBwZS5lbTpzb3J0X3NlY3Rpb25zLiAgKi8KICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDIpKQogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkMykpCiAgICAvKiBUaGVzZSB6ZXJvZXMgbWFyayB0aGUgZW5kIG9mIHRoZSBpbXBvcnQgbGlzdC4gICovCiAgICBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7CiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ0KSkKICAgIF9fSUFUX3N0YXJ0X18gPSAuOwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNSkpCiAgICBfX0lBVF9lbmRfXyA9IC47CiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ2KSkKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDcpKQogIH0KICAuQ1JUIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fX2NydF94Y19zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYQyopKSkgIC8qIEMgaW5pdGlhbGl6YXRpb24gKi8KICAgIF9fX2NydF94Y19lbmRfXyA9IC4gOwogICAgX19fY3J0X3hpX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhJKikpKSAgLyogQysrIGluaXRpYWxpemF0aW9uICovCiAgICBfX19jcnRfeGlfZW5kX18gPSAuIDsKICAgIF9fX2NydF94bF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYTCopKSkgIC8qIFRMUyBjYWxsYmFja3MgKi8KICAgIC8qIF9fX2NydF94bF9lbmRfXyBpcyBkZWZpbmVkIGluIHRoZSBUTFMgRGlyZWN0b3J5IHN1cHBvcnQgY29kZSAqLwogICAgX19fY3J0X3hwX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhQKikpKSAgLyogUHJlLXRlcm1pbmF0aW9uICovCiAgICBfX19jcnRfeHBfZW5kX18gPSAuIDsKICAgIF9fX2NydF94dF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYVCopKSkgIC8qIFRlcm1pbmF0aW9uICovCiAgICBfX19jcnRfeHRfZW5kX18gPSAuIDsKICB9CiAgLyogV2luZG93cyBUTFMgZXhwZWN0cyAudGxzJEFBQSB0byBiZSBhdCB0aGUgc3RhcnQgYW5kIC50bHMkWlpaIHRvIGJlCiAgICAgYXQgdGhlIGVuZCBvZiBzZWN0aW9uLiAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBfdGxzX3N0YXJ0IE1VU1QKICAgICBiZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWN0aW9uIHRvIGVuYWJsZSBTRUNSRUwzMiByZWxvY2F0aW9ucyB3aXRoIFRMUwogICAgIGRhdGEuICAqLwogIC50bHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19fdGxzX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooLnRscyRBQUEpKQogICAgS0VFUCAoKigudGxzKSkKICAgIEtFRVAgKCooLnRscyQpKQogICAgS0VFUCAoKihTT1JUKC50bHMkKikpKQogICAgS0VFUCAoKigudGxzJFpaWikpCiAgICBfX190bHNfZW5kX18gPSAuIDsKICB9CiAgLmVuZGp1bmsgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgLyogZW5kIGlzIGRlcHJlY2F0ZWQsIGRvbid0IHVzZSBpdCAqLwogICAgUFJPVklERSAoZW5kID0gLik7CiAgICBQUk9WSURFICggX2VuZCA9IC4pOwogICAgIF9fZW5kX18gPSAuOwogIH0KICAucnNyYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDogU1VCQUxJR04oNCkKICB7CiAgICBLRUVQICgqKC5yc3JjKSkKICAgIEtFRVAgKCooLnJzcmMkKikpCiAgfQogIC5yZWxvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAqKC5yZWxvYykKICB9CiAgLnN0YWIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguc3RhYikKICB9CiAgLnN0YWJzdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguc3RhYnN0cikKICB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24uICBVbmxpa2Ugb3RoZXIgdGFyZ2V0cyB0aGF0IGZha2UgdGhpcyBieSBwdXR0aW5nIHRoZQogICAgIHNlY3Rpb24gVk1BIGF0IDAsIHRoZSBQRSBmb3JtYXQgd2lsbCBub3QgYWxsb3cgaXQuICAqLwogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfYXJhbmdlcykKICB9CiAgLnpkZWJ1Z19hcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19hcmFuZ2VzKQogIH0KICAuZGVidWdfcHVibmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcHVibmFtZXMpCiAgfQogIC56ZGVidWdfcHVibmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3B1Ym5hbWVzKQogIH0KICAuZGVidWdfcHVidHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcHVidHlwZXMpCiAgfQogIC56ZGVidWdfcHVidHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3B1YnR5cGVzKQogIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikKICB9CiAgLnpkZWJ1Z19pbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19pbmZvIC56ZGVidWcuZ251LmxpbmtvbmNlLndpLiopCiAgfQogIC5kZWJ1Z19hYmJyZXYgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfYWJicmV2KQogIH0KICAuemRlYnVnX2FiYnJldiBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfYWJicmV2KQogIH0KICAuZGVidWdfbGluZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19saW5lKQogIH0KICAuemRlYnVnX2xpbmUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2xpbmUpCiAgfQogIC5kZWJ1Z19mcmFtZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19mcmFtZSopCiAgfQogIC56ZGVidWdfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2ZyYW1lKikKICB9CiAgLmRlYnVnX3N0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19zdHIpCiAgfQogIC56ZGVidWdfc3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19zdHIpCiAgfQogIC5kZWJ1Z19sb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbG9jKQogIH0KICAuemRlYnVnX2xvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbG9jKQogIH0KICAuZGVidWdfbWFjaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNpbmZvKQogIH0KICAuemRlYnVnX21hY2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX21hY2luZm8pCiAgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC56ZGVidWdfd2Vha25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC5kZWJ1Z19mdW5jbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZnVuY25hbWVzKQogIH0KICAuemRlYnVnX2Z1bmNuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfZnVuY25hbWVzKQogIH0KICAuZGVidWdfdHlwZW5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3R5cGVuYW1lcykKICB9CiAgLnpkZWJ1Z190eXBlbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVuYW1lcykKICB9CiAgLmRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3Zhcm5hbWVzKQogIH0KICAuemRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z192YXJuYW1lcykKICB9CiAgLmRlYnVnX21hY3JvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX21hY3JvKQogIH0KICAuemRlYnVnX21hY3JvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19tYWNybykKICB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3JhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19yYW5nZXMpCiAgfQogIC56ZGVidWdfcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19yYW5nZXMpCiAgfQogIC8qIERXQVJGIDQuICAqLwogIC5kZWJ1Z190eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlcyAuZ251LmxpbmtvbmNlLnd0LiopCiAgfQogIC56ZGVidWdfdHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVzIC5nbnUubGlua29uY2Uud3QuKikKICB9CiAgLyogRm9yIEdvIGFuZCBSdXN0LiAgKi8KICAuZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZ2RiX3NjcmlwdHMpCiAgfQogIC56ZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2dkYl9zY3JpcHRzKQogIH0KfQoKAAAAAAAvKiBTY3JpcHQgZm9yIGxkIC0tZW5hYmxlLWF1dG8taW1wb3J0OiBMaWtlIHRoZSBkZWZhdWx0IHNjcmlwdCBleGNlcHQgcmVhZCBvbmx5IGRhdGEgaXMgcGxhY2VkIGludG8gLmRhdGEgICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKHBlaS1pMzg2KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcGVwL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogTWFrZSB0aGUgdmlydHVhbCBhZGRyZXNzIGFuZCBmaWxlIG9mZnNldCBzeW5jZWQgaWYgdGhlIGFsaWdubWVudCBpcwogICAgIGxvd2VyIHRoYW4gdGhlIHRhcmdldCBwYWdlIHNpemUuICovCiAgLiA9IFNJWkVPRl9IRUFERVJTOwogIC4gPSBBTElHTihfX3NlY3Rpb25fYWxpZ25tZW50X18pOwogIC50ZXh0ICBfX2ltYWdlX2Jhc2VfXyArICggX19zZWN0aW9uX2FsaWdubWVudF9fIDwgMHgxMDAwID8gLiA6IF9fc2VjdGlvbl9hbGlnbm1lbnRfXyApIDoKICB7CiAgICAgS0VFUCgqKC5pbml0KSkKICAgICooLnRleHQpCiAgICAqKFNPUlQoLnRleHQkKikpCiAgICAgKigudGV4dC4qKQogICAgICooLmdudS5saW5rb25jZS50LiopCiAgICAqKC5nbHVlXzd0KQogICAgKiguZ2x1ZV83KQogICAgICAgUFJPVklERShfX19DVE9SX0xJU1RfXyA9IC4pOwogICAgICAgUFJPVklERShfX0NUT1JfTElTVF9fID0gLik7CiAgICAgICBMT05HICgtMSk7CiAgICAgICBLRUVQKCooLmN0b3JzKSk7CiAgICAgICBLRUVQKCooLmN0b3IpKTsKICAgICAgIEtFRVAoKihTT1JUX0JZX05BTUUoLmN0b3JzLiopKSk7CiAgICAgICBMT05HICgwKTsKICAgICAgIFBST1ZJREUoX19fRFRPUl9MSVNUX18gPSAuKTsKICAgICAgIFBST1ZJREUoX19EVE9SX0xJU1RfXyA9IC4pOwogICAgICAgTE9ORyAoLTEpOwogICAgICAgS0VFUCgqKC5kdG9ycykpOwogICAgICAgS0VFUCgqKC5kdG9yKSk7CiAgICAgICBLRUVQKCooU09SVF9CWV9OQU1FKC5kdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7CiAgICAgS0VFUCAoKiguZmluaSkpCiAgICAvKiA/Pz8gV2h5IGlzIC5nY2NfZXhjIGhlcmU/ICAqLwogICAgICooLmdjY19leGMpCiAgICBQUk9WSURFIChldGV4dCA9IC4pOwogICAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgICAgS0VFUCAoKiguZ2NjX2V4Y2VwdF90YWJsZSkpCiAgfQogIC8qIFRoZSBDeWd3aW4zMiBsaWJyYXJ5IHVzZXMgYSBzZWN0aW9uIHRvIGF2b2lkIGNvcHlpbmcgY2VydGFpbiBkYXRhCiAgICAgb24gZm9yay4gIFRoaXMgdXNlZCB0byBiZSBuYW1lZCAiLmRhdGEiLiAgVGhlIGxpbmtlciB1c2VkCiAgICAgdG8gaW5jbHVkZSB0aGlzIGJldHdlZW4gX19kYXRhX3N0YXJ0X18gYW5kIF9fZGF0YV9lbmRfXywgYnV0IHRoYXQKICAgICBicmVha3MgYnVpbGRpbmcgdGhlIGN5Z3dpbjMyIGRsbC4gIEluc3RlYWQsIHdlIG5hbWUgdGhlIHNlY3Rpb24KICAgICAiLmRhdGFfY3lnd2luX25vY29weSIgYW5kIGV4cGxpY2l0bHkgaW5jbHVkZSBpdCBhZnRlciBfX2RhdGFfZW5kX18uICovCiAgLmRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19kYXRhX3N0YXJ0X18gPSAuIDsKICAgICooLmRhdGEpCiAgICAqKC5kYXRhMikKICAgICooU09SVCguZGF0YSQqKSkKCSAgICAqKC5yZGF0YSkKCSAgICAqKFNPUlQoLnJkYXRhJCopKQogICAgS0VFUCgqKC5qY3IpKQogICAgX19kYXRhX2VuZF9fID0gLiA7CiAgICAqKC5kYXRhX2N5Z3dpbl9ub2NvcHkpCiAgfQogIC5yZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX3J0X3BzcmVsb2NzX3N0YXJ0ID0gLjsKICAgIEtFRVAoKigucmRhdGFfcnVudGltZV9wc2V1ZG9fcmVsb2MpKQogICAgX19ydF9wc3JlbG9jc19lbmQgPSAuOwogIH0KICBfX3J0X3BzcmVsb2NzX3NpemUgPSBfX3J0X3BzcmVsb2NzX2VuZCAtIF9fcnRfcHNyZWxvY3Nfc3RhcnQ7CiAgX19fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9FTkRfXyA9IC47CiAgX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX0VORF9fID0gLjsKICBfX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX18gPSAuIC0gX19ydF9wc3JlbG9jc19zaXplOwogIF9fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9fID0gLiAtIF9fcnRfcHNyZWxvY3Nfc2l6ZTsKICAuZWhfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgS0VFUCgqKC5laF9mcmFtZSopKQogIH0KICAucGRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgS0VFUCgqKC5wZGF0YSopKQogIH0KICAuYnNzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fYnNzX3N0YXJ0X18gPSAuIDsKICAgICooLmJzcykKICAgICooQ09NTU9OKQogICAgX19ic3NfZW5kX18gPSAuIDsKICB9CiAgLmVkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLmVkYXRhKQogIH0KICAvRElTQ0FSRC8gOgogIHsKICAgICooLmRlYnVnJFMpCiAgICAqKC5kZWJ1ZyRUKQogICAgKiguZGVidWckRikKICAgICooLmRyZWN0dmUpCiAgICAgKigubm90ZS5HTlUtc3RhY2spCiAgICAgKiguZ251Lmx0b18qKQogICAgICooLmdudV9vYmplY3Rfb25seSkKICB9CiAgLmlkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIC8qIFRoaXMgY2Fubm90IGN1cnJlbnRseSBiZSBoYW5kbGVkIHdpdGggZ3JvdXBlZCBzZWN0aW9ucy4KCVNlZSBwZS5lbTpzb3J0X3NlY3Rpb25zLiAgKi8KICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDIpKQogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkMykpCiAgICAvKiBUaGVzZSB6ZXJvZXMgbWFyayB0aGUgZW5kIG9mIHRoZSBpbXBvcnQgbGlzdC4gICovCiAgICBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7CiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ0KSkKICAgIF9fSUFUX3N0YXJ0X18gPSAuOwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNSkpCiAgICBfX0lBVF9lbmRfXyA9IC47CiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ2KSkKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDcpKQogIH0KICAuQ1JUIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fX2NydF94Y19zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYQyopKSkgIC8qIEMgaW5pdGlhbGl6YXRpb24gKi8KICAgIF9fX2NydF94Y19lbmRfXyA9IC4gOwogICAgX19fY3J0X3hpX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhJKikpKSAgLyogQysrIGluaXRpYWxpemF0aW9uICovCiAgICBfX19jcnRfeGlfZW5kX18gPSAuIDsKICAgIF9fX2NydF94bF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYTCopKSkgIC8qIFRMUyBjYWxsYmFja3MgKi8KICAgIC8qIF9fX2NydF94bF9lbmRfXyBpcyBkZWZpbmVkIGluIHRoZSBUTFMgRGlyZWN0b3J5IHN1cHBvcnQgY29kZSAqLwogICAgX19fY3J0X3hwX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhQKikpKSAgLyogUHJlLXRlcm1pbmF0aW9uICovCiAgICBfX19jcnRfeHBfZW5kX18gPSAuIDsKICAgIF9fX2NydF94dF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYVCopKSkgIC8qIFRlcm1pbmF0aW9uICovCiAgICBfX19jcnRfeHRfZW5kX18gPSAuIDsKICB9CiAgLyogV2luZG93cyBUTFMgZXhwZWN0cyAudGxzJEFBQSB0byBiZSBhdCB0aGUgc3RhcnQgYW5kIC50bHMkWlpaIHRvIGJlCiAgICAgYXQgdGhlIGVuZCBvZiBzZWN0aW9uLiAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBfdGxzX3N0YXJ0IE1VU1QKICAgICBiZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWN0aW9uIHRvIGVuYWJsZSBTRUNSRUwzMiByZWxvY2F0aW9ucyB3aXRoIFRMUwogICAgIGRhdGEuICAqLwogIC50bHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19fdGxzX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooLnRscyRBQUEpKQogICAgS0VFUCAoKigudGxzKSkKICAgIEtFRVAgKCooLnRscyQpKQogICAgS0VFUCAoKihTT1JUKC50bHMkKikpKQogICAgS0VFUCAoKigudGxzJFpaWikpCiAgICBfX190bHNfZW5kX18gPSAuIDsKICB9CiAgLmVuZGp1bmsgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgLyogZW5kIGlzIGRlcHJlY2F0ZWQsIGRvbid0IHVzZSBpdCAqLwogICAgUFJPVklERSAoZW5kID0gLik7CiAgICBQUk9WSURFICggX2VuZCA9IC4pOwogICAgIF9fZW5kX18gPSAuOwogIH0KICAucnNyYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDogU1VCQUxJR04oNCkKICB7CiAgICBLRUVQICgqKC5yc3JjKSkKICAgIEtFRVAgKCooLnJzcmMkKikpCiAgfQogIC5yZWxvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAqKC5yZWxvYykKICB9CiAgLnN0YWIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguc3RhYikKICB9CiAgLnN0YWJzdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguc3RhYnN0cikKICB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24uICBVbmxpa2Ugb3RoZXIgdGFyZ2V0cyB0aGF0IGZha2UgdGhpcyBieSBwdXR0aW5nIHRoZQogICAgIHNlY3Rpb24gVk1BIGF0IDAsIHRoZSBQRSBmb3JtYXQgd2lsbCBub3QgYWxsb3cgaXQuICAqLwogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfYXJhbmdlcykKICB9CiAgLnpkZWJ1Z19hcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19hcmFuZ2VzKQogIH0KICAuZGVidWdfcHVibmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcHVibmFtZXMpCiAgfQogIC56ZGVidWdfcHVibmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3B1Ym5hbWVzKQogIH0KICAuZGVidWdfcHVidHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcHVidHlwZXMpCiAgfQogIC56ZGVidWdfcHVidHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3B1YnR5cGVzKQogIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikKICB9CiAgLnpkZWJ1Z19pbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19pbmZvIC56ZGVidWcuZ251LmxpbmtvbmNlLndpLiopCiAgfQogIC5kZWJ1Z19hYmJyZXYgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfYWJicmV2KQogIH0KICAuemRlYnVnX2FiYnJldiBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfYWJicmV2KQogIH0KICAuZGVidWdfbGluZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19saW5lKQogIH0KICAuemRlYnVnX2xpbmUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2xpbmUpCiAgfQogIC5kZWJ1Z19mcmFtZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19mcmFtZSopCiAgfQogIC56ZGVidWdfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2ZyYW1lKikKICB9CiAgLmRlYnVnX3N0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19zdHIpCiAgfQogIC56ZGVidWdfc3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19zdHIpCiAgfQogIC5kZWJ1Z19sb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbG9jKQogIH0KICAuemRlYnVnX2xvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbG9jKQogIH0KICAuZGVidWdfbWFjaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNpbmZvKQogIH0KICAuemRlYnVnX21hY2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX21hY2luZm8pCiAgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC56ZGVidWdfd2Vha25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC5kZWJ1Z19mdW5jbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZnVuY25hbWVzKQogIH0KICAuemRlYnVnX2Z1bmNuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfZnVuY25hbWVzKQogIH0KICAuZGVidWdfdHlwZW5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3R5cGVuYW1lcykKICB9CiAgLnpkZWJ1Z190eXBlbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVuYW1lcykKICB9CiAgLmRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3Zhcm5hbWVzKQogIH0KICAuemRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z192YXJuYW1lcykKICB9CiAgLmRlYnVnX21hY3JvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX21hY3JvKQogIH0KICAuemRlYnVnX21hY3JvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19tYWNybykKICB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3JhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19yYW5nZXMpCiAgfQogIC56ZGVidWdfcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19yYW5nZXMpCiAgfQogIC8qIERXQVJGIDQuICAqLwogIC5kZWJ1Z190eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlcyAuZ251LmxpbmtvbmNlLnd0LiopCiAgfQogIC56ZGVidWdfdHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVzIC5nbnUubGlua29uY2Uud3QuKikKICB9CiAgLyogRm9yIEdvIGFuZCBSdXN0LiAgKi8KICAuZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZ2RiX3NjcmlwdHMpCiAgfQogIC56ZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2dkYl9zY3JpcHRzKQogIH0KfQoKAAAASW5mbzogcmVzb2x2aW5nICVzIGJ5IGxpbmtpbmcgdG8gJXMgKGF1dG8taW1wb3J0KQoAAAAAAAAlUDogd2FybmluZzogYXV0by1pbXBvcnRpbmcgaGFzIGJlZW4gYWN0aXZhdGVkIHdpdGhvdXQgLS1lbmFibGUtYXV0by1pbXBvcnQgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuClRoaXMgc2hvdWxkIHdvcmsgdW5sZXNzIGl0IGludm9sdmVzIGNvbnN0YW50IGRhdGEgc3RydWN0dXJlcyByZWZlcmVuY2luZyBzeW1ib2xzIGZyb20gYXV0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L65DQ66uNjaurq6uMK4w8u+uC646Mg6uPa5AIa6urgsvrgs/rq4Jrq6uNa4wrq4LPExRrgmuUwmurlSurq4JT+ZVrq5Yrq6uriRZWq43rq6urq6urq6urk9PrlwNXFwkrjuurq6uXFyurgAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgAh8CAgICAgICAgICAgICAiECAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHmRsbCBzdHVmZgAlWCVQOiBjYW4gbm90IGNyZWF0ZSBCRkQ6ICVFCgAuZWRhdGEALnJlbG9jAHJlbDogJXMKACVQJVg6IGFkZCBzeW1ib2xzICVzOiAlRQoAbGliY2VnY2MAX19ydHRpXwBfaW5hbWUAcGUtZGxsLmMAZCUwNmQubwAuaWRhdGEkNwAuaWRhdGEkNQAuaWRhdGEkNAAuaWRhdGEkNgBfX25tXwBfX19pbXBfAExJQlJBUlkgAE5BTUUgACBCQVNFPTB4AERFU0NSSVBUSU9OIABWRVJTSU9OICVkLiVkCgBWRVJTSU9OICVkCgBTVEFDS1NJWkUgMHgleCwweCV4CgBTVEFDS1NJWkUgMHgleAoASEVBUFNJWkUgMHgleCwweCV4CgBIRUFQU0laRSAweCV4CgAKU0VDVElPTlMKCgAgQ0xBU1MgACBSRUFEACBXUklURQAgRVhFQ1VURQAgU0hBUkVEAEVYUE9SVFMKACBAJWQAIFBSSVZBVEUAIENPTlNUQU5UACBOT05BTUUAIERBVEEACklNUE9SVFMKCgAgPT0gADsgbm8gY29udGVudHMgYXZhaWxhYmxlCgB1bmtub3duAF9fcGVpMzg2X3J1bnRpbWVfcmVsb2NhdG9yAF9fZnUlZF8Abm10aCUwNmQubwBfX25tX3RobmtfAGZ1JTA2ZC5vAC5yZGF0YV9ydW50aW1lX3BzZXVkb19yZWxvYwBlcnRyJTA2ZC5vAG5taW1wJTA2ZC5vAENyZWF0aW5nIGxpYnJhcnkgZmlsZTogJXMKACVQJVg6IGJmZF9vcGVuciAlczogJUUKACVQJVg6IGJmZF9jbG9zZSAlczogJUUKACVzJXMlcwAoZGF0YSkAJVAlWDogb3BlbiAlczogJUUKACVzIGlzIGFscmVhZHkgbG9hZGVkCgAuZHJlY3R2ZQBfTlVMTF9USFVOS19EQVRBAF9fYnVpbHRpbl8AX0lNUE9SVF9ERVNDUklQVE9SXwBkbGxjcnQxLm8AZGxsY3J0Mi5vAGdjcnQwLm8AZ2NydDEubwBnY3J0Mi5vAGNydGJlZ2luLm8AY3J0ZW5kLm8AbGliY3lnd2luAGxpYmdjYwBsaWJnY2NfcwBsaWJzdGRjKysAbGlibWluZ3czMgBsaWJtaW5nd2V4AGxpYmcyYwBsaWJzdXBjKysAbGlib2JqYwBsaWJnY2oAbGlibXN2Y3J0AGxpYm1zdmNydC1vcwBsaWJ1Y3J0YmFzZQBwZS1iaWdvYmoteDg2LTY0AHBlaS1zaGwAcGUtc2hsAHBlaS1taXBzAHBlLW1pcHMAZXBvYy1wZWktYXJtLWxpdHRsZQBlcG9jLXBlLWFybS1saXR0bGUAcGVpLWFybS13aW5jZS1saXR0bGUAcGUtYXJtLXdpbmNlLWxpdHRsZQBfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUgBjeWd3aW5fY3J0MABEbGxNYWluAERsbEVudHJ5UG9pbnQAX2N5Z3dpbl9kbGxfZW50cnkAX2N5Z3dpbl9jcnQwX2NvbW1vbgBfY3lnd2luX25vbmN5Z3dpbl9kbGxfZW50cnkAY3lnd2luX3ByZW1haW4wAGN5Z3dpbl9wcmVtYWluMQBjeWd3aW5fcHJlbWFpbjIAY3lnd2luX3ByZW1haW4zAGRvX3BzZXVkb19yZWxvYwBfaW1wdXJlX3B0cgBfZm1vZGUAZW52aXJvbgBfX2Rzb19oYW5kbGUAX0RsbE1haW5DUlRTdGFydHVwAAAAAAAAAAAlWCVQOiBjYW4gbm90IGNyZWF0ZSAuZWRhdGEgc2VjdGlvbjogJUUK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bDoAACA26P+IOgAAYDbo/6Q6AADANuj/0DoAAHA36P/8OgAA4Djo/zg7AADgOuj/hDsAAMA86P/oOwAAAD3o/xA8AABAQej/eDwAAJBV6P/YPAAAIFbo/xA9AACgVuj/RD0AAABX6P9gPQAAUFfo/3g9AACgV+j/kD0AAIBY6P/QPQAAkFno//w9AABwY+j/TD4AAGBm6P+0PgAAwGbo/9g+AAAQZ+j/BD8AAHBn6P8sPwAAwGfo/0g/AADQZ+j/XD8AAFBr6P/QPwAAcGvo/+Q/AADAa+j/AEAAAIBs6P8sQAAAkGzo/0BAAABwbej/bEAAAJBt6P+EQAAA8G3o/6xAAABQbuj/1EAAAGBu6P/oQAAA4G7o/wBBAABwb+j/TEEAAOBw6P+kQQAAQHbo/xBCAABgduj/JEIAAIB26P84QgAA0Hbo/3BCAAAgd+j/qEIAAAB46P/oQgAAsHjo/xxDAADwe+j/ZEMAADB86P+EQwAA8H3o/9RDAADQf+j/UEQAAECB6P/kRAAAsILo/1BFAACghOj/nEUAAECF6P/0RQAA4Ifo/2xGAACQiOj/kEYAAFCJ6P/IRgAAcIvo/1xHAAAgjOj/gEcAAJCO6P/kRwAAgI/o/0BIAACAlej/jEgAAICb6P/gSAAAwJvo/yxJAAAAnOj/QEkAAHCc6P9sSQAAYJ3o/6RJAAAAnuj/xEkAACC46P94SgAAkLjo/5RKAADguOj/vEoAADC56P/oSgAAgLno/xRLAACwuej/KEsAAPC56P88SwAAcLro/3BLAAAAu+j/rEsAAIC76P/YSwAA0Lvo/wRMAAAgvOj/MEwAAHC86P9YTAAAwLzo/4RMAAAQvej/rEwAAJDA6P8sTQAAQMHo/2hNAABgwej/gE0AALDC6P+8TQAAcMPo//hNAADgw+j/GE4AAADE6P8sTgAAIMTo/0BOAAAwxOj/VE4AAEDE6P9oTgAAUMTo/3xOAABgxOj/kE4AAHDE6P+kTgAAgMTo/7hOAACQxOj/zE4AAKDE6P/gTgAAsMTo//ROAADAxOj/CE8AAPDE6P8cTwAAIMXo/zBPAAAwxej/RE8AAGDF6P9YTwAAkMXo/2xPAADAxej/gE8AAPDF6P+UTwAAIMbo/6hPAABQxuj/vE8AAIDG6P/QTwAAkMbo/+RPAADAxuj//E8AAFDH6P8YUAAA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GIwDQQ4ghgREDiiDBUcOMF8KDihBDiBBDhhCDhBCDghBCwAAAAAAAEQAAAAEkgAAKH/r/2UAAAAARg4QjwJFDhiOA0UOII0ERQ4ojAVIDjCGBkgOOIMHRw5Abg44QQ4wQQ4oQg4gQg4YQg4QQg4IABAAAABMkgAAUH/r/wUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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YNMAAAAAAABw0wAAAAAAAIDTAAAAAAAAkNMAAAAAAACg0wAAAAAAALDTAAAAAAAAwNMAAAAAAADQ0wAAAAAAAODTAAAAAAAA8NMAAAAAAAAA1AAAAAAAABDUAAAAAAAAINQAAAAAAAAw1AAAAAAAAEDUAAAAAAAAUNQAAAAAAABg1AAAAAAAAHDUAAAAAAAAgNQAAAAAAACQ1AAAAAAAAKDUAAAAAAAAsNQAAAAAAADA1AAAAAAAANDUAAAAAAAA4NQAAAAAAADw1AAAAAAAAADVAAAAAAAAENUAAAAAAAAg1QAAAAAAADDVAAAAAAAAQNUAAAAAAABQ1QAAAAAAAGDVAAAAAAAAcNUAAAAAAACA1QAAAAAAAJDVAAAAAAAAoNUAAAAAAACw1QAAAAAAAMDVAAAAAAAA0NUAAAAAAADg1QAAAAAAAPDVAAAAAAAAANYAAAAAAAAQ1gAAAAAAACDWAAAAAAAAMNYAAAAAAABA1gAAAAAAAFDWAAAAAAAAYNYAAAAAAABw1gAAAAAAAIDWAAAAAAAAkNYAAAAAAACg1gAAAAAAALDWAAAAAAAAwNYAAAAAAADQ1gAAAAAAAODWAAAAAAAA8NYAAAAAAAAA1wAAAAAAABDXAAAAAAAAINcAAAAAAAAw1wAAAAAAAEDXAAAAAAAAUNcAAAAAAABg1wAAAAAAAHDXAAAAAAAAgNcAAAAAAACQ1wAAAAAAAKDXAAAAAAAAsNcAAAAAAADA1wAAAAAAANDXAAAAAAAA4NcAAAAAAADw1wAAAAAAAADYAAAAAAAAENgAAAAAAAAg2AAAAAAAADDYAAAAAAAAQNgAAAAAAABQ2AAAAAAAAGDYAAAAAAAAcNgAAAAAAACA2AAAAAAAAJDYAAAAAAAAoNgAAAAAAACw2AAAAAAAAMDYAAAAAAAA0NgAAAAAAADg2AAAAAAAAPDYAAAAAAAAANkAAAAAAAAQ2QAAAAAAACDZAAAAAAAAMNkAAAAAAABA2QAAAAAAAFDZAAAAAAAAYNkAAAAAAABw2QAAAAAAAIDZAAAAAAAAkNkAAAAAAACg2QAAAAAAALDZAAAAAAAAwNkAAAAAAADQ2QAAAAAAAODZAAAAAAAA8NkAAAAAAAAA2gAAAAAAABDaAAAAAAAAINoAAAAAAAAw2gAAAAAAAEDaAAAAAAAAUNoAAAAAAABg2gAAAAAAAHDaAAAAAAAAgNoAAAAAAACQ2gAAAAAAAKDaAAAAAAAAsNoAAAAAAADA2gAAAAAAANDaAAAAAAAA4NoAAAAAAADw2gAAAAAAAADbAAAAAAAAENsAAAAAAAAg2wAAAAAAADDbAAAAAAAAQNsAAAAAAABQ2wAAAAAAAGDbAAAAAAAAcNsAAAAAAACA2wAAAAAAAJDbAAAAAAAAoNsAAAAAAACw2wAAAAAAAMDbAAAAAAAA0NsAAAAAAADg2wAAAAAAAPDbAAAAAAAAANwAAAAAAAAQ3AAAAAAAACDcAAAAAAAAMNwAAAAAAABA3AAAAAAAAFDcAAAAAAAAYNwAAAAAAABw3AAAAAAAAIDcAAAAAAAAkNwAAAAAAACg3AAAAAAAALDcAAAAAAAAwNwAAAAAAADQ3AAAAAAAAODcAAAAAAAA8NwAAAAAAAAA3QAAAAAAABDdAAAAAAAAIN0AAAAAAAAw3QAAAAAAAEDdAAAAAAAAUN0AAAAAAABg3QAAAAAAAHDdAAAAAAAAgN0AAAAAAACQ3QAAAAAAAKDdAAAAAAAAsN0AAAAAAADA3QAAAAAAANDdAAAAAAAA4N0AAAAAAADw3QAAAAAAAADeAAAAAAAAEN4AAAAAAAAg3gAAAAAAADDeAAAAAAAAQN4AAAAAAABQ3gAAAAAAAGDeAAAAAAAAcN4AAAAAAACA3gAAAAAAAJDeAAAAAAAAoN4AAAAAAACw3gAAAAAAAMDeAAAAAAAA0N4AAAAAAADg3gAAAAAAAPDeAAAAAAAAAN8AAAAAAAAQ3wAAAAAAACDfAAAAAAAAMN8AAAAAAABA3wAAAAAAAFDfAAAAAAAAYN8AAAAAAABw3wAAAAAAAIDfAAAAAAAAkN8AAAAAAACg3wAAAAAAALDfAAAAAAAAwN8AAAAAAADQ3wAAAAAAAODfAAAAAAAA8N8AAAAAAAAA4AAAAAAAABDgAAAAAAAAIOAAAAAAAAAw4AAAAAAAAEDgAAAAAAAAUOAAAAAAAABg4AAAAAAAAHDgAAAAAAAAgOAAAAAAAACQ4AAAAAAAAKDgAAAAAAAAsOAAAAAAAADA4AAAAAAAANDgAAAAAAAA4OAAAAAAAADw4AAAAAAAAADhAAAAAAAAEOEAAAAAAAAg4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwMwoAAAAAACMFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApMgoAAAAAACMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeMgoAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3MwoAAAAAACsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/MwoAAAAAACMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGMwoAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsKgDAAAAAABgrwIAAAAAAJCvAgAAAAAAEKgDAAAAAACQugMAAAAAAKCuAgAAAAAA8LADAAAAAAAQrwIAAAAAANCtAgAAAAAAcJkDAAAAAAAQhQMAAAAAAJzpDwAAAAAApekPAAAAAABQmQMAAAAAAAAAAAAAAAAAsJcDAAAAAAAQqQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlwMAAAAAALCJAwAAAAAAAAAAAAAAAAAQiAMAAAAAAHCHAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDMgoAAAAAABsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MgoAAAAAACsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwMwoAAAAAACMFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApMgoAAAAAACMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeMgoAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3MwoAAAAAACsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/MwoAAAAAACMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGMwoAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgOEDAAAAAABgrwIAAAAAAJCvAgAAAAAA4OADAAAAAADw7gMAAAAAAKCuAgAAAAAAwOkDAAAAAAAQrwIAAAAAANCtAgAAAAAAMNgDAAAAAAAQxQMAAAAAAG2XEgAAAAAAd5cSAAAAAAAQ2AMAAAAAAAAAAAAAAAAAcNYDAAAAAADg4QMAAAAAAAAAAAAAAAAAAAAAAAAAAADA1QMAAAAAAJDJAwAAAAAAAAAAAAAAAAAQyAMAAAAAAHDHAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABg+wMAAAAAAGCvAgAAAAAAkK8CAAAAAAAArgIAAAAAAJCuAgAAAAAAoK4CAAAAAACwrgIAAAAAABCvAgAAAAAA0K0CAAAAAABA/QMAAAAAAKD7AwAAAAAAM5gSAAAAAAA9mBIAAAAAAOCuAgAAAAAAUPsDAAAAAAAQ/AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMyCgAAAAAAGwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUyCgAAAAAAKwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAzCgAAAAAAIwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkyCgAAAAAAIwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4yCgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHczCgAAAAAAKwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH8zCgAAAAAAIwFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIYzCgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIAQAAAAAAGCvAgAAAAAAkK8CAAAAAACAHwQAAAAAAAAyBAAAAAAAoK4CAAAAAABgKAQAAAAAABCvAgAAAAAA0K0CAAAAAADgEAQAAAAAAMD9AwAAAAAAcXoVAAAAAAB6ehUAAAAAAMAQBAAAAAAAAAAAAAAAAAAgDwQAAAAAAIAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAOBAAAAAAAQAIEAAAAAAAAAAAAAAAAAMAABAAAAAAAIAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMyCgAAAAAAGwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUyCgAAAAAAKwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAzCgAAAAAAIwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkyCgAAAAAAIwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4yCgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHczCgAAAAAAKwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH8zCgAAAAAAIwFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIYzCgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgXgQAAAAAAGCvAgAAAAAAkK8CAAAAAABAXgQAAAAAAMBwBAAAAAAAoK4CAAAAAAAgZwQAAAAAABCvAgAAAAAA0K0CAAAAAACgTwQA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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 23
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
cifs-idmap-plugin
11.49 KB
lrwxr-xr-x
2025-06-05 19:42:53
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
easy_install-3
246 B
lrwxr-xr-x
2025-07-15 09:13:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ifdown
2.07 KB
lrwxr-xr-x
2022-08-10 13:03:37
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ifup
5.33 KB
lrwxr-xr-x
2022-08-10 13:03:37
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ld
1.71 MB
lrwxr-xr-x
2024-11-15 09:59:32
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
libnssckbi.so.x86_64
249.24 KB
lrwxr-xr-x
2024-04-06 14:16:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
module.1.gz
15.14 KB
lrw-r--r--
2023-10-14 18:46:13
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
modulecmd
384.75 KB
lrwxr-xr-x
2023-10-14 18:46:13
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
modulefile.4.gz
10.05 KB
lrw-r--r--
2023-10-14 18:46:13
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
modules.csh
105 B
lrw-r--r--
2023-10-14 18:46:13
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
modules.sh
448 B
lrw-r--r--
2023-10-14 18:46:13
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ncman
10.66 KB
lrw-r--r--
2023-10-14 22:25:17
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
nmap
436.87 KB
lrwxr-xr-x
2023-10-14 22:25:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pip-3
209 B
lrwxr-xr-x
2024-04-06 13:40:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pip3
209 B
lrwxr-xr-x
2024-04-06 13:40:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pydoc-3
89 B
lrwxr-xr-x
2025-07-01 22:14:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pydoc3
89 B
lrwxr-xr-x
2025-07-01 22:14:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
python
157 B
lrwxr-xr-x
2025-07-01 22:14:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
python3
11.59 KB
lrwxr-xr-x
2025-07-01 22:14:50
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
python3-config
204 B
lrwxr-xr-x
2025-07-01 22:14:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
python3-man
5.10 KB
lrw-r--r--
2018-12-23 21:37:14
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pyvenv-3
446 B
lrwxr-xr-x
2025-07-01 22:14:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
unversioned-python-man
603 B
lrw-r--r--
2025-07-01 22:14:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).