REDROOM
PHP 8.5.2
Path:
Logout
Edit File
Size: 1.30 MB
Close
//usr/lib/compat-ld/ld
Text
Base64
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AAAAAAAAAAAqCgAAEgAAAAAAAAAAAAAAAAAAAAAAAAC0AgAAEgAAAAAAAAAAAAAAAAAAAAAAAAC5AAAAEgAAAAAAAAAAAAAAAAAAAAAAAADxBQAAEgAAAAAAAAAAAAAAAAAAAAAAAAB+AgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAeCAAAEgAAAAAAAAAAAAAAAAAAAAAAAACPCgAAEgAAAAAAAAAAAAAAAAAAAAAAAAC/AgAAEgAAAAAAAAAAAAAAAAAAAAAAAADWBQAAEgAAAAAAAAAAAAAAAAAAAAAAAABsAgAAEgAAAAAAAAAAAAAAAAAAAAAAAABvAQAAEgAAAAAAAAAAAAAAAAAAAAAAAABfBgAAEgAAAAAAAAAAAAAAAAAAAAAAAACzAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAD+EAAAEgAAAAAAAAAAAAAAAAAAAAAAAADJBQAAEQAAAAAAAAAAAAAAAAAAAAAAAAA8DgAAEgAAAAAAAAAAAAAAAAAAAAAAAAASCQAAEgAAAAAAAAAAAAAAAAAAAAAAAACfBQAAEgAAAAAAAAAAAAAAAAAAAAAAAACICwAAEgAAAAAAAAAAAAAAAAAAAAAAAAABEAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAsDwAAEgAAAAAAAAAAAAAAAAAAAAAAAADpBAAAEgAAAAAAAAAAAAAAAAAAAAAAAAB1AAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAiEQAAEgAAAAAAAAAAAAAAAAAAAAAAAADfCwAAEgAAAAAAAAAAAAAAAAAAAAAAAAA8CAAAEgAAAAAAAAAAAAAAAAAAAAAAAADBCAAAEgAAAAAAAAAAAAAAAAAAAAAAAADaAgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAEgAAAAAAAAAAAAAAAAAAAAAAAACDDwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC9EAAAEgAAAAAAAAAAAAAAAAAAAAAAAAD5AwAAEQAAAAAAAAAAAAAAAAAAAAAAAABxAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAIEQAAEgAAAAAAAAAAAAAAAAAAAAAAAAC7AQAAEgAAAAAAAAAAAAAAAAAAAAAAAADpCQAAEgAAAAAAAAAAAAAAAAAAAAAAAACyBwAAEgAAAAAAAAAAAAAAAAAAAAAAAADNAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAmBAAAEgAAAAAAAAAAAAAAAAAAAAAAAABFDAAAEgAAAAAAAAAAAAAAAAAAAAAAAACtCwAAEgAAAAAAAAAAAAAAAAAAAAAAAACPBAAAEgAAAAAAAAAAAAAAAAAAAAAAAACEBwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC/DAAAEgAAAAAAAAAAAAAAAAAAAAAAAABDBAAAEgAAAAAAAAAAAAAAAAAAAAAAAAB0CwAAEgAAAAAAAAAAAAAAAAAAAAAAAABWCwAAEgAAAAAAAAAAAAAAAAAAAAAAAABCAgAAEgAAAAAAAAAAAAAAAAAAAAAAAABbCgAAEgAAAAAAAAAAAAAAAAAAAAAAAAB1CgAAEgAAAAAAAAAAAAAAAAAAAAAAAADUAAAAEgAAAAAAAAAAAAAAAAAAAAAAAABsCwAAEgAAAAAAAAAAAAAAAAAAAAAAAADTAQAAEgAAAAAAAAAAAAAAAAAAAAAAAACyCwAAEgAAAAAAAAAAAAAAAAAAAAAAAACzAgAAEgAAAAAAAAAAAAAAAAAAAAAAAACJAwAAEgAAAAAAAAAAAAAAAAAAAAAAAADAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAACsCAAAEgAAAAAAAAAAAAAAAAAAAAAAAACvDQAAEgAAAAAAAAAAAAAAAAAAAAAAAACaAwAAEgAAAAAAAAAAAAAAAAAAAAAAAABPBAAAEgAAAAAAAAAAAAAAAAAAAAAAAABpEQAAEgAAAAAAAAAAAAAAAAAAAAAAAABpBQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAqAwAAEgAAAAAAAAAAAAAAAAAAAAAAAADgBgAAEgAAAAAAAAAAAAAAAAAAAAAAAADFAQAAEgAAAAAAAAAAAAAAAAAAAAAAAACYDgAAEgAAAAAAAAAAAAAAAAAAAAAAAACAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAADrAQAAEgAAAAAAAAAAAAAAAAAAAAAAAADdAAAAEgAAAAAAAAAAAAAAAAAAAAAAAADZCQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAnDgAAEgAAAAAAAAAAAAAAAAAAAAAAAAD8DwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC5AgAAEgAAAAAAAAAAAAAAAAAAAAAAAABSDQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAhBgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAOBwAAEgAAAAAAAAAAAAAAAAAAAAAAAABDCgAAEgAAAAAAAAAAAAAAAAAAAAAAAADMDQAAEgAAAAAAAAAAAAAAAAAAAAAAAADSCgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAwDAAAEgAAAAAAAAAAAAAAAAAAAAAAAACYCQAAEgAAAAAAAAAAAAAAAAAAAAAAAADeEAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAHBAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAOBgAAEgAAAAAAAAAAAAAAAAAAAAAAAADFAgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAHAQAAEgAAAAAAAAAAAAAAAAAAAAAAAACUAQAAEgAAAAAAAAAAAAAAAAAAAAAAAACQAwAAEgAAAAAAAAAAAAAAAAAAAAAAAABWBwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC1CQAAEgAAAAAAAAAAAAAAAAAAAAAAAABCAQAAEgAAAAAAAAAAAAAAAAAAAAAAAACbBAAAEgAAAAAAAAAAAAAAAAAAAAAAAAD+DgAAEgAAAAAAAAAAAAAAAAAAAAAAAADaCgAAEgAAAAAAAAAAAAAAAAAAAAAAAAC6AwAAEgAAAAAAAAAAAAAAAAAAAAAAAACoCgAAEgAAAAAAAAAAAAAAAAAAAAAAAACNAQAAEgAAAAAAAAAAAAAAAAAAAAAAAAC6AgAAEgAAAAAAAAAAAAAAAAAAAAAAAAAfBAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAJCgAAEgAAAAAAAAAAAAAAAAAAAAAAAADlAAAAEgAAAAAAAAAAAAAAAAAAAAAAAADzAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAA/BgAAEgAAAAAAAAAAAAAAAAAAAAAAAAClAAAAEgAAAAAAAAAAAAAAAAAAAAAAAABKBAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAIAAAAAAAAAAAAAAAAAAAAAAAAACMCwAAEgAAAAAAAAAAAAAAAAAAAAAAAADVBwAAEgAAAAAAAAAAAAAAAAAAAAAAAADhDwAAEQAAAAAAAAAAAAAAAAAAAAAAAADdBQAAEgAAAAAAAAAAAAAAAAAAAAAAAABiBQAAEgAAAAAAAAAAAAAAAAAAAAAAAACqAwAAEgAAAAAAAAAAAAAAAAAAAAAAAAB0BwAAEgAAAAAAAAAAAAAAAAAAAAAAAACRCwAAEgAAAAAAAAAAAAAAAAAAAAAAAADvDwAAEgAAAAAAAAAAAAAAAAAAAAAAAAA0BQAAEgAAAAAAAAAAAAAAAAAAAAAAAAB1CAAAEgAAAAAAAAAAAAAAAAAAAAAAAAB6DQAAEgAAAAAAAAAAAAAAAAAAAAAAAADPBQAAEgAAAAAAAAAAAAAAAAAAAAAAAABgEQAAEgAAAAAAAAAAAAAAAAAAAAAAAAASCwAAEgAAAAAAAAAAAAAAAAAAAAAAAABRDgAAEgAAAAAAAAAAAAAAAAAAAAAAAAB7CwAAEgAAAAAAAAAAAAAAAAAAAAAAAADgDAAAEgAAAAAAAAAAAAAAAAAAAAAAAADVDAAAEgAAAAAAAAAAAAAAAAAAAAAAAABeDgAAEgAAAAAAAAAAAAAAAAAAAAAAAACsAAAAEgAAAAAAAAAAAAAAAAAAAAAAAABQAgAAEgAAAAAAAAAAAAAAAAAAAAAAAACaDQAAEgAAAAAAAAAAAAAAAAAAAAAAAADIDQAAEgAAAAAAAAAAAAAAAAAAAAAAAAD1CAAAEgAAAAAAAAAAAAAAAAAAAAAAAABRCQAAEgAAAAAAAAAAAAAAAAAAAAAAAABPBQAAEgAAAAAAAAAAAAAAAAAAAAAAAADyCwAAEgAAAAAAAAAAAAAAAAAAAAAAAACbEAAAEgAAAAAAAAAAAAAAAAAAAAAAAAD0BwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAWBQAAEgAAAAAAAAAAAAAAAAAAAAAAAAB1EQAAEgAAAAAAAAAAAAAAAAAAAAAAAAB5DgAAEgAAAAAAAAAAAAAAAAAAAAAAAABIAwAAEgAAAAAAAAAAAAAAAAAAAAAAAACiAwAAEgAAAAAAAAAAAAAAAAAAAAAAAADRDQAAEgAAAAAAAAAAAAAAAAAAAAAAAACeDgAAEgAAAAAAAAAAAAAAAAAAAAAAAADGDwAAEgAAAAAAAAAAAAAAAAAAAAAAAACqAQAAEQAAAAAAAAAAAAAAAAAAAAAAAACfAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAA3BAAAEgAAAAAAAAAAAAAAAAAAAAAAAABwCQAAEQAAAAAAAAAAAAAAAAAAAAAAAACcAgAAEgAAAAAAAAAAAAAAAAAAAAAAAADhCAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAXDQAAEgAAAAAAAAAAAAAAAAAAAAAAAADVAAAAEgAAAAAAAAAAAAAAAAAAAAAAAABYAQAAEQAAAAAAAAAAAAAAAAAAAAAAAAAJAwAAEgAAAAAAAAAAAAAAAAAAAAAAAAD3EAAAEgAAAAAAAAAAAAAAAAAAAAAAAADkBwAAEgAAAAAAAAAAAAAAAAAAAAAAAAA8CgAAEgAAAAAAAAAAAAAAAAAAAAAAAABnAAAAEgAAAAAAAAAAAAAAAAAAAAAAAADLBwAAEgAAAAAAAAAAAAAAAAAAAAAAAABXAgAAEgAAAAAAAAAAAAAAAAAAAAAAAABkAwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC0DAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAEgAAAAAAAAAAAAAAAAAAAAAAAADvDQAAEgAAAAAAAAAAAAAAAAAAAAAAAADpDwAAEgAAAAAAAAAAAAAAAAAAAAAAAADEDgAAEgAAAAAAAAAAAAAAAAAAAAAAAABwBQAAEgAAAAAAAAAAAAAAAAAAAAAAAACSBQAAEgAAAAAAAAAAAAAAAAAAAAAAAAB8AwAAEQAAAAAAAAAAAAAAAAAAAAAAAADdAwAAEgAAAAAAAAAAAAAAAAAAAAAAAAD0DwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAxEQAAEgAAAAAAAAAAAAAAAAAAAAAAAAD5EAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAHEAAAEgAAAAAAAAAAAAAAAAAAAAAAAADIEAAAEgAAAAAAAAAAAAAAAAAAAAAAAACiEAAAEgAAAAAAAAAAAAAAAAAAAAAAAACZAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAqCwAAEgAAAAAAAAAAAAAAAAAAAAAAAADxAQAAEgAAAAAAAAAAAAAAAAAAAAAAAABpBwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAOEAAAEgAAAAAAAAAAAAAAAAAAAAAAAADnAQAAEgAAAAAAAAAAAAAAAAAAAAAAAAC6CAAAEgAAAAAAAAAAAAAAAAAAAAAAAADaDgAAEgAAAAAAAAAAAAAAAAAAAAAAAADTDwAAEgAAAAAAAAAAAAAAAAAAAAAAAAA4AwAAEgAAAAAAAAAAAAAAAAAAAAAAAACECQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAfAgAAEgAAAAAAAAAAAAAAAAAAAAAAAADrDAAAEgAAAAAAAAAAAAAAAAAAAAAAAAA+DQAAEgAAAAAAAAAAAAAAAAAAAAAAAABcCAAAEgAAAAAAAAAAAAAAAAAAAAAAAACsEAAAEgAAAAAAAAAAAAAAAAAAAAAAAADKDAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAQDAAAEgAAAAAAAAAAAAAAAAAAAAAAAAC3CgAAEgAAAAAAAAAAAAAAAAAAAAAAAACsBQAAEgAAAAAAAAAAAAAAAAAAAAAAAAD7CgAAEgAAAAAAAAAAAAAAAAAAAAAAAADMDgAAEgAAAAAAAAAAAAAAAAAAAAAAAAApBgAAEgAAAAAAAAAAAAAAAAAAAAAAAAArAQAAEgAAAAAAAAAAAAAAAAAAAAAAAAATAgAAEgAAAAAAAAAAAAAAAAAAAAAAAACFBQAAEgAAAAAAAAAAAAAAAAAAAAAAAADfDwAAEQAAAAAAAAAAAAAAAAAAAAAAAACKDQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAzBgAAEgAAAAAAAAAAAAAAAAAAAAAAAAD2DAAAEgAAAAAAAAAAAAAAAAAAAAAAAAATDwAAEgAAAAAAAAAAAAAAAAAAAAAAAADyAQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAjAwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAsAgAAEgAAAAAAAAAAAAAAAAAAAAAAAAANCAAAEgAAAAAAAAAAAAAAAAAAAAAAAACPCAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADyEAAAEgAAAAAAAAAAAAAAAAAAAAAAAAACBQAAEgAAAAAAAAAAAAAAAAAAAAAAAACkDwAAEgAAAAAAAAAAAAAAAAAAAAAAAADhCgAAEgAAAAAAAAAAAAAAAAAAAAAAAABiDwAAEgAAAAAAAAAAAAAAAAAAAAAAAADLCAAAEgAAAAAAAAAAAAAAAAAAAAAAAAChDAAAEgAAAAAAAAAAAAAAAAAAAAAAAABABwAAEgAAAAAAAAAAAAAAAAAAAAAAAABmDQAAEgAAAAAAAAAAAAAAAAAAAAAAAACUBgAAEgAAAAAAAAAAAAAAAAAAAAAAAACGDAAAEgAAAAAAAAAAAAAAAAAAAAAAAAARDgAAEgAAAAAAAAAAAAAAAAAAAAAAAAD4BgAAEgAAAAAAAAAAAAAAAAAAAAAAAACSEAAAEgAAAAAAAAAAAAAAAAAAAAAAAAC6BgAAEgAAAAAAAAAAAAAAAAAAAAAAAABHBQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAXEQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAEDQAAEgAAAAAAAAAAAAAAAAAAAAAAAADZCgAAEgAAAAAAAAAAAAAAAAAAAAAAAACZDgAAEgAAAAAAAAAAAAAAAAAAAAAAAADHCQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAmBwAAEgAAAAAAAAAAAAAAAAAAAAAAAAC4CwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAABAAAEQAAAAAAAAAAAAAAAAAAAAAAAABfBAAAEgAAAAAAAAAAAAAAAAAAAAAAAADzCQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAlAgAAEQAAAAAAAAAAAAAAAAAAAAAAAADkAgAAEgAAAAAAAAAAAAAAAAAAAAAAAADrAwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAlDQAAEgAAAAAAAAAAAAAAAAAAAAAAAADhDgAAEQAaABC0FAAAAAAACAAAAAAAAAA4EAAAEgAQAPA4BQAAAAAAVAEAAAAAAAAnEAAAEgAQANA4BQAAAAAAGQAAAAAAAABKEAAAEgAQAFA6BQAAAAAANwAAAAAAAABYAAAAIgAAAAAAAAAAAAAAAAAAAAAAAADbBgAAEgAAAAAAAAAAAAAAAAAAAAAAAACrAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAYEAAAEgAQALA4BQAAAAAAFQAAAAAAAABtEAAAEgAQACA7BQAAAAAAJgAAAAAAAADMAwAAEgAAAAAAAAAAAAAAAAAAAAAAAABfEAAAEgAQAJA6BQAAAAAAjgAAAAAAAAC/CwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAX0lUTV9kZXJlZ2lzdGVyVE1DbG9uZVRhYmxlAF9fZ21vbl9zdGFydF9fAF9JVE1fcmVnaXN0ZXJUTUNsb25lVGFibGUAX19saWJjX3N0YXJ0X21haW4AX19jeGFfZmluYWxpemUAc2V0bG9jYWxlAGJpbmR0ZXh0ZG9tYWluAHhtYWxsb2Nfc2V0X3Byb2dyYW1fbmFtZQBmb3BlbgBmc2VlawBmdGVsbAB4bWFsbG9jAGZyZWFkAGZlcnJvcgBfc2NoX2lzdGFibGUAc3RybGVuAHhyZWFsbG9jAHhzdHJkdXAAX19tZW1tb3ZlX2NoawBfX21lbWNweV9jaGsAZmNsb3NlAGJmZF9pbml0AGJmZF9zZXRfZXJyb3JfcHJvZ3JhbV9uYW1lAGJmZF9zZXRfYXNzZXJ0X2hhbmRsZXIAYmZkX3NldF9lcnJvcl9oYW5kbGVyAF94ZXhpdF9jbGVhbnVwAHN0cm5jbXAAYmZkX3NldF9kZWZhdWx0X3RhcmdldABnZXRlbnYAc3RyY21wAGJmZF9oYXNoX3RhYmxlX2luaXRfbgBfYmZkX3N0ZF9zZWN0aW9uAGRjZ2V0dGV4dABiZmRfc2V0X2Vycm9yAGJmZF9oYXNoX3RhYmxlX2ZyZWUAYmZkX2Nsb3NlAHhleGl0AHJlZ2lzdGVyX2xkX3BsdWdpbl9vYmplY3RfcABnZXRwYWdlc2l6ZQBkbHN5bQBzdGRlcnIAX19mcHJpbnRmX2NoawBkbGVycm9yAHJld2luZABzdGRvdXQAZmZsdXNoAF9fcHJpbnRmX2NoawBwdXRjaGFyAGJmZF9oYXNoX3RyYXZlcnNlAGJmZF9nZW5lcmljX2xpbmtfcmVhZF9zeW1ib2xzAGJmZF9saW5rX2hhc2hfdHJhdmVyc2UAZnB1dHMAZnB1dGMAcXNvcnQAYmZkX2xpbmtfaGFzaF9sb29rdXAAbHJlYWxwYXRoAGJmZF9oYXNoX3NldF9kZWZhdWx0X3NpemUAc3RyY2FzZWNtcABfX3N0cmNweV9jaGsAX19zdHJjYXRfY2hrAGZ3cml0ZQBiZmRfZ2V0X2Vycm9yAGJmZF9zcHJpbnRmX3ZtYQBiZmRfZ2V0X3VuaXF1ZV9zZWN0aW9uX25hbWUAYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXkAX3NjaF90b2xvd2VyAGNvbmNhdABsYmFzZW5hbWUAZm5tYXRjaABzdHJwYnJrAGJmZF9oYXNoX2xvb2t1cABiZmRfaGFzaF9hbGxvY2F0ZQBiZmRfaGFzaF9uZXdmdW5jAGJmZF9zY2FuX2FyY2gAX19zcHJpbnRmX2NoawBvcHRpbmQAb3B0ZXJyAGdldG9wdF9sb25nX29ubHkAb3B0YXJnAGRsb3BlbgBfX3N0YWNrX2Noa19mYWlsAF9fZmdldHNfY2hrAHN0cmNocgBmZW9mAGJmZF90YXJnZXRfbGlzdABiZmRfZ2V0X2NvbXByZXNzaW9uX2FsZ29yaXRobV9uYW1lAGJmZF9zY2FuX3ZtYQBnZXRvcHRfbG9uZwBfX2FzcHJpbnRmX2NoawBfX2Vycm5vX2xvY2F0aW9uAF9faXNvYzIzX3N0cnRvdWwAY3BsdXNfZGVtYW5nbGVfbmFtZV90b19zdHlsZQBjcGx1c19kZW1hbmdsZV9zZXRfc3R5bGUAYmZkX2hhc2hfdGFibGVfaW5pdABiZmRfZ2V0X2NvbXByZXNzaW9uX2FsZ29yaXRobQBiZmRfY2xvc2VfYWxsX2RvbmUAZGxjbG9zZQB1bmxpbmtfaWZfb3JkaW5hcnkAbWVtY3B5AG1lbXNldABtYWtlX3JlbGF0aXZlX3ByZWZpeABfX21lbXNldF9jaGsAYmZkX2RlbWFuZ2xlAGZpbGVuYW1lX2NtcABiZmRfZXJybXNnAF9faXNvYzIzX3N0cnRvdWxsAHN0ZGluAGZpbGVubwBpc2F0dHkAYmZkX29jdGV0c19wZXJfYnl0ZQBiZmRfd3JhcHBlZF9saW5rX2hhc2hfbG9va3VwAGJmZF9saW5rX2FkZF91bmRlZgBzdHJjc3BuAGh0YWJfZmluZABodGFiX2NyZWF0ZQBodGFiX2ZpbmRfc2xvdABodGFiX2hhc2hfc3RyaW5nAGJmZF9lbXVsX2dldF9tYXhwYWdlc2l6ZQBiZmRfZW11bF9nZXRfY29tbW9ucGFnZXNpemUAYmZkX3NlY3Rpb25fYWxyZWFkeV9saW5rZWRfdGFibGVfaW5pdABiZmRfc2VjdGlvbl9hbHJlYWR5X2xpbmtlZF90YWJsZV9mcmVlAGJmZF9hcmNoX2dldF9jb21wYXRpYmxlAGJmZF9saW5rX2NoZWNrX3JlbG9jcwBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZQBiZmRfYXJjaF9iaXRzX3Blcl9hZGRyZXNzAGJmZF9zZXRfc3RhcnRfYWRkcmVzcwBiZmRfcHJpbnRhYmxlX25hbWUAZGNuZ2V0dGV4dABiZmRfcmVjb3JkX3BoZHIAYmZkX3JlbG9jX3R5cGVfbG9va3VwAGJmZF9nZXRfcmVsb2NfY29kZV9uYW1lAGJmZF9nZXRfc2VjdGlvbl9jb250ZW50cwBiZmRfb3BlbncAYmZkX3NldF9mb3JtYXQAYmZkX3NldF9ncF9zaXplAGJmZF9pdGVyYXRlX292ZXJfdGFyZ2V0cwBiZmRfY2hlY2tfZm9ybWF0AGJmZF9hcmNoX21hY2hfb2N0ZXRzX3Blcl9ieXRlAF9iZmRfZWxmX2xpbmtlcl94ODZfc2V0X29wdGlvbnMAYmZkX2NoZWNrX2Zvcm1hdF9tYXRjaGVzAGJmZF9lbGZfc2V0X2R5bl9saWJfY2xhc3MAYmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZQBmaWxlbmFtZV9uY21wAHBlcnJvcgBiZmRfb3BlbnIAYmZkX21hcF9vdmVyX3NlY3Rpb25zAG9iamFsbG9jX2ZyZWVfYmxvY2sAYmZkX2dldF9uZXh0X3NlY3Rpb25fYnlfbmFtZQBiZmRfbWFrZV9zZWN0aW9uX2FueXdheV93aXRoX2ZsYWdzAGJmZF9tYWtlX3NlY3Rpb25fd2l0aF9mbGFncwBiZmRfZWxmX3BhcnNlX2VoX2ZyYW1lX2VudHJpZXMAYmZkX3VzZV9yZXNlcnZlZF9pZABiZmRfcGx1Z2luX3RhcmdldF9wAGJmZF9jcmVhdGUAYmZkX21ha2Vfd3JpdGFibGUAYmZkX2dldF9hcmNoX2luZm8AYmZkX3NldF9hcmNoX2luZm8AYmZkX2dldF9ncF9zaXplAGJmZF9hbGxvYwBiZmRfcGx1Z2luX29wZW5faW5wdXQAYmZkX3BsdWdpbl9jbG9zZV9maWxlX2Rlc2NyaXB0b3IAYmZkX21ha2VfcmVhZGFibGUAbXVubWFwAGJmZF9lbGZfZ2V0X25lZWRlZF9saXN0AGJmZF9lbGZfZ2V0X2R5bl9saWJfY2xhc3MAYmZkX2VsZl9hZGRfZHRfbmVlZGVkX3RhZwBiZmRfZWxmX2dldF9ydW5wYXRoX2xpc3QAYmZkX3NldF9zeW10YWIAYmZkX2VsZl9zZXRfZHRfbmVlZGVkX25hbWUAbWVtY21wAHhjYWxsb2MAYmZkX2dldF9yZWxvY191cHBlcl9ib3VuZABiZmRfY2Fub25pY2FsaXplX3JlbG9jAGJmZF9oaWRlX3N5bV9ieV92ZXJzaW9uAHVud3JhcF9oYXNoX2xvb2t1cABjdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUAYmZkX2VsZl9nZXRfZHRfc29uYW1lAHN0cnJjaHIAZ2V0cHdkAGJmZF9nZXRfYXJjaABiZmRfc3RhdABiZmRfZWxmX2dldF9iZmRfbmVlZGVkX2xpc3QAbW1hcABsc2VlawBzdHJzdHIAX2JmZF9lbGZfbWF0Y2hfc2VjdGlvbnNfYnlfdHlwZQBfYmZkX2VsZl90bHNfc2V0dXAAYmZkX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMAYmZkX2VsZl9zaXplX2R5bnN5bV9oYXNoX2R5bnN0cgBiZmRfZWxmX2Rpc2NhcmRfaW5mbwBfYmZkX2VsZl9tYXBfc2VjdGlvbnNfdG9fc2VnbWVudHMAYmZkX2VsZl9yZWNvcmRfbGlua19hc3NpZ25tZW50AF9iZmRfZml4X2V4Y2x1ZGVkX3NlY19zeW1zAGJmZF9uZXdfbGlua19vcmRlcgBiZmRfcHV0bDY0AGJmZF9nZXRiNjQAYmZkX3B1dGwxNgBiZmRfZ2V0YjE2AGJmZF9wdXRsMzIAYmZkX2dldGIzMgBnbG9iAGdsb2JmcmVlAGJmZF9pc19sb2NhbF9sYWJlbABfX3N0cm5jcHlfY2hrAGJmZF9zZWVrAGJmZF93cml0ZQBhYm9ydABfYmZkX2VsZl9zdHJ0YWJfbGVuAF9iZmRfZWxmX3N0cnRhYl9zdHIAYmZkX2dldF90YXJnZXRfaW5mbwBfX2lzb2MyM19zdHJ0b2wAYmZkX2ZpbmRfdGFyZ2V0AGJmZF9zZXRfc2VjdGlvbl9zaXplAGJmZF9zZXRfc2VjdGlvbl9jb250ZW50cwBiZmRfcmVhZABfYmZkX3BleDY0aV9zd2FwX2RlYnVnZGlyX291dABfYmZkX3BleDY0aV93cml0ZV9jb2Rldmlld19yZWNvcmQAYmZkX3NldF9zZWN0aW9uX2ZsYWdzAGJmZF9nZXRfY3VycmVudF90aW1lAGJmZF9zZXRfYXJjaGl2ZV9oZWFkAF9fc3RwY3B5X2NoawBfYmZkX3BlaV9zd2FwX2RlYnVnZGlyX291dABfYmZkX3BlaV93cml0ZV9jb2Rldmlld19yZWNvcmQAZmdldGMAYmZkX2dldF9tYWNoAGJmZF9tYWtlX3NlY3Rpb25fb2xkX3dheQBtZW1tb3ZlAHN0cmNhdABzdHJjcHkAc3RydG9rAG9ic3RhY2tfYWxsb2NfZmFpbGVkX2hhbmRsZXIAcG9zaXhfc3Bhd25hdHRyX2luaXQAcG9zaXhfc3Bhd25hdHRyX3NldGZsYWdzAHBvc2l4X3NwYXduYXR0cl9kZXN0cm95AHBvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19pbml0AHBvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19hZGRkdXAyAHBvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19kZXN0cm95AHBvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19hZGRjbG9zZQBwb3NpeF9zcGF3bnAAcG9zaXhfc3Bhd24AX19lbnZpcm9uAHdhaXQ0AGtpbGwAd2FpdHBpZABwaXBlAGZjbnRsAGFjY2VzcwBnZXRydXNhZ2UAX29ic3RhY2tfYmVnaW4AX29ic3RhY2tfYmVnaW5fMQBfb2JzdGFja19uZXdjaHVuawBfb2JzdGFja19hbGxvY2F0ZWRfcABfb2JzdGFja19mcmVlAF9vYnN0YWNrX21lbW9yeV91c2VkAG1rc3RlbXBzAHJlbW92ZQBzdHJlcnJvcgB1bmdldGMAY3RmX2Nsb3NlAGN0Zl9saW5rX2FkZF9jdGYAY3RmX2Vycm1zZwBjdGZfbGlua19zaHVmZmxlX3N5bXMAY3RmX2Vycndhcm5pbmdfbmV4dABjdGZfYmZkb3BlbgBjdGZfZXJybm8AY3RmX2xpbmtfd3JpdGUAY3RmX2NyZWF0ZQBjdGZfZGljdF9jbG9zZQBjdGZfbGlua19hZGRfbGlua2VyX3N5bWJvbABjdGZfbGlua19hZGRfc3RydGFiAGN0Zl9saW5rAGpzb25fZGVsZXRlAGpzb25fbG9hZHMAbGliYmZkLTIuNDItc3lzdGVtLnNvAGxpYmN0Zi5zby4wAGxpYmphbnNzb24uc28uNABsaWJjLnNvLjYATElCQ1RGXzEuMQBMSUJDVEZfMS4wAEdMSUJDXzIuMjcAR0xJQkNfMi4xNQBHTElCQ18yLjE0AEdMSUJDXzIuMzMAR0xJQkNfMi44AEdMSUJDXzIuNABHTElCQ18yLjM0AEdMSUJDXzIuMzgAR0xJQkNfMi4yLjUAR0xJQkNfMi4xMQBHTElCQ18yLjMuNAAAAAACAAMABAAFAAEAAQAEAAYABwABAAEAAQABAAQABAAEAAcABAAEAAQAAQAEAAEABAABAAUAAQAEAAEAAQABAAEABAAEAAEAAQABAAEABAAEAAEAAQABAAQABgAEAAEAAQABAAEABAAEAAEABAAIAAEAAQABAAEABAAEAAYABAAEAAYABAABAAEABAAJAAEABAAEAAEAAQAEAAEAAQAEAAEAAQABAAQAAQAEAAQAAQABAAEAAQAEAAEACgAEAAEAAQABAAQAAQAEAAEAAQABAAQABAABAAQAAQABAAQABAABAAEABgAEAAEAAQABAAEAAQABAAEAAQALAAQABAABAAEABAAEAAcABAABAAIAAgABAAQABAABAAwAAQAEAAEADQABAAEAAQAEAAEAAQAFAAQABgABAAIAAQABAAEAAQAEAAQAAQABAAEAAQABAAEABAABAAEACgABAAEABAABAAEADgABAAQACQABAAEAAQACAAQAAQACAAQAAQAEAAQAAQACAAEAAQABAAEABAAEAAEAAQABAAEABAAIAAQABAAGAAYABAABAAEABAAEAAEABAAEAA4AAQABAAcAAQABAAEABgABAAEAAQABAAEABAABAAEABAACAAQAAQABAA8ABAAEAAQAAgABAAEAAQAGAAEABAABAAQAAQABAAEAAQABAAEAAQABAAQAAQAHAAYAAQABAAQAAQABAAQABAABAAEABAABAAIAAQABAAEAAQABAAQABAABAAEAAQABAAEAAQAAAAEAAQCiEQAAEAAAACAAAABkyh0NAAAKAKIRAAAAAAAAAQACAJYRAAAQAAAAMAAAAHEvjwgAAAgAvBEAABAAAABwL48IAAAGAMcRAAAAAAAAAQALALIRAAAQAAAAAAAAAIeRlgYAAA8A0hEAABAAAACVkZYGAAAOAN0RAAAQAAAAlJGWBgAADQDoEQAAEAAAALORlgYAAAwA8xEAABAAAAAYaWkNAAALAP4RAAAQAAAAFGlpDQAACQAIEgAAEAAAALSRlgYAAAcAEhIAABAAAAC4kZYGAAAFAB0SAAAQAAAAdRppCQAABAAoEgAAEAAAAJGRlgYAAAMANBIAABAAAAB0GWkJAAACAD8SAAAAAAAAEC0UAAAAAAAIAAAAAAAAANBgBAAAAAAAGC0UAAAAAAAIAAAAAAAAAJBgBAAAAAAAIC0UAAAAAAAIAAAAAAAAAD5vBQAAAAAAQC0UAAAAAAAIAAAAAAAAALlXBQAAAAAAYC0UAAAAAAAIAAAAAAAAACxbBQAAAAAAgC0UAAAAAAAIAAAAAAAAAORwBQAAAAAAoC0UAAAAAAAIAAAAAAAAADNbBQAAAAAAwC0UAAAAAAAIAAAAAAAAAERbBQAAAAAA4C0UAAAAAAAIAAAAAAAAAFxbBQAAAAAAAC4UAAAAAAAIAAAAAAAAAGVbBQAAAAAAIC4UAAAAAAAIAAAAAAAAAHdbBQAAAAAAQC4UAAAAAAAIAAAAAAAAAItbBQAAAAAAYC4UAAAAAAAIAAAAAAAAAIhbBQAAAAAAgC4UAAAAAAAIAAAAAAAAAJhbBQAAAAAAoC4UAAAAAAAIAAAAAAAAAKVbBQAAAAAAwC4UAAAAAAAIAAAAAAAAALNbBQAAAAAA4C4UAAAAAAAIAAAAAAAAALBbBQAAAAAAIC8UAAAAAAAIAAAAAAAAALlXBQAAAAAAQC8UAAAAAAAIAAAAAAAAACxbBQAAAAAAYC8UAAAAAAAIAAAAAAAAAORwBQAAAAAAgC8UAAAAAAAIAAAAAAAAADNbBQAAAAAAoC8UAAAAAAAIAAAAAAAAAERbBQAAAAAAwC8UAAAAAAAIAAAAAAAAAFxbBQAAAAAA4C8UAAAAAAAIAAAAAAAAAGVbBQAAAAAAADAUAAAAAAAIAAAAAAAAAHdbBQAAAAAAIDAUAAAAAAAIAAAAAAAAAItbBQAAAAAAQDAUAAAAAAAIAAAAAAAAAIhbBQAAAAAAYDAUAAAAAAAIAAAAAAAAAJhbBQAAAAAAgDAUAAAAAAAIAAAAAAAAAKVbBQAAAAAAoDAUAAAAAAAIAAAAAAAAALNbBQAAAAAAwDAUAAAAAAAIAAAAAAAAALBbBQAAAAAAADEUAAAAAAAIAAAAAAAAALlXBQAAAAAAIDEUAAAAAAAIAAAAAAAAACxbBQAAAAAAQDEUAAAAAAAIAAAAAAAAAORwBQAAAAAAYDEUAAAAAAAIAAAAAAAAADNbBQAAAAAAgDEUAAAAAAAIAAAAAAAAAERbBQAAAAAAoDEUAAAAAAAIAAAAAAAAAFxbBQAAAAAA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AAAAAEDZCAAAAAAAgEcUAAAAAAAIAAAAAAAAAJxgBQAAAAAAsEcUAAAAAAAIAAAAAAAAAHjZCAAAAAAAwEcUAAAAAAAIAAAAAAAAAKlgBQAAAAAA6EcUAAAAAAAIAAAAAAAAAMxbBQAAAAAA8EcUAAAAAAAIAAAAAAAAAOjZCAAAAAAAAEgUAAAAAAAIAAAAAAAAALBgBQAAAAAAMEgUAAAAAAAIAAAAAAAAALlgBQAAAAAAQEgUAAAAAAAIAAAAAAAAANdgBQAAAAAAgEgUAAAAAAAIAAAAAAAAANpgBQAAAAAAwEgUAAAAAAAIAAAAAAAAAOZgBQAAAAAA8EgUAAAAAAAIAAAAAAAAAAjaCAAAAAAAAEkUAAAAAAAIAAAAAAAAAO5gBQAAAAAAQEkUAAAAAAAIAAAAAAAAAPFgBQAAAAAAgEkUAAAAAAAIAAAAAAAAAOdgBQAAAAAAwEkUAAAAAAAIAAAAAAAAAPxgBQAAAAAA8EkUAAAAAAAIAAAAAAAAADDaCAAAAAAAAEoUAAAAAAAIAAAAAAAAAAlhBQAAAAAAMEoUAAAAAAAIAAAAAAAAAFjaCAAAAAAAQEoUAAAAAAAIAAAAAAAAABNhBQAAAAAAcEoUAAAAAAAIAAAAAAAAAHjaCAAAAAAAgEoUAAAAAAAIAAAAAAAAACphBQAAAAAAsEoUAAAAAAAIAAAAAAAAAKDaCAAAAAAAwEoUAAAAAAAIAAAAAAAAACdhBQAAAAAA8EoUAAAAAAAIAAAAAAAAANDaCAAAAAAAAEsUAAAAAAAIAAAAAAAAADxhBQAAAAAAMEsUAAAAAAAIAAAAAAAAAADbCAAAAAAAQEsUAAAAAAAIAAAAAAAAADlhBQAAAAAAcEsUAAAAAAAIAAAAAAAAADjbCAAAAAAAgEsUAAAAAAAIAAAAAAAAAFNhBQAAAAAAsEsUAAAAAAAIAAAAAAAAAFhhBQAAAAAAwEsUAAAAAAAIAAAAAAAAAFlUBQAAAAAA6EsUAAAAAAAIAAAAAAAAAHVhBQAAAAAA8EsUAAAAAAAIAAAAAAAAAIdhBQAAAAAAAEwUAAAAAAAIAAAAAAAAAOtiBQAAAAAAKEwUAAAAAAAIAAAAAAAAAJdhBQAAAAAAMEwUAAAAAAAIAAAAAAAAAHjbCAAAAAAAQEwUAAAAAAAIAAAAAAAAAKBhBQAAAAAA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AAAAAA+FBQAAAAAA0IAUAAAAAAAIAAAAAAAAACgBEwAAAAAA4IAUAAAAAAAIAAAAAAAAACWFBQAAAAAA8IAUAAAAAAAIAAAAAAAAADeFBQAAAAAAAIEUAAAAAAAIAAAAAAAAAEeFBQAAAAAAEIEUAAAAAAAIAAAAAAAAAFeFBQAAAAAAIIEUAAAAAAAIAAAAAAAAAGeFBQAAAAAAMIEUAAAAAAAIAAAAAAAAAI9/BQAAAAAAQIEUAAAAAAAIAAAAAAAAAMOEBQAAAAAAUIEUAAAAAAAIAAAAAAAAAHiFBQAAAAAAYIEUAAAAAAAIAAAAAAAAAHeFBQAAAAAAcIEUAAAAAAAIAAAAAAAAAIOFBQAAAAAAgIEUAAAAAAAIAAAAAAAAAIqFBQAAAAAAkIEUAAAAAAAIAAAAAAAAAJKFBQAAAAAAwIEUAAAAAAAIAAAAAAAAAJCEBQAAAAAA0IEUAAAAAAAIAAAAAAAAAKiEBQAAAAAA4IEUAAAAAAAIAAAAAAAAALGEBQAAAAAA8IEUAAAAAAAIAAAAAAAAALCEBQAAAAAAAIIUAAAAAAAIAAAAAAAAAI9/BQAAAAAAEIIUAAAAAAAIAAAAAAAAAMOEBQAAAAAAQIIUAAAAAAAIAAAAAAAAAJCEBQAAAAAAUIIUAAAAAAAIAAAAAAAAANOEBQAAAAAAYIIUAAAAAAAIAAAAAAAAAKiEBQAAAAAAcIIUAAAAAAAIAAAAAAAAAJ+FBQAAAAAAgIIUAAAAAAAIAAAAAAAAALGEBQAAAAAAkIIUAAAAAAAIAAAAAAAAAK2FBQAAAAAAoIIUAAAAAAAIAAAAAAAAAL+FBQAAAAAAsIIUAAAAAAAIAAAAAAAAANOFBQAAAAAAwIIUAAAAAAAIAAAAAAAAADeFBQAAAAAA0IIUAAAAAAAIAAAAAAAAAEeFBQAAAAAA4IIUAAAAAAAIAAAAAAAAAFeFBQAAAAAA8IIUAAAAAAAIAAAAAAAAAGeFBQAAAAAAAIMUAAAAAAAIAAAAAAAAAI9/BQAAAAAAEIMUAAAAAAAIAAAAAAAAAMOEBQAAAAAAIIMUAAAAAAAIAAAAAAAAAHiFBQAAAAAAMIMUAAAAAAAIAAAAAAAAAHeFBQAAAAAAQIMUAAAAAAAIAAAAAAAAAIOFBQAAAAAAUIMUAAAAAAAIAAAAAAAAAIqFBQAAAAAA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yJ8UAAAAAAAGAAAAugAAAAAAAAAAAAAA0J8UAAAAAAAGAAAAygAAAAAAAAAAAAAA2J8UAAAAAAAGAAAA9gAAAAAAAAAAAAAA4J8UAAAAAAAGAAAAGQEAAAAAAAAAAAAA6J8UAAAAAAAGAAAAIAEAAAAAAAAAAAAA8J8UAAAAAAAGAAAADgEAAAAAAAAAAAAA+J8UAAAAAAAGAAAAEQEAAAAAAAAAAAAAQJcUAAAAAAAHAAAAAQAAAAAAAAAAAAAASJcUAAAAAAAHAAAAAgAAAAAAAAAAAAAAUJcUAAAAAAAHAAAAAwAAAAAAAAAAAAAAWJcUAAAAAAAHAAAABAAAAAAAAAAAAAAAYJcUAAAAAAAHAAAABQAAAAAAAAAAAAAAaJcUAAAAAAAHAAAABgAAAAAAAAAAAAAAcJcUAAAAAAAHAAAABwAAAAAAAAAAAAAAeJcUAAAAAAAHAAAACAAAAAAAAAAAAAAAgJcUAAAAAAAHAAAACQAAAAAAAAAAAAAAiJcUAAAAAAAHAAAACgAAAAAAAAAAAAAAkJcUAAAAAAAHAAAACwAAAAAAAAAAAAAAmJcUAAAAAAAHAAAADAAAAAAAAAAAAAAAoJcUAAAAAAAHAAAADQAAAAAAAAAAAAAAqJcUAAAAAAAHAAAADgAAAAAAAAAAAAAAsJcUAAAAAAAHAAAADwAAAAAAAAAAAAAAuJcUAAAAAAAHAAAAEAAAAAAAAAAAAAAAwJcUAAAAAAAHAAAAEgAAAAAAAAAAAAAAyJcUAAAAAAAHAAAAEwAAAAAAAAAAAAAA0JcUAAAAAAAHAAAAFAAAAAAAAAAAAAAA2JcUAAAAAAAHAAAAFQAAAAAAAAAAAAAA4JcUAAAAAAAHAAAAFgAAAAAAAAAAAAAA6JcUAAAAAAAHAAAAGQAAAAAAAAAAAAAA8JcUAAAAAAAHAAAAGgAAAAAAAAAAAAAA+JcUAAAAAAAHAAAAGwAAAAAAAAAAAAAAAJgUAAAAAAAHAAAAHAAAAAAAAAAAAAAACJgUAAAAAAAHAAAAHgAAAAAAAAAAAAAAEJgUAAAAAAAHAAAAHwAAAAAAAAAAAAAAGJgUAAAAAAAHAAAAIAAAAAAAAAAAAAAAIJgUAAAAAAAHAAAAIQAAAAAAAAAAAAAAKJgUAAAAAAAHAAAAIgAAAAAAAAAAAAAAMJgUAAAAAAAHAAAAIwAAAAAAAAAAAAAAOJgUAAAAAAAHAAAAJAAAAAAAAAAAAAAAQJgUAAAAAAAHAAAAJQAAAAAAAAAAAAAASJgUAAAAAAAHAAAAJgAAAAAAAAAAAAAAUJgUAAAAAAAHAAAAJwAAAAAAAAAAAAAAWJgUAAAAAAAHAAAAKAAAAAAAAAAAAAAAYJgUAAAAAAAHAAAAKQAAAAAAAAAAAAAAaJgUAAAAAAAHAAAAKgAAAAAAAAAAAAAAcJgUAAAAAAAHAAAAKwAAAAAAAAAAAAAAeJgUAAAAAAAHAAAALAAAAAAAAAAAAAAAgJgUAAAAAAAHAAAALQAAAAAAAAAAAAAAiJgUAAAAAAAHAAAALwAAAAAAAAAAAAAAkJgUAAAAAAAHAAAAMAAAAAAAAAAAAAAAmJgUAAAAAAAHAAAAMQAAAAAAAAAAAAAAoJgUAAAAAAAHAAAAMgAAAAAAAAAAAAAAqJgUAAAAAAAHAAAAMwAAAAAAAAAAAAAAsJgUAAAAAAAHAAAANAAAAAAAAAAAAAAAuJgUAAAAAAAHAAAANQAAAAAAAAAAAAAAwJgUAAAAAAAHAAAANgAAAAAAAAAAAAAAyJgUAAAAAAAHAAAANwAAAAAAAAAAAAAA0JgUAAAAAAAHAAAAOAAAAAAAAAAAAAAA2JgUAAAAAAAHAAAAOQAAAAAAAAAAAAAA4JgUAAAAAAAHAAAAOgAAAAAAAAAAAAAA6JgUAAAAAAAHAAAAOwAAAAAAAAAAAAAA8JgUAAAAAAAHAAAAPAAAAAAAAAAAAAAA+JgUAAAAAAAHAAAAPQAAAAAAAAAAAAAAAJkUAAAAAAAHAAAAPgAAAAAAAAAAAAAACJkUAAAAAAAHAAAAQAAAAAAAAAAAAAAAEJkUAAAAAAAHAAAAQQAAAAAAAAAAAAAAGJkUAAAAAAAHAAAAQgAAAAAAAAAAAAAAIJkUAAAAAAAHAAAAQwAAAAAAAAAAAAAAKJkUAAAAAAAHAAAARAAAAAAAAAAAAAAAMJkUAAAAAAAHAAAARQAAAAAAAAAAAAAAOJkUAAAAAAAHAAAARgAAAAAAAAAAAAAAQJkUAAAAAAAHAAAARwAAAAAAAAAAAAAASJkUAAAAAAAHAAAASAAAAAAAAAAAAAAAUJkUAAAAAAAHAAAASQAAAAAAAAAAAAAAWJkUAAAAAAAHAAAASgAAAAAAAAAAAAAAYJkUAAAAAAAHAAAASwAAAAAAAAAAAAAAaJkUAAAAAAAHAAAATAAAAAAAAAAAAAAAcJkUAAAAAAAHAAAATQAAAAAAAAAAAAAAeJkUAAAAAAAHAAAATgAAAAAAAAAAAAAAgJkUAAAAAAAHAAAATwAAAAAAAAAAAAAAiJkUAAAAAAAHAAAAUAAAAAAAAAAAAAAAkJkUAAAAAAAHAAAAUQAAAAAAAAAAAAAAmJkUAAAAAAAHAAAAUgAAAAAAAAAAAAAAoJkUAAAAAAAHAAAAUwAAAAAAAAAAAAAAqJkUAAAAAAAHAAAAVAAAAAAAAAAAAAAAsJkUAAAAAAAHAAAAVQAAAAAAAAAAAAAAuJkUAAAAAAAHAAAAVgAAAAAAAAAAAAAAwJkUAAAAAAAHAAAAVwAAAAAAAAAAAAAAyJkUAAAAAAAHAAAAWQAAAAAAAAAAAAAA0JkUAAAAAAAHAAAAWgAAAAAAAAAAAAAA2JkUAAAAAAAHAAAAWwAAAAAAAAAAAAAA4JkUAAAAAAAHAAAAXAAAAAAAAAAAAAAA6JkUAAAAAAAHAAAAXQAAAAAAAAAAAAAA8JkUAAAAAAAHAAAAXgAAAAAAAAAAAAAA+JkUAAAAAAAHAAAAXwAAAAAAAAAAAAAAAJoUAAAAAAAHAAAAYAAAAAAAAAAAAAAACJoUAAAAAAAHAAAAYQAAAAAAAAAAAAAAEJoUAAAAAAAHAAAAYgAAAAAAAAAAAAAAGJoUAAAAAAAHAAAAYwAAAAAAAAAAAAAAIJoUAAAAAAAHAAAAZAAAAAAAAAAAAAAAKJoUAAAAAAAHAAAAZQAAAAAAAAAAAAAAMJoUAAAAAAAHAAAAZgAAAAAAAAAAAAAAOJoUAAAAAAAHAAAAZwAAAAAAAAAAAAAAQJoUAAAAAAAHAAAAaAAAAAAAAAAAAAAASJoUAAAAAAAHAAAAaQAAAAAAAAAAAAAAUJoUAAAAAAAHAAAAagAAAAAAAAAAAAAAWJoUAAAAAAAHAAAAawAAAAAAAAAAAAAAYJoUAAAAAAAHAAAAbAAAAAAAAAAAAAAAaJoUAAAAAAAHAAAAbQAAAAAAAAAAAAAAcJoUAAAAAAAHAAAAbgAAAAAAAAAAAAAAeJoUAAAAAAAHAAAAbwAAAAAAAAAAAAAAgJoUAAAAAAAHAAAAcAAAAAAAAAAAAAAAiJoUAAAAAAAHAAAAcQAAAAAAAAAAAAAAkJoUAAAAAAAHAAAAcgAAAAAAAAAAAAAAmJoUAAAAAAAHAAAAcwAAAAAAAAAAAAAAoJoUAAAAAAAHAAAAdAAAAAAAAAAAAAAAqJoUAAAAAAAHAAAAdQAAAAAAAAAAAAAAsJoUAAAAAAAHAAAAdgAAAAAAAAAAAAAAuJoUAAAAAAAHAAAAdwAAAAAAAAAAAAAAwJoUAAAAAAAHAAAAeAAAAAAAAAAAAAAAyJoUAAAAAAAHAAAAeQAAAAAAAAAAAAAA0JoUAAAAAAAHAAAAegAAAAAAAAAAAAAA2JoUAAAAAAAHAAAAewAAAAAAAAAAAAAA4JoUAAAAAAAHAAAAfAAAAAAAAAAAAAAA6JoUAAAAAAAHAAAAfQAAAAAAAAAAAAAA8JoUAAAAAAAHAAAAfgAAAAAAAAAAAAAA+JoUAAAAAAAHAAAAfwAAAAAAAAAAAAAAAJsUAAAAAAAHAAAAgAAAAAAAAAAAAAAACJsUAAAAAAAHAAAAgQAAAAAAAAAAAAAAEJsUAAAAAAAHAAAAggAAAAAAAAAAAAAAGJsUAAAAAAAHAAAAgwAAAAAAAAAAAAAAIJsUAAAAAAAHAAAAhQAAAAAAAAAAAAAAKJsUAAAAAAAHAAAAhgAAAAAAAAAAAAAAMJsUAAAAAAAHAAAAhwAAAAAAAAAAAAAAOJsUAAAAAAAHAAAAiAAAAAAAAAAAAAAAQJsUAAAAAAAHAAAAiQAAAAAAAAAAAAAASJsUAAAAAAAHAAAAigAAAAAAAAAAAAAAUJsUAAAAAAAHAAAAjAAAAAAAAAAAAAAAWJsUAAAAAAAHAAAAjQAAAAAAAAAAAAAAYJsUAAAAAAAHAAAAjwAAAAAAAAAAAAAAaJsUAAAAAAAHAAAAkAAAAAAAAAAAAAAAcJsUAAAAAAAHAAAAkQAAAAAAAAAAAAAAeJsUAAAAAAAHAAAAkgAAAAAAAAAAAAAAgJsUAAAAAAAHAAAAkwAAAAAAAAAAAAAAiJsUAAAAAAAHAAAAlAAAAAAAAAAAAAAAkJsUAAAAAAAHAAAAlQAAAAAAAAAAAAAAmJsUAAAAAAAHAAAAlgAAAAAAAAAAAAAAoJsUAAAAAAAHAAAAlwAAAAAAAAAAAAAAqJsUAAAAAAAHAAAAmAAAAAAAAAAAAAAAsJsUAAAAAAAHAAAAmQAAAAAAAAAAAAAAuJsUAAAAAAAHAAAAmgAAAAAAAAAAAAAAwJsUAAAAAAAHAAAAmwAAAAAAAAAAAAAAyJsUAAAAAAAHAAAAnAAAAAAAAAAAAAAA0JsUAAAAAAAHAAAAnQAAAAAAAAAAAAAA2JsUAAAAAAAHAAAAngAAAAAAAAAAAAAA4JsUAAAAAAAHAAAAnwAAAAAAAAAAAAAA6JsUAAAAAAAHAAAAoAAAAAAAAAAAAAAA8JsUAAAAAAAHAAAAoQAAAAAAAAAAAAAA+JsUAAAAAAAHAAAAogAAAAAAAAAAAAAAAJwUAAAAAAAHAAAAowAAAAAAAAAAAAAACJwUAAAAAAAHAAAApAAAAAAAAAAAAAAAEJwUAAAAAAAHAAAApQAAAAAAAAAAAAAAGJwUAAAAAAAHAAAApgAAAAAAAAAAAAAAIJwUAAAAAAAHAAAApwAAAAAAAAAAAAAAKJwUAAAAAAAHAAAAqAAAAAAAAAAAAAAAMJwUAAAAAAAHAAAAqQAAAAAAAAAAAAAAOJwUAAAAAAAHAAAAqgAAAAAAAAAAAAAAQJwUAAAAAAAHAAAAqwAAAAAAAAAAAAAASJwUAAAAAAAHAAAArAAAAAAAAAAAAAAAUJwUAAAAAAAHAAAArQAAAAAAAAAAAAAAWJwUAAAAAAAHAAAArgAAAAAAAAAAAAAAYJwUAAAAAAAHAAAArwAAAAAAAAAAAAAAaJwUAAAAAAAHAAAAsAAAAAAAAAAAAAAAcJwUAAAAAAAHAAAAsQAAAAAAAAAAAAAAeJwUAAAAAAAHAAAAswAAAAAAAAAAAAAAgJwUAAAAAAAHAAAAtAAAAAAAAAAAAAAAiJwUAAAAAAAHAAAAtgAAAAAAAAAAAAAAkJwUAAAAAAAHAAAAtwAAAAAAAAAAAAAAmJwUAAAAAAAHAAAAuAAAAAAAAAAAAAAAoJwUAAAAAAAHAAAAuQAAAAAAAAAAAAAAqJwUAAAAAAAHAAAAuwAAAAAAAAAAAAAAsJwUAAAAAAAHAAAAvAAAAAAAAAAAAAAAuJwUAAAAAAAHAAAAvQAAAAAAAAAAAAAAwJwUAAAAAAAHAAAAvgAAAAAAAAAAAAAAyJwUAAAAAAAHAAAAvwAAAAAAAAAAAAAA0JwUAAAAAAAHAAAAwAAAAAAAAAAAAAAA2JwUAAAAAAAHAAAAwQAAAAAAAAAAAAAA4JwUAAAAAAAHAAAAwgAAAAAAAAAAAAAA6JwUAAAAAAAHAAAAwwAAAAAAAAAAAAAA8JwUAAAAAAAHAAAAxAAAAAAAAAAAAAAA+JwUAAAAAAAHAAAAxQAAAAAAAAAAAAAAAJ0UAAAAAAAHAAAAxgAAAAAAAAAAAAAACJ0UAAAAAAAHAAAAxwAAAAAAAAAAAAAAEJ0UAAAAAAAHAAAAyAAAAAAAAAAAAAAAGJ0UAAAAAAAHAAAAyQAAAAAAAAAAAAAAIJ0UAAAAAAAHAAAAywAAAAAAAAAAAAAAKJ0UAAAAAAAHAAAAzAAAAAAAAAAAAAAAMJ0UAAAAAAAHAAAAzQAAAAAAAAAAAAAAOJ0UAAAAAAAHAAAAzgAAAAAAAAAAAAAAQJ0UAAAAAAAHAAAAzwAAAAAAAAAAAAAASJ0UAAAAAAAHAAAA0AAAAAAAAAAAAAAAUJ0UAAAAAAAHAAAA0QAAAAAAAAAAAAAAWJ0UAAAAAAAHAAAA0gAAAAAAAAAAAAAAYJ0UAAAAAAAHAAAA0wAAAAAAAAAAAAAAaJ0UAAAAAAAHAAAA1AAAAAAAAAAAAAAAcJ0UAAAAAAAHAAAA1QAAAAAAAAAAAAAAeJ0UAAAAAAAHAAAA1gAAAAAAAAAAAAAAgJ0UAAAAAAAHAAAA1wAAAAAAAAAAAAAAiJ0UAAAAAAAHAAAA2AAAAAAAAAAAAAAAkJ0UAAAAAAAHAAAA2QAAAAAAAAAAAAAAmJ0UAAAAAAAHAAAA2gAAAAAAAAAAAAAAoJ0UAAAAAAAHAAAA2wAAAAAAAAAAAAAAqJ0UAAAAAAAHAAAA3AAAAAAAAAAAAAAAsJ0UAAAAAAAHAAAA3QAAAAAAAAAAAAAAuJ0UAAAAAAAHAAAA3gAAAAAAAAAAAAAAwJ0UAAAAAAAHAAAA3wAAAAAAAAAAAAAAyJ0UAAAAAAAHAAAA4AAAAAAAAAAAAAAA0J0UAAAAAAAHAAAA4QAAAAAAAAAAAAAA2J0UAAAAAAAHAAAA4gAAAAAAAAAAAAAA4J0UAAAAAAAHAAAA4wAAAAAAAAAAAAAA6J0UAAAAAAAHAAAA5AAAAAAAAAAAAAAA8J0UAAAAAAAHAAAA5QAAAAAAAAAAAAAA+J0UAAAAAAAHAAAA5gAAAAAAAAAAAAAAAJ4UAAAAAAAHAAAA5wAAAAAAAAAAAAAACJ4UAAAAAAAHAAAA6AAAAAAAAAAAAAAAEJ4UAAAAAAAHAAAA6QAAAAAAAAAAAAAAGJ4UAAAAAAAHAAAA6gAAAAAAAAAAAAAAIJ4UAAAAAAAHAAAA6wAAAAAAAAAAAAAAKJ4UAAAAAAAHAAAA7QAAAAAAAAAAAAAAMJ4UAAAAAAAHAAAA7gAAAAAAAAAAAAAAOJ4UAAAAAAAHAAAA7wAAAAAAAAAAAAAAQJ4UAAAAAAAHAAAA8AAAAAAAAAAAAAAASJ4UAAAAAAAHAAAA8QAAAAAAAAAAAAAAUJ4UAAAAAAAHAAAA8gAAAAAAAAAAAAAAWJ4UAAAAAAAHAAAA8wAAAAAAAAAAAAAAYJ4UAAAAAAAHAAAA9AAAAAAAAAAAAAAAaJ4UAAAAAAAHAAAA9QAAAAAAAAAAAAAAcJ4UAAAAAAAHAAAA9wAAAAAAAAAAAAAAeJ4UAAAAAAAHAAAA+AAAAAAAAAAAAAAAgJ4UAAAAAAAHAAAA+QAAAAAAAAAAAAAAiJ4UAAAAAAAHAAAA+gAAAAAAAAAAAAAAkJ4UAAAAAAAHAAAA+wAAAAAAAAAAAAAAmJ4UAAAAAAAHAAAA/AAAAAAAAAAAAAAAoJ4UAAAAAAAHAAAA/QAAAAAAAAAAAAAAqJ4UAAAAAAAHAAAA/gAAAAAAAAAAAAAAsJ4UAAAAAAAHAAAA/wAAAAAAAAAAAAAAuJ4UAAAAAAAHAAAAAAEAAAAAAAAAAAAAwJ4UAAAAAAAHAAAAAQEAAAAAAAAAAAAAyJ4UAAAAAAAHAAAAAgEAAAAAAAAAAAAA0J4UAAAAAAAHAAAAAwEAAAAAAAAAAAAA2J4UAAAAAAAHAAAABAEAAAAAAAAAAAAA4J4UAAAAAAAHAAAABQEAAAAAAAAAAAAA6J4UAAAAAAAHAAAABgEAAAAAAAAAAAAA8J4UAAAAAAAHAAAABwEAAAAAAAAAAAAA+J4UAAAAAAAHAAAACAEAAAAAAAAAAAAAAJ8UAAAAAAAHAAAACQEAAAAAAAAAAAAACJ8UAAAAAAAHAAAACgEAAAAAAAAAAAAAEJ8UAAAAAAAHAAAACwEAAAAAAAAAAAAAGJ8UAAAAAAAHAAAADAEAAAAAAAAAAAAAIJ8UAAAAAAAHAAAADQEAAAAAAAAAAAAAKJ8UAAAAAAAHAAAADwEAAAAAAAAAAAAAMJ8UAAAAAAAHAAAAEAEAAAAAAAAAAAAAOJ8UAAAAAAAHAAAAEgEAAAAAAAAAAAAAQJ8UAAAAAAAHAAAAEwEAAAAAAAAAAAAASJ8UAAAAAAAHAAAAFAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzDx76SIPsCEiLBZm/EwBIhcB0Av/QSIPECMMAAAAAAP81CrcTAP8lDLcTAA8fQADzDx76aAAAAADp4v///2aQ8w8e+mgBAAAA6dL///9mkPMPHvpoAgAAAOnC////ZpDzDx76aAMAAADpsv///2aQ8w8e+mgEAAAA6aL///9mkPMPHvpoBQAAAOmS////ZpDzDx76aAYAAADpgv///2aQ8w8e+mgHAAAA6XL///9mkPMPHvpoCAAAAOli////ZpDzDx76aAkAAADpUv///2aQ8w8e+mgKAAAA6UL///9mkPMPHvpoCwAAAOky////ZpDzDx76aAwAAADpIv///2aQ8w8e+mgNAAAA6RL///9mkPMPHvpoDgAAAOkC////ZpDzDx76aA8AAADp8v7//2aQ8w8e+mgQAAAA6eL+//9mkPMPHvpoEQAAAOnS/v//ZpDzDx76aBIAAADpwv7//2aQ8w8e+mgTAAAA6bL+//9mkPMPHvpoFAAAAOmi/v//ZpDzDx76aBUAAADpkv7//2aQ8w8e+mgWAAAA6YL+//9mkPMPHvpoFwAAAOly/v//ZpDzDx76aBgAAADpYv7//2aQ8w8e+mgZAAAA6VL+//9mkPMPHvpoGgAAAOlC/v//ZpDzDx76aBsAAADpMv7//2aQ8w8e+mgcAAAA6SL+//9mkPMPHvpoHQAAAOkS/v//ZpDzDx76aB4AAADpAv7//2aQ8w8e+mgfAAAA6fL9//9mkPMPHvpoIAAAAOni/f//ZpDzDx76aCEAAADp0v3//2aQ8w8e+mgiAAAA6cL9//9mkPMPHvpoIwAAAOmy/f//ZpDzDx76aCQAAADpov3//2aQ8w8e+mglAAAA6ZL9//9mkPMPHvpoJgAAAOmC/f//ZpDzDx76aCcAAADpcv3//2aQ8w8e+mgoAAAA6WL9//9mkPMPHvpoKQAAAOlS/f//ZpDzDx76aCoAAADpQv3//2aQ8w8e+mgrAAAA6TL9//9mkPMPHvpoLAAAAOki/f//ZpDzDx76aC0AAADpEv3//2aQ8w8e+mguAAAA6QL9//9mkPMPHvpoLwAAAOny/P//ZpDzDx76aDAAAADp4vz//2aQ8w8e+mgxAAAA6dL8//9mkPMPHvpoMgAAAOnC/P//ZpDzDx76aDMAAADpsvz//2aQ8w8e+mg0AAAA6aL8//9mkPMPHvpoNQAAAOmS/P//ZpDzDx76aDYAAADpgvz//2aQ8w8e+mg3AAAA6XL8//9mkPMPHvpoOAAAAOli/P//ZpDzDx76aDkAAADpUvz//2aQ8w8e+mg6AAAA6UL8//9mkPMPHvpoOwAAAOky/P//ZpDzDx76aDwAAADpIvz//2aQ8w8e+mg9AAAA6RL8//9mkPMPHvpoPgAAAOkC/P//ZpDzDx76aD8AAADp8vv//2aQ8w8e+mhAAAAA6eL7//9mkPMPHvpoQQAAAOnS+///ZpDzDx76aEIAAADpwvv//2aQ8w8e+mhDAAAA6bL7//9mkPMPHvpoRAAAAOmi+///ZpDzDx76aEUAAADpkvv//2aQ8w8e+mhGAAAA6YL7//9mkPMPHvpoRwAAAOly+///ZpDzDx76aEgAAADpYvv//2aQ8w8e+mhJAAAA6VL7//9mkPMPHvpoSgAAAOlC+///ZpDzDx76aEsAAADpMvv//2aQ8w8e+mhMAAAA6SL7//9mkPMPHvpoTQAAAOkS+///ZpDzDx76aE4AAADpAvv//2aQ8w8e+mhPAAAA6fL6//9mkPMPHvpoUAAAAOni+v//ZpDzDx76aFEAAADp0vr//2aQ8w8e+mhSAAAA6cL6//9mkPMPHvpoUwAAAOmy+v//ZpDzDx76aFQAAADpovr//2aQ8w8e+mhVAAAA6ZL6//9mkPMPHvpoVgAAAOmC+v//ZpDzDx76aFcAAADpcvr//2aQ8w8e+mhYAAAA6WL6//9mkPMPHvpoWQAAAOlS+v//ZpDzDx76aFoAAADpQvr//2aQ8w8e+mhbAAAA6TL6//9mkPMPHvpoXAAAAOki+v//ZpDzDx76aF0AAADpEvr//2aQ8w8e+mheAAAA6QL6//9mkPMPHvpoXwAAAOny+f//ZpDzDx76aGAAAADp4vn//2aQ8w8e+mhhAAAA6dL5//9mkPMPHvpoYgAAAOnC+f//ZpDzDx76aGMAAADpsvn//2aQ8w8e+mhkAAAA6aL5//9mkPMPHvpoZQAAAOmS+f//ZpDzDx76aGYAAADpgvn//2aQ8w8e+mhnAAAA6XL5//9mkPMPHvpoaAAAAOli+f//ZpDzDx76aGkAAADpUvn//2aQ8w8e+mhqAAAA6UL5//9mkPMPHvpoawAAAOky+f//ZpDzDx76aGwAAADpIvn//2aQ8w8e+mhtAAAA6RL5//9mkPMPHvpobgAAAOkC+f//ZpDzDx76aG8AAADp8vj//2aQ8w8e+mhwAAAA6eL4//9mkPMPHvpocQAAAOnS+P//ZpDzDx76aHIAAADpwvj//2aQ8w8e+mhzAAAA6bL4//9mkPMPHvpodAAAAOmi+P//ZpDzDx76aHUAAADpkvj//2aQ8w8e+mh2AAAA6YL4//9mkPMPHvpodwAAAOly+P//ZpDzDx76aHgAAADpYvj//2aQ8w8e+mh5AAAA6VL4//9mkPMPHvpoegAAAOlC+P//ZpDzDx76aHsAAADpMvj//2aQ8w8e+mh8AAAA6SL4//9mkPMPHvpofQAAAOkS+P//ZpDzDx76aH4AAADpAvj//2aQ8w8e+mh/AAAA6fL3//9mkPMPHvpogAAAAOni9///ZpDzDx76aIEAAADp0vf//2aQ8w8e+miCAAAA6cL3//9mkPMPHvpogwAAAOmy9///ZpDzDx76aIQAAADpovf//2aQ8w8e+miFAAAA6ZL3//9mkPMPHvpohgAAAOmC9///ZpDzDx76aIcAAADpcvf//2aQ8w8e+miIAAAA6WL3//9mkPMPHvpoiQAAAOlS9///ZpDzDx76aIoAAADpQvf//2aQ8w8e+miLAAAA6TL3//9mkPMPHvpojAAAAOki9///ZpDzDx76aI0AAADpEvf//2aQ8w8e+miOAAAA6QL3//9mkPMPHvpojwAAAOny9v//ZpDzDx76aJAAAADp4vb//2aQ8w8e+miRAAAA6dL2//9mkPMPHvpokgAAAOnC9v//ZpDzDx76aJMAAADpsvb//2aQ8w8e+miUAAAA6aL2//9mkPMPHvpolQAAAOmS9v//ZpDzDx76aJYAAADpgvb//2aQ8w8e+miXAAAA6XL2//9mkPMPHvpomAAAAOli9v//ZpDzDx76aJkAAADpUvb//2aQ8w8e+miaAAAA6UL2//9mkPMPHvpomwAAAOky9v//ZpDzDx76aJwAAADpIvb//2aQ8w8e+midAAAA6RL2//9mkPMPHvpongAAAOkC9v//ZpDzDx76aJ8AAADp8vX//2aQ8w8e+migAAAA6eL1//9mkPMPHvpooQAAAOnS9f//ZpDzDx76aKIAAADpwvX//2aQ8w8e+mijAAAA6bL1//9mkPMPHvpopAAAAOmi9f//ZpDzDx76aKUAAADpkvX//2aQ8w8e+mimAAAA6YL1//9mkPMPHvpopwAAAOly9f//ZpDzDx76aKgAAADpYvX//2aQ8w8e+mipAAAA6VL1//9mkPMPHvpoqgAAAOlC9f//ZpDzDx76aKsAAADpMvX//2aQ8w8e+misAAAA6SL1//9mkPMPHvporQAAAOkS9f//ZpDzDx76aK4AAADpAvX//2aQ8w8e+mivAAAA6fL0//9mkPMPHvposAAAAOni9P//ZpDzDx76aLEAAADp0vT//2aQ8w8e+miyAAAA6cL0//9mkPMPHvposwAAAOmy9P//ZpDzDx76aLQAAADpovT//2aQ8w8e+mi1AAAA6ZL0//9mkPMPHvpotgAAAOmC9P//ZpDzDx76aLcAAADpcvT//2aQ8w8e+mi4AAAA6WL0//9mkPMPHvpouQAAAOlS9P//ZpDzDx76aLoAAADpQvT//2aQ8w8e+mi7AAAA6TL0//9mkPMPHvpovAAAAOki9P//ZpDzDx76aL0AAADpEvT//2aQ8w8e+mi+AAAA6QL0//9mkPMPHvpovwAAAOny8///ZpDzDx76aMAAAADp4vP//2aQ8w8e+mjBAAAA6dLz//9mkPMPHvpowgAAAOnC8///ZpDzDx76aMMAAADpsvP//2aQ8w8e+mjEAAAA6aLz//9mkPMPHvpoxQAAAOmS8///ZpDzDx76aMYAAADpgvP//2aQ8w8e+mjHAAAA6XLz//9mkPMPHvpoyAAAAOli8///ZpDzDx76aMkAAADpUvP//2aQ8w8e+mjKAAAA6ULz//9mkPMPHvpoywAAAOky8///ZpDzDx76aMwAAADpIvP//2aQ8w8e+mjNAAAA6RLz//9mkPMPHvpozgAAAOkC8///ZpDzDx76aM8AAADp8vL//2aQ8w8e+mjQAAAA6eLy//9mkPMPHvpo0QAAAOnS8v//ZpDzDx76aNIAAADpwvL//2aQ8w8e+mjTAAAA6bLy//9mkPMPHvpo1AAAAOmi8v//ZpDzDx76aNUAAADpkvL//2aQ8w8e+mjWAAAA6YLy//9mkPMPHvpo1wAAAOly8v//ZpDzDx76aNgAAADpYvL//2aQ8w8e+mjZAAAA6VLy//9mkPMPHvpo2gAAAOlC8v//ZpDzDx76aNsAAADpMvL//2aQ8w8e+mjcAAAA6SLy//9mkPMPHvpo3QAAAOkS8v//ZpDzDx76aN4AAADpAvL//2aQ8w8e+mjfAAAA6fLx//9mkPMPHvpo4AAAAOni8f//ZpDzDx76aOEAAADp0vH//2aQ8w8e+mjiAAAA6cLx//9mkPMPHvpo4wAAAOmy8f//ZpDzDx76aOQAAADpovH//2aQ8w8e+mjlAAAA6ZLx//9mkPMPHvpo5gAAAOmC8f//ZpDzDx76aOcAAADpcvH//2aQ8w8e+mjoAAAA6WLx//9mkPMPHvpo6QAAAOlS8f//ZpDzDx76aOoAAADpQvH//2aQ8w8e+mjrAAAA6TLx//9mkPMPHvpo7AAAAOki8f//ZpDzDx76aO0AAADpEvH//2aQ8w8e+mjuAAAA6QLx//9mkPMPHvpo7wAAAOny8P//ZpDzDx76aPAAAADp4vD//2aQ8w8e+mjxAAAA6dLw//9mkPMPHvpo8gAAAOnC8P//ZpDzDx76aPMAAADpsvD//2aQ8w8e+mj0AAAA6aLw//9mkPMPHvpo9QAAAOmS8P//ZpDzDx76aPYAAADpgvD//2aQ8w8e+mj3AAAA6XLw//9mkPMPHvpo+AAAAOli8P//ZpDzDx76aPkAAADpUvD//2aQ8w8e+mj6AAAA6ULw//9mkPMPHvpo+wAAAOky8P//ZpDzDx76aPwAAADpIvD//2aQ8w8e+mj9AAAA6RLw//9mkPMPHvpo/gAAAOkC8P//ZpDzDx76aP8AAADp8u///2aQ8w8e+mgAAQAA6eLv//9mkPMPHvpoAQEAAOnS7///ZpDzDx76/yX2rhMAZg8fRAAA8w8e+v8lFq8TAGYPH0QAAPMPHvr/JR6vEwBmDx9EAADzDx76/yVWrxMAZg8fRAAA8w8e+v8lTq8TAGYPH0QAAPMPHvr/JZamEwBmDx9EAADzDx76/yWOphMAZg8fRAAA8w8e+v8lhqYTAGYPH0QAAPMPHvr/JX6mEwBmDx9EAADzDx76/yV2phMAZg8fRAAA8w8e+v8lbqYTAGYPH0QAAPMPHvr/JWamEwBmDx9EAADzDx76/yVephMAZg8fRAAA8w8e+v8lVqYTAGYPH0QAAPMPHvr/JU6mEwBmDx9EAADzDx76/yVGphMAZg8fRAAA8w8e+v8lPqYTAGYPH0QAAPMPHvr/JTamEwBmDx9EAADzDx76/yUuphMAZg8fRAAA8w8e+v8lJqYTAGYPH0QAAPMPHvr/JR6mEwBmDx9EAADzDx76/yUWphMAZg8fRAAA8w8e+v8lDqYTAGYPH0QAAPMPHvr/JQamEwBmDx9EAADzDx76/yX+pRMAZg8fRAAA8w8e+v8l9qUTAGYPH0QAAPMPHvr/Je6lEwBmDx9EAADzDx76/yXmpRMAZg8fRAAA8w8e+v8l3qUTAGYPH0QAAPMPHvr/JdalEwBmDx9EAADzDx76/yXOpRMAZg8fRAAA8w8e+v8lxqUTAGYPH0QAAPMPHvr/Jb6lEwBmDx9EAADzDx76/yW2pRMAZg8fRAAA8w8e+v8lrqUTAGYPH0QAAPMPHvr/JaalEwBmDx9EAADzDx76/yWepRMAZg8fRAAA8w8e+v8llqUTAGYPH0QAAPMPHvr/JY6lEwBmDx9EAADzDx76/yWGpRMAZg8fRAAA8w8e+v8lfqUTAGYPH0QAAPMPHvr/JXalEwBmDx9EAADzDx76/yVupRMAZg8fRAAA8w8e+v8lZqUTAGYPH0QAAPMPHvr/JV6lEwBmDx9EAADzDx76/yVWpRMAZg8fRAAA8w8e+v8lTqUTAGYPH0QAAPMPHvr/JUalEwBmDx9EAADzDx76/yU+pRMAZg8fRAAA8w8e+v8lNqUTAGYPH0QAAPMPHvr/JS6lEwBmDx9EAADzDx76/yUmpRMAZg8fRAAA8w8e+v8lHqUTAGYPH0QAAPMPHvr/JRalEwBmDx9EAADzDx76/yUOpRMAZg8fRAAA8w8e+v8lBqUTAGYPH0QAAPMPHvr/Jf6kEwBmDx9EAADzDx76/yX2pBMAZg8fRAAA8w8e+v8l7qQTAGYPH0QAAPMPHvr/JeakEwBmDx9EAADzDx76/yXepBMAZg8fRAAA8w8e+v8l1qQTAGYPH0QAAPMPHvr/Jc6kEwBmDx9EAADzDx76/yXGpBMAZg8fRAAA8w8e+v8lvqQTAGYPH0QAAPMPHvr/JbakEwBmDx9EAADzDx76/yWupBMAZg8fRAAA8w8e+v8lpqQTAGYPH0QAAPMPHvr/JZ6kEwBmDx9EAADzDx76/yWWpBMAZg8fRAAA8w8e+v8ljqQTAGYPH0QAAPMPHvr/JYakEwBmDx9EAADzDx76/yV+pBMAZg8fRAAA8w8e+v8ldqQTAGYPH0QAAPMPHvr/JW6kEwBmDx9EAADzDx76/yVmpBMAZg8fRAAA8w8e+v8lXqQTAGYPH0QAAPMPHvr/JVakEwBmDx9EAADzDx76/yVOpBMAZg8fRAAA8w8e+v8lRqQTAGYPH0QAAPMPHvr/JT6kEwBmDx9EAADzDx76/yU2pBMAZg8fRAAA8w8e+v8lLqQTAGYPH0QAAPMPHvr/JSakEwBmDx9EAADzDx76/yUepBMAZg8fRAAA8w8e+v8lFqQTAGYPH0QAAPMPHvr/JQ6kEwBmDx9EAADzDx76/yUGpBMAZg8fRAAA8w8e+v8l/qMTAGYPH0QAAPMPHvr/JfajEwBmDx9EAADzDx76/yXuoxMAZg8fRAAA8w8e+v8l5qMTAGYPH0QAAPMPHvr/Jd6jEwBmDx9EAADzDx76/yXWoxMAZg8fRAAA8w8e+v8lzqMTAGYPH0QAAPMPHvr/JcajEwBmDx9EAADzDx76/yW+oxMAZg8fRAAA8w8e+v8ltqMTAGYPH0QAAPMPHvr/Ja6jEwBmDx9EAADzDx76/yWmoxMAZg8fRAAA8w8e+v8lnqMTAGYPH0QAAPMPHvr/JZajEwBmDx9EAADzDx76/yWOoxMAZg8fRAAA8w8e+v8lhqMTAGYPH0QAAPMPHvr/JX6jEwBmDx9EAADzDx76/yV2oxMAZg8fRAAA8w8e+v8lbqMTAGYPH0QAAPMPHvr/JWajEwBmDx9EAADzDx76/yVeoxMAZg8fRAAA8w8e+v8lVqMTAGYPH0QAAPMPHvr/JU6jEwBmDx9EAADzDx76/yVGoxMAZg8fRAAA8w8e+v8lPqMTAGYPH0QAAPMPHvr/JTajEwBmDx9EAADzDx76/yUuoxMAZg8fRAAA8w8e+v8lJqMTAGYPH0QAAPMPHvr/JR6jEwBmDx9EAADzDx76/yUWoxMAZg8fRAAA8w8e+v8lDqMTAGYPH0QAAPMPHvr/JQajEwBmDx9EAADzDx76/yX+ohMAZg8fRAAA8w8e+v8l9qITAGYPH0QAAPMPHvr/Je6iEwBmDx9EAADzDx76/yXmohMAZg8fRAAA8w8e+v8l3qITAGYPH0QAAPMPHvr/JdaiEwBmDx9EAADzDx76/yXOohMAZg8fRAAA8w8e+v8lxqITAGYPH0QAAPMPHvr/Jb6iEwBmDx9EAADzDx76/yW2ohMAZg8fRAAA8w8e+v8lrqITAGYPH0QAAPMPHvr/JaaiEwBmDx9EAADzDx76/yWeohMAZg8fRAAA8w8e+v8llqITAGYPH0QAAPMPHvr/JY6iEwBmDx9EAADzDx76/yWGohMAZg8fRAAA8w8e+v8lfqITAGYPH0QAAPMPHvr/JXaiEwBmDx9EAADzDx76/yVuohMAZg8fRAAA8w8e+v8lZqITAGYPH0QAAPMPHvr/JV6iEwBmDx9EAADzDx76/yVWohMAZg8fRAAA8w8e+v8lTqITAGYPH0QAAPMPHvr/JUaiEwBmDx9EAADzDx76/yU+ohMAZg8fRAAA8w8e+v8lNqITAGYPH0QAAPMPHvr/JS6iEwBmDx9EAADzDx76/yUmohMAZg8fRAAA8w8e+v8lHqITAGYPH0QAAPMPHvr/JRaiEwBmDx9EAADzDx76/yUOohMAZg8fRAAA8w8e+v8lBqITAGYPH0QAAPMPHvr/Jf6hEwBmDx9EAADzDx76/yX2oRMAZg8fRAAA8w8e+v8l7qETAGYPH0QAAPMPHvr/JeahEwBmDx9EAADzDx76/yXeoRMAZg8fRAAA8w8e+v8l1qETAGYPH0QAAPMPHvr/Jc6hEwBmDx9EAADzDx76/yXGoRMAZg8fRAAA8w8e+v8lvqETAGYPH0QAAPMPHvr/JbahEwBmDx9EAADzDx76/yWuoRMAZg8fRAAA8w8e+v8lpqETAGYPH0QAAPMPHvr/JZ6hEwBmDx9EAADzDx76/yWWoRMAZg8fRAAA8w8e+v8ljqETAGYPH0QAAPMPHvr/JYahEwBmDx9EAADzDx76/yV+oRMAZg8fRAAA8w8e+v8ldqETAGYPH0QAAPMPHvr/JW6hEwBmDx9EAADzDx76/yVmoRMAZg8fRAAA8w8e+v8lXqETAGYPH0QAAPMPHvr/JVahEwBmDx9EAADzDx76/yVOoRMAZg8fRAAA8w8e+v8lRqETAGYPH0QAAPMPHvr/JT6hEwBmDx9EAADzDx76/yU2oRMAZg8fRAAA8w8e+v8lLqETAGYPH0QAAPMPHvr/JSahEwBmDx9EAADzDx76/yUeoRMAZg8fRAAA8w8e+v8lFqETAGYPH0QAAPMPHvr/JQ6hEwBmDx9EAADzDx76/yUGoRMAZg8fRAAA8w8e+v8l/qATAGYPH0QAAPMPHvr/JfagEwBmDx9EAADzDx76/yXuoBMAZg8fRAAA8w8e+v8l5qATAGYPH0QAAPMPHvr/Jd6gEwBmDx9EAADzDx76/yXWoBMAZg8fRAAA8w8e+v8lzqATAGYPH0QAAPMPHvr/JcagEwBmDx9EAADzDx76/yW+oBMAZg8fRAAA8w8e+v8ltqATAGYPH0QAAPMPHvr/Ja6gEwBmDx9EAADzDx76/yWmoBMAZg8fRAAA8w8e+v8lnqATAGYPH0QAAPMPHvr/JZagEwBmDx9EAADzDx76/yWOoBMAZg8fRAAA8w8e+v8lhqATAGYPH0QAAPMPHvr/JX6gEwBmDx9EAADzDx76/yV2oBMAZg8fRAAA8w8e+v8lbqATAGYPH0QAAPMPHvr/JWagEwBmDx9EAADzDx76/yVeoBMAZg8fRAAA8w8e+v8lVqATAGYPH0QAAPMPHvr/JU6gEwBmDx9EAADzDx76/yVGoBMAZg8fRAAA8w8e+v8lPqATAGYPH0QAAPMPHvr/JTagEwBmDx9EAADzDx76/yUuoBMAZg8fRAAA8w8e+v8lJqATAGYPH0QAAPMPHvr/JR6gEwBmDx9EAADzDx76/yUWoBMAZg8fRAAA8w8e+v8lDqATAGYPH0QAAPMPHvr/JQagEwBmDx9EAADzDx76/yX+nxMAZg8fRAAA8w8e+v8l9p8TAGYPH0QAAPMPHvr/Je6fEwBmDx9EAADzDx76/yXmnxMAZg8fRAAA8w8e+v8l3p8TAGYPH0QAAPMPHvr/JdafEwBmDx9EAADzDx76/yXOnxMAZg8fRAAA8w8e+v8lxp8TAGYPH0QAAPMPHvr/Jb6fEwBmDx9EAADzDx76/yW2nxMAZg8fRAAA8w8e+v8lrp8TAGYPH0QAAPMPHvr/JaafEwBmDx9EAADzDx76/yWenxMAZg8fRAAA8w8e+v8llp8TAGYPH0QAAPMPHvr/JY6fEwBmDx9EAADzDx76/yWGnxMAZg8fRAAA8w8e+v8lfp8TAGYPH0QAAPMPHvr/JXafEwBmDx9EAADzDx76/yVunxMAZg8fRAAA8w8e+v8lZp8TAGYPH0QAAPMPHvr/JV6fEwBmDx9EAADzDx76/yVWnxMAZg8fRAAA8w8e+v8lTp8TAGYPH0QAAPMPHvr/JUafEwBmDx9EAADzDx76/yU+nxMAZg8fRAAA8w8e+v8lNp8TAGYPH0QAAPMPHvr/JS6fEwBmDx9EAADzDx76/yUmnxMAZg8fRAAA8w8e+v8lHp8TAGYPH0QAAPMPHvr/JRafEwBmDx9EAADzDx76/yUOnxMAZg8fRAAA8w8e+v8lBp8TAGYPH0QAAPMPHvr/Jf6eEwBmDx9EAADzDx76/yX2nhMAZg8fRAAA8w8e+v8l7p4TAGYPH0QAAPMPHvr/JeaeEwBmDx9EAADzDx76/yXenhMAZg8fRAAA8w8e+v8l1p4TAGYPH0QAAPMPHvr/Jc6eEwBmDx9EAADzDx76/yXGnhMAZg8fRAAA8w8e+v8lvp4TAGYPH0QAAPMPHvr/JbaeEwBmDx9EAADzDx76/yWunhMAZg8fRAAA8w8e+v8lpp4TAGYPH0QAAPMPHvr/JZ6eEwBmDx9EAADzDx76/yWWnhMAZg8fRAAA8w8e+v8ljp4TAGYPH0QAAEiLDQmfEwBIg8MBD7YUEYhT/+kKigMAuAEAAABIiz3FuxMASI00AzHSMcDosPT//zHSRInmMclIiccPtgX/tRMAicOD4PeIBfS1EwDA6wPoHGwCAIPjAUiJwg+2Bd+1EwDB4wOD4PcJ2FtBXIgFzrUTAF1IidDDuAgAAADrnkwpxg+FuG0CAEiNBe9yBADpuG0CAE2LfxBNhf8PhA1sAgBJiz8x0kyJ7kyJRcDoX/T//0yLRcCFwHXagD34uBMAAHUUTYtvCE2F7Q+F3msCADHb6dlsAgBJiwdIjTUPUgQASYtfCEyJRbhIicdIiUXA6Bz5//9Mi0W4SIXAdDZIhdsPhIYAAAC6BQAAAEiNNW6UBAAx/+h38v//SItNwEiJ2kyJ7kiJxzHA6GjPAABMi0W4649MiUXAugUAAABIhdt0J0iNNaCUBAAx/+hB8v//SInaTInuSInHMcDoNs8AAEyLRcDpWv///0iNNYRRBAAx/+ga8v//TInuSInHMcDoEs8AAEyLRcDpNv///7oFAAAASI01IJQEADH/TIlFuOjt8f//SItVwEyJ7kiJxzHA6OHOAABMi0W46QX///9IixVMtRMASInPgA1itRMAAkiNBBNI99JIIdBIixUJtRMASInGSCnWSCnXSDn3D4MqawIA6ZBsAgAPEUsQ6ZtrAgBmgUtgEAQPEUsQ6YxrAgBBgH0BAA+EtmsCAIBLYAJJjUUB6alrAgCADQO1EwACSInL6ZdsAgBIjTXMkwQAMf+6BQAAAEiJTcjoRPH//0iLdchIiccxwOiGnwMASI01p5MEADH/ugUAAADoI/H//0yJ/kiJxzHA6GafAwBIiwNIhcB1CEiJ2OkubgIASDtISHXyQfbEAXUli5CsAAAAQTnVD4T5bQIAhdIPiANuAgBFhe0PhOhtAgDp9W0CAEGB/YQBAAB10unnbQIA6NLs//9IicJIhcAPhZBuAgAxwOkZbwIA8w8e+lW+CQAAAEiNPTlXBADGBduyEwBnSInl6M+IAwC6BQAAIV1IuP///7/+/x/ySMHiHkgjBSS3EwCADR2zEwAgSAnQgA0btxMAAsYFTrgTAAHGBV64EwAASIkF/rYTAMNFheR0DESJJWmyEwDpr4gDAEiNNdWSBAAx/7oFAAAA6Cnw//9Iid5IiccxwOhsngMA99BIjR12YQQAugUAAACoA0iNBZxPBABIjTUWqgQASA9E2DH/6PPv//9IicdIid4xwOg2ngMASGOd/P7//0iLhej+//8x/7oFAAAASI01KlEEAEiLHNjowe///0iJx0iJ3jHA6ASeAwBMiz39mhMAvj0AAABNiydMiefoPfD//0iFwA+EfQwAAEGAPCQATI1wAQ+EUQwAAIB4AQAPhEcMAABMifNMKeNIY8NIicdIiYXA/v//6IPr//+NU/9Ii53A/v//SYs3SYnESGPSSInHSInZ6HXz//9BxkQc/wBMifdIjbUo////uhAAAADoK+z//0iJx0iLhSj///+AOAAPhcQLAADoU5QCADHSTInnSInG6IatAwDpg3ECAEyLPUqaEwBJiwdIiQUwthMA6W1xAgAPtgWWtRMAg+A/g8iAiAWKtRMA6VVxAgDGBSK1EwAA6UlxAgBJjXwkAumRcQIAugUAAABIjTXbTwQAMf/oqu7//zH/ugUAAABIjTXSTwQASIkFbbATAOiQ7v//SInHMcDo1pwDAEiDxwHpIHcCAEyLtcD+//9JOd8PheN2AgBMif/oZer//0yJ9+gN7v//6dpwAgBMif5IjT2uqgQAMcDol5wDAEiDxgHpHncCAEiDwgHp5nYCAEyJ/kiNPYuqBAAxwOh0nAMAQ4B8J/4KdCZNAeRMif9MieboDu///0k53EiJ3kkPQ/RJicdIKd5IAcPpInYCAEyLtcD+///pYHYCAEmLH0iNNUCtBAAx/7oFAAAA6NTt//9IicdIid4xwOgXnAMATIs9EJkTAL49AAAATYs3TIn36FDu//9IicNIhcAPhIAAAABJicRNKfRJjUwkAUiJz0iJjcD+///oqun//0iLjcD+//9JizdMieJJicZIicfoovH//0PGBCYATIn3SI1zAeihqgMATIn36Fnp///p1m8CAMYFXa8TAADpym8CAIAl+LMTAPvpvm8CAIAN7LMTAATpsm8CAMYFOa8TAAHppm8CADH/ugUAAABIjTWeqQQA6BHt//9IiccxwOhXmwMATIs9UJgTAEmLB0iJBX6zEwDpc28CAIANmrMTAAjpZ28CAEyLPS6YEwBJiz/oRoMDAOlTbwIASGOd/P7//0iLhej+//9MjSXs+RIATIutyP7//0iLHNhBg70IMwAAAQ+ErAIAAEmD7UBNOeV16UiNNVlMBAAx/7oFAAAA6Ifs//9Iid5IiccxwOiKrQMAMf+6BQAAAEiNNbyPBADoZ+z//0iJxzHA6K2aAwCADQqzEwCASIM9hrQTAAAPhcpuAgBIxwV1tBMA/QMAAOm6bgIAD7YF5bITAIPg54PICIgF2bITAOmibgIAgCXMshMA++mWbgIAgA3EshMAQOmKbgIAxgVBtBMAAel+bgIAxgVXshMAAelybgIAgA2gshMAA+lmbgIAD7YFlLITAIPg/IPIAogFiLITAOlObgIAgCV7shMAn+lCbgIAD7YFb7ITAIPgn4PIIIgFY7ITAOkqbgIAD7YFV7ITAIPgn4PIQIgFS7ITAOkSbgIAgCU/shMAf+kGbgIAgA0zshMAgOn6bQIATIs9wZYTAEyLJZqxEwBJiz/oQpMDAEiNBROzEwBMiSWEsRMAxwV2sRMABAAAAEiJBTOtEwDo3pECAIO9+P7//wEPhEUZAADHhfj+//8CAAAA6aRtAgDGBXyxEwAB6ZhtAgCADcSxEwCA6YxtAgBMiz1TlhMASI09rLETAEmLN+jDRAEA6XFtAgBIiz1AsxMAgD8AD4WoAAAAMf/oePP//0yLPSGWEwBIjTU1TQQATYsnTInn6O/n//+FwA+EWgEAAEiNNSFNBABMiefo2Of//4XAD4Q0AQAASI01F2kEAEyJ5+jB5///hcAPhd4AAADHBXeyEwADAAAA6fxsAgBMiz3DlRMATYs3TIn36FiSAwC/EAAAAOheZQIATIn3SYnESIsFMawTAEmJRCQI6IeSAwBJiQQkTIklHKwTAOm5bAIA6ELo///pTv///0yLPXaVEwBJgz8AD4XOAAAAMf+6BQAAAEiNNRaNBADoCer//0yJ9kiJxzHA6AyrAwDpJ2wCAEmLtQAzAABIhfYPhET9//9Bi704MwAASAHf6Ljt//+FwA+FLf3//zH/ugUAAABIjTVuSQQA6L3p//9Iid5IiccxwOjAqgMA6TH9//9IjTUaTAQATInn6Mzm//+FwHUPxwWGsRMAAQAAAOkLbAIAMf+6BQAAAEiNNbOmBADodun//0iJxzHA6LyXAwDHBVqxEwACAAAA6d9rAgBFMdJEiRVLsRMA6dBrAgC6BQAAAEiNNQqMBAAx/+g76f//TInyTIn2SInHMcDoe5cDAIO93P7//wB0IujdrQMAg63c/v//AemTawIA6OynAwCDhdz+//8B6YJrAgAx/7oFAAAASI01GqUEAOjt6P//SInHMcDoM5cDAEiLBRSUEwCLnfz+//9IjRXZTQQATIuF4P7//0iLjRD///9Ii7Xo/v//i73w/v//iRjoHen//0GJxEiLBausEwBIi4CwAAAASIXAD4XWagIAQYP8/w+ESGwCAOnaagIASIu16P7//4u98P7////QhMB1b0iLBaKTEwCLAImF/P7//+kSagIAi4Xw/v//OcFzNUiLcghIiwWIkxMAD7Y29gRwBHQhSIPCCOmWaAIASIuVIP///01j0kLGBBI6RI1XA+nUZwIASI0FrUcEAEiDwghIiUL4OY3w/v//dBHpYmgCAESJpfz+///peGoCAOmAaAIATIs9OpMTAEmLB4A4AHRBSIkFS64TAOlYagIASIs9X64TAEiF/3VcvxAAAADo4OP//0yLPQmTEwAx/0iJBUCuEwBJixdIiXgISIkQ6SNqAgBIixUKrhMASIXSdLOAOgB0rjH/ugUAAABIjTWCogQA6H3n//9IiccxwOiDqAMA6fBpAgAxwEmJxEiDwAFIg3zH+AB18UGDxAJNY+RJweQDTInm6Ero//9Miz2TkhMAMfZIiQXKrRMASYsXSol0IPhKiVQg8OmqaQIASIud0P7//746AAAASInf6LTn//9JicRIhcAPhDICAADGAACAOwAPhWgCAABJjVwkAevUugUAAABIjTWBpQQAMf+D6wHo3+b//0iJxzHA6OWnAwDokKsDAOnUagIAgDgAD4SXAAAAi53c/v//6cBqAgBFMclMiY0o////gDsAD4SNAQAASI01p0sEAEiJ3+h16v//hcAPhIBqAgC+JQAAAEiJ3+gg5///SIXAD4UiAQAASI21MP///0iJ3+jY6v//hcAPiFoBAACLhUj///8lAPAAAD0AQAAAdH09AIAAAHVNSIuFKP///0iFwA+EKmoCAEiJBUCuEwDpHmoCALoFAAAASI01h6QEADH/6Bjm//9IiccxwOgepwMAMf+Lndz+//9IiT1vrBMA6QNqAgC6BQAAAEiNNe6jBAAx/+jn5f//SInHMcDo7aYDAEUxwEyJBeOtEwDrikiJ3+j55f//SIs9spgTAA+2XAP/6Ajp//9MjQWfYAQASIsNuq0TAEiNvSj///+A+y9JicG+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EwBIjTX5MgQATYsnTInn6FDU//+FwA+FowAAAMYFpJgTAADp3lICAEk7RxB1SroFAAAAMf9IjTVXMQQA6EPQ//9MieZIiccxwOhGkQMATIn36C7M///pq1ICADH/ugUAAABIjTWtMQQA6BbQ//9IiccxwOhcfgMATYs/6WhVAgBMiz1NexMASYs/6BXS//9IiQVGlhMA6WtSAgBIjTX6iQQAMf+6BQAAAOjWz///SI01Zi8EAEiJxzHA6BV+AwBIjTVPMgQATInn6JbT//+FwHUMxgXulxMAAekoUgIASI01D40EADH/ugUAAADok8///0yJ5kiJxzHA6NZ9AwDGBdCVEwAB6fxRAgDHBdSVEwACAAAA6e1RAgDHBcWVEwABAAAA6d5RAgDoJ8z//7oFAAAASI01W24EADH/SInD6EHP//9IidpMieZIiccxwOiBfQMAvwoAAABFMf/oRMz//+ldWgIAgCXIlRMA9+mVUQIAQYN+OAQPhChZAgCEwA+FkgAAAEiNFfZbBABIjTWuMQQAvwIAAAAxwOhm1v//uAIAAABNi2YoQQHHuAEAAABNheQPhOxYAgBBg34IAnQOvyAAAABBg8cB6NfL//+6BQAAAEyJ5jH/6KjO//9IjTVuUQQAvwIAAABIicIxwOgS1v//ugUAAABMieYx/+iDzv//SInH6KvO//9BAce4AQAAAOmOWAIASI0VFlIEAEiNNRwxBAC/AgAAADHA6NTV//+4BAAAAOlp////Mf+6BQAAAEiNNRSGBADoN87//74CAAAATInnSInCMcDopdj//+laZAIAMf+6BQAAAEiNNYKGBADoDc7//0yJ574CAAAASInCMcDoe9j//zH/ugUAAABIjTW1hgQA6OjN//++AgAAAEyJ50iJwjHA6FbY///pYmQCAPMPHvpVSInlQVdJifdBVkxj90FVTY1uBUFUTInuSYnMU0hj2lBJiz/opM7//0057kyJ6boFAAAASQ9DzkmJB0qNPDBIjTUr4REASIPDD0wp8UjB4wXop9H//0mLPCRIid7oa87//0iNkyD+//9IjTVNBhMASDnTSYkEJEiNPBBBWEgPQtpIidlbQVxIKdFBXbrgAQAAQV5BX13pYtH//0iLPeuOEwAx2+gkyf//SIsFbXgTAEiJHdaOEwBIizhIhf8PhG5oAgCAPwAPhGVoAgDo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id/owbv//4XAD4QmBQAASI01QhwEAEiJ3+iqu///hcAPhPcEAABIjTW9FwQASInf6JO7//+FwA+EyAQAAEiNNR0cBABIid/ofLv//4XAD4SlBAAASI01DRwEAEiJ3+hlu///hcAPhI4EAABIjTX+GwQASInf6E67//+FwA+EagQAAEiNNQEcBABIid/oN7v//4XAD4REBAAASI016BsEAEiJ3+ggu///hcAPhPYDAABIjTXsGwQASInf6Am7//+FwA+E0AMAAEiNNdMbBABIid/o8rr//4XAD4QYAwAAugkAAABIjTXhGwQASInf6Ia0//+FwA+EiAIAAEiNNfsbBABIid/ov7r//4XAD4RlAgAASI016xsEAEiJ3+iouv//hcAPhEICAABIjTXYGwQASInf6JG6//+FwA+E8gEAALoLAAAASI01whsEAEiJ3+gltP//hcAPhIoBAABIjTW3GwQASInf6F66//+FwA+EUgEAAEiNNbYbBABIid/oR7r//4XAD4QsAQAAuggAAABIjTWqGwQASInf6Nuz//+FwA+E4gAAAEiNNeUbBABIid/oFLr//4XAD4S/AAAASI01zBsEAEiJ3+j9uf//hcAPhYMAAACAJcF8EwB/6VdZAwCAJbd8EwDv6UtZAwBIi1XYZEgrFCUoAAAAdQtIg8QYW0FcQV1dw+getv//gA2MfBMAEOkgWQMAgA0ceBMAAentVQMASIsFD2ETAEiNPUh3EwBIizDoUHgDAOn5WAMAgD3cexMAAA+FxVUDAIAN53cTAIDpuVUDADH/ugUAAABIjTVCGwQA6H+1//9Iid5IiccxwOiCdgMA6btYAwCADRl8EwCA6a9YAwC6CgAAAEiNddBIjXsI6M+x//9Ii1XQgDoAdS6NUP6D+gJ3JokFjHcTAOmBWAMAxwV9dxMAAQAAAOlyWAMAgA1udxMAAulmWAMASYscJLoFAAAASI01YHYEAOkyAQAASIPDC0iNNb4gBABIid/o0Lj//4XAdGFIjTVXMwQASInf6L24//+FwHQ/SI01UDMEAEiJ3+iquP//hcB1G8cFFHcTAA4AAADpBVgDAIANAHcTAATp+VcDALoFAAAASI01x3UEAOnJAAAAxwXodhMADQAAAOnZVwMAMcCJBdt2EwDpzFcDAIANx3YTAALpwFcDAIANu3YTAAHptFcDAEyN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EHQTAALpIP3//0iNNWkQBABIid/oQ1ICAITAdE8x0kiNddBIjXsL6LCp//9Ii1XQSIkF5XMTAIA6AHUFSIXAeRlJixwkugUAAABIjTU1EAQASIPDC+kz////dQRIg8j/SIkFtXMTAOm+/P//SI014SEEAEiJ3+jBsP//hcB1F4oFjXMTAIPg54PICIgFgXMTAOmU/P//SI01BhAEAEiJ3+iXsP//hcB1F4oFY3MTAIPg54PIEIgFV3MTAOlq/P//SI016g8EAEiJ3+htsP//hcB1DIANOnMTAIDpS/z//0iNNckPBABIid/oTrD//4XAdQyAJRtzEwB/6Sz8//9IjTW6DwQASInf6C+w//+FwHUQSIENwHMTAAAAAAHpCfz//0iNNaUPBABIid/oLFECAITAdA/HBa5zEwABAAAA6ef7//9IjTWBDwQASInf6ApRAgCEwHQPRTHSRIkVjHMTAOnF+///SI01bw8EAEiJ3+joUAIAhMAPhJkAAABIjTVvDwQASInf6LGv//+FwHUPRTHJRIkNV3MTAOmM+///SI01x2sEAEiJ3+iPr///hcB1D8cFNXMTAAEAAADpavv//0iNNUkPBABIid/oba///4XAdQ/HBRNzEwACAAAA6Uj7//9IjTWjawQASInf6Euv//+FwHUPxwXxchMAAwAAAOkm+///ugUAAABIjTWcawQA6Xj9//9IjTUTDwQASInf6Biv//+FwHUMxgU3cxMAAOn2+v//SI018g4EAEiJ3+j5rv//hcB1DMYFGHMTAAHp1/r//0iNNeMOBABIid/o2q7//4XAdQ1Igw1uchMAAum3+v//SI01yg4EAEiJ3+i6rv//hcB1DUiDDU5yEwAg6Zf6//9IjTW0DgQASInf6Jqu//+FwHUQSIENK3ITAAAEAADpdPr//0iNNZsOBABIid/od67//4XAdQ1Igw0LchMAEOlU+v//SI01hA4EAEiJ3+hXrv//hcB1EEiBDehxEwAACAAA6TH6//9IjTVuDgQASInf6DSu//+FwHUNSIMNyHETAAjpEfr//0iNNVcOBABIid/oFK7//4XAdQ1Igw2ocRMAQOnx+f//SI01QA4EAEiJ3+j0rf//hcB1EEiBDYVxEwAAEAAA6c75//9IjTUtLgQASInf6NGt//+FwHUaDxAFXnETAA9WBU++EQAPEQVQcRMA6aH5//9IjTX3DQQASInf6KSt//+FwHUaDxAFMXETAA9UBTK+EQAPEQUjcRMA6XT5//9IjTXPDQQASInf6Het//+FwHUaDxAFBHETAA9WBRW+EQAPEQX2cBMA6Uf5//9IjTWrDQQASInf6Eqt//+FwHUNSIMN5nATAAHpJ/n//0iNNYkNBABIid/oKq3//4XAdQ1IgyXGcBMA/ukH+f//SI01dA0EAEiJ3+gKrf//hcB1DIAN1G8TAALp6Pj//0iNNVMNBABIid/o66z//4XAdQyAJbVvEwD96cn4//9IjTVADQQASInf6Mys//+FwHUPxwVGcBMAAQAAAOmn+P//SI01LA0EAEiJ3+iqrP//hcB1DIANcm8TAEDpiPj//0iNNQsNBABIid/oi6z//4XAdQyAJVNvEwC/6Wn4//9IjTX2DAQASInf6Gys//+FwHUMgA01bxMAAelK+P//SI011QwEAEiJ3+hNrP//hcB1DIAlFm8TAP7pK/j//0iNNcoWBABIid/oLqz//4XAdReKBfZuEwCD4PODyASIBepuEwDpAfj//0iNNZwMBABIid/oBKz//4XAdReKBcxuEwCD4PODyAiIBcBuEwDp1/f//0iNNQQIBABIid/o2qv//4XAdReKBaRuEwCD4OeDyBCIBZhuEwDprff//0iNNVEMBABIid/osKv//4XAdQyAJXluEwDn6Y73//9IjTU5DAQASInf6JGr//+FwHThSI01LgwEAEiJ3+h+q///hcB1D0UxwESJBeBuEwDpWff//0iNNSYMBABIid/oXKv//4XAdQ/HBdJuEwACAAAA6Tf3//9IjTUCDAQASInf6Dqr//+FwHUNMf+JPbJuEwDpF/f//0iNNf0LBABIid/oGqv//4XAdQ/HBYBuEwABAAAA6fX2//9IjTXZCwQASInf6Piq//+FwHUNMfaJNWBuEwDp1fb//7oJAAAASI013gsEAEiJ3+iDpP//hcAPhScBAABMjWMJSI01zQsEAEyJ5+i4qv//hcB1E4Al/WgTAL/GBQppEwBn6Y/2//9IjTWzCwQATInn6JKq//+FwHUTgA3XaBMAQMYF5GgTAJDpafb//7oHAAAATI110EyNaxBMiedIjTWICwQA6A+k//+FwHVHMdJMifZMie/o7qL//4gFrGgTAEiLRdCAOAB0H0iLBahREwC6BQAA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0kyJ/0iJxujsbwIASInH6BRqAgBIid/o3Jv//0iNUA1IiddIiZXQ0f//6LmX//9Ii5XQ0f//SYnYSI0NrhMEAEiJx0mJx74CAAAAMcDoxqf//0yJ5r9HAQAA6MloAgBMiea/SgEAAEiJhdDR///otWgCAEiLldDR//+/KwAAAEiJxujhbAIAMdJMif9IicboZG8CAEiJx+iMaQIASInfu08BAADoH5f//0yLlbDR///pC0QCAEmLeshJizK7bQEAAEyJldDR///oe2oDAEyLldDR//9IiYXw0f//6eBDAgBJizIx/7tsAQAATImV0NH//+hSagMATIuV0NH//0iJhfDR///pt0MCAEmLUshJi7JY////TImV0NH//7trAQAASYu66P7//+h8ZwMATIuV0NH//+mIQwIASYtykEmLuiD///8x0kyJldDR//+7agEAAOhSZwMATIuV0NH//+leQwIASYtykDHSMf9MiZXQ0f//u2kBAADoLWcDAEyLldDR///pOUMCAEmLeshMiZXQ0f//u0cAAADovG8DAEyLldDR///pGEMCAEmLOkyJldDR//+7OAAAAOj8QQMATIuV0NH//+n4QgIASYs6TImV0NH//7s3AAAA6NxBAwBMi5XQ0f//6dhCAgBJizpMiZXQ0f//uzYAAADovEEDAEyLldDR///puEICAEUxybszAAAATImN8NH//+mkQgIASYsyRTHJRTHAMckx0kiNPbhlEwC7MgAAAEyJldDR///oN2UDAEyLldDR///pc0ICAEmLMkUxyUUxwDHJMdJIjT2HZRMAuzEAAABMiZXQ0f//6AZlAwBMi5XQ0f//6UJCAgBJizq+BQAAALswAAAATImV0NH//0Ux0kyJFTRlEwDopxECAEyLldDR///pE0ICAEmLOkUx274FAAAAuy8AAABMiZXQ0f//TIkdBWUTAOh4EQIATIuV0NH//+nkQQIASYsyRTHJRTHAMckx0kiNPQBlEwC7LQAAAEyJldDR///od2QDAEyLldDR///ps0ECAEmLArsYAQAASImF8NH//+mfQQIASYtyyL9tAQAAuxcBAABMiZXQ0f//6A1pAgBMi5XQ0f//SImF8NH//+lyQQIASYsyv1YBAAC7FgEAAEyJldDR///owWUCAEyLldDR//9IiYXw0f//6UZBAgBJizK/VAEAALsVAQAATImV0NH//+iVZQIATIuV0NH//0iJhfDR///pGkECAEmLcshJi7pY////uxQBAABMiZXQ0f//6PZqAwBMi5XQ0f//SImF8NH//+nrQAIASYtSyEmLslj///+/TAEAAEyJldDR//+7EwEAAOhyaQIATIuV0NH//0iJhfDR///pt0ACAEmLMr9JAQAAuwQBAABMiZXQ0f//6AZlAgBMi5XQ0f//SImF8NH//+mLQAIASYtykEmLEr88AAAATImV0NH//7v3AAAA6BZpAgBMi5XQ0f//SImF8NH//+lbQAIASYtykEmLEr9eAAAATImV0NH//7v6AAAA6OZoAgBMi5XQ0f//SImF8NH//+krQAIASYtykEmLEr8+AAAATImV0NH//7v4AAAA6LZoAgBMi5XQ0f//SImF8NH//+n7PwIASYtykEmLEr8SAQAATImV0NH//7v1AAAA6IZoAgBMi5XQ0f//SImF8NH//+nLPwIASYtykEmLEr8QAQAATImV0NH//7vzAAAA6FZoAgBMi5XQ0f//SImF8NH//+mbPwIASYtykEmLEr8VAQAATImV0NH//7vyAAAA6CZoAgBMi5XQ0f//SImF8NH//+lrPwIASYtykEmLEr8UAQAATImV0NH//7vxAAAA6PZnAgBMi5XQ0f//SImF8NH//+k7PwIAD7YF7FgTAEEPtlKQu2kAAADB4geD4H8J0IgF1FgTAOkXPwIAD7YFyFgTAEEPtlKQu2cAAADB4geD4H8J0IgFsFgTAOnzPgIASYtSyEmLslj///+/SwEAAEyJldDR//+7EgEAAOh6ZwIATIuV0NH//0iJhfDR///pvz4CAEmLOjH2u2MAAABMiZXQ0f//6DEOAgBMi5XQ0f//6Z0+AgBJi0LIgDgAD4TBAAAASIPAAevxgA1DXBMACLtPAAAA6Xk+AgDGBdxbEwABu04AAADpaD4CAMYFuVsTAAG7TQAAAOlXPgIASYtyyL9mAQAAuwcBAABMiZXQ0f//6MVlAgBMi5XQ0f//SImF8NH//+kqPgIASYsyv0oBAAC7BQEAAEyJldDR///oeWICAEyLldDR//9IiYXw0f//6f49AgBJi3LISYu66P7//7tyAQAATImV0NH//+h6YQMATIuV0NH//0iJhfDR///pzz0CALtTAAAA6cU9AgBJi3LIMf+7cQEAAEyJldDR///oRmEDAEyLldDR//9IiYXw0f//6Zs9AgBJi1KQSInQSInBSIsASIXAdfVJi4JA/v//u3gBAABIiQFJi4JY////SImV8NH//0iJBbVgEwDpYD0CAEiLBalgEwC7dwEAAEiJhfDR//9Ji0LISIkFkmATAOk9PQIASYt6kEmLMrkBAAAATImV0NH//0iLFXNgEwC7dgEAAOghQQMATIuV0NH//0iJhfDR///pBj0CAEmLepBJizIxyUyJldDR//9IixU/YBMAu3UBAADo7UADAEyLldDR//9IiYXw0f//6dI8AgBJi3rIMfa7cAEAAEyJldDR///oU2ADAEyLldDR//9IiYXw0f//6ag8AgBJi3rIMfa7bwEAAEyJldDR///oKWADAEyLldDR//9IiYXw0f//6X48AgAx9jH/TImV0NH//7tuAQAA6AFgAwBMi5XQ0f//SImF8NH//+lWPAIASYs6TImV0NH//7tUAAAA6Co7AwBMi5XQ0f//6TY8AgBNi2LISYuaWP///0yNBbAKBABMiZWg0f//TInGTInnSImd0NH//+jzlv//hcAPhPEAAABMjQWICgQASInfTInG6NmW//9Mi5Wg0f//hcAPhNAAAAAx20yLPYFYEwBMibWw0f//TYnmSYncTYX/dGBMiZWg0f//TIn7TIfjSYs8JEiF23UcTIn2SIm9kNH//+iKlv//SIu9kNH//4XASQ9E30iLtdDR///ocZb//4XAD4TdAwAATYtkJAhNheR1vUyLlaDR//9Ni38QSYnc65tMieNNifRMi7Ww0f//SIXbdGK/EAAAAEyJlbDR///oTA0CAEiLvdDR//9JicTofToDAEyLlbDR//9mSA9uwA8WQwhBDxEEJEyJYwi7XAAAAOkSOwIASI01+4cHADH/ugUAAADoB5L//zH2SInHMcDoS0ADALoFAAAASI01R4gHADH/6OiR//9Ii43Q0f//TIniMfZIiccxwOgiQAMASMeF8NH//wEAAAC7RwEAAOm1OgIASYs6vgQAAAC7YQAAAEyJldDR///oJAoCAEyLldDR///pkDoCAEmLeshMiZXQ0f//u1YAAADoM1wDAEyLldDR///pbzoCAEyLtdDR//9MD76tsNH//02J+rtdAAAA6VM6AgAx/7oFAAAASI01BgkEAOhIkf//TInmSInHMcDoS1IDAOnRTAIASYPEAeliTAIATIu10NH//0wPvq2w0f//TYn6u10AAADpCToCAL8YAAAATImV0NH//7tLAQAA6PsLAgBMi5XQ0f//SImF8NH///NBD34K80EPfkKQxkAQAGYPbMEPEQDpyjkCAEmLArtIAQAASImF8NH//+m2OQIASIsFb0QTAEyJldDR//9FMcAxyUiNUARIiRVYRBMAixXWXBMAxwXMXBMACwAAAIkQSYsaUroCAAAAagBIid9qAGoATIsNZVwTAEiLNWZcEwDoOWMCAEiDxCBMi5XQ0f//SIM9NlwTAAB0f78QAAAATImV0NH//+hjjP//SInev0cBAADzD34FE1wTAEiJBQxcEwAPFgUtWxMADxEA6H1dAgBIizX+WxMATIuV0NH//0iJwkiF9nQpv0sBAABMiZXQ0f//6JZhAgBMi5XQ0f//SIkF0FsTALtNAQAA6dY4AgBIiQW/WxMA6+1Iid6/SQEAAOgoXQIATIuV0NH//0iJBbJbEwDpYf///0mLeshMiZXQ0f//u1cAAADoUFoDAEiLBblVEwBMi5XQ0f//xkAQAemBOAIAuAIAAADpQzcCAMcFiVwTAAEBAABMifNMjS17ERIATI019CASAEyNJS39EQBJY9dIjQUDMhIAD78EUD0B/f//dBiDwAE9vwcAAHcOSJhmQYM8RgEPhOAVAABIi4Xo0f//TImV0NH//0g5ww+ErhUAAEEPvzRUSI092QcEAEiD6wLopFkDAEyLldDR//9ED787SYPqOOuWSYs6Mfa7ZAAAAEyJldDR///oXQcCAEyLldDR///pyTcCAEmLOr4BAAAAu1sAAABMiZXQ0f//6BhlAwBMi5XQ0f//6aQ3AgC6BQAAAEiNNbiEBwAx/+iZjv//SIuV0NH//zH2SInHMcDo1jwDAEmLOjH2u1oAAABMiZXQ0f//6NBkAwBMi5XQ0f//6Vw3AgBMjQXhBQQASInfTImVoNH//0yJxugrkv//TIuVoNH//4XAD4WASgIASIuFsNH//0iJhaDR///pjEoCAL8QAAAASImVgNH//+gYCQIASIuVgNH//2ZID27DSInDSItyCA8WRjAPEQDpJEsCAEiDuIAAAAAAD4UJSwIASIu10NH//0iJsIAAAADp9koCAEyJYFDpw0oCAEiJ30yJldDR///ocFgDAEyLldDR///pJ0sCAEiDPaRZEwAASYtCkEmLkuj+//91XkiDPYdZEwAAdVRIgz11WRMAAHVKSIkVfFkTALstAQAASIkFaFkTAOlrNgIAugUAAABIjTUvhAcAMf9MiZWA0f//6FmN//8x9kiJxzHA6F1OAwBMi5WA0f//6bpJAgC+lSMAAEiNPTkFBADo8OcAAEmLcsi/GAEAALsQAQAATImV0NH//+iWXQIATIuV0NH//0iJhfDR///p+zUCAEmLcsi/QQEAALv/AAAATImV0NH//+hJWgIATIuV0NH//0iJhfDR///pzjUCAEmLcpBJixK/DgEAAEyJldDR//+7/gAAAOhZXgIATIuV0NH//0iJhfDR///pnjUCAEmLcpBJixK/DwEAAEyJldDR//+7/QAAAOgpXgIATIuV0NH//0iJhfDR///pbjUCAEmLcpBJixK/fAAAAEyJldDR//+7+wAAAOj5XQIATIuV0NH//0iJhfDR///pPjUCAIsFVFkTAL7+////g/j+dBU9iQEAAHcqSGPQSI0NNS0SAA+2NBGDvczR//8AdRpIjT2+BAQAgwVKWBMAAejVXQMAvgIAAADr3YO9zNH//wMPhXz8//+FwA+PawEAAA+Fbvz//0yLhejR//9NifMxwL4CAAAAPYkBAAB3C0iNFdQsEgAPtjQCSI09pQQEAEyJheDR//9MiZ3o0f//6EZWAwBMi53o0f//TIuF4NH//+koQQIASYtCyLs6AQAAxwXQVxMABwAAAEiJBdFXEwDpbDQCAEmLArs8AQAAxwWyVxMABQAAAEiJBbNXEwDpTjQCAMcFnFcTAAYAAAC7OwEAAOk6NAIAMcm7RgEAAEiJjfDR///pJzQCAEmLglj///+7QgEAAEiJhfDR///pDzQCAMcFXVcTAAMAAAC7NQEAAOn7MwIASYs6TImV0NH//7szAQAA6M8yAwBMi5XQ0f//6dszAgBJi3qQSIsVIFcTADHJSI01bwMEAEyJldDR//+7fgEAAOi+NwMATIuV0NH//0iJhfDR///pozMCAEmLQsi7RAEAAEiJhfDR///pjjMCAEmLgnj+//+7QwEAAEiJhfDR///pdjMCAEiNPTEDBABMiZXQ0f//6AtVAwBMi5XQ0f//xwVuVxMA/v///+ng+v//SIsVllYTADHJMf+7fQEAAEiNNd4CBABMiZXQ0f//6DI3AwBMi5XQ0f//SImF8NH//+kXMwIASI298NH//0mNcsi5DgAAALt7AAAA86XGhSTS//8Ax4Ug0v//BQAAAOnqMgIASI298NH//0mNcsi5DgAAALt6AAAA86XHhSDS//8BAAAA6cQyAgBIjb3w0f//SY1yyLkOAAAAu3gAAADzpcaFJNL//wHHhSDS//8BAAAA6ZcyAgBMiZXQ0f//u3MAAADozlYCAEyLldDR//9Ji7pY////SYtyyOhnXAMASInH6M9XAgBMi5XQ0f//6VsyAgBJi0LIuxwBAABIiYXw0f//6UYyAgBJi0LIuxoBAABIiYXw0f//6TEyAgBIiwU6TRMASYs6u9sAAABMiZXQ0f///1AITIuV0NH//+kMMgIASIsFVVUTALt5AQAASImF8NH//0mLQshIiQU+VRMA6ekxAgCADYpMEwAC6X02AgBIi4Xo0f//SIuV4NH//0kpxk2J9UnR/UmDxQFIgfoPJwAAD4/pAAAASAHSuBAnAABIOcJIicZID07ySGv+OkiJteDR//9Ig8c36DeO//9JicRIhcAPhLcAAABIi7Xo0f//SY1WAkiJx0iJw+gVjf//SIu14NH//0lr/ThIjQw2vjgAAABIjUE3SIm90NH//0iZSImNsNH//0j3/kiLtcDR//9IifpIa8A4TY0sBEyJ7+jQjP//SIuF6NH//0iLtZjR//9IOfB0CEiJx+gVhP//SIuF0NH//00B5k2NVAXISIuFsNH//0mNRAT+STnGD4PHAAAAQYP/EQ+EyAAAAEyJrcDR//9MiaXo0f//6S4vAgBIjT2oAAQA6JhZAwBMicfowIP//+mXPQIASIsV/FMTADHJMf+7ewEAAEiNNYXrAwBMiZXQ0f//6Jg0AwBMi5XQ0f//SImF8NH//+l9MAIASYtCkLt6AQAASImF8NH//0mLglj///9IiQWvUxMA6VowAgBJi3qQSIsVn1MTADHJSI01L+sDAEyJldDR//+7fAEAAOg9NAMATIuV0NH//0iJhfDR///pIjACAE2J80mJ2OmkPAIATYnzSYnY6Zk8AgBJizpMiZXQ0f//u9kAAADosuEAAEyLldDR///p7C8CAEmLOkyJldDR//+72AAAAOiS4QAATIuV0NH//+nMLwIAMf9MiZXQ0f//u9cAAADoc+EAAEyLldDR///prS8CAEiLBX5JEwDzQQ9+QshIg3gQAGYPbMAPhcAAAACASGEEu9UAAAAPEUAQ6X8vAgBJizJIiz3dUhMAugEAAABMiZXQ0f//u9QAAADoV1EDAEyLldDR///pUy8CAEmLMkiLPbFSEwAx0kyJldDR//+70wAAAOguUQMATIuV0NH//+kqLwIAgT08UxMAAwEAAHUdTImV0NH//8cFKVMTAP7////oQFQDAEyLldDR//9JixJIiwVfUhMAu84AAABIiVAw6ekuAgBJixJIiwVHUhMAu80AAABIiVAY6dEuAgAx/7oFAAAASI01s/0DAOjGhf//SInHMcDoDDQDAEmLOkyJldDR//+7ywAAAOiILQMATIuV0NH//+mULgIASYs6vgEAAAC7yQAAAEyJldDR///o01QCAEyLldDR//9IiQXVURMA6WguAgBJi7pY////SYtyyLoBAAAATImV0NH//7u/AAAA6G9PAwBIicfop1MCAEyLldDR///pMy4CAEmLcpC/AwEAAEmLGkyJldDR///og1ICAEyLldDR//9Iidq7vgAAAEiJxkGLesjoqFYCAEyLldDR//8x0kiJxkmLepDoE08DAEiJx+hLUwIATIuV0NH//+nXLQIAx4Xw0f//XgAAALu6AAAA6cMtAgDHhfDR//98AAAAu7kAAADpry0CAMeF8NH//yYAAAC7uAAAAOmbLQIASYsyRTHJRTHAMckx0kiNPbdQEwC7LAAAAEyJldDR///oLlADAEyLldDR///pai0CAEmLOjH2uyoAAABMiZXQ0f//6BwpAwBMi5XQ0f//6UgtAgBJizpMiZXQ0f//uygAAADoHCwDAEyLldDR///pKC0CAEmLArskAAAASIkFKVATAOkULQIASYt6kEGLEjH2TImV0NH//7sjAAAA6E3dAABMi5XQ0f//6e4sAgBJi3qQSYsyMdJMiZXQ0f//uyIAAADoJ90AAEyLldDR///pyCwCAIA9mUUTAABJiwJ1fEiJBa02EwC7IQAAAMYFgUUTAAHppCwCAEmLcpBNiwpFMcAxyTHSSI09p08TALseAAAATImV0NH//+g2TwMATIuV0NH//+lyLAIASYtykE2LCkUxwDHJMdJIjT11TxMAux0AAABMiZXQ0f//6ARPAwBMi5XQ0f//6UAsAgC7IQAAAOk2LAIASYtykE2LAkUxyTHJMdJIjT1BTxMAuxwAAABMiZXQ0f//6MhOAwBMi5XQ0f//6QQsAgBJi3KQTYsCRTHJMckx0kiNPQ9PEwC7GwAAAEyJldDR///olk4DAEyLldDR///p0isCAEmLepBJizK7GgAAAEyJldDR///oEk4DAEyLldDR///prisCAEmLeshJizK7GQAAAEyJldDR///o7k0DAEyLldDR///piisCAEmLepBJizK7GAAAAEyJldDR///oyk0DAEyLldDR///pZisCAEmLGkiNNZsYBABMiZXQ0f//SInf6DWG//+FwHVuuQEAAAAx0jH2uxcAAABIjT3K+QMA6PcuAwBMi5XQ0f//6SMrAgBJi3rISYsyuxYAAABMiZXQ0f//6CNQAwBMi5XQ0f//6f8qAgBJi3qQSYsyuxUAAABMiZXQ0f//6P9PAwBMi5XQ0f//6dsqAgBIjTVv+QMAMf+6BQAAAOjQgf//SIneSInHMcDoEzADAEmLepBJizK7FAAAAEyJldDR///ou08DAEyLldDR///plyoCAEiNBaLmAwC7EQAAAEiJBZxJEwDpfyoCAEmLGkiNNS13BwAx/7oFAAAA6HGB//9IicdIid4xwOi0LwMASI298NH//0mNcpC5DgAAALuDAAAA86XHhSDS//8EAAAA6TYqAgBIjb3w0f//SY1ykLkOAAAAu4IAAADzpceFINL//wEAAADpECoCAEiNvfDR//9JjXKQuQ4AAAC7gQAAAPOlx4Ug0v//AwAAAOnqKQIASI298NH//0mNcsi5DgAAALt/AAAA86XHhSDS//8CAAAA6cQpAgBIjb3w0f//SY1ykLkOAAAAu3wAAADzpcaFJNL//wHHhSDS//8BAAAA6ZcpAgBJi3KQSYsSvyUAAABMiZXQ0f//u+4AAADoIlICAEyLldDR//9IiYXw0f//6WcpAgBJi3KQSYsSvyoAAABMiZXQ0f//u+wAAADo8lECAEyLldDR//9IiYXw0f//6TcpAgBJizK/fgAAALvrAAAATImV0NH//+imUAIATIuV0NH//0iJhfDR///pCykCAEmLArvqAAAASImF8NH//+n3KAIASYsyvyEAAAC76QAAAEyJldDR///oZlACAEyLldDR//9IiYXw0f//6csoAgBJi3LIQYu6WP///7voAAAATImV0NH//+g3UAIATIuV0NH//0iJhfDR///pnCgCAEmLMr8tAAAAu+YAAABMiZXQ0f//6AtQAgBMi5XQ0f//SImF8NH//+lwKAIAvxAAAABMiZXQ0f//u+EAAADoYvoBAEyLldDR//9IiYXw0f//80EPfgJBDxZCkA8RAOk6KAIAvxAAAABMiZXQ0f//u+AAAADoLPoBAEyLldDR//9IiYXw0f//80EPb0L480EPb0rIZg/GwQEPEQDp/ScCADH/u98AAABIib3w0f//6eonAgCADYtCEwAC6cgrAgBMiZXQ0f//6BpMAgCDLeNLEwABTIuV0NH//+m/JwIATImV0NH//+grSQMAix3FSxMATIuV0NH//4P7E38rugUAAABIjTXr8gMAMf/oln7//0iNFf9KEwBMi5XQ0f//SInBSGPDSIkMwo1DAbtdAQAAiQWASxMA6WMnAgBJi0LIu1wBAABIiYXw0f//6U4nAgBJi0IQ80EPbwq7WgEAAEiJhQDS//9Ji0KQDymN8NH//0iJhfjR///pIicCAEmLWpDzQQ9vCkiNNZ32AwBMiZXQ0f//SYtCEEiJ3w8pjfDR//9IiYUA0v//6NmB//9Mi5XQ0f//hcAPhA0BAABIjTVu9gMASInfTImV0NH//+i0gf//TIuV0NH//4XAD4WyAAAATYtiyE2F5HVTxoXx0f//AbtZAQAA6aMmAgBIjZXw0f//uQYAAAAxwLtYAQAASInX86vphiYCAEiNNRL2AwBIid9MiZXQ0f//6FiB//9Mi5XQ0f//hcB1Wk2LYshIjTV9FQQASInfTImV0NH//+gzgf//TIuV0NH//4XAdF+6BQAAAEiNNdR0BwAx/0yJldDR///oLn3//0iJ2jH2SInHMcDoLz4DAEyLldDR///pXv///0iNNScVBABIid9MiZXQ0f//6N2A//9Mi5XQ0f//hcB1qk2LYshNheR0oUyJpQDS///pKP///0mDesgAD4VE////xoXw0f//AekR////SI01CPUDAEiJ30yJrbDR//9MD76t0NH//+iIgP//TIuVsNH//4XATImV0NH//3R5SI016PQDAEiJ3+hngP//TIuV0NH//4XAdHxIjTXb9AMASInfTImV0NH//+hGgP//TIuV0NH//4XAdHhIjTXH9AMASInfTImV0NH//+glgP//TIuV0NH//4XAdXS/U+V0ZOhwIQIATIuV0NH//0iJhfDR///pYDwCAL9Q5XRk6FMhAgBMi5XQ0f//SImF8NH//+lDPAIAv1HldGToNiECAEyLldDR//9IiYXw0f//6SY8AgC/UuV0ZOgZIQIATIuV0NH//0iJhfDR///pCTwCALoFAAAASI01GnMHADH/TImV0NH//+ise///SInaMfZIiccxwOitPAMAMf/o1iACAEyLldDR//9IiYXw0f//6cY7AgC7VwEAAOlxJAIAu1cBAADpZyQCAPNBD29CmEEPtkKQvzAAAABMiZWQ0f//SYuyWP///0mLkuj+//9FD7dikEEPtlqRDymFgNH//0iJtbDR//9IiZWg0f//iIXQ0f//6CD2AQBIi5Wg0f//MfZIi72w0f//SYnHMcBIjQ058wMASYlXCDHSSYkH6AZKAwBmD2+FgNH//2ZFiWcYSInCSYlHEDHATIuVkNH//0iD6gFBDxFHIHUJC53Q0f//D7bDg+ABSI0du0UTAE2J1EiLE0iF0nUQTIk7TYniu1YBAADpmCMCAITAdQcxwEiJ0+vdSIN6EAF19A+2QhiEwHXsD7ZCGYTAdeS6BQAAAEiNNXpxBwAx/+hrev//MfZIiccxwOhvOwMASIsT677HhfDR//+GAQAAux4BAADpPiMCAEiLBfctEwC7ZQEAAEiNUARIiRXnLRMAixVlRhMAxwVbRhMADQAAAIkQ6RAjAgBMiZXQ0f//6HxEAwCLHRZHEwBMi5XQ0f//g/sTfyu6BQAAAEiNNX/yAwAx/+jnef//SI0VUEYTAEyLldDR//9IicFIY8NIiQzCjUMBu2MBAACJBdFGEwDptCICAEmLcshIiz2hOxMAu2IBAABMiZXQ0f//6NA4AwBMi5XQ0f//6YwiAgDHhfDR//+EAQAAuyQBAADpeCICAEmLQsi7IAEAAEiJhfDR///pYyICAEhjBXhGEwBJidiD+P4PhCQvAgBNicPpee3//0UPv3xFAEWF/w+OEer//0mDwji5DgAAAEmJ3seFzNH//wMAAABIjTVURBMATInX86XpZSECAEljArutAAAASImF8NH//+n+IQIAPHIPhMYAAAA8dA+F4DkCALgJAAAA6dY5AgCIlbDR//88XHRWSA+++OgZHgIAvx8BAABIicbobEsDAA+2lbDR///pwjkCADH/TIm9sNH//7ufAAAATA++rdDR///o5R0CAL8fAQAA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vgIAAABIicIxwOj5bf//Mf+6BQAAAEiNNaNfBwDoZmP//0iJ374CAAAASInCMcDo1G3//zH/ugUAAABIjTX2XwcA6EFj//9Iid++AgAAAEiJwjHA6K9t//8x/7oFAAAASI01IWAHAOgcY///SInfvgIAAABIicIxwOiKbf//Mf+6BQAAAEiNNXRgBwDo92L//0iJ374CAAAASInCMcDoZW3//7oFAAAASI012WAHADH/6NJi//9Iid++AgAAAEiJwjHA6EBt//+6BQAAAEiNNTxhBwAx/+itYv//SInfvgIAAABIicIxwOgbbf//ugUAAABIjTVXYQcAMf/oiGL//1lIid++AgAAAEiJwlsxwF3p82z///MPHvpVSI0V/40RAL5hBAAASI09X9oDAEiJ5ehUvgAA8w8e+lW6BQAAAEiNNTpaBwBIieVTSIn7Mf9Q6DNi//9Iid++AgAAAEiJwjHA6KFs//8x/7oFAAAASI01W1oHAOgOYv//SInfvgIAAABIicIxwOh8bP//Mf+6BQAAAEiNNXZaBwDo6WH//0iJ374CAAAASInCMcDoV2z//zH/ugUAAABIjTWhWgcA6MRh//9Iid++AgAAAEiJwjHA6DJs//8x/7oFAAAASI01DFsHAOifYf//SInfvgIAAABIicIxwOgNbP//Mf+6BQAAAEiNNS9bBwDoemH//0iJ374CAAAASInCMcDo6Gv//zH/ugUAAABIjTVSWwcA6FVh//9Iid++AgAAAEiJwjHA6MNr//8x/7oFAAAASI01bVsHAOgwYf//SInfvgIAAABIicIxwOiea///Mf+6BQAAAEiNNZBbBwDoC2H//0iJ374CAAAASInCMcDoeWv//7oFAAAASI01vVsHADH/6OZg//9Iid++AgAAAEiJwjHA6FRr//+6BQAAAEiNNRhcBwAx/+jBYP//SInfvgIAAABIicIxwOgva///ugUAAABIjTUzXAcAMf/onGD//0iJ374CAAAASInCMcDoCmv//7oFAAAASI01fl4HADH/6Hdg//9Iid++AgAAAEiJwjHA6OVq//+6BQAAAEiNNeFeBwAx/+hSYP//SInfvgIAAABIicIxwOjAav//ugUAAABIjTX8XgcAMf/oLWD//1lIid++AgAAAEiJwlsxwF3pmGr//0iNPSlfBwDovrcAAEiLBc0gEwDp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+Fj//0iJ374CAAAASInCMcDoZmP//7oFAAAASI01YlEHADH/6NNY//9Iid++AgAAAEiJwjHA6EFj//+6BQAAAEiNNY1RBwAx/+iuWP//SInfvgIAAABIicIxwOgcY///ugUAAABIjTVAUgcAMf/oiVj//1lIid++AgAAAEiJwlsxwF3p9GL//0iLFS0ZEwBIiwUuGRMAQb4CAAAASIsM0MdBOAIAAADpvyADAEiNPWE/EADo9q8AAEUxwESJBUYYEwBFiUQkHOn8IAMAD7Y0AUCINAJIg8AB6b0fAwAx/7oFAAAASI01kT8QAOgMWP//SInHMcDoUgYDAIkFCBgTAEiLFbUYEwBIiwW2GBMASIsM0ESJYRzpTSADAEiLBNAxyTH2iQ3fFxMAiXAc6ZcgAwBMizXcFxMASSn+QYN8JCAAdHJBi0wkGI0ECYXJfnlBiUQkGIPAAkhj8OitXv//SYlEJAhIhcB0U01j9k2LZQBMAfBIiQWaFxMAidj30EEDRCQY6TMfAwDR+USNPBlJY/fodl7//0mJRCQITYtlAEmDfCQIAHQyQYPvAkWJfCQY6dYfAwAx/0mJfCQISI09iT4QAOjmrgAAici+CAAAAJn3/gHI6Xb///9IjT3EPhAA6MmuAABVvtMBAABIjT3iswMASInl6MKxAADzDx76VboFAAAASI01yT4QAEiJ5VNIifsx/1Do4lb//0iJ374CAAAASInCMcDoUGH//zH/ugUAAABIjTXqPhAA6L1W//9Iid++AgAAAEiJwjHA6Cth//8x/7oFAAAASI01FT8QAOiYVv//SInfvgIAAABIicIxwOgGYf//Mf+6BQAAAEiNNTA/EADoc1b//0iJ374CAAAASInCMcDo4WD//zH/ugUAAABIjTVTPxAA6E5W//9Iid++AgAAAEiJwjHA6Lxg//8x/7oFAAAASI01fj8QAOgpVv//SInfvgIAAABIicIxwOiXYP//Mf+6BQAAAEiNNak/EADoBFb//0iJ374CAAAASInCMcDocmD//zH/ugUAAABIjTXMPxAA6N9V//9Iid++AgAAAEiJwjHA6E1g//8x/7oFAAAASI019z8QAOi6Vf//SInfvgIAAABIicIxwOgoYP//Mf+6BQAAAEiNNSJAEADolVX//0iJ374CAAAASInCMcDoA2D//zH/ugUAAABIjTVFQBAA6HBV//9Iid++AgAAAEiJwjHA6N5f//8x/7oFAAAASI01eEAQAOhLVf//SInfvgIAAABIicIxwOi5X///Mf+6BQAAAEiNNZNAEADoJlX//0iJ374CAAAASInCMcDolF///zH/ugUAAABIjTW2QBAA6AFV//9Iid++AgAAAEiJwjHA6G9f//8x/7oFAAAASI014UAQAOjcVP//SInfvgIAAABIicIxwOhKX///Mf+6BQAAAEiNNQxBEADot1T//0iJ374CAAAASInCMcDoJV///zH/ugUAAABIjTU/QRAA6JJU//9Iid++AgAAAEiJwjHA6ABf//8x/7oFAAAASI01ckEQAOhtVP//SInfvgIAAABIicIxwOjbXv//Mf+6BQAAAEiNNZ1BEADoSFT//0iJ374CAAAASInCMcDotl7//zH/ugUAAABIjTXIQRAA6CNU//9Iid++AgAAAEiJwjHA6JFe//8x/7oFAAAASI0160EQAOj+U///SInfvgIAAABIicIxwOhsXv//Mf+6BQAAAEiNNRZCEADo2VP//0iJ374CAAAASInCMcDoR17//zH/ugUAAABIjTVBQhAA6LRT//9Iid++AgAAAEiJwjHA6CJe//8x/7oFAAAASI01bEIQAOiPU///SInfvgIAAABIicIxwOj9Xf//Mf+6BQAAAEiNNZdCEADoalP//0iJ374CAAAASInCMcDo2F3//zH/ugUAAABIjTWiQhAA6EVT//9Iid++AgAAAEiJwjHA6LNd//8x/7oFAAAASI011UIQAOggU///SInfvgIAAABIicIxwOiOXf//Mf+6BQAAAEiNNQBDEADo+1L//0iJ374CAAAASInCMcDoaV3//zH/ugUAAABIjTUrQxAA6NZS//9Iid++AgAAAEiJwjHA6ERd//8x/7oFAAAASI01TkMQAOixUv//SInfvgIAAABIicIxwOgfXf//Mf+6BQAAAEiNNXlDEADojFL//0iJ374CAAAASInCMcDo+lz//zH/ugUAAABIjTWcQxAA6GdS//9Iid++AgAAAEiJwjHA6NVc//8x/7oFAAAASI01D0QQAOhCUv//SInfvgIAAABIicIxwOiwXP//Mf+6BQAAAEiNNXpEEADoHVL//0iJ374CAAAASInCMcDoi1z//zH/ugUAAABIjTWlRBAA6PhR//9Iid++AgAAAEiJwjHA6GZc//8x/7oFAAAASI01cEUQAOjTUf//SInfvgIAAABIicIxwOhBXP//Mf+6BQAAAEiNNdtFEADorlH//0iJ374CAAAASInCMcDoHFz//zH/ugUAAABIjTUGRhAA6IlR//9Iid++AgAAAEiJwjHA6Pdb//8x/7oFAAAASI01sUYQAOhkUf//SInfvgIAAABIicIxwOjSW///Mf+6BQAAAEiNNRxHEADoP1H//0iJ374CAAAASInCMcDorVv//zH/ugUAAABIjTWXRxAA6BpR//9Iid++AgAAAEiJwjHA6Ihb//8x/7oFAAAASI01+kcQAOj1UP//SInfvgIAAABIicIxwOhjW///Mf+6BQAAAEiNNV1IEADo0FD//0iJ374CAAAASInCMcDoPlv//zH/ugUAAABIjTXQSBAA6KtQ//9Iid++AgAAAEiJwjHA6Blb//8x/7oFAAAASI01U0kQAOiGUP//SInfvgIAAABIicIxwOj0Wv//Mf+6BQAAAEiNNXZJEADoYVD//0iJ374CAAAASInCMcDoz1r//zH/ugUAAABIjTWhSRAA6DxQ//9Iid++AgAAAEiJwjHA6Kpa//8x/7oFAAAASI01zEkQAOgXUP//SInfvgIAAABIicIxwOiFWv//Mf+6BQAAAEiNNSdKEADo8k///0iJ374CAAAASInCMcDoYFr//7oFAAAASI01jEoQADH/6M1P//9Iid++AgAAAEiJwjHA6Dta//+6BQAAAEiNNfdKEAAx/+ioT///SInfvgIAAABIicIxwOgWWv//ugUAAABIjTUSSxAAMf/og0///0iJ374CAAAASInCMcDo8Vn//7oFAAAASI01LUsQADH/6F5P//9Iid++AgAAAEiJwjHA6MxZ//+6BQAAAEiNNVBLEAAx/+g5T///WUiJ374CAAAASInCWzHAXemkWf//vwEAAADpexgDAExjwOmgGAMA6P0bAgCD+CoPhd8bAgDr8IP4CnQlhcAPhYkbAgAx/7oFAAAASI01OMgDAOjiTv//SInHMcDoKP0CAIMFyQ8TAAHpYBsCAFW+5QEAAEiNPZerAwBIieXod6kAAFW+7gEAAEiNPYKrAwBIieXoYqkAAPMPHvpVugUAAABIjTVpNhAASInlU0iJ+zH/UOiCTv//SInfvgIAAABIicIxwOjwWP//Mf+6BQAAAEiNNYo2EADoXU7//0iJ374CAAAASInCMcDoy1j//zH/ugUAAABIjTW1NhAA6DhO//9Iid++AgAAAEiJwjHA6KZY//8x/7oFAAAASI010DYQAOgTTv//SInfvgIAAABIicIxwOiBWP//Mf+6BQAAAEiNNfM2EADo7k3//0iJ374CAAAASInCMcDoXFj//zH/ugUAAABIjTUeNxAA6MlN//9Iid++AgAAAEiJwjHA6DdY//8x/7oFAAAASI01STcQAOikTf//SInfvgIAAABIicIxwOgSWP//Mf+6BQAAAEiNNWw3EADof03//0iJ374CAAAASInCMcDo7Vf//zH/ugUAAABIjTWXNxAA6FpN//9Iid++AgAAAEiJwjHA6MhX//8x/7oFAAAASI01wjcQAOg1Tf//SInfvgIAAABIicIxwOijV///Mf+6BQAAAEiNNeU3EADoEE3//0iJ374CAAAASInCMcDoflf//zH/ugUAAABIjTUYOBAA6OtM//9Iid++AgAAAEiJwjHA6FlX//8x/7oFAAAASI01MzgQAOjGTP//SInfvgIAAABIicIxwOg0V///Mf+6BQAAAEiNNVY4EADooUz//0iJ374CAAAASInCMcDoD1f//zH/ugUAAABIjTWBOBAA6HxM//9Iid++AgAAAEiJwjHA6OpW//8x/7oFAAAASI01rDgQAOhXTP//SInfvgIAAABIicIxwOjFVv//Mf+6BQAAAEiNNX9IEADoMkz//0iJ374CAAAASInCMcDooFb//zH/ugUAAABIjTWqSBAA6A1M//9Iid++AgAAAEiJwjHA6HtW//8x/7oFAAAASI017TgQAOjoS///SInfvgIAAABIicIxwOhWVv//Mf+6BQAAAEiNNRg5EADow0v//0iJ374CAAAASInCMcDoMVb//zH/ugUAAABIjTVDORAA6J5L//9Iid++AgAAAEiJwjHA6AxW//8x/7oFAAAASI01ZjkQAOh5S///SInfvgIAAABIicIxwOjnVf//Mf+6BQAAAEiNNZE5EADoVEv//0iJ374CAAAASInCMcDowlX//zH/ugUAAABIjTW8ORAA6C9L//9Iid++AgAAAEiJwjHA6J1V//8x/7oFAAAASI015zkQAOgKS///SInfvgIAAABIicIxwOh4Vf//Mf+6BQAAAEiNNRI6EADo5Ur//0iJ374CAAAASInCMcDoU1X//zH/ugUAAABIjTUdOhAA6MBK//9Iid++AgAAAEiJwjHA6C5V//8x/7oFAAAASI01kEcQAOibSv//SInfvgIAAABIicIxwOgJVf//Mf+6BQAAAEiNNXs6EADodkr//0iJ374CAAAASInCMcDo5FT//zH/ugUAAABIjTWmOhAA6FFK//9Iid++AgAAAEiJwjHA6L9U//8x/7oFAAAASI01yToQAOgsSv//SInfvgIAAABIicIxwOiaVP//Mf+6BQAAAEiNNfQ6EADoB0r//0iJ374CAAAASInCMcDodVT//zH/ugUAAABIjTUvRxAA6OJJ//9Iid++AgAAAEiJwjHA6FBU//8x/7oFAAAASI01okcQAOi9Sf//SInfvgIAAABIicIxwOgrVP//Mf+6BQAAAEiNNW1IEADomEn//0iJ374CAAAASInCMcDoBlT//zH/ugUAAABIjTUgPBAA6HNJ//9Iid++AgAAAEiJwjHA6OFT//8x/7oFAAAASI016zwQAOhOSf//SInfvgIAAABIicIxwOi8U///Mf+6BQAAAEiNNVY9EADoKUn//0iJ374CAAAASInCMcDol1P//zH/ugUAAABIjTUpSBAA6ARJ//9Iid++AgAAAEiJwjHA6HJT//8x/7oFAAAASI011EgQAOjfSP//SInfvgIAAABIicIxwOhNU///Mf+6BQAAAEiNNT9JEADoukj//0iJ374CAAAASInCMcDoKFP//zH/ugUAAABIjTW6SRAA6JVI//9Iid++AgAAAEiJwjHA6ANT//8x/7oFAAAASI01JUoQAOhwSP//SInfvgIAAABIicIxwOjeUv//Mf+6BQAAAEiNNcg+EADoS0j//0iJ374CAAAASInCMcDouVL//zH/ugUAAABIjTUrPxAA6CZI//9Iid++AgAAAEiJwjHA6JRS//8x/7oFAAAASI01JkAQAOgBSP//SInfvgIAAABIicIxwOhvUv//Mf+6BQAAAEiNNalAEADo3Ef//0iJ374CAAAASInCMcDoSlL//zH/ugUAAABIjTXMQBAA6LdH//9Iid++AgAAAEiJwjHA6CVS//8x/7oFAAAASI0190AQAOiSR///SInfvgIAAABIicIxwOgAUv//ugUAAABIjTUkQRAAMf/obUf//0iJ374C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eAjo9S7//4nCg/gSD4+5AgAAvxQAAAAp1+g+OQMASYt0JAhIhfYPhBABAABIjT3ksQMAMcDoglECAOkcAQAATInn6IUq///pqy4CAEmLRghBi34QSItICEmLRiBIi0AQSIO44AAAAAAPhMsCAABIiU2A6OUq//9JicRJi0YgSItAEEiLgOAAAABIi0AIugUAAABIjTVDOBAATIsoMf/oKS7//0iLTYBMieJMie5IiccxwOgl7wIATYs26WMmAgBBgPwIdFdJi0YIugUAAAAx/0yJRYBIjTVxOBAATItoCOjoLf//QQ+29EiJx0yJ6jHA6OfuAgBMi0WAQb0dAQAA6Tz+//8x/0yLfYDo/dIBAESJ70iJxuhSAAMA65tBD7dABkUx7WYlgAFmPQABQQ+UxUGBxRsBAADpBP7//0mLVCQQSYtMJBhIjT05qAMAMcBIi7LgAAAA6GFQAgAPtoV/////iEWISIsFyNgSAEmLVCQQSAUwAgAASDnCdAeBSiQAACAAD7YDSYtMJBiD4AM8AnRsvygAAABIiY1g////SImVaP///+giqAEAxwB0AQAASImFcP///+hw6wIASIu1cP///0iLlWj///9Eie9Ii41g////SIlGCIsF5u0SAMdGEAkAAACJRgRIiVYYSIlOIOh3/wIATYskJOnF/f//SInP6AbSAQBJi3QkCEWLThC/UAAAAE2LRCQQSIsNlN8SAEiJhVD///9IibVY////TImFYP///0SJjWj///9IiY1w////6ISnAQBIi41w////MdJEi41o////SIkQTIuFYP///8dACAwAAABIi3kISIu1WP///0iLlVD///9IiQdIiUEIMclEiUgQTIl4GEyJQCBIiXAoSIlQMEiJSDhIiUhASIlISOlM////Mf+6BQAAAEiNNbGmAwDoECz//0iJxzHA6PZOAgDpGf3//+jsMgMAMdLpO/3//0mLRjBIid5Mif9Ii0AI/5DYAgAA6VwmAgBNi6QkCAEAAMYFvvMSAABNheQPhZwlAgDptyUCAEmLVgiJx0iLSghIiU2A6Dwo//9JicRIiwWi8hIA6Vr9//9Ji1YIicdIi0oISIlNgOgaKP//ugUAAABIjTW+NRAASYnESYtGIEiLQBBMiyjpO/3//0yJ+E2LP+nKIQIASIM9IO4SAAAPhA0iAgC6BQAAAEiNNW4z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SIlFqOg3JP//SIt1qEiJxzHA6DnlAgBIiwUK1xIASItNsEiLUAhIiQpIi1W4SIlQCOlYMgIASI09ALEDADHA6EzSAgDGBebrEgAA6TMyAgBIgz1A8xIAAA+FjzECAOm+MAIASItDEEiJBTLzEgDprjACAEyJx0yJRajoYfsCAEiFwA+FijACAEiLFZHmEgBMi0WoSIXSdElIi3oYSIX/dDpMicZIiVWgTIlFqOiPIv//TItFqEiLVaCFwHUeD7ZCYYPgBjwED4VGMAIAMfZIidfoyjICAOk3MAIASItSUOuySIsFQOYSADHJvgQAAABMicdIixUv1hIATItQsEiD6FBMi0oISIlCCEiLFXDpEgBMiVWoTIlNoOgDnAEATItVqEyLTaBIicJIiwX51RIASItICEyJEUmDOQB1gUyJSAjpeP////MPHvpVSInlSIHs0AAAAEiJtVj///9IiZVg////SImNaP///0yJhXD///9MiY14////hMB0IA8pRYAPKU2QDylVoA8pXbAPKWXADylt0A8pdeAPKX3wZEiLBCUoAAAASImFSP///zHASI1FEEiJ/jHJSImFOP///0iNhVD///9IjZUw////SImFQP///0iLBX/NEgDHhTD///8IAAAAx4U0////MAAAAEiLOOg71AIASIuFSP///2RIKwQlKAAAAHQF6HQi///Jw0iLWzBIjTV3MxAAMf+6BQAAAOgbIv//SInHSIneMcDoXtACAEiNRcBBvwEAAABFMeRIiUWoTI0tpugSAEyJ5kyJ9+iLLP//SYnESIXAD4TWAQAAvgEAAABIicfoYiz//4TAD4SaAQAATIllwEiLTahMieZMie9IiwWF6BIASI0Vy5EDAP8QhMAPhN0AAABIi33ATInuSItHCP+Q0AIAAITAD4ScAAAATItzMOuPSYs8JOisIf//SYs+SYnF6MEk//9JizwkSI01upwDAEmJx0iJfajoOiX//0iLfaiFwHU2QYBOSQjpEDICAEiJ3kiNPY2cAwAxwOg8/v//SIt7ML4CAAAA6Lkr//+EwA+FBzECAOnoMAIATWPtTIn+TInq6G4i//+FwA+FKgEAAEMPtgQvhMAPhQUBAABBgE5JCOm3MQIAugUAAABIjTUzMhAAMf9FMf/o2SD//0yJ5kiJxzHA6NzhAgDpPP///0iNFajMEQC+MwwA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wYsDAEiJ30mD5PzoCA7//0iFwA+EmQAAAEiLFQjWEgBmSA9u0PMPfgW70BIASI0NBF0AAMdAfAIAAABIi5IQAQAAZg9swkiLkqgNAABIiUowDxFCOEiLkNAAAADHQgQHAAAATIlgQOmqKAIASIsdddASALoFAAAASI01+SUQAOikDv//SI2VHP///0iJx0iJ3jHA6KDPAgDpCv7//0iLgxABAABIhcAPhKMoAgDp6igCALoFAAAASI01CiYQADH/6GMO//9IiccxwOhpzwIA6dP9//9Ii1JI6fznAgBJi0UISIkFGNASAOn7LwIASYtHIEmLdxBImUj3PdLREgBJi0cYSCnWSAHQSIn3SInG6GUV//8PtkNKTInng+Dng8gQiENK6PAS///pti4CADH/ugUAAABIjTXlJhAA6OgN//9IiccxwOguvAIAD7aVf////0iNdZxMifdB/9Dpdy8CAEmLQAhIiQWVzxIA6SsvAgDocw///0iNNQQnEAAx/7oFAAAAicPong3//4neSInHMcDo4rsCAEyJRYhBD7bVSI11nEyJ90H/0UyLRYjp2S4CAEmLQAhIiQVEzxIA6YUuAgDo8vgCALoFAAAASI015iYQADH/SYnF6EwN//9Mie5IiccxwOhPzgIAQYt3MItFnIP+/w+Fpi0CAOm6LQIATIlFiEEPttVIjXWcTIn3Qf/RTItFiOkcLgIA6MoO//9IjTVbJhAAMf+6BQAAAInD6PUM//+J3kiJxzHA6Dm7AgDopA7//0iNNf0lEAAx/7oFAAAAicPozwz//4neSInHMcDoE7sCAPMPHvpIjTXozhIASI09YdMSAOksDP//gH8CAA+FSjACAL8gAAAA6LgI//9IicIxwEiJAouFMP///4P4L3ZrSIuNOP///0iNcQhIibU4////SIsJSIlKCIP4L3ZhSIuNOP///0iNcQhIibU4////SIsJSIlKEIP4L3ZXSIuNOP///0iNQQhIiYU4////SIsBSIlCGEiLBenOEgBIiRBIiRXfzhIA6XwvAgCJwYPACEgDjUD///+JhTD////rk4nBg8AISAONQP///4mFMP///+udicGDwAhIA41A////iYUw////66cx/7oFAAAASI01kCUQAOjLC///SInHMcDoEboCAEmLfRBFMf/oFRADAEiJx0mLRCQISTlFCHRL6KIH//9Ni20A6V3oAgBJi0QkEE2LfCQIMf+6BQAAAEiNNXElEABIiYV4////6HUL//9Ii7V4////TIn6SInHMcDoccwCAOm55QIARItFhEiLtXD///+5AQAAAInaSIm9WP///+h+8gIASIu9WP///0QPtvjriuiMDwMARItFhLkBAAAAidpIi7Vw////SInHSYnF6E/yAgBMie9BicfoBAf//0WE/w+FnAAAAEiDPXPREgAAD4Vp5wIASIM9XdESAAAPhVvnAgBIjT3zhwMA6EMH//9IicdIhcAPhEPnAgBEi0WESIu1cP///7kBAAAAidro8PECAITAdWDpI+cCADH/ugUAAABIjTWShwMADymFYP///2YP1oV4////6IUK//9mD2+FYP///0iLlXj///9IiccxwA8SyGZID37O6Gnn///pF+YCAEyLrXj///9Ii51g////6ankAgBMi614////SIudYP///+mW5AIASYteCEiNNW4kEAAx/7oFAAAA6CIK//9IicdIid4xwOhluAIASI01diQQADH/ugUAAACJTcjo/wn//4t1yEiJxzHA6EK4AgAx0kiNPSWHAwAxwIlNuOgvC///TIn/SInGSIlFwOhgDP//SIt1wItNuEiFwHU7uhuBIgBMif+JTcDopAj//4tNwEiFwA+FY+kCALgDAAAA6TjpAgBBx0ZM8v///0nHRjABAAAA6YXpAgBIifdIiUW4iU3A6HoF//+LTcBIi0W46SnpAgBJi0UYuQIAAABJiUYQSIsFwrQSAOkQ6QIASYt9ADHJSI01ypgDADHA6JEK///pm+gCAL78AQAASI09CGYDAOjrYwAATY10JAJMiffoPgX//02LRQhNiflMifJIicdJicQxwL4CAAAASI0NDYgDAOhLFf//SIneTInn6GAcAgCEwA+Fjy0CAOltLQIASIt7MPZHREAPhJYtAgAPtkNgicL30oDiBXUhqAJ1EEiLexDoCwz//0iLezBJicdMif7oTBL//+loLQIAvtAHAABIjT32hQMA6FZjAAC4EAAAAOnC6QIASI01EosDAEiJ3+h9rQEAicIxwITSD4Sn6QIASIsNqrMSAEiDwwIPtjNIifL2RHEBAXQnD7ZzAfZEcQEBdBxIg8ABSIPDAoA7AHXb6XLpAgC4EAAAAOlo6QIAgPotdAWA+jp1BkiDwwHr3DHA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f0BIOfpyLrgBAAAASDnXciRIA0swSQNzMIPI/0g58XIUSDnOcgpBi0AIQStBCOsFuAEAAABbQVxdw8PzDx76i1cYZoHi/xBmg/oDdXVIi08IgDkudS6AeQJpdWZIi1coiw2WmRIASItSQEjT6kiJVzBIixVMdxIASIHCMAIAAEiJVyjDSIsV0ZISAEiLdyhIi1IISIt2YIB6HABIiXcoD5XCD7bSg8IESGPSgDwRb3URSItWQIsNQZkSAEjT6kiJVzDD8w8e+kiLNQ6NEgBIiz0PjRIA6RIdAgC4AQAAAEg593MBw4tJGItSGIPI/znRcvIxwDnKD5LAw0iLhXj///9CgHww/gp0N00B9kiLvXj///9MifboQcz+/005/kyJ/kkPQ/ZIiYV4////TCn+SQHH6W/KAgBJg8EB6enKAgDpqsoCAEiD6gFJOdF0BoB6/y908UmLPCRMKcpJiddIhf8PhIsAAABJi0QkCEmLVCQQSY10BwFIOdZzSUiNUAFJiVQkCA+2FdySEgCIFAdJi3wkCEyJ+kkDPCRMic7oWs/+/0mLVCQISYsEJEwB+kmJVCQIxgQQAOmDygIATInK6Q7LAgBKjbQ6AAEAAEyJjWj///9JiXQkEOh/y/7/TIuNaP///0mJBCRIicdJi0QkCOuJSI26AQEAAEyJjWj///9JiXwkEOhyxv7/TIuNaP///0mJBCQxwEmJRCQI6W3////GAABBD7YBhMAPhR3LAgBNifHpx8oCAEiLvWD///++LwAAAEyJjWj////oHMv+/0yLjWj///9JicVMic9MiY1A////6CPK/v9JicNIi4Vg////TImdSP///0kpxUuNTB0CSYPFAUiJz0iJjWj////o58X+/0iLjWj///9Ii7Vg////TInqSInHSImFaP///0iJjVD////o0M3+/0iLjVD///9Mi51I////SIuFaP///0iLtUD///9MOelJjVMBSQ9CzUqNPChMKenonc3+/0yLjWj////pY8oCAE2NcQHpLP////MPHvpIiwVNkBIASItACIN4CAUPlcAPtsDDuAEAAABIOfdyDYtJGItSGIPI/znRcwHDMcA5yg+SwMNMiSWPmhIA6erLAgBJi0UIMdJIiw0VjhIASIkQSYtFEEiJykgrFfyNEgBIweADSDnCD4IOAQAAZg9vBd+NEgBIAwXgjRIA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AgAAAEiNDZbXAgAxwDHb6BBh/v9Ii3WYSIs9jRsSAEUxwDHJMdLoyVf+/0iFwHQKgHgYAQ+E1QQAAEmLBCRBgP5AdSZIi32YSYnBTI0FquQCADHASI0NMLcCAEyJ6r4CAAAA6Lxg/v/rREiLFXsoEgBIjQ1Z4QIATI0NktoCAL4CAAAATI0FceQCAIB6HABXTInqUEwPRMlIi32YSI0N07YCADHA6Hpg/v9BWEFZSIt1mEiLPfMaEgBFMcAxyTHS6C9X/v9IhcAPhNAZAACKQBiE23UNRTHt/sgPlMPpOwQAAEUx7f7ID4QwBAAASItFmEyNaAZMie/oB1T+/0yNeANIiYVg////TIn/6ORP/v9MifpMie5IicNIicfo01r+/zH/gDtAvkAAAABAD5THSAHf6D1U/v9JicZIhcB0BMZAAQBMYwVyJxIATIsNYycSADHJTIm9aP///0yJtVj///9Iid9Jic5MiaVQ////TYnPTYnETTnmczlPjSw0SIm9QP///0nR7UyJ6EjB4ARJjRwHSIsz6BpX/v9Ii71A////hcB4CHQlTY11AevHTYns68JMi71o////TIu1WP///0iJ+0yLpVD////rP0iJ2kiJ+0iLPdMZEgBFMcBIi3IIMckx0kyLvWj///9Mi7VY////TIulUP///+j2Vf7/gHgYAUmJxQ+E6QIAAIoDPD91CEUx7enbAgAASIsNlCYSAExjLZUmEgBIiY1o////TYX2dQk8QHQe6VABAAA8QHQVvkAAAABIid/oJ1P+/8YAAOnRAAAASIsFkCYSAIB4HAB0BcYDX+saSInf6JVS/v9IjXMBTIn5SInfSInC6HNW/v8xyUyJtWD///9Jid5MiaVY////SYnMTTnsczZPjXwlAEiLjWj///9MifdJ0e9MifhIweAESI0cAUiLM+jzVf7/hcB4CHQeTY1nAevKTYn968VMifNMi6VY////TIu1YP///+s4SInaSIs9vRgSAEUxwDHJSItyCDHSTIulWP///0yJ80yLtWD////o5FT+/4B4GAFJicUPhNcBAABNhfYPhRr///9IYxWPJRIASIsNgCUSAEyJpWj///9FMf9JidxIidNJOd8Pg2oBAABOjSw7TInnSImNYP///0nR7U2J7knB5gRJAc5JizboRFX+/0iLjWD///+FwHgMD4RFAQAATY19Aeu9TInr67hMifpIid9IjTW94AIA6IZN/v8x0kyJpVj///9JidxIidNMOetzNU2NdB0ASIuFaP///0yJ50nR7k2J90nB5wRJAcdJizfo3lT+/4XAeAh0F0mNXgHry02J9evGTInjTIulWP///+suSYt3CEiLPa4XEgBFMcAxyTHSTInjTIulWP///+jgU/7/gHgYAUmJxQ+E0wAAAIA7X3UNSIsFvyQSAIB4HAB1I0iJ3+jJUP7/SIuNYP///0iNewFIid5IjVABSIPBAuieVP7/SGMVXyQSAMYDQEUx/0iLDUokEgBMiaVo////SYncSInTSTnfcztOjSw7TInnSImNYP///0nR7U2J7knB5gRJAc5JizboFVT+/0iLjWD///+FwHgIdBpNjX0B68VMievrwEyJ40yLpWj////pS/3//0mLdghIiz3bFhIARTHAMckx0kyJ40yLpWj////oDVP+/4B4GAFJicUPhR39//9Iid/o2Ev+/02F7XQWQYB9GAFEim2QD5TD6w6KXZBBid3rBkSKbZAx20iLfZjorkv+/4TbD4SgAAAAg71w////AHUUSIt9gOhGXgAASIswSInH6DPCAABBDxBEJBAx0kiLdYBIjX2gQQ8QJCQPKMhmD2zMDylNoEmLRCQYSIlFsEGLRCQgZsdFwAAAhcBmD27ID0nQZkgPfsBIhcBmD27qZg9izWYP1k24QYtUJCQPlEXChNKIVcMPlMIPttJEIerokmMAAEiLMEiJx+i6wQAAx4Vw////AQAAAEj/hXj///9Jg8Qo6Xz5//9Ei51w////TIu1SP///0WF23QUSIt9gOjQYAAASIswSInH6HnBAABIiz3oIhIA6MNK/v9Ii0WISIsASIlFiOmi+P//iwWVIhIASIs9hiISAIXAdBn/yIkFgiISAEiYSMHgBEiLPAfoi0r+/+vW6IRK/v9IiwUdIxIASIXAdBFIiwBIhcB0CUiJBWEiEgDrOEi5AQgAAAAgAABIi0WASIsASIkFRyISAIoQhNJ0GoPqL0j/wID6LXfvSA+j0XPpSIkFKSISAOvgSIs9ICISAOhDUP7/SIkFPCISAA+2EITSdBVIiw1O+REA9gRRjHUDxgBfSP/A6+SDPVEVEgAAD4RkAwAA6FSq//9IjRV32wIAhcBIjQVv2wIASA9FwkUx9kiJx0iJRYDo+03+/0iJhXj///9IiwWVFBIASItYKEiF23QcgHsYAXUQSIt7COjVTf7/STnGTA9C8EiLWyDr302F9g+EAAMAAIM95BQSAAJ1Qr8oAAAA6JxJ/v9IizWl+BEAuhgAAABIicdIicPoJVj+/4TAdR0x/7oFAAAASI01wwcDAOhOTf7/SInHMcDolPsBAEmDxiFMiffoWEn+/0iJRZi4IAAAAEk5xkkPQ8ZIg+ggSImFaP///0iLRZhMjXggSIsF5hMSAEyLYCi4GgAAAEk5xkwPQvBJjUbmSImFWP///02F5A+EMAIAAEGAfCQYAQ+FGgIAAIM9Bx4SAAB0H0mLTCQISI0V+f0QAEiNNXPaAgAxwL8CAAAA6DZU/v9Ji3QkCEiLlWj///9Mif/owlP+/0iLRZhIi41Y////ugYAAABIjTWz3AIASIPAGkiJx0iJRYjoq1D+/0iLdYgxyTHSSIs9RBMSAEG4AQAAAOiBT/7/SYnFSIXAD4SRAQAAgHgYAw+FhwEAAEiF23QZSYt0JAgxyboBAAAASInf6OJQ/v/p7gAAAEiLQChMi7DgAAAATIn36FpK/v+EwHUgSI01h+wCADH/ugUAAADoA0z+/0yJ9kiJxzHA6Eb6AQBBi4bIAAAATImlcP///0UxyUyJrVD///9Jid1EicuJhWD///9Ji4bAAAAAOZ1g////fnhJicZIiwBIi5V4////SIt1gEyLYAhMiefoNkn+/4nCSY1GCIXSdU2DPcUcEgAATInrTInnTIutUP///0yLpXD///90FkiJ+kiNNS3ZAgC/AgAAADHA6OlS/v9JiwZIi7V4////MdJMif9IA3AI6IW8AADrEP/D64BMi6Vw////TInr63tJi0Uwgz2MEhIA/0HGRCQYBEmJRCQwSYtFKEmJRCQoSYtFCEmJRCQIdVEx/7oFAAAASI01X1EQAOgCS/7/SItViEyJ/kiJxzHA6PYn//+APVIfEgAAdSS6BQAAAEiNNWxREAAx/+jVSv7/SInHMcDo2wsCAMYFLB8SAAFNi2QkIOnH/f//SIXbdB1Iidox9kyJ/+jcuwAASInf6MBL/v9Iid/omEb+/0iLfZjoj0b+/4M9JAASAAB1FooFMBESAIPgAzwCD4QdDQAA6U0CAACDPZkbEgAAdAxIjT2w+xAA6GtI/v9IiwUsERIASItYKEiF23TFgHsYAQ+FFQIAAEyLYwi+QAAAAEyJ5+jQSv7/RYosJEGA/UB0CUiFwA+ErwAAAEyJ5+g1TP7/SYnEQYD9QHUDxgBfvkAAAABMiefonEr+/0iFwHQDxgAASIs9xRASADHJMdJMieZBuAEAAADo+0z+/0iFwA+EpgEAAIB4GAMPhZwBAABIi1AwSItAKMZDGAODPVH/EQD/SIlTMEiJQygPhXsBAAAx/0yLawi6BQAAAEiNNf1QEADokEn+/0yJ4kiJx0yJ7jHA6JAKAgCDPeUdEgAAD4VHAQAA6f4AAAAx9kiLPT0QEgBMieJIiTXLGBIASI01u5n//+gvUP7/TIsluBgSAE2F5A+EEwEAAEmLRCQwTItrCMZDGANIiUMwSYtEJChIiUMo6Ial//+FwHQKQYB9AF91A0n/xUiLBeMPEgAxyboBAAAATInuSI24gAAAAOilTf7/SYnGSItAGEiFwHQ3gD1LHRIAAHUuTIt4CLoFAAAASI010FAQADH/6MlI/v9MiepIicdMif4xwOjJCQIAxgUbHRIAAYM9R/4RAP9NiWYYdXlNi2wkCDH/TItjCLoFAAAASI019k8QAOiJSP7/TInqTInmSInHMcDoiQkCAIM93hwSAAB1RLoFAAAAMf9IjTXyTxAAxwXEHBIAAQAAAOhTSP7/SInHMcDoWQkCADH/ugUAAABIjTUDUBAA6DZI/v9IiccxwOg8CQIASItbIOnT/f//SIsdHA8SAEiLQwhIizjoAk8AAEiJ3+gVbgAASIM9oBwSAAB1DOhWNQAASIkFkhwSAEiLHfsOEgBMjTWi1QIASIXbdFhMifZIid/oZEr+/0mJx0iFwHQ8TItoQEyJ7+jgQ/7/TYnoMclMif5IicJIid9JicToykf+/0iLPUMcEgBEiepMieboWUgAAEyJ5+iQQ/7/SIubCAEAAOujSIsFIBwSAEiLWHBIhdt1I0iLBRAcEgAx20iDuIAAAAAAdU7rO4B4GAV0JkiLG0iF23TdSItzCEiLPSEOEgBFMcAxyTHS6F1K/v9IhcB11uvaSItAKItTEDkQc8+JEOvLiwV1GBIA9gXKDRIAAnQm60dIiwWvGxIAO1h4c+NIi4CAAAAAidox9v/DSIs80OjzTgAA69xIixWLGxIAg3pAAHU/hcAPhBUHAACDPSYYEgAAdE3pBwcAAIXAdSlIiwVkGxIAg3hAAHQcgz0DGBIAAA+EjQIAAEUx5EUx9unOAQAAhcB05IM96xcSAAB0EkiLBTIbEgCDeEAAdc7pvwYAAEyLLZANEgBNhe104kyJ7+izRP7/hMB1CE2J7+lUCQAAQYuFyAAAAE2LpcAAAAAx24lFmDldmA+OUwEAAEiLDazxEQBJixTcMcBIgcEYAQAASDlKIHQRi0oYicjR6IXJD5TBCciD4AFIiz3ZDRIASIX/dQWD4AHrFIXAD4QHAQAASItyCOg+S/7/g/ABhMAPhPMAAABJiwTcSI01ENYCAEyLcAhMiffo3OoAAITAD4XUAAAATIn36PxF/v9IjVAHSInXSIlViOjcQf7/SItViE2J8UyNBdbVAgBJicdIice+AgAAADHASI0NUagCAOjlUf7/SIs9ZgwSADHJMdJFMcBMif7on0j+/0yJ/0iJRYjoc0H+/0iLRYhIhcB0BoB4GAN0ZEiLBXUZEgCAeBwAdAlBgD5fdQNJ/8ZIizXnGRIATInyTInv6OdNAACFwHQ4SIs90RkSAEUxwIPJ/zHSTI1NoEyJ9sZFoADouzIAAIB9oAB1E0mLFNyLUhjB6gOD8gGD4gGIUCNI/8PppP7//02LrQgBAADpbP7//01r7ChKixwvRIo7QYD/P3UcSf/ESIsFcRkSAEhjcEBIi3hIRDnmf9jphQAAAL5AAAAASInf6FJF/v9IhcB00jHAQYD/QA+UwEiNPAPou0b+/75AAAAASInHSInD6JtF/v9IhcB0BcYAAOsvSIsFGhkSAEiNNatMEAAx/7oFAAAASItASE6LNCjoX0T+/0iJx0yJ9jHA6GIFAgBIiwXrGBIARIp1kEiLQEhKiRwo6V////9FhPZ0EUiNDfsgAAC6KAAAAOiUQv7/gz1lFRIAAHUZSIsFtBgSAEUx9kUx5EyLaEhMievphQEAAEUx5EyNNSDUAgBIiwWRGBIASItQSEQ5YEB+zE1r7ChMifZKixwqSInf6NToAACEwHV/vkAAAABIid/oY0T+/0iFwHRtxkWgATHAgDtAD5TASI08A+jJRf7/vkAAAABIicdIicPoOUT+/0iLNTIYEgAx/0iJ2sYAAOgwTAAAhcB0IkiLPRoYEgBFMcCDyf9Iid5MjU2gSItHSEqLVCgI6AExAACAfaAAdAhIid/oUT/+/0n/xOlR////RYXkD4QHAQAASItz2EiLO+gUR/7/hcAPhfMAAABJY8ZIa8AoTY18BdiLBV4UEgBFi08YQYP5/w+EogAAAItLGIP5/w+ElgAAAEE5yQ+EjQAAAIXAdDVJiwe6BQAAADH/iU2ISI01R0sQAESJTZBIiUWY6NJC/v+LTYiLVZBIi3WYSInHMcDozgMCAItDGIP4/3QEQYlHGGYPbkMgZkEPblcgD1bQZkEPflcgSIs76JY+/v9Ii3sI6I0+/v9Ii3sQ6IQ+/v9B/8RIg8MoSIsFFhcSAEQ7YEAPjCP////rUoXAdKhJiwcx/7oFAAAASI01/UoQAEiJRZjoTEL+/0iLdZhIiccxwOhOAwIA6Xv///9FOfR0F0ljxrkKAAAASIneSGvAKEwB6EiJx/OlQf/G65REiXBASWP+RTH/SMHnA+glPv7/SIkFlhYSAEiLBZcWEgBIY1hASMHjA0iJ3+gHPv7/SInZMfZIiQVrFhIASInHSIsFcRYSAEhjUEBIweID6NRL/v8xyTHSxwU+FhIAAAABAIkVPBYSAIkNLhYSAIkNJBYSAIkNGhYSAEiLFTcWEgCLQkBEOfgPjr8BAABJa98oSItCSEyLZBgITInn6KYZAgBMiefonkH+/0iNUAJJicZIiddIiVWY6Hs9/v9Ii1WYSYnFSIsFZRUSAIB4HAB0LkGAPCRAdCdBxkUAX0mNVgFJjX0BTInm6EtI/v9Mie/oQ0P+/0iJx+hLGQIA6wtMieZMie/oLkj+/0iLPd8HEgAxyTHSTInuQbgBAAAA6BVE/v9JicZIhcB0T4pQGI1C/aj9dUVIiwV8FRIA/wVaFRIASANYSIB7IgB1Bv8FRhUSAEiLDU8VEgBJi0YoSo0M+YD6A3QESItACEiJAYtDGIP4/3VE6cIAAAC+LgAAAEyJ5+gxQf7/SIXAdFFIiwUlFRIA/wUDFRIASANYSIB7IgB1Bv8F7xQSAItDGMZDJAGD+P8PhIMAAAA7BeUUEgB+BokF3RQSADsF0xQSAH0GiQXLFBIA/wW5FBIA619NhfZ0OkGKXhi6BQAAAEiNNfZIEACA+wF0MTH/SI01GEkQAOgTQP7/D7bTuQMAAABMieZIiccxwOgOAQIA6yC6BQAAAEiNNShJEAAx/+jpP/7/TInmSInHMcDo7AACAEyJ70n/x+jRO/7/6S7+//+FwHUa9gVxBhIAAQ+ElQUAAIM9BBESAAAPhYgFAACDPSMUEgAAixUlFBIAdB6LBSUUEgA50H4UKdD/wDsFExQSAH0YiQULFBIA6xDHBf8TEgABAAAAiRX9ExIAiz33ExIAKz3tExIA/8eJPdUTEgBIY/9IwecC6HE7/v+LDcMTEgAx0kiJBbITEgA50X4MxwSQ/////0j/wuvwMdtFMeRIiw3GExIASIs9rxMSADlZQA+O1wAAAExr6yhIi0lISIM83wBKjRQpdQqAeiQAD4SSAAAARIt6GEGD//90Y0iLBVgTEgBFif5EKzVmExIATWP2SmMEsIP4/3Q7SGvAKEiNNS9IEAAx/0iLDAFIiwK6BQAAAEiJTZBIiUWY6Kw+/v9Ii02QSItVmESJ/kiJxzHA6Kf/AQBIiwUAExIAQokcsEiLBSUTEgBB/8RIi0hITAHpSIt5EEiF/3UDSIs56Jo+/v9BAcRIiwUAExIATANoSEGAfSQAdA5Ji30I6Hw+/v9FjWQEAUj/w+kS////TGMVwBISAEyLHaESEgAxwEyJ0zlBQH5HSGvQKEgDUUhIgzzHAHUGgHokAHQtg3oY/3UnSIneTCnWSY00s0mJ8UmJ2EiDxgRI/8NBgzn/de1BiQFJY9hEiUIYSP/A67REiy1lEhIAgfv//wAAfwlBgf3//wAAfiYx/0iNNVdHEAC6BQAAAOi1Pf7/QTndid5BD031SInHMcDosv4BAEiLPZMREgCLHRUSEgDowD3+/78BAAAASInCiwX6ERIAjUQDCo0EQ0GNBERImEiNRBABSIkFWRESAOixSAAASIs9XRESAOhlYwAATIstoQISAOtug/MBIcuA4wF0YIXSdFxNheR0V0mLfTBMieboEEj+/0iJw0iFwH5DSYt9MOhfO/7/TYt9MITAD4WgAAAASI01hN0CADH/ugUAAADoAD3+/0yJ/kiJxzHA6EPrAQBJi0UwSIO46AAAAAB1Dk2LbUhNhe116emHAQAATIugkAAAADHJMdIx20G/AQAAAE2J5k2F9g+Eaf///0mLPkiNNWvIAgCJTYiJVZBIiX2Y6H9A/v9Ii32YSI01HMoCAIXAQQ9E3+iJ4QAAi02Ii1WQhMBBD0XPQQNWeE2LdgjrskiJ302Lt8AAAADohDj+/0mLfTBMieZMifFIicJIicPoD0b+/4lFmIXAeUZIid/oQDj+/zH/ugUAAABIjTX6RRAA6C08/v9IicdIi0XIZEgrBCUoAAAAD4UlAgAASI1l2DHAW0FcQV1BXkFfXekS/QEARTH/RDl9mA+OkwAAAEqLBPtIiwBIiwD2QBgBdXtIi3AISIs9sgISADHJMdJBuAEAAADo6z7+/0iFwHRcgHgYA3VWSItAKEmLTTBIi5DgAAAASIuJ6AAAAEiLgugAAABIOch0NEiFwHQFTIsw6wNMizJIizlMifbohjr+/4XAdBhJi0UwSIuA6AAAAEiLgBgBAABMiXAg6whJ/8fpY////0iJ3+haN/7/TYtkJAjpD/7//0iLHZkAEgBIhdsPhD8BAABMi2swSYO96AAAAAAPhO8AAABJi0UAvi4AAABIicdIiUWY6Ck8/v9IhcAPhNEAAABIjXgBSI01lMkCAOj9oP//QYnEhcAPhbYAAABNi4WQAAAARTH2RTH/Qb0BAAAATYXAdEZJizhIjTWQxgIATIlFiEiJfZDopj7+/0iLfZC6BgAAAEiNNT7IAgCFwEUPROXoOzj+/0yLRYiFwEUPRPVFA3h4TYtACOu1RYX2dFNBtmFFheR1C0WF/0EPnsZBg8ZiSIt9mOimOv7/TI1oA0yJ7+iKNv7/RQ++zkyJ6kiNDSPIAgBJicRIi0MwvgIAAABMiedMiwAxwOiTRv7/TIljIEiLW0jp7f7//0Ux7YTbD4R06v//6T/m//+DPavvEQAAD4TB/P//Mf/oX0UAAEiLPQsOEgDoE2AAAOmp/P//SItFyGRIKwQlKAAAAHQF6C06/v9IjWXYW0FcQV1BXkFfXcPzDx76VUiJ5UFXQVZBVUFUU0iJ+0iB7JgAAABkSIsEJSgAAABIiUXIMcDoFZb//0iNPSigAgDolUAAAEiLUzDGRacAikJIg+AH/sgPhYgHAABIi4IQAQAAikh1iE2nhMkPhHMHAACDuGACAAAAxkWnAA+EYgcAAEiLQxBIiUWQSIsFcA0SAEiLfZBIizDo3Dj+/7oFAAAASI01FMcCAEmJx0iFwHQpSIt9kOjP+AEAvgEAAABMif/oskP+/4hFp4TAdSa6BQAAAEiNNf9CEAAx/+gIOf7/SIt1kEiJxzHA6Ar6AQDp7AYAAEyNdb2+PAAAAEyJ/8ZFvQBMifLoiVYAAIB9vQBBicR1uUGNtCSEAAAATInyTIn/6G1WAACAfb0AdaCFwA+EqgYAAEGNtCSIAAAATInyTIn/6ExWAABBjbQkjAAAAEyJ8kyJ/0GJxeg2VgAAgH29AInDD4Vj////SIXbD4RsBgAAQY10JAZMifJMif/ooFUAAEGNdCQUTInyTIn/icBIiYVY////6IdVAACAfb0AicBJjUQEGEiJRZgPhRz///9EiehMi2WYSIlFqDHASIlFiEiLjVj///9IOU2ID4O5AAAAQY10JAxMifJMif/osVUAAEGNdCQQTInyTIn/QYnF6J5VAABBjXQkFEyJ8kyJ/4lFgOiLVQAAgH29AImFeP///w+FtP7//zHSTInmTIn/6CJE/v+FwA+Fn/7//0iNfb9Mifq+CAAAAOh5Pf7/SIP4CA+FhP7//0w5bahyMItFgEwB6Eg5RahzJEiLTaiLlXj///9IAcpMKepJidRIjRQZSDnQcxhIKchIicPrEEj/RYhJg8Qo6Tb///9FMeRFMdtFMe1FMfYxwEyJnXj///9Ix4Vg////AQAAAEyJbYBIx4Vo////AQAAAEyJdYhIx4Vw////AQAAAEiJhVD///9IiZ1I////TImlQP///0iLjVj///9IOY1Q////D4OfAQAAi0WYTI1lvUyJ/0yJ4o1wCOiMVAAATIniTIn/QYnGi0WYjXAM6HhUAABMieJMif+Jw4tFmI1wJOhlVAAAgH29AMZFxwBBicUPhY39//9Ii3WYMdJMif/o+kL+/4XAD4V3/f//TI1lv0yJ+r4IAAAATInn6E48/v9Ig/gID4VZ/f//SI01KbYCAEyJ5+hFOv7/hcB1SEmNBB6DPYYHEgAASIlFiHQrQVBJicFJidhMieFBVUiNFUznEAC/AgAAADHASI01TkAQAOipPf7/QVlBWkiJnXD////psgAAAEiNNRbCAgBMiefo6jn+/4XAdUhJjQQegz0rBxIAAEiJRYB1DEiJnWj////pggAAAFFMi02ASI01/T8QAEmJ2EFVvwIAAABMieExwEiNFdfmEADoQj3+/15f68lIjTVotQIATInn6I85/v+FwHVESY0EHoM90AYSAABIiYV4////dClBVkmJwUiNFZvmEABJidhBVUyJ4UiNNZw/EAAxwL8CAAAA6PA8/v9YWkiJnWD///9I/4VQ////SINFmCjpTf7//0iLnUj///9Mi6VA////SInf6GAx/v8x0kyJ5kyJ/0mJxuiQQf7/hcAPhQ38//9MifpIid5Miffo6jr+/0g5ww+F9vv//0iLRahNifVJKcVIgz2fCRIAAHUM6FUiAABIiQWRCRIAQYtGDEWLfhhBi14gRYtmHEyLNXoJEgBMAehIicZIiUWoSYt+UOhCqwAASIXAdCmDPesFEgAAD4SwAgAASItVqEiNNZHCAgC/AgAAADHA6B48/v/plAIAAESJ+EiLTahMifdEif5IiUWQRIngRTH2SImFWP///0mNRB0AixBIiUWYTAHq6NioAACFwA+IYQEAAEyJrVD///9FMeSJhUj///9Ii0WQSTnED4M+AgAASItFmEiLjVj///9GiyygSIuFUP///0gByEaLNKBIi4Vw////STnGcg9Ii0WIQb8BAAAASTnGcjxIi4Vo////STnGcg9Ii0WAQb8BAAAASTnGciFIi4Vg////SIuNeP///0k5xg+TwEUx/0k5zkEPksdBIcdIi4VQ////TIsVYQgSAEiLdahJAcWLhUj///9MiddMiZVA////Qo0cIEhj20hr2yhJA1pg6DUyAABFMclFMcBEieFIicJMie5Iid/oxjMAAEyLlUD///9B/0JYgz2dBBIAAESJeyR0P0WF/0iNDVrAAgBNifFBUkiNBR7BAgBNiehIjRVX5BAAvwIAAABID0TBSItNqEiNNXs9EABQMcDoqzr+/0FbW0n/xOnQ/v//SItFmEiNNcC+AgBGizywTQHvTIn/6AbYAACEwHQRSf/GSItFkEk5xnLW6ewAAABIi4VY////xkW+AEwB6EKLHLBIi4Vw////SDnDcg9Ii0WIQbwBAAAASDnDcjxIi4Vo////SDnDcg9Ii0WAQbwBAAAASDnDciFIi4Vg////SIuNeP///0g5ww+TwEUx5Eg5y0EPksRBIcRIjUW+V0iLVahFMclQSIs9FAcSAEUxwESJ8UyJ/ujbpwAAgH2+AEFYQVl1BESJYCSDPYEDEgAAD4RJ////RYXkSI0NPr8CAEmJ2VJIjQUDwAIASI01dzwQAE2J+L8CAAAASA9EwUiLTahIjRUo4xAAUDHA6JA5/v9ZXukH////xkWnAEiLRchkSCsEJSgAAAB0BegxMv7/ikWnSI1l2FtBXEFdQV5BX13D8w8e+lVIieVTSIPsGGRIiwQlKAAAAEiJRegxwDHAiUXkiwWI6hEAg/j/dWNIjV3kRTHAMdIx9kiJ2UiNPQ2YAgDoyTz+/0iFwHUWRTHASInZMdIx9kiNPYC/AgDorjz+/4tF5IP4/3UYSI0Vb+IQAL6ZAAAASI09aL8CAOhfjf//hcAPlcAPtsCJBSDqEQBIi1XoZEgrFCUoAAAAdAXofDH+/0iDxBhbXcPzDx76VUiJ5ehJ////vggAAABIjT3MlwIA6FfJAQBIjQW6tQIAgA258xEAIF1IiQXx4xEASIsFWkUQAMYF5fgRAAFIiQVE+BEAw1VIieVBV0FWSYn2QVVBVEmJ/FNIg+wY6PD+//9MjT246REAMdtNif1Jgz8AD4SDAAAASYtHEEiJRcgxwEGAfxwAdA3oxP7//4XAD5TAD7bASIt1yEyJ50mDxyBIAcboaDT+/4XAdUdIY9tIjTU3tQIATInnSMHjBUkB3UWJdQxBx0UYAQAAAOg/NP7/hcB1Peh3/v//TI0l/7QCAIXASI0F97QCAEwPRODpaf/////D6XP///9IjRUX4RAAvgMCAABIjT0ovgIA6B+M//9Ig8QYW0FcQV1BXkFfXcNVMdJIieVBVEmJ/FNIjXXgSIPsEEiLHUTbEQBkSIsEJSgAAABIiUXoMcBIizvoXSz+/0yJ50iJxujn/v//TItl4Ew7I3UgSI01olkPADH/ugUAAADoti/+/0yJ5kiJxzHA6PndAQBMiSNIi0XoZEgrBCUoAAAAdAXo0i/+/1haW0FcXcNVSInlQVRJifRT6G3///9IixXF2hEASIsaigM8LHUSSP/DTInnSIkaW0FcXelL////hMB0IEiNNV9ZDwAx/7oFAAAA6EMv/v9Iid5IiccxwOiG3QEAW0FcXcPzDx76VYHvLQEAAEiJ5UFXQVZBVUFUU0iD7BhkSIsEJSgAAABIiUXIMcCD/0IPh/EFAABIjRWn3hAASGMEukgB0D7/4EiLHTbaEQBIjTXhogIASIs76Fc3/v9IiQUA9hEASIXAD4WjBQAASIsbSI01ibMCADH/ugUAAADosS7+/0iJx0iJ3jHA6PTcAQBIjTWHswIASI09mLMCAOgG////6WgFAABIjTWgswIASI09srMCAOju/v//6VAFAABMiyW92REAvjoAAABMjW3ATYs0JEyJ9+j4Lv7/SIXASInDdQxMiffoeC7+/4nD62sx0kiNeAFMie7otir+/0iNPX2zAgBIicboPP3//0iLfcCAPy51HEj/x0yJ7jHS6JEq/v9IjT10swIASInG6Bf9//9Ii0XAgDgAdB0x/7oFAAAASI01K1gPAOjmLf7/SInHMcDo7O4BAEQp80mLPCQx0kyJ7uhLKv7/SItVwIoKgPk6D5TChMkPlMEIynQISD3//wAAdm9NizQkTI0tU68RAEUx5Ehj202LfQBNhf90KUiJ2kyJ/kyJ9+gWK/7/SI0NL68RAIXAdQdBgDwfAHQpQf/ESYPFEOvOSI013FcPADH/ugUAAADoWC3+/0yJ9kiJxzHA6JvbAQBNY+RJweQEQotEIQhIY/BIjT27sgIAiQXX5REA6D/8///pAQQAAEiNPbKyAgDoCv3//+nwAwAASI09trICAOj5/P//6d8DAABIjT1KsgIA6Oj8///pzgMAAEiNPVWyAgDo1/z//+m9AwAASI09mLICAOjG/P//6awDAABIjT2fsgIA6LX8///pmwMAAEiNPaayAgDopPz//+mKAwAASI09qLICAOiT/P//6XkDAAC+AQAAAEiNPaiyAgDoofv//+ljAwAASI09PbECAOhs/P//6VIDAADHBSwAEgABAAAA6UMDAABFMdtEiR0t5REA6TQDAADHBR7lEQABAAAA6SUDAADGBQ7lEQAB6RkDAADGBQLlEQAA6Q0DAABIiwV61xEASIs46EIu/v9IiQXT/xEA6fICAADHBcD/EQABAAAA6eMCAABIiwVQ1xEAMfZIizjoSFIAAOnNAgAAxwWX/xEAAQAAAOm+AgAASIsFK9cRAL4BAAAASIs46CBSAADppQIAAEiLBRLXEQC+AgAAAEiLOOgHUgAA6YwCAADHBVL/EQABAAAA6X0CAADHBT//EQABAAAA6W4CAADHBVDkEQABAAAA6V8CAABFMdJEiRVB5BEA6VACAADHBQ7/EQABAAAA6UECAADHBfv+EQABAAAA6TICAABIiwWf1hEAxwWB/xEAAQAAAEiLOEiF/w+EFQIAAIA/AA+EDAIAAEiNdcAx0uilJ/7/SIkF3uMRAOn1AQAARTHJRIkNS/8RAOnmAQAASIsFU9YRAEiLOOgbLf7/SIkFjP4RAOnLAQAARTHARIkFneMRAOm8AQAAxwUu8hEAAQAAAOmtAQAAMf+JPSHyEQDpoAEAAMcFFvIRAAIAAADpkQEAAMcFB/IRAAEAAADpggEAADH2iTX68REA6XUBAADHBSP+EQABAAAA6WYBAACDDRP+EQAg6VoBAACDJQf+EQDf6U4BAADHBRzjEQABAAAA6T8BAAAxyYkND+MRAOkyAQAAZoMN/uIRAEDHBfDiEQABAAAA6RsBAAAx0okV4+IRAGaDJd/iEQC/6QYBAABmgQ3R4hEAgADp+AAAAGaBJcPiEQB//+nqAAAAZoENteIRAAAB6dwAAABmgSWn4hEA//7pzgAAAGaBDZniEQAAAunAAAAAZoEli+IRAP/96bIAAABmgQ194hEAAATppAAAAGaBJW/iEQD/++mWAAAAZoENYeIRAAAI6YgAAABmgSVT4hEA//frfWaBDUjiEQAAIOtyZoElPeIRAP/f62dmgQ0y4hEAAIDrXGaBJSfiEQD/f+tRSIs99vwRAOhpJf7/McBIiQXo/BEASIsFqdQRAEiDOAB1CkiNDbimAgBIiQhIixhIjTUFlQIASInf6Bct/v+FwHQPSInf6Esr/v9IiQWs/BEAD7c1zeERAEiNPTWvAgDoJvj//7AB6wIxwEiLVchkSCsUJSgAAAB0Beg3Kf7/SIPEGFtBXEFdQV5BX13D8w8e+lVIieVBV0FWQVVBVFNIg+wY6O/2//+LBdDhEQCFwHVWihVu7xEAg+IDgPoCdDyDPcvhEQAAdQq4AABAAID6A3Upgz3Y/BEAALgAAAAQdBtIiz1+2xEA6K+O//9IweAQJQAA/A8DBTrhEQCJBXDhEQCJBarhEQCKBRjvEQCD4AM8Ag+EAwEAAEiLBVbsEQBIjR0/4REARTHkSI14EOjj6AEASIM7AA+EoQAAAExjewxMif9Nif3oas0AAEyLcxBIicYxwIB7HAB0FUiJdcjoM/b//0iLdciFwA+UwA+2wDHSSY08Bugb8gEASInH6FP2AACLUwiD+gJ1CUiLE2ZEiSrrMoP6BHUISIsTRIkq6yWD+gh1CEiLE0yJOusYSI0VkdgQAL4ABAAASI09urUCAOixg///RYXkdQdIiQUk+xEAQf/ESIPDIOlV////6FPsAQCLBcH5EQA5Bbf5EQBzKzH/ugUAAABIjTV3Ug8A6HIn/v9Ig8QYW0iJx0FcMcBBXUFeQV9d6WroAQBIg8QYW0FcQV1BXkFfXcPzDx76VUiJ5UFVQVRTUvYF5u0RAAh0HTH/ugUAAABIjTWWMRAA6CEn/v9IiccxwOgn6AEAigXB7REASI0dGbUCAPfQqAN0MYM9NfsRAACLFZ/fEQBIjQUgqBEAdRtIi1gISIXbdAtIg8AQOVDwde7rB0iNHZPXEADo7/T//4XAdS1IiR1D3BEA9gVs7REAAnURgD0b6BEAAHUISInf6JnOAQBYW0FcQV1d6b36AQBIid/oxSb+/0iNeAJJicToqSL+/0iJ3kmNVCQBxgBfSYnFSI14AUyJ6+iPLf7/66PzDx769gUT7REAAQ+EpgAAAIM9re0RAAAPhJkAAABVSInlU1HoZfT//0G5AQAAALkBAAAASI0VcLECAIXASI0FaLECAEiLPSLtEQBIjTXL7BEASA9E0EUxwOg/JP7/SInDSIXAdR0x/7oFAAAASI01ESsPAOj0Jf7/SInHMcDoOtQBAIB4GAB1JjHSSIN4IADGQBgBSIlQKHUVSIs9pOwRAEg7RzB0CEiJxujOKP7/gEsZAVhbXcPD8w8e+lVIieVBVUFUU0iJ81JIi0Ywgz1h3hEA/0yLZgjGRxgDSIlHMEiLRihIiUcodXFMi28IugUAAAAx/0iNNUkwEADobCX+/0yJ4kiJx0yJ7jHA6GzmAQCAPYn5EQAAdUG6BQAAAEiNNdcsEAAx/+hAJf7/SInHMcDoRuYBALoFAAAASI018iwQADH/6CMl/v9IiccxwOgp5gEAxgVG+REAAUiLewhYW0FcQV1d6TL9AQDzDx76gH8YAXUG/wWi+hEAsAHD8w8e+scHAQAAAIoFj+sRAIPgAzwCdRqAPcTsEQAASI0VXbMCAEiNBWqzAgBID0XCw4A9u+wRAABIjQVrswIAdCmAPZfsEQAASI0FcLMCAHQZgz3v6xEAAUiNBYizAgBIjRVtswIASA9EwsPzDx76SIsPSIsWuAEAAABIOcpyHYPI/0g50XIVi1YMuAEAAAA5Vwx/CA+cwA+2wPfYw/MPHvrryPMPHvqAfxgBdQb/BST4EQCwAcNVSIPHEEiJ5ehMIP7/SIsVJfkRAEiJBR75EQBIg8AISIlQ+F3DSInwSAn4dBlIhf90BUiF9nUKSIP/ARnAg8gBw+nTJ/7/McDDVUiJ5UFWSYn+SIn3QVVJidVBVEmJzFNJizZEicPouv///4XAdSZJi3YITInv6Kr///+FwHUWSYt2EEyJ5+ia////hcB1BonYQStGGFtBXEFdQV5dw1VIieVBVkmJ/kiJz0FVSYn1QVRJidRTSYt2CESJw0iF9nQESIPGEOhb////hcB1L0mLdhBMie/oS////4XAdR9JizZMiefoPP///4XAdRBBOV4gdAoPnsAPtsCNRAD/W0FcQV1BXl3D8w8e+kiLRxBIhcB1A0iLB0iLVhBIhdJ1A0iLFkiJ1kiJx+nsJv7/8w8e+uvT8w8e+kiLNkiLP+nXJv7/8w8e+uvrSIs96vcRAEiF/3UBw1VIieVIiwdIiQXW9xEA6NEe/v9Iiz3K9xEASIX/deVdw0iLNdT3EQCLFdb3EQBIiflIhfZ1B0iNNbKxAgBIjT26sQIAMcDpqeMBAIs1R9sRAIX2eDZVSItHCEiLgIADAABIieX/UHiEwHUeMf+6BQAAAEiNNZMtEADoZiL+/11IiccxwOlr4wEAXcPDVUiJ5UFXQVZJif5BVUFUTI0lMtsRAFNNieUx21FJgzwkAHRCMcBBgHwkHABNi3wkEHQN6EHw//+FwA+UwA+2wEmNPAdMifZJg8Qg6Ogl/v+FwHUOSGPbSMHjBUGLRB0Y6wb/w+u3McBaW0FcQV1BXkFfXcPzDx76gH8YAXV+VUiJ5UFVQVRJifxTUUhjHXb3EQBIi38ISMHjBEgDHV/3EQDo0iP+/75AAAAASIkDSGMdU/cRADHASYndSMHjBEgDHTv3EQBIizuAP0APlMBIAcfoIiL+/0iFwHQExkABAEmLRCQIQf/FRIktGvcRAEiJQwiwAVpbQVxBXV3DsAHD8w8e+oB/GAF1flVIieVBVUFUSYn8U1FIYx0j9REASIt/CEjB4wRIAx0M9REA6Ecj/v++QAAAAEiJA0hjHQD1EQAxwEmJ3UjB4wRIAx3o9BEASIs7gD9AD5TASAHH6Jch/v9IhcB0BMZAAQBJi0QkCEH/xUSJLcf0EQBIiUMIsAFaW0FcQV1dw7ABw1VIieVBVFNIiftIhf90H+jqIP7/TI1gAUyJ5+h1/P//SIneTInhSInHSInD86RIidhbQVxdw/MPHvrpfxYCAFVIieVBV02Jz0FWSYn+QVVMjS0HrwIAQVRTSIPsOEiJTbhEiUW0ZEiLBCUoAAAASIlFyDHASIXSdANJidVIifdIiXWoxkXHAOhyIP7/TInvSInD6Gcg/v9MjWQDAkyJ5+hKHP7/TItFqE2J6UyJ4kiJx0iJw74CAAAAMcBIjQ01rwIA6Fcs/v9IidpNiflNifBQSI1Fx1CLTbRIi3W4SIs9OvURAOhalQAAWllIi0XIZEgrBCUoAAAAdAXoDyD+/0iNZdhIid9bQVxBXUFeQV9d6bkb/v/zDx76VUiJ5UFXQVZBVUmJ9UFUU0iJ+0iD7EiJVaRkSIsEJSgAAABIiUXIMcCKBTbmEQCD4AM8AnRGviQAAABMie9NiezoDyD+/0iJRahIhcB0NkmJxk0p7k2NfgFMif/odBv+/0yJ+UyJ8kyJ7kmJxEiJx+hwI/7/Q8YENADrCTH/SYn0SIl9qDH2SI1FuIN9pABIiXW4SIlFmEiJRcB1YTHSMfZMiedFMf/o2ZoAAEmJxk2F9nRZSYtGOEiFwHQqi0AkhcB0BzNDJKgDdR9Ii32YTYnwMckx0kiJ3uhXWAEAx0WkhAEAAOsdTYn3TIn36KMWAgDHRaSEAQAASYnG67FFMf9FMfZNhfYPhR4CAABNhf90G0mNfxBNifgxyTHSSIneTYn+6A1YAQDpXgIAAE2F9g+F9QEAAIM94PMRAAB1VUiNDT/dEQBMjbnwAAAASIs5SIX/dCwx0jH2SIlNkOgjmgAASItNkEiJQRBIhcB0EoO4mAAAAAB1CYtRCImQmAAAAEiDwTBMOfl1w8cFifMRAAEAAACKBcvkEQBEi0skSIneg+ADPAJ0aUiLvuAAAABEiU2Q6N0j/v9Ei02QSIXASInGdE1Ig35gAEiLjuAAAAB11otGJInCicdEMcqB5wCAAACD4gMJ+nW/9kFEQHW5SIuRGAEAAEiF0nQG9kJgEHWnQYPxCIPwCEEJwUGD8Qjrl0Ux/0H3wQEAAAAPhKIAAABMjT0d3REAQffBAgEAAHRKSYPvMEH3wQgAAAB0PUmB75AAAABB98EQAAAAdS26BwAAAEiNNeOqAgBMiedEiU2Q6N8a/v9NjUdgRItNkIXASY1HMEkPRcBJicdJg38QAHUYSYs/MdIx9kSJTZDo85gAAESLTZBJiUcQTYt3EE2F9nUgSY1XEDHJRInOSInf6LEIAgBJicZIhcB1B0yLNcLgEQBIjTXsogIAvwMBAADoQeoAAL8YAQAASInG6FTtAABMifFNifhMieZJicFQi1WkSInf/3WY6LllAQBaWUmJxooFXuMRAIPgAzwCdR2LS3y/AQAAANPn6NjBAACLU3xJiUZoSYtGOIlQfEmLXhBNjWYQSIXbdD2DewgFdS9Ii0MQviQAAABMizhMif/oAx3+/0iFwHQWSIN9qAB0F0yJ/kyJ7+gsIP7/hcB4CEmJ3EiLG+u+SIN9uAB0D0iLRcBIiRhIi0W4SYkEJEiLRchkSCsEJSgAAAB0BehWHP7/SI1l2EyJ8FtBXEFdQV5BX13D8w8e+opCYIPgA/7ID4UrAQAAVUiJ5UFXTI09VbIRAEFWQVVJifVBVEmJ1FNRgz008REAAEyLchB0S0mLfQjo8Rv+/0yJ90mJx+jmG/7/SIs9R+8RAEiJw4sFCvERAE2NfAcCMcBIhf90K+jFG/7/6yTovhv+/0g5w3MGiQXn8BEASYPHEEmLP4sd2vARAEiF/3Xe66VMAftIAcNIid/ogRf+/0mLdQhIidpIjR3DsREASInHSYnH6Jgg/v/GAC9MjWgBSIsLSIXJdFyAewgAdCpMiwXE7hEATYXAdQZIg8MQ6+BNifFIg8r/vgIAAABMie8xwOhbJ/7/6xZNifBIg8r/vgIAAABMie8xwOhDJ/7/TInmTIn/6FguAQCEwHS9TYl8JBDrCkyJ/+jVFv7/McBaW0FcQV1BXkFfXcMxwMPzDx766aiz//9VSInlQVVBVEmJ/FOJ81JMiy317xEAQYtFMI1QA4Pi/DnQfC+DwARJi304g+D8SJhIa8AoSIX/dA5Iicboehv+/0mJRTjrDEiJx+iMFv7/SYlFOEiLBbHvEQC5BgAAAExjaDBNa+0YTANoODHATInv86tMiefoYRz+/0mJRQD2wwF0BUHGRRAB9sMCdAVBxkURAfbDBHQFQcZFEgGA4wh0BUHGRRMBSIsFXu8RAP9AMFhbQVxBXV3DVUiJ5VOJ+1KLBf3uEQA5BR/vEQB1OkiLPQ7vEQCNUDKDwDOJFeLuEQBImEiF/3QRSInG6Msa/v9IiQXs7hEA6w9Iicfo2hX+/0iJBdvuEQBIYxXc7hEASIsNze4RAI1CAYgcEYkFye4RAEiYxgQBAFhbXcNVSInlQVdBVkFVSYn1QVRBidRTSIPsGIA/AA+E5AAAAEmJ/ui3HP7/SInDSTnGdFZFheRIjQWEqAIASI0Nb4ICAESLPWfuEQBID0XISIsFVO4RALoFAAAAMf9IjTWOJBAASIlNwEiJRcjoIRn+/0iLTcBIi3XITYnwSInHRIn6McDoGdoBAEyLNVLuEQBJiz7o+hT+/74uAAAASInf6I0Z/v9IhcB1UkWF5EiJ30iNBWmnAgBMjT1/nQIATA9F+Oj7GP7/SI14BejiFP7/TYn5SYnYSIPK/0mJBkiLBf7tEQBIjQ1eewIAvgIAAABIizgxwOjoJP7/6wtIid/orhr+/0mJBkiLBdTtEQBMiWgQRIlgCEiDxBhbQVxBXUFeQV9dw0iLFSbtEQBIhdJ0DYPI/0g7FWftEQByIsNVSIs9FO0RAEiJ5eg0Gv7/g/gKdQrHBWntEQABAAAAXcNIjUIBSIkF6OwRAA++AoP4CnULxwVK7REAAQAAAMPDVUiJ5UFUSYn0U0hjVghIiftIizboWxn+/4XAdUJJY1QkCEiNPBOKF4D6LXUmD7Z3AUiLDRzDEQBIjVcB9gRxBHQdikoBSP/CgPkudBWEyXXx6wwxwID6Lg+VwPfY6wODyP9bQVxdw1VIieVBVkyNNfDTEQBBVU2J9UFUSYn8UzHbSIPsEGRIiwQlKAAAAEiJRdgxwEmLPkiF/w+EnQAAAEyJ5uhMG/7/hcB1IosFMtARAIlF1P/AdS1IjU3URTHAMdIx9kyJ5+h4Iv7/6xhJi34ITInmSYPGKOgWG/7/hcB0yv/D666LRdSD+P91GEiNFQ/LEAC+xQEAAEiNPUqmAgDoD3P//4XASGPbD5XASGvbKEkB3UGIRRwPtsBMiS2x6BEAiQW7zxEASItF2GRIKwQlKAAAAHQt6BcX/v+6BQAAAEiNNWMiEADoxhb+/0yJ5kiJxzHA6MnXAQC/AQAAAOgPIf7/WFpbQVxBXUFeXcNVSInlQVdJifdBVkFVSYn9QVRJidRTMdtIg+xYZEiLBCUoAAAASIlFyDHASIX/dBdIi5/oAAAASIXbdAtIizvosBn+/0iJw01jd0BMiWWwTIlloEWF9nRkSI1FoE2LT0hFMcBIiUWYTTnwc1BLjRQGSIt9mEyJRYBI0epMiU2QSGvKKEiJVYhNjTwJTIn+6N7y//9Mi02QSItViIXATItFgHgIdAtMjUIB67xJidbrt02F/3QHMcDpvwEAAIM9mc4RAAB1E0yLNXjrEQBMjT0lkQIA6UUBAACDPVnpEQAAdDpNi4XoAAAAMcBMielMieJIjTVtIRAAvwIAAADoIx3+/0iF23UaSYt9AEyNNYOlEQDo3hj+/0mJx+tGSIXbdCZMjTUtphEA6xdMifZIid/oXP3//4XAD4R5////SYPGEEmDPgB1402F7XQe67lMif/oLxn+/4XAD4RY////SYPGEEmLNkiF9nXkSIsF9OYRAEyLcCDrFEyJ5+gGGf7/hcAPhC////9Jg8YQSYs2SIX2deRMjTV7pBEASYs2SIX2dBpJY1YITInn6IcS/v+FwA+EAP///0mDxhDr3kyJ50yNNQ+kEQDoChX+/0GJx0iYSIlFmEmLNkiF9g+E5v7//0ljRghEOfh/HUiLfZiNUAFIY9JIKcdMAefoNxL+/4XAD4Sw/v//SYPGEOvIQYtGEIP4AXU3SIXbdQtNi3YITYX2denrUkmLNkiJ3+h1E/7/hcAPhH7+//9JizZMif/okhH+/4XAddPpav7//0mLNoP4AnUSSYt9AOhIE/7/hcB1uelQ/v//TInn6BcY/v+FwHWo6T/+//+4AQAAAEiLVchkSCsUJSgAAAB0BehVFP7/SIPEWFtBXEFdQV5BX13DVb4DAAAASInlQVZBVUyNLTujAgBBVEGJ/EyJ71PoZIwAAEiLNd3aEQBMie9IicPoshb+/0iJBcPpEQBIiUMwSIXAdR0x/7oFAAAASI01B6MCAOivE/7/SInHMcDo9cEBAEiLQAhIiz2a2hEATIuwoAIAAOguGv7/SIs9h9oRAEmJxejfGP7/SIs9cOkRAEyJ6onGQf/WhMB0qkiLPV3pEQBFhOR0SkiNNciiAgDoFBH+/0iJBeXoEQBIicdIhcB1DroFAAAASI01MR8QAOtPvgNBIADojR7+/4TAdORIizXa6BEASIs9s+gRAOjWGP7/SIs9B+kRAEiNNX6iAgDowxD+/0iJBXToEQBIicdIhcB1JboFAAAASI01EB8QADH/6OES/v9bQVxIicdBXTHAQV5d6d/TAQC+A0EgAOglHv7/hMB0zUiLPTLoEQAx9uhzGP7/SInfW0FcQV1BXl3pgyoBAPMPHvpVv4gAAABIieXosQ7+/7kiAAAAZg92wEiJwjHASInX86vHQgj/////SInQSMdCEP////9Ix0Jo/////w8RQiBdw/MPHvpVSInlQVdNic9BVkmJ9kFVSYn9QVRJidRTTInDSIPsOIlNyEiF0nQHSIX2dBDrBUiF9nQMTYXkTQ9E5usDSYnWQYtFQEHGBwCJRcxJi0VIg33MAEiJRcB0H0SLRchIidlMieJMifZIicfo/O3//4XAfw51BEHGBwFFMcnpFgEAAIN9zAFBuQEAAAAPhAYBAACLRcxEi0XISInZTIniTIn2jXj/SItFwIl9uEhr/yhIAcfotO3//4XAD4/UAAAARItNuHQJRTHSg33MAnURhcAPhcEAAABBxgcB6bgAAABMiW24SInZRYnNTIl9sE2J50WJ1EONHCxIi0XARItFyEyJ+tHrTIn2SIlNqInfSGv/KEgBx+hS7f//SItNqIXAdRpNifxMi32wQYnbTIttuEiJy0WJ2UHGBwHrXHkGRI1r/+sERI1jAUU57HKnRInnTIttuEiLRcBNifyJfbhIa/8oRItFyEyJ4kyJ9kiJy0yLfbBIAcfo8ez//0SLVbiFwH4GRY1KAesPdQRBxgcBRYnR6wREi03MRInKSGvSKEGAPwB0DEyLfcBJAdfplgAAAEGLdUQ5dcxyKIPGQEiLfcBIiVW4QYl1REhr9ihEiU3M6IYR/v9Ii1W4RItNzEmJRUhJA1VISYnXQYtVQEQ5ynQTRCnKSY1/KEyJ/khr0ijoNxj+/zHAuQoAAABMif/zq0yJ9+hjEv7/TInnSYkH6FgS/v9JiUcISIXbdAtIid/oRxL+/0iJw4tFyEmJXxBBiUcYQf9FQEiDxDhMifhbQVxBXUFeQV9dw1VIieVBV0Ux/0FWQVVBVEUx5FNIjZ3A+P//SYndSIHsaAcAAGRIiwQlKAAAAEiJRcgxwEiNhQD///9IiZ14+P//xwUY5REA/v///0iJhaj4//9IiYWg+P//SMeFmPj//8gAAABEiaWU+P//SIuFqPj//0iLtZj4//9EiDhIi4Wg+P//SI1EMP9IOYWo+P//D4LiAAAASIudqPj//0iLhaD4//9IKcNMjWsBSIH+DycAAA+Phw0AAEiJ8rgQJwAASAHySDnCSA9OwkiNPMBIiYWY+P//SIPHB+jGFP7/SYnESIXAD4RVDQAASInHSIuFmPj//0yJ6UiLtaD4///zpLkIAAAAScHlA0iLtXj4//9Ig8AHSJlI9/lMielNjTTESI2FAP///0yJ9/OkSDmFoPj//3QMSIu9oPj//+jDCv7/SY0EHE+NbC74SImFqPj//0iLhZj4//9JjUQE/0g5haj4//8Pg/wMAABMibV4+P//TImloPj//0GD/0kPhNAMAABNY/dIjQXoyBAAQg++BDCJhYj4//+D+KsPhHoDAACDPb3jEQD+D4W9AgAARIsliOMRAEWF5HQeMduJHXvjEQBEiePpmwIAAIP4IHUagz1j4xEAAHQ/6Lv1//+Jw4P4/3Xm6XMCAACD+Al04YM9ROMRAAB0IIP4O3Ub6Jf1//+D+P90B4P4CnXx66GD+Ap0nOlFAgAASIs1J7kRAA+2w0Ux20SJHQ7jEQBmiwRGqAR0X0Ux0kSJFfjiEQD2xAF1BYP7eHUnD7776LPz///oRPX//4nDg/j/dBpIizXjuBEAD7bA9kRGAQF01uvZid/ojYUAAEiLPbHiEQC7HgEAAOix7P//SIkF0OIRAOnTAQAAZiWIAGaJhYD4//91F4neSI092pwCAOj4Df7/SIXAD4QQAQAARTHJD777RIkNcuIRAOg68///6Mv0//+JwYP7QHQJSI0drpwCAOtFSIs1YbgRAA+2wGaLBEaoAQ+FcgEAAKgEdN2Jz+gEhQAA6WIBAABIixU7uBEAD7bB9gRCjHQWD7756Ofy///oePT//4nBg/n/ddzrIonOSInfiY1w+P//6GwN/v+LjXD4//9IhcB1z4nP6LeEAABmg72A+P//AEiLFdPhEQB0YEyJtYD4//9IjR1LoREATYnuSYnVSIs7SIX/dDdMie5Ig8MQ6GEQ/v+FwHUiTWPkSI0FI6ERAE2J9UyLtYD4//9JweQEQotcIAjpuwAAAEH/xOvBTInqTYn1TIu1gPj//0iJ1+hz6///63WD+ywPhJYAAAB/KIP7InQyg/sndC2D+woPhcr9////BTvhEQDHBUXhEQABAAAA6bX9//+D+y50Z4P7PXRG6ab9///oi/P//0UxwESJBR7hEQCD+P90EznYdA8Pvvjo2vH//+hr8///6+hIiz334BEA6Pzq//9IiQUb4REAux0BAADrHOhK8///iceD+D10C+iogwAA6wkx2+sFuxwBAACJHfrgEQBIYwXz4BEAhcB/DDH/MdKJPeXgEQDrLT0AAQAAdQ/HBdLgEQABAQAA6SsJAAC6AgAAAD0eAQAAdwtIjRWqxBAAD74UAouFiPj//wHQPaEAAAB3XUiYSI0NLsMQAA+/DEE50XVMSI0Vv8EQAEwPvzxCRYX/fwhB999NY+fraEiLBW7gEQCDvZT4//8BxwVl4BEA/v///4OVlPj///9Jg8UISYlFAEj/haj4///pUvv//0iNBdPAEABOD74kMEWF5HUkg72U+P//AA+FYggAAEiNPXKDAgD/BQfgEQDo9+f//+lzCAAASWPESI0NG8AQAA++FAG4AQAAACnQiJWA+P//SJhJi1zFAEGNRCT8g/hkD4eTBwAASI0VDrwQAEhjBIJIAdA+/+BJi334SYt1ADHS6Nbw///pbgcAAEmLffhJi3UAugEAAADov/D//+lXBwAATIs9kt8RAEmLRQAxyU2LdxhIiYWI+P//TYX2dApMiffoVAr+/4nBSIu9iPj//4mNcPj//+hACv7/i41w+P//jUQBAUiYTYX2dCtMifdIicbo9Ar+/0iLtYj4//9JiUcYSIsFMt8RAEiLeBjoqRP+/+niBgAASInH6OwF/v9Ii7WI+P//SYlHGEiLBQrfEQBIi3gY6IEH/v/pugYAAGZBD25F+GZBD25NAEiLBeneEQBmD2LBZg/WQCDpmQYAAGZBD25F+GZBD25VAEiLBcjeEQBmD2LCZg/WQCjpeAYAAEGLdQBIjT3tmAIA6J/u///pYwYAAEGLdQBIjT2dlgIA6Iru///pTgYAAEiLBYneEQBBi1UAMfaJUGiJcGzpNgYAAGZBD25F8GZBD25dAEiLBWXeEQBmD2LDZg/WQGjpFQYAAL8YAAAATYt1AOgZBf7/SYnHSIsFL94RAEyJ90yJPSXeEQBJiQfo/Qr+/0yJ90mJRwjoAQn+/0GJRxDp1gUAAEmLRfBBi00ASImdcPj//0Ux9kiJhYj4//9IiwX43REAictMi3hwTYX/dCxJi38ISIu1iPj//+htDP7/hcB1DEGLRxAp2A+EhAUAAIXAfwhNif5Niz/rz78YAAAAiZ2Q+P//SIudcPj//+h6BP7/SIu9iPj//0mJx+hrCv7/i42Q+P//SYlHCEGJTxBNhfZ1F0iLBYHdEQBIi1BwSYkXTIl4cOkvBQAASYsGSYkHTYk+6SEFAABJi1XYTYtFAMaFv/j//wBFi3XwQYtN4EmLddBIhdJ1B0iF9kgPRdZIiz013REATI2Nv/j//+h79f//gL2/+P//AA+F2gQAAEH3xgEAAAB0BMZAIgFB98YCAAAAdATGQCEBQffGBAAAAHQExkAjAUGD5ggPhKkEAADGQCAB6aAEAAC4/////0jB4CBIIcPpjwQAALj/////SMHgIEgh2EiDyAFIicPpdwQAALj/////SMHgIEgh2EiDyAJIicPpXwQAALj/////SMHgIEgh2EiDyARIicPpRwQAALj/////SMHgIEgh2EiDyAhIicPpLwQAAEmLTfhJi1XoQYPI/0mLddhJi33ITYtNAOh15v//6Q0EAABJi1XoSYt12DHJSYt9yE2LTQBFi0X46FXm///p7QMAAEmLTfhJi3XoQYPI/zHSSYt92E2LTQDoNeb//+nNAwAASYt16EmLfdgxyTHSTYtNAEWLRfjoF+b//+mvAwAASYtN+EmLVehBg8j/Mf9Ji3XYTYtNAOj35f//6Y8DAABJi034SYt16EGDyP8x0k2LTQAx/+jZ5f//6XEDAABJi334QYt1AOib6///6V8DAABJi1UASYt9+DH2igKEwHRBPHJ0Jn8WPFd0JX8KPFJ0GjxTdCXrJjxYdBrrIDx3dA88eHQQPHN0EesSg84B6w2DzgLrCIPOBOsDg84ISP/C67noQOv//+kEAwAAuv////9Bi0XwQQtFAEjB4iBIIdpICcJIidPp5QIAALj/////SAnD6dgCAABIjR1WlQIA6cwCAABIjR1FlQIA6cACAABIjR3skgIA6bQCAABIjR03lQIA6agCAABIjR3mkgIA6ZwCAABIjR0JbwIA6ZACAABIjR0clQIA6YQCAABIjR0clQIA6XgCAABIjR0alQIA6WwCAABIjR1wkgIA6WACAABIjR0SlQIA6VQCAABIjR0OlQIA6UgCAABIjR0LlQIA6TwCAABIjR1IbgIA6TACAABIjR1mkgIA6SQCAABIjR3vlAIA6RgCAABIjR07kgIA6QwCAABIjR3elAIA6QACAABIjR33kQIA6fQBAABIjR0BkgIA6egBAABIjR3ClAIA6dwBAABIjR0xmgIA6dABAABIjR3NkQIA6cQBAABNi30ATIn/6NoE/v9MjXACTIn36L4A/v9NifhMifK+AgAAAEiJw0iJx0iNDX5/AgAxwOjPEP7/6YgBAABNi3XwTIn36J4E/v9Ni30ASInDTIn/6I8E/v9IjXwDAugc4P//TYn5TYnwSIPK/0iJw0iJx74CAAAAMcBIjQ1gkwIA6IIQ/v/pOwEAADHb6TQBAAC4/////0GLVQBIweAgSCHYSAnQSInD6RkBAABIg8v/6RABAABNi3UATIn36CYE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/4B9vQB1o4XAD4SkBgAAQY10JHhMifJMif/oXf7//0GNdCR8TInyTIn/QYnF6Er+//+Afb0AicMPhWz///9IhdsPhGwGAABBjXQkBkyJ8kyJ/+i0/f//QY10JBRMifJMif+JwEiJhVj////om/3//4B9vQCJwEmNRAQYSIlFmA+FJf///0SJ6EyLZZhIiUWoMcBIiUWISIuNWP///0g5TYgPg7kAAABBjXQkDEyJ8kyJ/+jF/f//QY10JBBMifJMif9BicXosv3//0GNdCQUTInyTIn/iUWA6J/9//+Afb0AiYV4////D4W9/v//MdJMieZMif/oNuz9/4XAD4Wo/v//SI19v0yJ+r4IAAAA6I3l/f9Ig/gID4WN/v//TDltqHIwi0WATAHoSDlFqHMkSItNqIuVeP///0gBykwp6kmJ1EiNFBlIOdBzGEgpyEiJw+sQSP9FiEmDxCjpNv///0Ux5EUx20Ux7UUx9jHATImdeP///0jHhWD///8BAAAATIltgEjHhWj///8BAAAATIl1iEjHhXD///8BAAAASImFUP///0iJnUj///9MiaVA////SIuNWP///0g5jVD///8Pg58BAACLRZhMjWW9TIn/TInijXAI6KD8//9MieJMif9BicaLRZiNcAzojPz//0yJ4kyJ/4nDi0WYjXAk6Hn8//+Afb0AxkXHAEGJxQ+Flv3//0iLdZgx0kyJ/+gO6/3/hcAPhYD9//9MjWW/TIn6vggAAABMiefoYuT9/0iD+AgPhWL9//9IjTU9XgIATInn6Fni/f+FwHVISY0EHoM9/rERAABIiUWIdCtBUEmJwUmJ2EyJ4UFVSI0VYJkQAL8CAAAAMcBIjTVi6A8A6L3l/f9BWUFaSImdcP///+myAAAASI01KmoCAEyJ5+j+4f3/hcB1SEmNBB6DPaOxEQAASIlFgHUMSImdaP///+mCAAAAUUyLTYBIjTUR6A8ASYnYQVW/AgAAAEyJ4THASI0V65gQAOhW5f3/Xl/ryUiNNXxdAgBMiefoo+H9/4XAdURJjQQegz1IsREAAEiJhXj///90KUFWSYnBSI0Vr5gQAEmJ2EFVTInhSI01sOcPADHAvwIAAADoBOX9/1haSImdYP///0j/hVD///9Ig0WYKOlN/v//SIudSP///0yLpUD///9Iid/odNn9/zHSTInmTIn/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aAhMie/oxsD9/0iJRZhBgP5AdFNNizwkvkAAAABMif/oK8X9/0iLfZhNiflMiepIhcBIiwU3lhEAvgIAAABMjQWoSgIAD5TDSI0NGCcCAIB4HABIjQVTUQIATA9EwDHA6JvQ/f/rIE2LBCRIi32YTInqvgIAAABIjQ3/RgIAMcAx2+h50P3/SIt1mEiLPfaKEQBFMcAxyTHS6DLH/f9IhcB0CoB4GAEPhNUEAABJiwQkQYD+QHUmSIt9mEmJwUyNBRNUAgAxwEiNDZkmAgBMieq+AgAAAOgl0P3/60RIixWMlREASI0NwlACAEyNDftJAgC+AgAAAEyNBdpTAgCAehwAV0yJ6lBMD0TJSIt9mEiNDTwmAgAxwOjjz/3/QVhBWUiLdZhIiz1cihEARTHAMckx0uiYxv3/SIXAD4RNGgAAikAYhNt1DUUx7f7ID5TD6TsEAABFMe3+yA+EMAQAAEiLRZhMjWgGTInv6HDD/f9MjXgDSImFYP///0yJ/+hNv/3/TIn6TInuSInDSInH6DzK/f8x/4A7QL5AAAAAQA+Ux0gB3+imw/3/SYnGSIXAdATGQAEATGMFo5gRAEyLDZSYEQAxyUyJvWj///9MibVY////SInfSYnOTImlUP///02Jz02JxE055nM5T40sNEiJvTj///9J0e1MiehIweAESY0cB0iLM+iDxv3/SIu9OP///4XAeAh0JU2NdQHrx02J7OvCTIu9aP///0yLtVj///9IiftMi6VQ////6z9IidpIiftIiz08iREARTHASItyCDHJMdJMi71o////TIu1WP///0yLpVD////oX8X9/4B4GAFJicUPhOkCAACKAzw/dQhFMe3p2wIAAEiLDcWXEQBMYy3GlxEASImNaP///02F9nUJPEB0HulQAQAAPEB0Fb5AAAAASInf6JDC/f/GAADp0QAAAEiLBaGTEQCAeBwAdAXGA1/rGkiJ3+j+wf3/SI1zAUyJ+UiJ30iJwujcxf3/MclMibVg////SYneTImlWP///0mJzE057HM2T418JQBIi41o////TIn3SdHvTIn4SMHgBEiNHAFIizPoXMX9/4XAeAh0Hk2NZwHryk2J/evFTInzTIulWP///0yLtWD////rOEiJ2kiLPSaIEQBFMcAxyUiLcggx0kyLpVj///9MifNMi7Vg////6E3E/f+AeBgBSYnFD4TXAQAATYX2D4Ua////SGMVwJYRAEiLDbGWEQBMiaVo////RTH/SYncSInTSTnfD4NqAQAATo0sO0yJ50iJjWD///9J0e1Nie5JweYESQHOSYs26K3E/f9Ii41g////hcB4DA+ERQEAAE2NfQHrvUyJ6+u4TIn6SInfSI01JlACAOjvvP3/MdJMiaVY////SYncSInTTDnrczVNjXQdAEiLhWj///9MiedJ0e5NifdJwecESQHHSYs36EfE/f+FwHgIdBdJjV4B68tNifXrxkyJ40yLpVj////rLkmLdwhIiz0XhxEARTHAMckx0kyJ40yLpVj////oScP9/4B4GAFJicUPhNMAAACAO191DUiLBdCREQCAeBwAdSNIid/oMsD9/0iLjWD///9IjXsBSIneSI1QAUiDwQLoB8T9/0hjFZCVEQDGA0BFMf9Iiw17lREATImlaP///0mJ3EiJ00k533M7To0sO0yJ50iJjWD///9J0e1Nie5JweYESQHOSYs26H7D/f9Ii41g////hcB4CHQaTY19AevFTInr68BMieNMi6Vo////6Uv9//9Ji3YISIs9RIYRAEUxwDHJMdJMieNMi6Vo////6HbC/f+AeBgBSYnFD4Ud/f//SInf6EG7/f9Nhe10FkGAfRgBRIptkA+Uw+sOil2QQYnd6wZEim2QMdtIi32Y6Be7/f+E2w+EoAAAAIO9cP///wB1FEiLfYDoner//0iLMEiJx+icMQAAQQ8QRCQQMdJIi3WASI19oEEPECQkDyjIZg9szA8pTaBJi0QkGEiJRbBBi0QkIGbHRcAAAIXAZg9uyA9J0GZID37ASIXAZg9u6mYPYs1mD9ZNuEGLVCQkD5RFwoTSiFXDD5TCD7bSRCHq6HDt//9IizBIicfoIzEAAMeFcP///wEAAABI/4V4////SYPEKOl8+f//RIudcP///0yLtUj///9Ii51A////RYXbdBRIi32A6BPm//9IizBIicfo2zAAAEiLPfKPEQDoJbr9/0iLRYhIiwBIiUWI6ZP4//+LBb+TEQBIiz2wkxEAhcB0Gf/IiQWskxEASJhIweAESIs8B+jtuf3/69bo5rn9/0iLBd+TEQBIhcB0EUiLAEiFwHQJSIkFi5MRAOtISL4BCAAAACAAAEiLRYAxyUiLAEiJBW+TEQCKEITSdB2D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SItDCMcHPQAAAEiJRwiLQwS7vQAAAMdHEAQAAACJRwTGRygADxFPGOjfHgAATIuV0NH//+lr+f//SYt6yDH2u0gAAABMiZXQ0f//6Kzz//9Mi5XQ0f//6Uj5//9Ji3LIvxgBAAC7CAEAAEyJldDR///otiAAAEyLldDR//9IiYXw0f//6Rv5//9Ji3LIv4gBAAC7BgEAAEyJldDR///oaR0AAEyLldDR//9IiYXw0f//6e74//9IixVfExEASInQSCsFTRMRAEiD+A8PhsoJAABIiwU8ExEASIs1LRMRAEiDwBBIOfAPhBSz/f9Iiw05ExEASYnQ80EPb0rISIm18NH//7uLAAAASAHISPfRSCHISIsN7BIRAEiJx0gpz0kpyEk5+EgPQsJmSA9uwGYPbMAPKQXUEhEA80EPb0L4Zg/GwQEPEQbpWfj//0mLulj///9Ji3LIMdJMiZXQ0f//u8AAAADocyMAAEiJx+ibHQAATIuV0NH//+kn+P//x4Xw0f//gwEAALsjAQAA6RP4///HhfDR//+CAQAAuyIBAADp//f//0mLQsi75wAAAEiJhfDR///p6vf//0mLulj///9Ji3LIugEAAABMiZXQ0f//u8EAAADoASMAAEiJx+gpHQAATIuV0NH//+m19///80EPfgIx/0UxwLt2AAAAib0g0v//QQ8WQpBMiYUA0v//xoUk0v//AA8phfDR///pgff//78QAAAATImV0NH//7uMAAAA6HPJ//9Mi5XQ0f//SImF8NH//0mLEkiJEDHSSIlQCOlM9///SI298NH//0mNcsi5DgAAALuFAAAA86XHhSDS//8GAAAA6Sb3//9Ji7Ig////vwMBAAC7DwEAAEyJldDR///ocRsAAEyLldDR//+/NQEAAEiJwkmLcsjomR8AAEyLldDR//9IiYXw0f//6d72//9Ji3KQSYsSvy8AAABMiZXQ0f//u+0AAADoaR8AAEyLldDR//9IiYXw0f//6a72//9Ji3KQSYsSvysAAABMiZXQ0f//u+8AAADoOR8AAEyLldDR//9IiYXw0f//6X72//9Ijb3w0f//SY1yyLkOAAAAu34AAADzpceFINL//wEAAADpWPb//0mLcpBJixK/JgAAAEyJldDR//+7+QAAAOjjHgAATIuV0NH//0iJhfDR///pKPb///NBD29CkL8wAAAATYs6TImV0NH///NBD2+KIP///02LoiD///8PKYWg0f//Zg9syA8pjbDR///o9Mf//2YPb42w0f//TIuV0NH//8cAPwAAAEiJw0mLRCQIZg9vhaDR//9IiUMIQYtEJATHQxABAAAADxFLGEGDfCQQB4lDBEyJeygPhMev/f9IiZ3w0f//u/wAAADpj/X//0mLcpBJixK/LQAAAEyJldDR//+78AAAAOgaHgAATIuV0NH//0iJhfDR///pX/X//0iNvfDR//9JjXLIuQ4AAAC7gAAAAPOlx4Ug0v//BQAAAOk59f//TImV0NH//7vjAAAA6HAZAABMi5XQ0f//SYtCyEiJhfDR///pEfX//0mLOr4EAAAAu2AAAABMiZXQ0f//6IDE//9Mi5XQ0f//6ez0//9Ji3KQSYsSvxEBAABMiZXQ0f//u/QAAADodx0AAEyLldDR//9IiYXw0f//6bz0//8PH0AASI0Fyc0PAEQPvzxQ6frz//8PH4AAAAAARIn7SI0VbsUPAPfbSGPDSA++FAK4AQAAACnQSYnVSJhIjRTFAAAAAEgpwkmNBNLzD28A8w9vSCAPKYXw0f//8w9vQBBIi0AwDymNENL//0iJhSDS//+NQ/gPKYUA0v//PXgBAAAPhzX0//9IjRUuaQ8ASGMEgkgB0D7/4L5AAAAASI09cA4RAEyJldDR///otI8BAEiLBXUOEQBIizV2DhEATIuV0NH//+mP9f//RTHAMcBEiQUCGBEA6a3y//++KAAAAEiNPS0OEQBMiZXQ0f//6HGPAQBIiwUyDhEASIs1Mw4RAEyLldDR///phff//75AAAAASI09+w0RAEyJldDR///oP48BAEiLBQAOEQBIizUBDhEATIuV0NH//+kJ+P//TIuF6NH//02J80hjBYgXEQCD+P4PhQYIAABMjSU0uA8ASI0dZ8MBAE05w3QkTYndTYnGSQ+/RQBIid9Jg+0CQQ+/NETo3BQBAE059XXlTYnwSIuFmNH//0k5wA+FxAcAAEiLRchkSCsEJSgAAAAPhXUEAABIjWXYW0FcQV1BXkFfXcPHBUgWEQAEAAAA6evy//9Ji3LIvykBAAC7DAEAAEyJldDR///oWRoAAEyLldDR//9IiYXw0f//6b7y//9Ji5JY////SYtyyL8oAQAATImV0NH//7sLAQAA6EUbAABMi5XQ0f//SImF8NH//+mK8v//SYtSyEmLslj///+/JwEAAEyJldDR//+7CgEAAOgRGwAATIuV0NH//0iJhfDR///pVvL//0mLMr9IAQAAuwIBAABMiZXQ0f//6KUWAABMi5XQ0f//SImF8NH//+kq8v//Mfa/LwEAALsBAQAATImV0NH//+h6FgAATIuV0NH//0iJhfDR///p//H//0iLBbj8EAC7XgAAAEiNUARIiRWo/BAAixUmFREAxwUcFREABQAAAIkQ6dHx//9Ji3rIMfa7cAAAAEyJldDR///ogu0AAEyLldDR///prvH//0yJldDR//+7UgAAAOhlDQEATIuV0NH//+mR8f//TImV0NH//7tRAAAA6GgHAQBMi5XQ0f//6XTx//9Ji3rIMfa7TAAAAEyJldDR///opeAAAEyLldDR///pUfH//0mLUsi5AQAAAEmLslj///9MiZXQ0f//SYu66P7//7tLAAAA6PH0AABMi5XQ0f//6R3x//+APS4KEQAAu6EAAAAPhAvx//8x20yNJd+/AQBNiddJD748HEiDwwHoOe3//78fAQAASInG6IwaAQBIg/sHdd8x20yNJe0JAgBJD748HEiDwwHoD+3//78fAQAASInG6GIaAQBIg/sedd8x/0yJvdDR//+7oQAAAOjp7P//vx8BAABIicboPBoBAEyLldDR///piPD//78PAAAATImV0NH//7ucAAAAxgWQEhEAAeijGgEATIuV0NH//+lf8P//SYsyv0cBAAC7AwEAAEyJldDR///orhQAAEyLldDR//9IiYXw0f//6TPw//9Ji3KQSYsSvxMBAABMiZXQ0f//u/YAAADovhgAAEyLldDR//9IiYXw0f//6QPw//9Jizox9rtlAAAATImV0NH//+h1v///TIuV0NH//+nh7///vjAAAABIjT0tChEATImVsNH//w8pjdDR///oaosBAEiLBSsKEQBIiw0sChEATIuVsNH//2YPb43Q0f//6af1//8PtgVRCREAicKDyIDA6geIBUMJEQAPttJIiZXw0f//6Xzv//9Jizq+BAAAALtiAAAATImV0NH//+jrvv//TIuV0NH//+lX7///D7YFCAkRAEEPtlKQu2sAAADB4geD4H8J0IgF8AgRAOkz7///SYt6yLkBAAAAMdIx9kyJldDR//+7SgAAAOjd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SIPDAUmDPNkAdfVIjQTdAAAAAEiJhQD///9LizzmTImN6P7//+gmi/z/SGOFGP///0yJ90yNVAMBScHiA0yJ1kyJlfD+///oBJD8/0yLlfD+//9JicZKjQQjRIulGP///0jB4ANJOcJIicFJjTwGRIniSQ9DykQp+kyLvRD///9IY9JIKcFIweIDS410Pgjo3JL8/0yLlfD+//9Mi43o/v//S408PkiLlQD///9NOddMidFMic5MiY0Q////SQ9Dz0wp+ei3kvz/SIu9EP///0GNRBz/iYUY////6HCK/P9Ii73Q/v//6GSK/P9Ei70I////Dx9EAABMie/oAI78/4u9GP///0GNRwE5+H0eRIm9CP///0GJx+mD+///Dx8AQY1HATmFGP///3/iTIm1EP///+hIkfz/ugUAAABIjTV0LAEAPRgBAAAPhcsQAABIiz1qVhAA6KWV/P9IjT2n3f3/6NmX/P9IjT2iZQAASIkFQ1YQAOhWkfz/SIkFL1YQAEiLBUA5EABIgzgAD4QyDQAASIsdR0AQAIN7CB8Pj/UMAABIY0MISI09Mi///41QAYlTCEiJfMMQi4UY////g/gBflFIi70Q////g+gCRTH2TI0tT+kAAEyNfwhMjWTHEA8fgAAAAABJix+6CgAAAEyJ7kiJ3+jlivz/hcAPhPUWAABJg8cITTnnddxNhfYPhfQWAABIjQUxGgEASIkFhVUQAEiLHXZVEABIhdsPhY0WAADHBVtVEAD/////SI0d7ugAAEiJ3+iki/z/ugUAAABIjTWIKwEAhMAPhEQQAAAPtwUloQ4ASI092OgAAMYFzlQQAAHGBd9UEAA6xwXyVBAA/////0jHBe9UEAD/////ZokFqFQQAMYFtVQQAAHGBepUEAABxwVoUxAA/////2aJBe1SEADGBehSEAD/6P2I/P9IjT0eIAEASLoABAAQaAoCAEjHBUFUEAD/////SIXAZkgPbsdIjQVyPxAAxwWgUxAAAQAAAEiJBSFTEABIjQVaUxAASI09QBkBAEiJBVRTEABIjQX05wAAZkgPbtBIuAUAAAD/////D5QFZ1IQAEiJBXhTEABmD2zCSLj/+//vh3X9/0gjBbNSEABICdAPEQUxUxAASIkFolIQALgDAAAASMHgIMYFnVIQADpIiQVrUxAASMcFIFMQAP/////HBR5TEAD/////6DEiAABIjT3E5wAA6CWI/P9IicNIhcAPhZoVAABIjR1W5wAAg70Y////AUmJ3A+OiwAAAEG8AQAAAOsZZi4PH4QAAAAAAIuFGP///0GDxAFBOcR9XkiLvRD///9JY8RIjRTFAAAAAEyLLMdBgH0ALXXUQYB9AW11zUGAfQIAD4WNBgAAi4UY////g+gBRDngD47REgAASIuFEP///0GDxAFIi1wQCEGDxAFEOaUY////f6KAO2dJidwPhNwMAABMjTWwPRAATYsuTYXtD4QTFgAASYt1aEyJ5+jIjvz/hcAPhWMKAABIi7UQ////i70Y////TIkt1E4QAEH/VVBMiwXBNRAAMdK+6AMAAEiLDfs1EABIjT38TRAASIkF5VAQAOgAzwAASIsN4TUQADHSMfZMiwWONRAASI09d00QAOjizgAAuT0AAABIjQVmThAAusgAAABIjTX6B///SI09U1AQAEiJBUQ9EADol438/4TAD4RdFQAASIsFMD0QADHSMfYx/zHJSIkQSIlACEiNBRJNEABIiQUTTRAASI0F9E0QAEiJNe1NEAC+AgAAAEiJBelNEABIjQVaTxAASIk9U08QADH/SIkN2kwQAEiJBUtPEADobgL//zH2ugEAAABIjT2y5gAASIkFqUwQAOikBf//SIsVNTUQAEUxwLkNAAAASIkFvk0QAEiNNQec//9IjT1gTxAASIHCMAIAAEyJBWpMEABIiVA4SI0FX0wQALooAAAASIkFS0wQAOjGjPz/hMAPhIwUAABIiwV/TRAA/xBIi7UQ////i70Y////xgWZTxAAAOjsB///SIsFjVEQAEiFwA+FxRQAAEiLBQ1NEABIhcAPhQAGAABIiwU9TRAASIuAmAAAAEiFwA+FuQsAAEiDPU1PEAAAD4XbCAAASIs9sE8QAEiF/w+FpAgAAEiLBQhNEABIjb0o/////1Bgg70o////AEmJxA+FgQsAALoFAAAASI015uUAADH/6NOI/P+6AQAAAEyJ50iJxuijLgAAxwXlThAAAQAAAOhUL///gD3VThAAAA+FrwsAAA+2BQJPEACEwHUPD7YFRU8QAIPgAzwCD5XAD7YVN08QAIPgAcHgBIPi7wnQgD3UThAAAIgFH08QAA+FVQsAAEyLJUk7EAC/GAAAAOhXA///RTHbg70Y////AkyJGMdA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qrAAAACA+QIPhbwEAACLeniJvRj///9Mi2JAi70Y////AfhIg70A////AImF6P7//w+EkwMAAIsFlzcQADmF6P7//3Noi70Q////Qo0ULznCc1pIi4UI////TAHgSDsFeDcQAHNHSYnEi4Xo/v//QYnVSYnZiYUY////TIm1AP///4uFGP///0yJy0yJpQj///9NizZEia0Q////6SD///9Mi73w/v//6fDn//9IiztIjTV1zAAASIm9yP7//+jpE///SIu9yP7//4TAD4XAAgAASI01WcwAAOiucvz/hcAPlMCEwA+F3wIAAEiLheD+//9IiwBIicdIiYUI////6Nhu/P+NUAGJhcj+//9IiddIiZXo/v//6LBq/P9Ii5Xo/v//SIu1CP///0iJx0iJhRD///9IidHooHL8/0SLhcj+//9FhcB0NUiLvRD///9BjUD/SIsNkhkQAEiJwg+2NAf2BHEED4VXAgAAQYPoAXQMSAH4gDguD4Q9AgAASYtHCItACIPoAoPg/Q+EpgEAAEiLtRD///9Ii5XY/v//TIn/6HZ0/P9IicZIhcAPhHMBAABMif9IiYUI////6Ht1/P9IhcBIiYXo/v//D4RUAQAASIu1CP///0iLPaU0EABFMcC5AQAAALoBAAAA6Ntw/P9IhcBIiYUI////D4QkAQAASIu9EP///+ifafz/RTHJRTHSRTHbSIuFCP///0iJ3kyJ/0yJSDBMi43o/v//xkAYA0yJSCiLQyRMiclMiY0Q////QYlBJEiLQzBJiUEwQQ+2QSgPtlMog+D+g+IBCdBMifpBiEEoSItDOE2JUUBJiUE4SItDWE2JSWBJiUFYMcBBiUF4i0N8TYlZcEGJQXxJi0cI/5BYAQAATIuNEP///2ZJD27GMdJIi4UA////DxaDAAEAAEEPEYH4AAAASImDAAEAAEiJEEmLVhBIi0NASAGV+P7//0gp0EmJQUBIi4X4/v//SIlTQGZID27ATInwZg9swEEPEUEwSItIEEgp0YN4CAFIiUgQdQxIi3AgTIlOYEiJTlhIiwBIhcAPhFj9///r1boFAAAASI01HcoAAOlA7///SIu9EP///+iabPz/SIP4BQ+GRP7//0iLvQj///9IjTXSyQAA6E0R//+EwA+FawIAAEiLvQj///9IjTXLyQAA6BJw/P+FwA+EUAIAAEiLhRD////GQAUA6f79///oRWz8/0iLvcj+//9IjTXi5gAAg+gDSAHH6Nxv/P+FwA+UwOkp/f//xgAA6bv9//9BidDpef3//4uFEP///0KNFChIi4UI////TAHg6YP8//9Iix2yHhAAugUAAABIjTUWDQEA6THv//+6BQAAAEiNNZfJAAAx/+iea/z/TI0lockAAEiJxzHA6H2O//9MizVeMRAATYX2D4Te9f//SYteCEiF23USugUAAABMieYx/+hla/z/SInDTYsuugUAAABIjTVnyQAAMf/oTGv8/0iJ2kiJx0yJ7jHA6CyO//9Ni3YQ67BIjT3WyQAAMcDoGI7//4t7TOhAfQAA6ZD6//9B9kYQAw+Flvj//+lz+P//vugBAABIjT3ayQAA6LrF/f9IixULMxAASIs97DEQAEyJ/v/Q6fbx//8x9om1GP///+lA+///RTHt6Sb7//+A+QJ0LjHJRTHkRTHtiY0Y////6ST7//9Ii43g/v//RIut0P7//0iLSQhBg+0B6VH6//+D6gMx/4P6AUAPlsdFMeRFMe2JvRj////p7Pr//0iJ3r8gAAAAQYPFAehcbvz/QYP9MX7pSYtXCEiNNYbrAABIid8xwEUx7ejuQgAA6XL3//9Iid6/IAAAAEGDxQHoKG78/0GD/TF+6UmLVwhIjTVS6wAASInfMcBFMe3oukIAAOnN9///ugUAAABIjTWZCwEA6YTt//9MifforGn8/0yJ7+ikafz/g8ABdDlIid/o52X8/0yJ5+jfZfz/6Zrj//9IjTWjCQEAMf+6BQAAAOjHafz/SIu1CP///0iJxzHA6AYYAAAx/7oFAAAASI0118gAAOijafz/SIneSInHMcDopioAAOulDx9AAFVIieVTUuila/z/vxAAAABIicPomGX8/zHJSIkYSIlICA+2E4TSD4XUdfz/SIsV5RsQAEiJAkiDwAhIiQXXGxAAWFtdw2ZmLg8fhAAAAAAA8w8e+lVIjT2AyAAASInl6Jxl/P9IhcB1C0iLBSgtEABIi0BwXcNmLg8fhAAAAAAA8w8e+lW+CAAAAEiNPX3IAACAJYkrEAD7xgWVKxAAZ0iJ5egpAQAAugUAACFdSLj///+//v8f8kjB4h5IIwV+LxAAgA13KxAAIEgJ0IANdS8QAALGBagwEAABxgW4MBAAAEiJBVgvEADDDx+AAAAAAPMPHvpVvggAAABIjT0ZyAAAgCX5KhAA+8YFBSsQAGdIieXouQAAALoFAAAhXUi4////v/7/H/JIweIeSCMFDi8QAIANBysQACBICdCADQUvEAACxgU4MBAAAcYFSDAQAABIiQXoLhAAww8fgAAAAADzDx76Vb4IAAAASI09z84AAMYFfCoQAGdIieXoUAAAALoFAAAhXUi4////v/7/H/JIweIeSCMFpS4QAIANnioQACBICdCADZwuEAACxgXPLxAAAcYF3y8QAABIiQV/LhAAw2ZmLg8fhAAAAAAADx8A8w8e+lVIieVBVEGJ9FNIifvoum/8/0iFwA+EVHf8/4tQDEiLQBCJFbwpEABIiQWtKRAAW0FcXcMPH4QAAAAAAPMPHvpVSInlQVdJifdBVkxj90FVTY1uBUFUTInuSYnMU0hj2lBJiz/oU2j8/0057kyJ6boFAAAASQ9DzkmJB0qNPDBIjTXpeg4ASIPDD0wp8UjB4wXoVmv8/0mLPCRIid7oGmj8/0iNkyD+//9IjTWcpQ8ASDnTSYkEJEiNPBBBWEgPQtpIidlbQVxIKdFBXbrgAQAAQV5BX13pEWv8/5DzDx76VUiJ5UFXSYn3QVZMY/dBVU2NbgVBVEyJ7kmJzFNIY9pQSYs/6LNn/P9NOe5Miem6BQAAAEkPQ85JiQdKjTwwSI01RHoOAEiDww9MKfFIweMF6LZq/P9JizwkSIne6Hpn/P9IjZMg/v//SI01HKMPAEg500mJBCRIjTwQQVhID0LaSInZW0FcSCnRQV264AEAAEFeQV9d6XFq/P+Q8w8e+lVIieVBV0mJ90FWTGP3QVVNjW4FQVRMie5JicxTSGPaUEmLP+gTZ/z/TTnuTInpugUAAABJD0POSYkHSo08MEiNNZ95DgBIg8MPTCnxSMHjBegWavz/SYs8JEiJ3ujaZvz/SI2TIP7//0iNNZygDwBIOdNJiQQkSI08EEFYSA9C2kiJ2VtBXEgp0UFduuABAABBXkFfXenRafz/kPMPHvpVSInlQVVBVFNIg+wYZEiLBCUoAAAASIlF2DHAg/96dFF+P4H/mgEAAH9Agf+PAQAAD496AwAAgf8tAQAAD4RZoPz/D49TAwAAgf+bAAAAD4SzoPz/gf+sAAAAdQ7pUqD8/4P/UA+E2AQAADHA6aem/P9MiyVzEBAASI01gdIAAEmLHCRIid/o8Gj8/4XAD4S3o/z/SI0178cAAEiJ3+jZaPz/hcAPhLij/P9IjTXfxwAASInf6MJo/P+FwA+EuaP8/0iNNdDHAABIid/oywn//4TAD4Wuo/z/SI01yMcAAEiJ3+i0Cf//hMAPhfWi/P9IjTXDxwAASInf6J0J//+EwA+FqKL8/0iNNYbZAABIid/oZmj8/4XAD4R5ovz/SI01vscAAEiJ3+hPaPz/hcAPhEqi/P9IjTW1xwAASInf6Dho/P+FwA+EJ6L8/0iNNZzHAABIid/oIWj8/4XAD4QEovz/SI01lccAAEiJ3+gKaPz/hcAPhN2h/P9IjTWMxwAASInf6BMJ//+EwA+Ft6H8/0iNNXPHAABIid/o/Aj//4TAD4Uaofz/SI01bMcAAEiJ3+jlCP//hMAPheOg/P9IjTWpxwAASInf6K5n/P+FwA+EwKD8/0iNNZDHAABIid/ol2f8/4XAD4SdoPz/SI01iccAAEiJ3+iAZ/z/hcAPhHmg/P9IjTV5xwAASInf6Gln/P+FwA+EVaD8/0iNNWzHAABIid/oUmf8/4XAD4QuoPz/SI01X8cAAEiJ3+g7Z/z/hcAPhAqg/P9IjTVRxwAASInf6CRn/P+FwA+E45/8/0iNNUfHAABIid/oDWf8/4XAD4S/n/z/SI01OccAAEiJ3+j2Zvz/hcAPhJuf/P9IjTUrxwAASInf6N9m/P+FwA+EdJ/8/0iNNSTnAABIid/oyGb8/4XAD4RBn/z/SI01BMcAAEiJ3+ixZvz/hcAPhA6f/P9IjTXyxgAASInf6Jpm/P+FwA+E2578/0iNNeTGAABIid/og2b8/4XAD4S3nvz/SI01y8YAAEiJ3+hsZvz/hcAPhAie/P9IjTW/xgAASInf6FVm/P+FwA+E5Z38/0iNNabGAABIid/oPmb8/4XAD4Tnnfz/SI01m8YAAEiJ3+gnZvz/hcAPhHCd/P9IjTWSxgAASInf6BBm/P+FwA+ENJ38/0iNNXnGAABIid/o+WX8/4XAD4U4ofz/gCW9KBAAv7gBAAAA6X2j/P+B/y4BAAAPhcP8//+ADaIoEAAQ6+GB75EBAACD/wkPhxyd/P9IjRUBdQ4ASGMEukgB0D7/4EiLBRQNEABIizjovAgAAOuwgCVnKBAA+eunD7YFXigQAIPg+YPIAogFUigQAOuSD7cFRygQAEiDDQ0pEAAEZiU//GYNgAJmiQUwKBAA6W////+ADScoEAAI6WP///9IiwW2DBAASI09ByMQAEiLMOj3IwAA6Uj///9Iix2bDBAASIs76INn/P9IixuJBX4pEACD+BAPhSf////peJz8/0iLPe0iEADoIF38/0iLBWkMEABFMdJMiRXXIhAASIsYSIXbD4WgnPz/6QCd/P9IiwVHDBAAD7YdpCcQAEiNNbDDAABMiyCD45+IHZEnEABMiefotWT8/4XAdTyDyyCIHXwnEADpuf7//0iLPXwiEADot1z8/0iLBQAMEABFMclMiQ1mIhAASIs4SIX/D4VinPz/6Yv+//9IjTXKxgAATInn6GZk/P+FwA+EjJz8/0iNNUPDAABMiefoT2T8/4XAD4VJnPz/g8tgiB0SJxAA6U/+///pCaL8/w8fQADzDx76VUiJ5UFVQVRTSIPsGGRIiwQlKAAAAEiJRdgxwIP/enRZfkeB/5oBAAB/SIH/jwEAAA+PbQMAAIH/LgEAAA+EK6r8/38ugf+sAAAAD4RQqvz/gf8tAQAAD4Tmqfz/gf+bAAAAdQ7pEKr8/4P/UA+EkQQAADHA6dWp/P9MiyUbCxAASI01Kc0AAEmLHCRIid/omGP8/4XAD4R6p/z/SI01l8IAAEiJ3+iBY/z/hcAPhDKn/P9IjTWHwgAASInf6Gpj/P+FwA+ED6f8/0iNNXjCAABIid/ocwT//4TAD4WSpvz/SI01cMIAAEiJ3+hcBP//hMAPhUem/P9IjTVrwgAASInf6EUE//+EwA+F8qX8/0iNNS7UAABIid/oDmP8/4XAD4TDpfz/SI01ZsIAAEiJ3+j3Yvz/hcAPhJSl/P9IjTVdwgAASInf6OBi/P+FwA+EcaX8/0iNNUTCAABIid/oyWL8/4XAD4TRrPz/SI01PcIAAEiJ3+iyYvz/hcAPhKqs/P9IjTU0wgAASInf6LsD//+EwA+FhKz8/0iNNRvCAABIid/opAP//4TAD4VerPz/SI01FMIAAEiJ3+iNA///hMAPhSes/P9IjTVRwgAASInf6FZi/P+FwA+EBKz8/0iNNTjCAABIid/oP2L8/4XAD4Thq/z/SI01McIAAEiJ3+goYvz/hcAPhL2r/P9IjTUhwgAASInf6BFi/P+FwA+Eyaz8/0iNNRTCAABIid/o+mH8/4XAD4SirPz/SI01B8IAAEiJ3+jjYfz/hcAPhH6s/P9IjTX5wQAASInf6Mxh/P+FwA+EV6z8/0iNNe/BAABIid/otWH8/4XAD4SXrPz/SI014cEAAEiJ3+ieYfz/hcAPhGOs/P9IjTXTwQAASInf6Idh/P+FwA+EWaz8/0iNNczhAABIid/ocGH8/4XAD4Tlo/z/SI01rMEAAEiJ3+hZYfz/hcAPhNOi/P9IjTWawQAASInf6EJh/P+FwA+EoKL8/0iNNYzBAABIid/oK2H8/4XAD4R8ovz/SI01c8EAAEiJ3+gUYfz/hcAPhFii/P9IjTVnwQAASInf6P1g/P+FwA+ENaL8/0iNNU7BAABIid/o5mD8/4XAD4QSovz/SI01Q8EAAEiJ3+jPYPz/hcAPhGWi/P9IjTU6wQAASInf6Lhg/P+FwA+E2KH8/0iNNSHBAABIid/ooWD8/4XAD4WbpPz/gCVlIxAAv7gBAAAA6aum/P+B75EBAACD/wkPh9mi/P9IjRXmbw4ASGMEukgB0D7/4EiLPUEeEADofFj8/0iLBcUHEABFMclMiQ0rHhAASIs4SIX/D4Xsofz/66tIiz0eHhAA6FFY/P9IiwWaBxAARTHSTIkVCB4QAEiLGEiF2w+FPaL8/+ljovz/SIsFeAcQAA+2HdUiEABIjTXhvgAATIsgg+OfiB3CIhAATInn6OZf/P+FwA+FpaH8/4PLIIgdqSIQAOk+////SIsFOQcQAEiLOOjhAgAA6Sr///+AJYkiEAD56R7///8PtgV9IhAAg+D5g8gCiAVxIhAA6Qb///8PtwVjIhAASIMNKSMQAARmJT/8Zg2AAmaJBUwiEADp4/7//4ANQyIQAAjp1/7//0iLBdIGEABIjT0THRAASIsw6BMeAADpvP7//0iLHbcGEABIizvon2H8/0iLG4kFmiMQAIP4EA+Fm/7//+mUofz/6X2l/P8PHwDzDx76SIM9rBwQAAB0CUCE9g+Et7X8/0iJPZocEABAiDWDHBAAw2YuDx+EAAAAAABVugUAAABIjTXdwAAASInlQVRTifsx/+j0Wvz/SI0N/RwBAL4CAAAASInCSIsF9gUQAEiLODHA6FRl/P/2wwJ0SLoFAAAASI018xwBADH/6Lxa/P+/AgAAAEiJxjHA6C1i/P9IjTUOHQEAMf+6BQAAAOiaWvz/W78CAAAAQVxIicZdMcDpB2L8/4XbdFG6BQAAAEiNNVzAAAAx/+hwWvz/vwIAAABIjR0UDRAATI0lW8AAAEiJxjHA6NNh/P/rF0iLUGhMiea/AgAAADHASIPDCOi6Yfz/SIsDSIXAdeFbQVxdw2ZmLg8fhAAAAAAAZpBVRTHJSInlQVdBVkFVQVRTQVCLBWgbEABEiQ1lGxAAg/gJD4eYtPz/icFJif9IjT38GhAASIk0z4s92hoQAEiNNasaEACJPI5IizWZGhAASIX2D4WyAAAASI09MRoQAIPAAYkVsBoQAEiJNM9Mif+JBQsbEADo1ln8/79AAAAASYnF6LlV/P9NY+VIicMxwEmDxANEiWsYTInnSIkD6J5V/P9NheRMif5IjUgBSIlDCEmJxsYACrgBAAAASInPSQ9FxEiJwkiD6gHocmD8/2ZDx0QuAQAAMdJBg8UBRIlrHEiJ30iJQxBIx0MgAQAAAMdDKAEAAABIiVM0WVtBXEFdQV5BX13pdgQAAEiLPc8ZEABIizT+6T7///9mDx9EAABVSInlQVZBVUyNLRS/AABBVEmJ/FNBgDwkAHRYTInuTInn6Flf/P9IicNIhcB1DEyJ5+j5WPz/SY0cBL8QAAAA6LvT/v9Iid5MiedJicZIiwULGRAATCnmSI1WAUmJRgjom/z+/0mJBkyJNfEYEACAOwB1CVtBXEFdQV5dw0yNYwHrkmZmLg8fhAAAAAAAZpBVuAEAAABIieVBVEmJ/FNIjR0KCxAA6yaEwHUNTInmvyAAAADop1r8/0iLA0yJ5kiDwwhIi3ho6HRZ/P8xwEiDOwB11FtBXF3DDx+AAAAAAPMPHvox9umFAAAADx9EAADzDx76VUiJ5UFUSYn8vxAAAABT6PjS/v9MiedIicNIiwVbGRAASIkDSIkdURkQAOgcAAAASIM91B4QAABIiUMID4XRsvz/W0FcXcMPH0QAAPMPHvpVSInlU0iJ+1Do3lf8/1lIid9bSI1wAV1IifLpnPv+/2ZmLg8fhAAAAAAAkPMPHvpVSInlQVdBVkFVSYn9QVRBifRTSIPsGEiLHR4hEABkSIsEJSgAAABIiUXIMcBIhdt0G0WF5A+Fc7L8/4N7CAAPhWmy/P9IixtIhdt15UyJ7+hnV/z/SI14EEiJw+hLU/z/SI1LBEiNUwFMie5JicZIiwXGIBAARYlmCEmNfgxJiQboNlv8/0yJNa8gEABBg/wCD4Rosvz/SI11x0yJ7+jJFAAASInDSIXAD4TUAAAAiwU3GBAAD7ZVx4P4CQ+HILL8/4nGiz26FxAASI0NyxcQAEyJLPFIjQ2AFxAAiTyxD7YNVhkQAEiNPc8WEADA6QOD4QGJDLdIiw1XFxAASIXJdAtIiz1DFxAASIsM+YPAAYPiAUiNPeIWEADHBWAXEAABAAAAiQXCFxAAD7YFCxkQAMHiA0iJDPdIid+D4PdIiR1vFhAACdCIBe8YEADoyhkAAEiJx+iSAQAASIkdWxwQAEiLRchkSCsEJSgAAAAPhVABAABIg8QYW0FcQV1BXkFfXcNIiwWqHxAASIXAD4UsAQAASIs9Yh4QAEyNPRG8AABIjTUkvAAATIn66Mxd/P9IicNJicZIhcB0FEiJx+jZFwAAhMB1bkiJ3+i9Ufz/SIs9Jh4QAEyJ+kiNNfW7AADol138/0iJw0mJxkiFwHQUSInH6KQXAACEwHU5SInf6IhR/P9IjTVu1QAASIs96h0QAEiJ8uhiXfz/SInDSYnGSIXAdDlIicfobxcAAITAD4T4sPz/SIsdyAcQAEiNBfEeEAC+AQAAAEyJ90iJBbIHEADohfj+/0iJHaYHEABMiz3PHhAASIsFmAcQAEyJOEGD/AJ0B0yLPTAVEABMjTX3zwAATYX/dFJJi38IMclMiepMifYxwOhBVvz/SI11x0iJx0mJxOjCEgAATInnSInD6NdQ/P9Ihdt1D02LP+vE6Vqw/P/oA1X8/0iLBTQHEAAxyUiJCOnV/f//6Vuw/P9mZi4PH4QAAAAAAGaQ8w8e+lVIieVTSIn7Uei+BQAASIsFTxUQAEiFwA+EYrD8/0iLFTcVEABIjTTQSIsOSDnZD4RcsPz/SIXJdCdIiw1zFBAAD7YVZBQQAIgRSIsWSIlKEIsNURQQAIlKHEiLFfsUEABIiRzQWltd6X/6/v9mZi4PH4QAAAAAAA8fQABVuhAAAABIieVBVkFVQVRJifxTSInzSI110EiJ30iD7BBkSIsEJSgAAABIiUXYMcDo61D8/0mJxUiLRdCAOAAPhdSv/P9Iix3UExAATY10JAFIhdt1Zb8gAAAA6MDO/v9mSQ9uzvMPfgWzExAATIloEEiJw8ZAGABmD2zBSIkFnRMQAA8RAEyJ7+jS+P7/SInaTInnSInG6AQSAABIi0XYZEgrBCUoAAAAdQtYWltBXEFdQV5dw+ilU/z/SIt7CEyJ9ug5V/z/hcAPhWqv/P9MiWsQ67FmZi4PH4QAAAAAAPMPHvpIgz0sExAAAHQFgOEBdRqLBYsZEABIhfZ1GkiF0nULSIn+SIk1CxMQAMOD+AJ18Okpr/z/g/gBdeHr55DzDx76VUiJ5UFXQYnPQVZBVUmJ/b8YAAAAQVRJidRTSInzSIPsGIhNz+jSzf7/TIkoSYnGD7ZAEIPg+IPIAUGIRhBFhP91dkiJ3+jhUvz/SI14AejITvz/MdIx/0iJ2Um4AQAgAAAAAgBJicdIicbrL4TSD4XDrvz/jVDWgPoxdwpJD6PQD4KCAAAAPFyIBon6D5TASIPGAYnXSIPBAYnCD7YBhMB1ykmJ3UCE/w+F1q78/0yJ/+hFTvz/6wNJid1NiW4ITYXtdExNheR1UroBAAAAQQ+2RhDB4gOD4McJ0EGIRhBIiwUdFhAASIuA2AAAAEiFwA+FLq78/0iDxBhMifBbQVxBXUFeQV9dw0yJ/+jrTfz/QYBmEP5JiV4I66lIjTVS0gAATInn6AFP/P+FwHSbSI016rMAAEyJ5+juTvz/ugIAAACFwHSI6fit/P/zDx76VUiJ5UFUU0iJ+0iB7NAAAABIibVI////SImVUP///0iJjVj///9MiYVg////TImNaP///4TAdCMPKYVw////DylNgA8pVZAPKV2gDyllsA8pbcAPKXXQDyl94GRIiwQlKAAAAEiJhTj///9IiwVS/A8ASIs46OJW/P9MiyXT/A8ASI1FEEiJ3kiJhSj///+5AQAAAEiNhUD///9IjZUg////SYs8JEiJhTD////HhSD///8IAAAAx4Uk////MAAAAOjWAgAASYs8JOiNVvz/vwEAAADoc1n8/w8fAPMPHvoxwIkHD7YVcRcQAIPiA4D6Ag+EfAEAAIA9shgQAAAPhG6t/P+APZEYEAAASI0FSmMBAA+EzwAAAEyLDT0XEABIuQMAAAABAgAASLgBAAAAAQIAAEwhyUg5wQ+EGgEAAEi+AwAAQAACAABIuAEAAEAAAgAATCHOSDnGdHhIvwMAAAAAAgAASI0FcPoBAEm4AQAAAAACAABMIc9MOcd0aUm4AwAAAAEAAABIjQVNHwIASboBAAAAAQAAAE0hyE050HRGgPoBD4TQrPz/SLgDAAAAAQIAAEg5wXUv9gVkFxAACEiNFWW0AgBIjQWWbAIASA9EwsNIjQUSrwEA9gVDFxAACA+EdP///8NIuAMAAEAAAgAASDnGD4SSAAAASLkDAAAAAAIAAEiNBbjYAgBIOc901ki5AwAAAAEAAABIjQUi/AIASTnIdMCA+gMPhBis/P8PtwUpFhAA99BmqQECdWP2Bd4WEAAISI0VF5IDAEiNBYhGAwBID0TCw/YFxBYQAAhIjRVd0wEASI0FjogBAEgPRMLDgD0lFxAAAEiNFVMTAQBIjQWcJwEASA9FwsNIjQVAkAIA9gWJFhAACA+EWv///8O4AQgAAEn30UjB4B5JhcF0FUiNBSK4AwD2BaAVEAACD4SJq/z/w/YFVRYQAAh04umUq/z/Zg8fRAAA8w8e+lVIiz2MDxAASInlQVRTSIX/dBlIiwVSGBAASI1Q/0g5FWcPEABzOltBXF3DvgEAAAC/CAAAAOhBUvz/SIkFUg8QAEiFwA+EV6v8/0jHBRYYEAABAAAAMcBIiQUtDxAA68ZIjVgITI0k3QAAAABMieboZ1X8/0iJBRgPEABIhcAPhB2r/P9JjVQkwEyJ4Uk51EiNPBBID0LKMfZIKdG6QAAAAOg1WPz/SIkdvhcQAOl0////Zg8fhAAAAAAA8w8e+lVIidBIieVBV0mJ90FWSYn+QVVBic1BVFNIgex4AQAAZEiLFCUoAAAASIlVyDHShMkPhVoFAABFMckx9kSJjfD+//9EiY0I////RImNIP///0SJjTj///9EiY1Q////RImNaP///0SJTYBEiU2YRIlNsE2J+UyJyQ+2EYTSD4QhAQAASYnIgPolD4ShAAAAD7ZRAYD6JQ+EsgIAAITSD4SqAgAAD7ZRAoD6JQ+EmAQAAITSD4SQBAAAD7ZRA4D6JQ+EngQAAITSD4SWBAAAD7ZRBID6JQ+EkgQAAITSD4SKBAAAD7ZRBYD6JQ+EmAQAAITSD4SQBAAAD7ZRBoD6JQ+ELgMAAITSD4QmAwAAD7ZRB0yNQQeA+iV0FoTSD4QwAgAAQQ+2UAFJg8ABgPoldepBD7ZQAU2NSAGA+jAPhMer/P9Iiw0D+A8ARA++0g+20on39gRRBA+Fi6v8/0EPthFJjUkBhNIPhAn///8PiAb///+A+ngPj/3+//+A+kIPjvT+//+D6kOA+jUPh+j+//9MjQVlYQ4AD7bSSWMUkEwBwj7/4oX2D4W3AQAAQYA/AA+EAQIAAEUxyUSJrYz+//8x202J/UWJz0EPtkUAPCUPhMMAAACEwA+EuwAAAEEPtkUBhMAPhPkBAAA8JQ+E8QEAAEEPtkUCPCUPhFMDAACEwA+ESwMAAEEPtkUDPCUPhEcDAACEwA+EPwMAAEEPtkUEPCUPhE0DAACEwA+ERQMAAEEPtkUFPCUPhEEDAACEwA+EOQMAAEEPtkUGPCUPhNcBAACEwA+EzwEAAEEPtkUHTY1lBzwldBKEwHQOQQ+2RCQBSYPEATwlde5NOex0FkyJ4kyJ8b4BAAAATInvTCnq6OdV/P9NieVBgH0AJXVmQQ+2RQFNjV0BPDAPhLeq/P9IixWV9g8AD77ID7bAQYnc9gRCBA+Fhar8/0EPtgNNjWsBPHgPh1eq/P9IjQ3zYA4AD7bQSGMUkUgByj7/4k1r5BhMifaDwwFKi7wl8P7//+hHTPz/QYB9AAAPhbj+//9Ei62M/v//RYn5RYTtD4WgAAAARYTJD4XTqfz/SItFyGRIKwQlKAAAAA+FIAQAAEiNZdhbQVxBXUFeQV9dw0yNQQGA+iUPhNX9//9MicHpFf3//0iNjfD+//9FMcBMjQ1EYg4AixmNU/+D+gQPh5Kq/P9JYxSRTAHKPv/iixCD+i93QonXg8IISAN4EIkQSIsXSIkRQYPAAUiDwRhEOcYPhPf9///rvUWE7Q+EbP///0UxyYA9QBIQAAAPhFP////pmqn8/0iLeAhIjVcISIlQCOu7TY1lAemO/v//ixCD+i8PhuABAABIi3gISI1XCEiJUAiLF4kR65u6AQAAAIP/CA+H+aj8/0hr/xiDxgGJlD3w/v//6U78//9NjWUG6Uf+//9MjUEG6Rb///9BD7ZZAY1Tv4D6Ew+HmgEAAEG4AwEOAEkPo9APg4oBAABJjUkCugMAAADrpkEPtlMBg8MBjUK/PBQPhzIBAABIjQ1KYQ4AD7bASGMEgUgByD7/4ESJ4LogAAAAvgIAAACDwwFIa8AYTI2l0P7//0yJ50iNDdTVAABMi4QF8P7//zHA6JlV/P9MieG+AgAAAEyJ90iNFdq/AAAxwOiwU/z/6ST+//9EieBIjRVazQAATIn3g8MBSGvAGL4CAAAAi4wF8P7//zHA6IRT/P/p+P3//0SJ4E2NawJIa8AYSIuEBfD+//9IhcAPhOOm/P9Ii5DoAAAASIXSD4Wopvz/SIs4TIn26AhK/P/pvP3//0yNQQLpAP7//02NZQLpH/3//02NZQPpFv3//0yNQQPp5f3//0yNQQTp3P3//02NZQTp+/z//02NZQXp8vz//0yNQQXpwf3//4A9cxAQAAAPhJn6///pif3//7oEAAAA6WH+//9EieBIjRVsvwAAvgIAAABMifdIa8AYSIuMBfD+//8xwOi6Uvz/6S79//+J14PCCEgDeBCJEOkc/v//ugMAAADpHf7//0iLPYQQEABMifboTEn8/+kA/f//RIngSIs9/Q4QAEyNpdD+//+DwwFIa8AYTInmSIuUBfD+///o71D8/0yJ9kyJ5+gUSfz/6cj8//9EieBIjRVD1AAATIn3g8MBSGvAGL4CAAAASIuMBfD+//8xwOgnUvz/6Zv8///GBYwPEAAA6Y/8//9BvwEAAADphPz//02J60yJ9r8lAAAATImdgP7//+hkS/z/TIutgP7//+lh/P//RIngTY1rAkhrwBhMi6QF8P7//02F5A+E96T8/0GAPCQAD4TspPz/gD2CDRAAAHQgSIs9MQ4QALoDAAAATInm6CRP/P9IicdIhcAPhYGk/P9MifZMiefoTUj8/+kB/P//RIngTIn2TImdgP7//0hrwBhMi6QF8P7//0mLPCToJkj8/0mLvCTgAAAATIudgP7//0iF/3QcSItHCEyJ5v+QIAMAAEyLnYD+//9IhcBIicF1Dk2NawLppvv//+joRvz/SI0Vdr0AAL4CAAAATIn3McDoElH8/0yLnYD+///r04sQg/ovd0SJ14PCCEgDeBCJEEiLP0iJOYP6L3dKideDwghIA3gQiRBIiz9IiXkIg/ovdyWJ14PCCEgDeBCJEEiLF0iJURDp1vv//0iLeAhMjVcITIlQCOu5SIt4CEiNVwhIiVAI69hIi3gITI1XCEyJUAjrs4s4g/8vdxaJ+oPHCEgDUBCJOEiLEkiJEemP+///SItQCEiNeghIiXgI6+dBD7ZZAY1TnID6FA+HRPj//0G4AQASAEkPo9APgzT4//9JjUkCugIAAADpvPv//0yJnWj+//+DwwHoa0f8/4mFiP7//0SJ4EhrwBhIi7wF8P7//0iLtAX4/v//SIuEBQD///9Iib2A/v//SIm1eP7//0iJhXD+//9Ihf8PhLqm/P/oo0P8/4TAD4SJpvz/SIu9gP7//0iNlZT+//9MjYWg/v//SIuNcP7//0yNjZj+//9Ii0cISIu3wAAAAGoAUkiLlXj+////kEACAABfQVhBicSEwA+EYab8/0iDvZj+//8ATIudaP7//w+ECAIAAEEPtgM8Q3QIPEgPhfgBAABIiwUTEhAASIXAD4Twpfz/SIM9+hEQAAAPhNal/P9Ii72A/v//SDn4D4W6pfz/SIs91REQAEiLtaD+//9Ihf8PlMJIhfYPlMA4wg+FaqX8/0iF9nQbTImdaP7//+iJQ/z/TIudaP7//4XAD4Wcpfz/TIulmP7//0iLPZQREABMiZ1o/v//TInm6D1I/P9Mi51o/v//hcAPhKoAAAAx/7oFAAAASI016LoAAEyJnWj+///oNET8/0yJ4UyLpYD+//9MifdIicYxwEyJ4ui6HAAASIs9MxEQAEyJJTwREADoB0D8/0iLvaD+//8x9kyLnWj+//9IiTUQERAASIX/dBpMiZ2A/v//6P9F/P9Mi52A/v//SIkF8RAQAEiLPfIQEABMiZ2A/v//6L4//P9Ii72Y/v//6NJF/P9Mi52A/v//SIkFzBAQAEUx5EiLjaD+//9Ihcl0fkiNFY6iAAC+AgAAAEyJ9zHATImdgP7//+j4Tfz/TIudgP7//0iLlZj+//9BD7YDSIXSdAQ8R3RYSIO9oP7//wAPheuj/P9Ii41w/v//SIuVeP7//0yJ9zHASI01/7kAAOjQGwAAi72I/v//6AVF/P9FhOQPhBX4///pe6P8/0GAO0dIi5WY/v//dbtIhdJ0tkiNNcS5AABMifcxwOiUGwAA68JIi5WA/v//SI01pbkAAEyJ9zHATImdaP7//+hzGwAATIudaP7//+km////Dx+AAAAAAPMPHvpVSInlQVVJif2/GAAAAEFUSYn0U1Lowj78/0yJ70iJw+i3RPz/MclIjTW6uQAATInnSIkDSIlLEOhfRvz/hcB0OkiNNaq5AABMiefoTEb8/4XAdCdMiefogET8/0iJQwhIiwUtCBAASIXAdRNIiR0hCBAAWFtBXEFdXcMxwOvdSInCSItAEEiFwHX0SIlaEOviZmYuDx+EAAAAAADzDx76VUiJ5UFXQVZBVUmJ9UiNNXWtAABBVEmJ/FNR6HxK/P9IicNIhcB0NUUx9kiDPTkKEAAAD4Wfo/z/RYh1AEyJ5+h3AQAAgD34BxAAAHUdWkiJ2FtBXEFdQV5BX13DgD3gBxAAAHTo6Uij/P/pnqP8/2ZmLg8fhAAAAAAAkPMPHvqLBfYCEABIjRWfAhAAg/gBg9D/SIsEwsMPH0AA8w8e+lVIieVBVkyLNVf0DwBBVUmJ/b8oAAAAQVRJifRTSInT6Fe8/v8x0jHJiVAISIkISYtWCEiJAkmJRghMiWgQTIlgGEiJWCBbQVxBXUFeXcNmZi4PH4QAAAAAAGaQ8w8e+lW/IAAAAEiJ5VNQSIsd8vMPAOgFvP7/MdIxycdACAQAAABIjXgQSIkQSItTCEiJAkiJQwhIiUgQSIl4GF5bXel4AQAADx+EAAAAAADzDx76VUiJ5UFUSYn0U0iLB0iFwHU2SIn7vygAAADorbv+/7kIAAAASI1wCEiJwjHASIn386tIjQXDcv//TIkiSIlCIEiJE1tBXF3DSInySInRSIsSSIXSdfVIixBIiRFMiSDr4mZmLg8fhAAAAAAA8w8e+lVIieVBVEmJ/L8QAAAAU+hoPPz/TInnSInD6F1C/P9IiUMIMcBIgz1HBhAAAEiJA3QWSIsFiwsQAEiJGEiJHYELEABbQVxdw0iJHSUGEADr62ZmLg8fhAAAAAAA8w8e+lUxwEiJ5UFWTI01WrcAAEFVSYn9QVRMjSWP8g8AU+sySIO7wAAAAAB0JEiLS2hMifK+AgAAAEyJ7zHA6DxK/P9Mie//k8AAAAC4AQAAAEmDxAhJixwkSIXbdcWFwHQJW0FcQV1BXl3DugUAAABIjTUQNQQAMf/ogT/8/1tMie9BXEiJwkFdvgIAAABBXjHAXennSfz/Dx+AAAAAAPMPHvpIiwUF8w8ASI0VTgoQAEg50A+D1dn8/0iNUAhIiRXq8g8ASIsVG/IPAEiJEEiJPRHyDwDDDx+EAAAAAABIiwXR8g8ASI1QBEiJFcbyDwCLFUQLEADHBToLEAAHAAAAiRDDZmYuDx+EAAAAAADzDx76VUiJ5UFUU0iJ+0iB7NAAAABIibVI////SImVUP///0iJjVj///9MiYVg////TImNaP///4TAdCMPKYVw////DylNgA8pVZAPKV2gDyllsA8pbcAPKXXQDyl94GRIiwQlKAAAAEiJhTj///9IiwWS6Q8ASIs46CJE/P9MiyUT6g8ASI1FEEiJ3kiJhSj///+5AQAAAEiNhUD///9IjZUg////SYs8JEiJhTD////HhSD///8IAAAAx4Uk////MAAAAOgW8P//SYs8JOjNQ/z/SIuFOP///2RIKwQlKAAAAHUMSIHE0AAAAFtBXF3D6Do+/P9mLg8fhAAAAAAA8w8e+lUx0kiNNSi3AABIieVBVEUx5FNIgeygAAAAZEiLBCUoAAAASIlF6DHA6A4//P9IjbVQ////SInHSInD6BxC/P+FwHUXi4Vo////RTHkJQDwAAA9AEAAAEEPlMRIid/oiTn8/0SJ4IPgAUiLVehkSCsUJSgAAAB1DEiBxKAAAABbQVxdw+ijPfz/Dx8A8w8e+lVIieVBV0FWQVVBVEmJ9FNIiftIg+wYTIsvSIn3TYXtdRfoVT/8/0iJA0iNZdhbQVxBXUFeQV9dw+hOPfz/TYnvSYnGD74FHAUQAIhFy4lFzEyJ8kyJ/kyJ5+iNOvz/hcB0YYt1zEyJ/+iOPfz/SIXAdWhMie/oET38/02NdAYCTIn36PQ4/P9IjQ1KngAATInyvgIAAABJicVQMcBBVEQPvg3ABBAATInvTIsD6PpI/P9Iizvoojj8/0yJK1pZ6Wb///9DD7YEN4TAD4RZ////OkXLdY3pT////0yNeAHpbf///w8fhAAAAAAA8w8e+lVIieVBVEmJ/L9AAAAAU+j4Qfz/SIXAD4Q33Pz/x0AYAEAAAL8CQAAASInD6NtB/P9IiUMISIXAD4QW3Pz/x0MgAQAAAEyJ5kiJ3+gMAAAASInYW0FcXcMPH0AAVUiJ5UFWQVVBVEmJ9FNIifvoWjn8/0SLMEmJxUiF2w+E39v8/zHAMdKJQxxIi0MIxgAASItDCMZAAQBIi0MIx0MoAQAAAEiJQxBIiwWH/A8AiVM4SIXAdBlIixVw/A8ASDsc0HUM6PXh/v9IiwVm/A8ATIkjx0M0AQAAAEiFwHQ9SIsVSPwPAEg7HNB1ME2F5A+Eedv8/0yJ5+iRQPz/icfo6jn8/4XAD5/AD7bAiUMkRYl1AFtBXEFdQV5dw0jHQywBAAAA68YPH4QAAAAAAPMPHvpIiwXl7g8ASI0V3gUQAEg5wg+DLNv8/0iNUPhIi0D4SIkVxu4PAEiJBfftDwDDZmYuDx+EAAAAAAAPHwDzDx76McCJBw+2FaEBEACD4gOA+gIPhPXa/P+APeICEAAAD4Qh3Pz/gD3BAhAAAA+EDNz8/0yLDXQBEABIuQMAAAABAgAASLgBAAAAAQIAAEwhyUg5wQ+Estv8/0i+AwAAQAACAABIuAEAAEAAAgAATCHOSDnGD4SIAAAASL8DAAAAAAIAAEiNBUsiBQBJuAEAAAAAAgAATCHPTDnHdGRJuAMAAAABAAAASLgBAAAAAQAAAE0hyEk5wA+E79r8/4D6AQ+E3tr8/0i4AwAAAAECAABIOcEPhE/a/P9IuAMAAEAAAgAASDnGD4VW2vz/SI0F87oFAPYFfAEQAAgPhELa/P/Dw+kf2/z/Dx+AAAAAAPMPHvoxwIkHD7YVkQAQAIPiA4D6Ag+Eztv8/4A90gEQAAAPhDPb/P+APbEBEAAAD4Sk2/z/TIsNZAAQAEi5AwAAAAECAABIuAEAAAABAgAATCHJSDnBD4Tl2vz/SL4DAABAAAIAAEi4AQAAQAACAABMIc5IOcYPhIoAAABIvwMAAAAAAgAASI0F6zUIAEm4AQAAAAACAABMIc9MOcd0Zkm4AwAAAAEAAABIuAEAAAABAAAATSHISTnAD4Ss2vz/gPoBD4Sb2vz/SLgDAAAAAQIAAEg5wQ+EmNr8/0i4AwAAQAACAABIOcZ0Lki5AwAAAAACAABIjQWFCAkASDnPD4WJ2vz/w8P2BVsAEAAID4Rp////6cna/P/2BUkAEAAIdMnp3dr8/2YuDx+EAAAAAABVSInlQVdBVkFVQVRTQVFIixVq+Q8ASIsFa/kPAEhjNaj4DwBIix2t+A8ASIsNpgUQAEyNLNBJi0UASItQCEiNdDIBSDneD4Ik4Pz/SCnLg3g0AA+EYAEAAIPrATHAOcMPjyrg/P9Ni2UAQYN8JDgCD4QG4Pz/idj30EEDRCQYSYt8JAiFwA+OaeD8/7oAIAAAOdAPTtBIY8NIAcdIiwXl+A8AQYnVSIsV0/gPAEiLDNBIhcAPhCXg/P9IhckPhBzg/P9IgzkAD4QS4Pz/SIsNFPgPAEiFyQ+EAuD8/0lj1b4BAAAA6JY2/P9JicRBOcUPjsjf/P9Iiz3r9w8A6N41/P+FwA+Fl9/8/0iLFW/4DwBIiwVw+A8ARIklrfcPAEiLDNBEiWEcRYXkdGBFMfZMjSzQiw2T9w8ATYtlAAHLSYt8JAhBO1wkGA+P/d/8/0mLRCQIiR1y9w8ASGPbxgQYAEmLRQBIi0AIxkQYAQBJi0UASItACEiJBVsEEABaRInwW0FcQV1BXkFfXcOF2w+FuN78/0iLPU33DwBBvgEAAADoSgYAAEiLFdP3DwBIiwXU9w8A6Xb///9FMfZIg+sBQQ+VxkGDxgHrs2YPH0QAAPMPHvpIiwWl+g8ASIXAD4TF3/z/SIl4KDHAww8fRAAAiwUGAxAASIsV2wMQAEiLDdT2DwBIOcpyAcMPtjJAhPYPhIbn/P9IjT0zow4AD7Y8N0xjwEiNNWWZDgBmQoM8RgB0DYkFVwIQAEiJFUgCEABMjR0phQ4ATI0VonMOAEMPvzRDAf5IY/ZFD78MckE5wXURSI0FB2IOAEiDwgEPvwRw65FIjQU2jw4AQg+/BEA90wQAAA+OHOf8/0hj/0iNNbyODgBMY8APtjw+67EPHwDzDx76SIsF1fkPAEiFwA+EQOf8/0iJeDgxwMMPH0QAAPMPHvpIiwW1+Q8ASIXAD4Q15/z/SIl4QDHAww8fRAAA8w8e+lVIieVBVUmJ/b8wAAAAQVRBidRTSInzUOi/sP7/SItTCMcAPQAAAEiJUAiLUwTHQBAEAAAAiVAESIlYIEyJaBhEiGAoWltBXEFdXcNIiwVB6Q8ASI1QBEiJFTbpDwCLFbQBEADHBaoBEAAPAAAAiRDDZmYuDx+EAAAAAADDZmYuDx+EAAAAAAAPH0AAVUiJ5VNIifu/GAAAAFDoPbD+/2ZID27L8w9+BVD7DwDGQBAAZg9swUiJBUH7DwAPEQCADcf7DwCAWltdww8fAEmJ+UiDx0iF0nUrTI0FJlwOAA+2BoTAD4TC7/z/jUjfgPlXD4eM7/z/D7bJSWMMiEwBwT7/4UmNeUzrz4sHg8gQiQdIg8YB68mLB4PIIOvxiweDyAjr6osHg8gB6+NmkEiJ8kUxyUiJ/kUxwDHJSI09ywAQAOtJZg8fhAAAAAAAVTH2SInlU0iJ+1Ho0AAAAIA92fgPAAB0HkiLBbj4DwAx0scDAgEAAEiJUyBIiUMYx0MQBwAAAFhbXcMPH0QAAPMPHvpVSInlQVdJiddBVkmJzkFVTYnFQVRJifxTSInzSIPsGEyJTchJixQkSIXSdUO/OAAAAOg1MPz/MdIxyUmJBCRIiVgISItdyEyJeBhIiRBJiwQkiUgwTIlwEEyJaCBIiVgoSIPEGFtBXEFdQV5BX13DSItyCEiJ30iJVcDorDf8/0iLVcCFwHQFSYnU65dIiwJJiQQk645mDx9EAADzDx76McDGBdj3DwAASIkFBPgPAEiJBQX4DwBIiwX23g8ASIk1B/gPAEgFMAIAAEiJBfL3DwDppQj//w8fRAAA8w8e+lVIieVBVEmJ/L9wAAAAU0iJ8+hVrv7/uRwAAABIicIxwEiJ1/OrSI0Fb2X//0yJYhhIiUJoSInQSIlaOMdCYP////9bQVxdww8fQADzDx76VUiJ5UFXQVZBVUmJ1UFUU0iJ80iD7BhMizW++g8ASIX/dHpJifxNhfYPhZ0AAABIjXsY6FQBAABIjXs46EsBAABMi3sYTYX/D4VN8vz/TItzOE2F9nVkTIlrWEyJYwhBgDwkAHRRiwVw/g8Ag8ABiQVn/g8AiUMQSIsFXfoPAEiNFVb6DwBIhcB1JEiJGkiDxBhbQVxBXUFeQV9dw02F9g+FyvH8/0yNJWy/AADrgEiJwkiLAOvPMcDrukyLBRr6DwBNhcB1KU2LNuuGgD8AD4Sb8fz/SYtGCIA4AA+EjvH8/02F9g+F5vH8/+k/////QQ+2RhBJi3ggg+ABSIX/D4SV8vz/hMAPhTfy/P9Ni3goTYX/dQVNiwDrp+nr8fz/ZmYuDx+EAAAAAACQVTHSSInl6AX8//9dSInH6TwA//9mZi4PH4QAAAAAAJBIiwXh/g8ASGMVwv0PAA+2DcvxDwCIDBBIiQXJ8Q8AD7YQiBW48Q8AxgAAMcCJBZ39DwDDZmYuDx+EAAAAAACQ8w8e+lVIieVBV0FWQVVBVFNIiftIg+woSIsPMf9IicpIhdJ1GEiF/3UySIlLEEiDxChbQVxBXUFeQV9dww+2QhBIixKJxoPmAUCA/gFIg9//wOgDg+AHCUMY68RIAf8xyUiNFXgl//9Jid9IjTUOI///TI1zEOhFO/z/TIsrSIlDCE2J7E2F7Q+Fw/L8/zHASYkGSItDEEmJB+uSDx9AAPMPHvpIidBIhf8PhTrz/P/DZmYuDx+EAAAAAAAPH0AAVUiJ/kiJ5VNIg+wYSIs9hfEPAEiF/w+EVvP8/0iLBW3xDwBIgzzHAA+ERPP8/0iLPMfoifT//0iDxBhbXene1v7/ZmYuDx+EAAAAAAAPHwBVSInlQVVJifVBVFNIifu/EAAAAFHoZqv+/0iJGEiLHRz4DwBJicRIhdt0IEiLewhMie7oKDT8/4XAdTJJiVwkCEyJ4FpbQVxBXV3DMf+6BQAAAEiNNT43DQDoITD8/0yJ7kiJxzHA6CTx///rzkiLG+u0ZmYuDx+EAAAAAABmkPMPHvpVSInlQVVBVEmJ9FOJ+0iB7NgAAABIiZVA////SImNSP///0yJhVD///9MiY1Y////hMB0Jg8phWD///8PKY1w////DylVgA8pXZAPKWWgDyltsA8pdcAPKX3QZEiLBCUoAAAASImFKP///zHASI1FEMeFEP///xAAAABIiYUY////SI2FMP///8eFFP///zAAAABIiYUg////hdt1TkiLHW/aDwBMieZIjZUQ////MclIizvoM+H//0iLM78KAAAA6CYz/P9Ii4Uo////ZEgrBCUoAAAAD4WOAAAASIHE2AAAADHAW0FcQV1dw4P7AXR+Mf+6BQAAAEiNNfmoAADo+C78/zHJTInmSI0V6LsAAEiJxzHA6DIw/P9JicRIiwXw2Q8ASIs46IA0/P9Miy1x2g8AuQEAAABMieZIjZUQ////SYt9AOih4P//SYt9AOhYNPz/TInn6KAq/P+D+wMPhLfx/P/pXP///+jNLvz/Mf+6BQAAAEiNNW2oAADoei78/zHJTInmSI0VarsAAEiJxzHA6LQv/P9IjZUQ////uQEAAABIicNIicZIiwVj2Q8ASIs46DPg//9Iid/oOyr8/+kA////Zg8fRAAAVYA9uPgPAABIieVBVFNIift0KOh47P//SI01WTUNADH/ugUAAABJicToAi78/0yJ5kiJxzHA6AXv//+LBf/6DwCD6AGD+BJ2E0iJ2jH2SI0996cAADHA6CTc//9ImEiNFTv6DwBIjTXOpwAAMf9MiyTCugUAAADotC38/0iJ2jH2SInHTInhMcDo8tv//2aQSDk98fEPAHUwSIsF+NgPAEgFMAIAAEg5BfvxDwB1EYA9gvUPAAB1CEiJBcnxDwDDMcBIiQW/8Q8Aw2YPH0QAAPMPHvpVSInlQVVBVEmJ9FOJ+784AAAAUEyLLSngDwDoPKj+/zHSx0AIAgAAAEiJEEmLVQhIiQJJiUUITIlgGIlYEFlbQVxBXV3DZg8fRAAAVUiJ5UFUSYn0U0iJ+78oAAAA6Pmn/v9Ii1MIxwAhAAAASIlQCItTBMdAEAgAAACJUARIiVgYTIlgIFtBXF3DkPMPHvpVSInlQVRMiyWn3w8AU4n7vxAAAADosqf+/zHSiVgISIkQSYtUJAhIiQJJiUQkCFtBXF3DDx+EAAAAAADzDx76D7YFNfMPAFWJwonBg+IDg+ECSInlQVSA6gFTdGqEyXUJ9gUc8w8ABHVuqAF0UIA9CvMPAAAPiKbw/P/obAAAAEiLHeXzDwBMiyXW8w8ASTncD4Jv8Pz/SIM97e0PAAB1GEiNPZGmAADojyj8/0mJxEiFwA+FCvD8/1tBXF3DgCW68g8Af+unSIENevMPAAAAAAiEyXSL65bpE/D8/2ZmLg8fhAAAAAAADx9AAPMPHvpVSInlSIPsEEiLPUXtDwBkSIsEJSgAAABIiUX4McBIhf90GQ+2BRrtDwD2BVvyDwACdVSEwHVU6JDT//9Igz0w8w8AAHUTSIs9z/EPAOg6Kvz/SIkFG/MPAEiDPRvzDwAAdRNIiz2y8Q8A6A0o/P9IiQUG8w8ASItF+GRIKwQlKAAAAHUgycOEwHSxMdJIjXXw6EYo/P9Ii0XwgDgAD4Xv7/z/65fociv8/2aQ8w8e+kiLBR3rDwBIhcB0AcNIiwV4+g8ASDkFUfEPAHUhVUiJ5VNRSIsdUvAPAEiF2w+FoQX9/0iLBTLxDwBaW13DSIXAdNrDDx+EAAAAAADzDx76VUiJ5egzAAAASIsFzPEPAEiLUAiDeggFdRlIi4AQAQAASI0NZPEPAEiLgKgNAABIiUhYXcMPH4AAAAAA8w8e+kiLPZXxDwBIixWu7A8AizWw7A8ASItHCEiLgKACAAD/4GZmLg8fhAAAAAAA8w8e+lVIieVBVEyLJUfdDwBTSIn7vxgAAADoUaX+/zHSx0AIDQAAAEiJEEmLVCQISIkCSYlEJAhIiVgQW0FcXcNmZi4PH4QAAAAAAA8fQADzDx76SI01pewPAEiNPb7wDwDpiSn8/2YPH4QAAAAAAPMPHvpVSIn+SIs9yfAPADHJQbgBAAAAugEAAABIieXo/Cz8/0iFwA+EBAX9/4B4GABIicYPhRQF/f8xwEiLPZXwDwBIiUYoD7dGGGYlAP5mDQEBZolGGF3psyz8/w8fAPMPHvpVSInlQVVBVEmJ/L8gAAAAU4nzUEyLLWncDwDofKT+/zHSSIkQx0AICAAAAEmLVQhIiQJJiUUIiFgYTIlgEIBgGAFIiwVT6w8ASIkFfO8PAFlbQVxBXV3DDx9AAFVIieVBVUFUQYn8U1JIix3M7g8ASIXbdBhIi3sYSIX/dRdIi3swSIX/dWBIi1sQ6+NYW0FcQV1dwzH26FD1//9FhOR03YA9VO0PAAAPhGYE/f9IiwUv7Q8ASIlDIEiJQzhIi3swSIX/dMEx9ugf9f//gD0o7Q8AAA+EEgT9/0iLBQPtDwBIiUMo66Ax9uj+9P//RYTkdJTr2A8fgAAAAADzDx76SI01BesPAEiNPT7vDwDpCSj8/2YPH4QAAAAAAPMPHvpIjTXF6g8ASI09Hu8PAOnpJ/z/Zg8fhAAAAAAAD741FO8PAECE9g+EQw39/+nrKPz/ZmYuDx+EAAAAAADzDx76gD0z8A8AAA+FfA/9//8lifAPAGYPH4QAAAAAAPMPHvq/QAAAAOsFDx9EAAD2BbruDwABdQHDVUiJ5VNSSIsd0e4PAIN7QAF1EsZDUgGJ/kiJ3+jVAQAAxkNSAFhbXcNmZi4PH4QAAAAAAGaQ8w8e+kiF/3QyVUiJ5VNIifu/EAAAAFDotKL+/2ZID27L8w9+Bc/uDwBmD2zBDxEASIkFwe4PAFpbXcPDDx9AAPMPHvq/IAAAAOly////ZpDzDx766+pmLg8fhAAAAAAA8w8e+r9AAAAA6eJA//9mkPMPHvpVSInlSIHs0AAAAEiJlWD///9IiY1o////TImFcP///0yJjXj///+EwHQgDylFgA8pTZAPKVWgDyldsA8pZcAPKW3QDyl14A8pffBkSIsEJSgAAABIiYVI////McBIjUUQMclIjZUw////SImFOP///0iNhVD///9IiYVA////x4Uw////EAAAAMeFNP///zAAAADotNj//0iLhUj///9kSCsEJSgAAAB1AsnD6Osm/P9mZi4PH4QAAAAAAPMPHvpIixWV7Q8AD7YFP+0PAEiLUgiDyCCIBTLtDwCLUgyF0nQPg+oBdQuD4N+IBR3tDwDDw4sVyOwPAIP6AXT0g/oCdOWF0nXrSIsVn+sPAEiF0nTfSItKMEiFyQ+E6Rf9/0iLUQiDegwBdL7DZpDzDx76vyAAAADpoj///2aQ8w8e+uvqZi4PH4QAAAAAAFVIieVBV0FWTI01sewPAEFVQVRTSIn7SIHsiAAAAIl1hEiLPejsDwBMifZMiy327A8AZEiLBCUoAAAASIlFyDHA6Goo/P9IiUWISYnETYXkdCFJi3wkCEiF/w+E2wAAAOiLJvz/qAEPhLAAAABNiyQk69qAe1IAdXJIix2g7A8ASIXbdRfrZGYPH4QAAAAAAEiLmwgBAABIhdt0Tw+2Q0iD4Ac8AXXp9kNEQHTjSItDCIN4CAV12UiLkxABAAAPt4KcDQAAZsHoBqgJdcNIg7pgAwAAAHS5TIn2SInf6B4m/P+FwHmq6UcZ/f8x0kyJLTTsDwBJiVUASItFyGRIKwQlKAAAAA+FWQEAAEiBxIgAAABbQVxBXUFeQV9dw0mLfCQISIX/dBSAe1IAdTYPtgWP6w8Ag+ADLAF0KEyLfYhNOfx0LkmLfwhIhf8PhPgAAADomiX8/6gBD4TrAAAATYs/69zoiCX8/6gED4X9/v//68kxwEiNPZVb//9MiSWG8w8ASIkFd/MPAOgyW///SIsFa/MPAEiFwHQRSIt4MOhNJfz/qAEPhML+///zQQ9vRCQIgD1/6g8AAA8pRZBmD9ZFoA+FoQAAAEiLBTHzDwBIhcB0I0iLQBBIjX2gugEAAAC+AQAAAEiJRajoMQ4AAITAD4V2/v//SI1FkEyJrXj///8xyUiJhXD///9IiZ1g////ictEi0WESIu1cP///7kBAAAAidpIiz1j6g8A6B4LAACEwHQ4TIuteP///0iLnWD////pJP7//0mLdCQQSYt/EOiZJ/z/hcAPhf/+///pCf7//+jnI/z/6fsY/f9Iiz0T6g8ASIX/D4VhGP3/SIM9CuoPAAAPhFACAABIjT2IoAAA6Ogf/P9IicdIhcB0H0SLRYRIi7Vw////uQEAAACJ2uiZCgAAhMAPhSICAABIiz1K6g8ATIn2RTH/6J8h/P9JicVB9scBdQlNhe0PhWwX/f9Fhf8Phd0BAACAPQXyDwAAD4WmAAAAMclIiz1m6w8AZg/vwDHATI09KKAAAEiJTbBIjTUtoAAAMclMifoPEUW46Dgk/P9JicVIjUWwTInuSInHSImFWP///+ifIQAAhMB1LUyJ7+jDHvz/SIs9FOsPADHSMcBMif7oACT8/0iLvVj///9IicZJicXobiEAAEyJ7+iWHvz/SIt9sEiF/3QV6OgmAABIi32wSIkFXfEPAOh4Hvz/xgVZ8Q8AAUiLBUrxDwBJi3wkEEiFwHQ4ZkgPbtdEi0WESI11sIna80EPfkQkCLkBAAAASInHZg9swg8pRbDodQkAAITAD4WfAAAASYt8JBDoUyL8/0yLPTziDwBIiYVY////6wNNiz9Nhf8PhIwAAABBgH8QAHXtSYt/COgnIvz/SIuNWP///0iNVAECSInXSImVUP///+j8Hfz/SIuVUP///02LTCQQvgIAAABNi0cISInHSYnFMcBIjQ3FoAAA6AMu/P9IjX2gugEAAACJ3kyJbajorwsAAITAdS5Mie/okx38/+l7////TIuteP///0iLnWD////p2Pv//4XbdR27AQAAAOlx/f//TIuteP///0iLnWD////pt/v//0yLrXj///9Ii51g////6a4V/f9Mi614////SIudYP///+mR+///6VAW/f9Mi614////SIudYP///+l5+///ZmYuDx+EAAAAAACQ8w8e+lVIieVBV0FWQVVBVFNIg+woSIM9s+QPAABMiz8PhK4X/f9IY/6J80mJ1UUx5EjB5wPo9hz8/0iJRchEOeN+V0mLRwhMif//kAgCAABJi1UISYnGSItFyE6JNOBNiT5IhdIPhVAX/f9Ji0UASYlGCDHASYlGEEGAfRAED4fkFv3/QQ+2RRBIjTVUyg4ASGMEhkgB8D7/4EiLdciJ2kyJ/+g4JPz/McBIg8QoW0FcQV1BXkFfXcNIiwW4yw8AuYAAAABIBRgBAABJiUYgSYtHCEGJThiDeAgFdUtJiwZIhcAPhO4V/f9Ii1AIg3oIBQ+F4BX9/0iDuBABAAAAD4TSFf3/QYB9EAR0bUGLTRSD+QMPh+IV/f9IjQW0yw4AD7YECEEIRklJg8QBSYPFMOkJ////SIsFPMsPADHJSAUYAQAA64W5gAAAAEmLdSCDyQJIhfYPhcMV/f9IjTWEnwAATIn/iU3A6DMi/P+LTcDpVv///zHJ69Lp9BX9/2aQ8w8e+lUx0kiJ5UiD7BBIizV74w8AZEiLBCUoAAAASIlF+DHAiT2W4w8ASIs9T+MPAEiNTfdIiRVc6g8AMdKDBVvjDwABxkX3AMYF4OkPAADoC0T//0iLRfhkSCsEJSgAAAB1AsnD6GUf/P8PH0QAAPMPHvpVSI01gJwAAEiJ5VNIiftR6Oci/P+FwA+EaRb9/0iNNWicAABIid/o0CL8/4XAD4SsFv3/SI01o4EAAEiJ3+i5Ivz/icK4FAAAAIXSD4U+Fv3/Wltdw2YPH0QAAPMPHvpIiwUN4w8ASIXAdAtIi0AwSAEF7eIPAEiLBQbKDwDGBcziDwAASAUwAgAASIkF4uIPAMNmDx+EAAAAAADzDx76SIsBxgWn4g8AAEiJDdviDwBIiQXM4g8ASIkV1eIPAEiJNdbiDwDpgfP+/5BIiwdIOQYPhSof/f9Ii0YIMdLzD34ADxZHCA8RBkiJRwhIiRDDZmYuDx+EAAAAAADzDx76VUiJ5UFWQVVBVFNIi18gSIXbdQlbQVxBXUFeXcNJifxJifZJidVIi0sgSItTEE2J6EyJ50iLcxhB/9ZIixtIhdt00evhDx+AAAAAAPMPHvq5CQAAAOsVDx9EAADzDx766Sf2//8PH4AAAAAA8w8e+lVJidJIjRXMmwAAZkgPbsJIjRXImwAAZkgPbspIjRXCmwAASInlQVdmSA9u0kiNFcObAABBVmZID27aQVVBVFNIgeyYAAAAiU2cTIsvZEiLBCUoAAAASIlFyEiNBXKbAABIgz0D4Q8AAGZID27gSI0FZpsAAGZID27oSI0FbJsAAGYPbMRmSA9u8EiNBS60AABmD2zNDymFUP///2ZID274Zg9s1g8pjWD///9mD2zfDymVcP///w8pXYAPhAUf/f+J802J1kUx5EE53A+N/wAAAEmLNkiLPajjDwAx0jHJQbgBAAAA6OEf/P9JicJBD7ZGEI1Q/oD6AQ+GIAEAAE2F0g+ESQEAADHJSIM9iuMPAABNidcPhRch/f9BD7ZHGI1Q/4D6AQ+G/CD9/41Q/YD6Ag+H6R79/0mLVyg8BQ+E1B79/0EPtkYQSIuS4AAAAEiLNVXjDwCD6AI8Ag+Gfx79/0g51g+EbB79/0k51Q+F/R79/0EPtkcZqAV1d4P5AXRyg/kCD4TcHv3/SI09yuIPAA+2F4nRg+EDgPkCdFyD4AKD4ggI0HVcgPkDdFe4AwAAAIA96t0PAABBiUYoD4XLHv3/QYPEAUmDxjDp+P7//0iLRchkSCsEJSgAAAB1IEiBxJgAAAAxwFtBXEFdQV5BX13DuAIAAADruItFnOuz6Ocb/P9Ji3cISIs9XOMPAOjXIPz/hMAPhDUf/f/rj0mLFkiLPYPiDwBFMcAxyUG5AQAAAEiNNSHiDwBMiVWQ6JgZ/P9JicdIhcB1KUEPtkYQPAN/EzwBD4/LH/3/D4ZL////6fsf/f88BA+EPv///+nuH/3/TItVkEk5wg+F1x/9/zHJSIXAD4WO/v//671mZi4PH4QAAAAAAGaQ8w8e+lVIgz3D3g8AAEiJ5Q+E6SL9/+gVHfz/vgUAAABIicfoaJP+/0iFwA+E3yL9/4BIYYAxwF3DDx+AAAAAAPMPHvrpl/T//w8fgAAAAADzDx76VUiJ5UFXQVZMjXW4QVVMjW28QVRMjWXAU0iJ+0iD7DhkSIsEJSgAAABIiUXIMcAxwEiJRcBMifFMiepMieZIid/oZh38/0mJx0iFwA+FoSL9/4t9uIH/HAQAAA+FZSL9/0iF23QTSInf6B4Z/P89GgQAAA+EyCL9/0iLRchkSCsEJSgAAAB1D0iDxDhbQVxBXUFeQV9dw+hgGvz/8w8e+sNmZi4PH4QAAAAAAIsFFtwPAIXAdQHDVYPoAUiJ5UFXQVZBVUFUU1KD+AEPh6Mi/f9IiftIhdt0JotDCIP4DnQqd36D+AQPhHoi/f+D+Al1CUiLexDosv///0iLG+vVWFtBXEFdQV5BX13DTItjQESLPbLbDwBMjTUrmAAATYXkdNhNi2wkCEyJ9kyJ7+hqHfz/hcB0JUiNNRGYAABMie/oVx38/4XAdBJBi0QkOIXAdSJFiXwkOMZDYgFNiyQk67yD+A91lEiLPc/mDwDoOv///+uGg/gBdBaD+AJ12UGD/wF100HHRCQ4BAAAAOvIQYP/AnXCQcdEJDgDAAAA67dmZi4PH4QAAAAAAJDzDx76VUiJ5UFUSYn0SI018JcAAFNIifvocxv8/0iD+AMPh7oj/f9IjTVBeAAASInf6Fof/P9IhcAPhM0j/f9MieZIid8x0ltBXF3pQBr8/1VIieVBV0FWQVVBVFNIiftIifdIgeyIAAAAiVWkiU2gRIlFjGRIiwQlKAAAAEiJRchIi0YIgDgvSIlFqA+ECSX9/0iF2w+EHgEAAIA7AA+EFQEAAEiLBkiLfahmSA9uwGZID27PSIlFkGYPbMEPKUWw6HoY/P9Ig8ACSIlFmA++NUbgDwBIid/o0xj8/0mJxEiFwHUMSInf6FMY/P9MjSQDSItFmE2J50kp306NNDhMiffoKRT8/0mJxUw54w+EtCT9/0yJ8UyJ+kiJx0iJ3ugcHPz/Q8ZEPQAvSYPHAUyJ8U05/kuNfD0ASQ9Cz0wp+UmJzkiLdahMifIx2+jfHvz/id++JAAAAEwB7+hQGPz/SYnGSIXAD4W1I/3/i1Wgi3WkSI19sEyJbbjooQEAAITAdCNIi1XIZEgrFCUoAAAAdQ9IjWXYW0FcQV1BXkFfXcPoqhf8/0yJ7+hiE/z/QYA8JAAPhRYk/f8xwOvGDx8AVUiJ+UiJ5UFXQVZBVUFUU0iD7ChIixlIhdsPhJ4AAABJic0x0kUx5EG//v///2aQi0MIg/gJdVhJid5IhdIPhM8AAABIOVogD4XfKf3/RIn4K4OUAAAAiYOUAAAATYXkD4TMAAAATYttAEmLXQBIhdt0WotDCIP4CXUYTInySYneSDlaIHTH6aEp/f8PH0AASYnWg/gED4ShAAAAg/gID4RxJ/3/TInyTYttAEmLXQBIhdsPhXf///9NheR1EkiDxChbQVxBXUFeQV9dw0yJ8rj+////QSuEJJQAAABBiYQklAAAAEw54nTUuf7///+QTYtkJCBNheR0xInIQSuEJJQAAABBiYQklAAAAEw54nXf66u4/v///yuDlAAAAImDlAAAAE2F5A+FOf///+mgKf3/SInaSYnc6Wv///9IjXsQSIlNyOi2/v//SItNyOlS////ZmYuDx+EAAAAAABmkFVIieVBV0FWQYn2QVVBVEmJ/FNIg+woiVW8TIt/CEyJ/2RIiwQlKAAAAEiJRcgxwEiLBbncDwBIi0AISIsw6D0V/P9IhcAPhGAq/f9IicNMif/oOdX//4FLRACAAAC+AQAAAEiJ3+gVIPz/QYnFhMAPhCYq/f/2Q0RAD4QcKv3/SIsFadwPAEiLQAhIOUMID4UHKv3/RYX2D4SKKf3/SI01++IPAEiJ3+hTFPz/hcAPhVMp/f9Iizvogxj8/4A9VNsPAABJicYPhRMp/f8xwEiNPbpT//9IiQUD5A8A6L5L//9Igz324w8AAHVmSInfTIn26Jke/P9JizwkSIX/D4TSKP3/6McV/P+oBA+ExSj9/74OAAAASInf6NIZ/P9IiwXj2w8ASI01dNsPAEiJ30iJGEiNgwgBAABIiQXI2w8ASItDCP+Q0AIAAITAD4RkKP3/SItFyGRIKwQlKAAAAHUSSIPEKESJ6FtBXEFdQV5BX13D6LgU/P8PH4QAAAAAAEiLBUHWDwBIhcB0AcO6BQAAAEiNNYF1AAAx/+lQFPz/8w8e+lVIieVBV0GJ90FWQVVJif1BVEmJzFNIg+woSIlVuEiNBffXDwBIiwBMi3AgTYX2D4TMMP3/TYXkD4RwAgAAMcBMifNIiUXA6xgPHwBFMftBgeMbBUAAdD9Ii1sgSIXbdExIi3M4RIubmAAAAEiF9nTbRIteJEmLleAAAABMielIiz3G2g8ARIldzEH/1ESLXcyEwHTD67VIi0MgSIldwEiFwA+ELgEAAEiJw+u0SIN9wAAPhR4BAABEifj30KgRD4SlAAAARIn499CoCQ+FXQEAAE2F9g+EwwAAADHbSIldwE2F5HU76TYBAACJ2EQx+KkLAUAAD4QHL/3/JQsBAACB4wAAQAAJ2EiLRcBJD0TGSIlFwE2LdiBNhfYPhIMAAABJi3Y4QYuemAAAAEiF9nS6i14kSYuV4AAAAEyJ6UiLPQfaDwBB/9SEwHTI651Ji5XgAAAASIs98NkPAEyJ6UH/1ITAdSFNi3YgTYX2dDVJi3Y4QYuemAAAAEiF9nQIi14kTYXkdcdIi0XARDH7geMTBUAASQ9ExkiJRcDryDH2SIl1wEiDfcAAD5XATYXkD5TCMclFMeQI0EiJTbgPhFv+//9Ii0XASIPEKFtBXEFdQV5BX13DSItFuEiFwHTkSIt9wEiJOOvbQYuWmAAAAInQRDH4qQsBQAAPhAwu/f8lCwEAAIHiAABAAAnQSItFwEkPRMZIiUXATYt2IE2F9nSiSYtGOEiFwHS+i1Ak68BEifj30KkBBAAAD4TOAAAARIn499CpAQBAAA+ExS39/0SJ+PfQqQEBAAAPhLMAAABB9scBD4QQLv3/Mf9IiX3ATYX2D4Qs////SYt2OEGLnpgAAABIhfZ0cYteJE2F5HRpSYuV4AAAAEiLPa7YDwBMielB/9SEwHVRTYt2IOvBMdJMifBIiVXA6w1Ii0AgSIXAD4Tn/f//SItIOIuQmAAAAEiFyXQDi1EkRDH6geIbBUAAddZIi1AgSIlFwEiF0g+E4v7//0iJ0OvNSItFwEQx+4DjAUkPRMZIiUXA65vpoC39/0UxyUyJTcBNhfYPhIL+//9Ji3Y4QYuemAAAAEiF9nQgi14kTYXkdBhJi5XgAAAASIs9BNgPAEyJ6UH/1ITAdBVIi0XARDH7geMDBUAASQ9ExkiJRcBNi3Yg66xmZi4PH4QAAAAAAA8fQADzDx76VUiJ5UFXSYnPQVZNicZBVUmJ/UiJ10FUSYn0TInGU0iJ00iD7DjoUUj//4TAD4XFAAAATIn2SInf6O5N//+EwA+FsgAAAL8gAAAA6HyL/v9mD+/ADxFAEGZID27DSYnGQQ8WRUAPEQBBgH1gAHUTTYXkdGpBi0QkOIXAdGGD+AV0XEmNVTBIjQ13uw4ATIsCTYXAdFJBgH1gAA+FZQEAAE2F5A+EowAAAEGLRCQ4hcAPhJYAAACD+AUPhI0AAACD6AFBD7Z0JDxNiwiD+AUPhykt/f9IYwSBSAHIPv/gSYtVOEiF0nQRTIkySTlVOHUISYPGGE2JdThIg8Q4W0FcQV1BXkFfXcNJizlAhPYPhQ8t/f9Iif5IiztMiUXATIlNyOiGE/z/TItFwEyLTchIjQ3Pug4AhcB1B0GLQXwrQ3xJjVAQhcAPiEH///9JjVAY6Tj///9Bi0F8K0N8deJAhPZ1e0mLMUiLO0yJRcjoOhP8/0yLRchIjQ2Hug4A68FIiztAiHWwSIlVuEyJTcjoeQMAAEyLTciJRcBJiznoagMAAESLRcBMi03ISI0NU7oOAInHSItVuA+2dbBEicAJ+Hg7QIT2D4UjLP3/RInAKfgPhEQs/f9MiwLpYv///0iLM0mLOUyJRcjovxL8/0yLRchIjQ0Mug4A6UP///9MiwLpWf///0mLAEiJRchJi0cwTIuY6AAAAE2F2w+FQiz9/0iLsBgBAABMi0YgTYXAdQNMiwBIi0XISIuA4AAAAEyLkOgAAABNhdIPhfgr/f9Ii7AYAQAATItOIE2FyXUDTIsIQYB9YQBMiVWgTIldqEiJVbB0SEyJxkyJz0yJRbhMiU3A6EUN/P9Mi03ATItFuEiNDW65DgBIi1WwTItdqEyLVaCFwA+PTCz9/w+Eziv9/0iLEkiDwhDp0f3//0yJzkyJx0yJTbhMiUXA6P0M/P9Mi1WgTItdqEiNDSa5DgBIi1WwTItNuEyLRcDrtvMPHvpVSInlQVRTSIPsEEiLPWLbDwBkSIsEJSgAAABIiUXoMcBIiwW80Q8ASIuA+AAAAEiFwHQGMdIx9v/QSIs9m9QPAEiNNSKIAADoHxD8/0iJw0iFwHRFSIs9GNsPAEiNdeC6ABAAAOhiDfz/gUskAEAgAEiLPfzaDwBIiYOgAAAASItF4EiJQ0DokPL//0iDu6AAAAAAD4S1Lf3/SIs909oPAOiWDPz/MfZIiwV90g8ASIk1vtoPAEiFwHQMMclIiUg4SItASOvvSItF6GRIKwQlKAAAAHUHWFpbQVxdw+g6Dfz/Zi4PH4QAAAAAAPMPHvpIizWVzg8ASIs9ls4PAOlpXv//Zg8fhAAAAAAA8w8e+lVIieVBVkyNdxBBVUmJ1UFUSYn8U0iJ80iLcxBIhfYPhWIt/f9Ii1MISIszTYnoTIn3SYtMJFDoEEb//0iLWxhIhdt101tBXEFdQV5dw2ZmLg8fhAAAAAAADx8A8w8e+kg5PTXQDwBIiwe+AQAAAEEPlMFFMcBIhcB0OItICIP5BnZCjVH5g/oJdyhIifJI0+L3wgDYAQAPhSIt/f/3woAlAAB1GIP5CXUJTYXAD4XsLP3/SIn4w0UxyUUxwEiJx0iLAOuxg+kBg/kFd/BMjRUIuA4ASWMUikwB0j7/4k2FwHXaSItQEIN6EAh00EiLUhiAOi51x4B6AQB1wUWEyQ+Ekiz9/0UxyeuzZpDzDx76Vb4uAAAASInlQVVJif1BVFNIg+wYZEiLBCUoAAAASIlF2DHA6KMM/P9IhcAPhMYu/f8PtlABSInDSIsFvLYPAPYEUAQPhK4u/f9IjXXQSI17AboKAAAA6OAH/P9JicRIi0XQgDgAD4WMLv3/SY1FBkg5w3QvSYH8////fw+Hdi79/0SJ4EiLVdhkSCsUJSgAAAB1C0iDxBhbQVxBXV3D6FgL/P+6BgAAAEiNNSaKAABMie/olAj8/4XAdBi6BgAAAEiNNRWKAABMie/ofAj8/4XAdaG4//8AAEwp4EmJxOuUZmYuDx+EAAAAAADzDx76VUiJ+EiJ5VNRSIsYSIXbdAiLUwiD+gd1BFpbXcMPh+0t/f9IjXsQg/oEdQvoy////0iDOAB14kiJ2OvN8w8e+kiLNSXMDwBIiz0mzA8A6Qlc//9mDx+EAAAAAADzDx76SIs19csPAEiLPfbLDwDp6Vv//2YPH4QAAAAAAPMPHvpVSInlQVRFMeRTSIn7TDsloNcPAHIFW0FcXcNIiwWK1w8ASos84EmDxAH/0+vfZmYuDx+EAAAAAAAPHwDzDx76D7YFtdAPAIPgAzwCD4SaAQAAVYM9Is4PAAFIieV0IMcFE84PAAEAAAAxyTH2Mf+JDV/ODwDo8gMAAOjtBgAASIsFls0PAEiFwA+EDAEAAEQPthVo0A8ATIsNrtAPAEGD4iDrFQ8fhAAAAAAASItAIEiFwA+E4gAAAIuQlAAAAIXSeOlIi1A4SIXSdOBIg3pIAHXZi3Ik98YAACAAdc5Ii0oISIXJD4TNAAAASDtREHW7SIu6+AAAAEiF/3RPRItHJEH3wACAAAAPhI8AAABIi7/4AAAASIX/dDJEi0ckQffAAIAAAHXnQYHgAAAQAA+FeP////YFxM8PACB00elq////Zi4PH4QAAAAAAA+2uKgAAABA9scQD4VTLP3/g88Igc4AgAAAQIi4qAAAAIlyJEiLUhBIhdJ0UUiJSghIhcl0VkiLQCBIiVEQQYOpoAAAAAFIhcAPhR7///9dw0GB4AAAEAAPhQL///9FhNIPhFv////p9P7//0k7kZgAAAAPhCz////p4v7//0mJiZAAAAAx0kiFyXWqQYOpoAAAAAFJiZGYAAAA6cD+///DZmYuDx+EAAAAAAAPH0AA8w8e+kiF/w+Ewiv9/4O/lAAAAAB4CUiLRzhIhcB1BkiLfyjr38NmLg8fhAAAAAAA8w8e+kiLVzBIjUfoSDtX8HUcSIsASIXAdCtIO1BIdSODuKwAAAAAeOlIg8AYw1W+TAYAAEiNPel/AABIieXonWL9/zHAw2YuDx+EAAAAAADzDx76VTHASInlQVZBVUFUSYn8U0APtt6J3okFOMwPAMcF1ssPAAIAAADowQEAAIM9IswPAAMPhZsBAAAPtgVAzg8AqEAPhMEAAABIizUezA8ASIX2D4SxAAAASIsFLswPAEiLFf/LDwBMiy3wyw8ATI10Bv9I99hJIcZIiwVOzg8ATYnxSIuAmAAAAEkp0UiFwA+E3gAAAESLBdHUDwBIKda/AQAAAOsUDx+AAAAAAEiLQBBIhcAPhLkAAACLSCT2wQF060iLUDBMOepy4kg58nPdgeECBAAAgfkABAAAD4T+AAAATItQQESJwUnT6kyJ0UgB0UwBykmJ+UgpyotIfEnT4Un32Ukh0eukSIs1TcsPAEiLPW7LDwBMiwVXyw8ASI1P/0iJ8kmJyUj32k0hwUghynQFTYXJdXnHBRPLDwAGAAAAqEB0JEiLBSDLDwBIhcB0GPMPfgUDyw8AZkgPbshmD2zBDxEFC84PAFtBXEFdQV5dw8cF2MoPAAQAAABNOekPgg4q/f9MiQ3Qyg8A6FsDAACJ3kyJ5+hRAAAATDs1ysoPAA+2BdbMDwBzlun0Kf3/SIn5TDHGSPfZSIXOD4R1////TAHKSDnXD4Jp////6Zsp/f/HBXfKDwAGAAAA64pIidHpCv///w8fRAAAgwXpyQ8AAYM9AsoPAAFJifh0B4MFWtcPAAFED7bOSIs1u8kPADHJMdJIjT2gyQ8A6dtZ//9mZi4PH4QAAAAAAPMPHvpIiwWdyQ8A/2BAZpDzDx76VUiLPYTMDwBIjTUtzA8ASInl6EUI/P+FwA+I3y/9/0APlcddQA+2/+tiZpDzDx76gD2l0g8AAHUkVUiJ5UFVQVRTSIn7UkiLfzBIhf90BvZHREB1CVhbQVxBXV3Dw+jpBfz/SYnESIXAD4StL/3/SIsdbtIPAEiF2w+FsS/9/+vUZmYuDx+EAAAAAABVSInlQVdBVkG+CgAAAEFVTI0tmcsPAEFUU0iD7BhAiH3MD7Z9zOhlAQAASIs9zssPAMZFzABIi0cIg3gIBQ+FzwAAAIA9RdYPAAAPhR8BAABIiz2YyA8AMfboYWb//0iLHWrIDwDGBSPWDwABSIXbdQ/rLw8fQABIi1sgSIXbdCJMi6OIAAAATYXkdOtBi0QkCIXAD4XzL/3/SItbIEiF23XeSIs9VssPAEiLRwiDeAgFdV9BD7ZFAIPgAzwCdFNIi4cQAQAASIM9Mc8PAABIi4CoDQAASItYSHUFMdJIiRBIjVXMTInu6GME/P+EwA+EOjD9/0iLPQTLDwBIi4cQAQAASIuAqA0AAEiLUEhIOdp1QIB9zAB1SEiLRwiDeAgFdSFIgz3Vzg8AAHUXSIuAgAMAAEiLgDABAABIhcAPhb0v/f9Ig8QYW0FcQV1BXkFfXcNBg/4GD4aSL/3/xkXMAUGD7gEPhbf+///p3C/9/0iLHVnHDwBIhdsPhQH////pL////2ZmLg8fhAAAAAAAVUiJ5UFUU0iD7BBkSIsEJSgAAABIiUXoMcCDPRfKDwABD4biMP3/gD31yQ8AAA+I1TD9/0CE/3QxvwMAAADoneP//+hIAAAASItF6GRIKwQlKAAAAHUpWb4BAAAAQVgx/1tBXF3pNvv//0iLRehkSCsEJSgAAAB1B1haW0FcXcPoKwP8/2ZmLg8fhAAAAAAA8w8e+kiLBXXIDwBIhcB0F0iLUCBIiVA4MdJIiVBASItAEEiFwHXpSIsFgsYPAEiFwHQVDx9EAACAoKgAAAD8SItAIEiFwHXwSIsFkckPAEiLgJAAAABIhcB0KQ8fRAAASItQQEiJUEj2QCUID4WaMP3/SMdAQAAAAABIi0AISIXAdd3Dw2ZmLg8fhAAAAAAA8w8e+g+2BfXIDwCD4AM8AnQTSIs9N8kPAEiNNeDIDwDpew38/8NmLg8fhAAAAAAA8w8e+umH/P//Dx+AAAAAAPMPHvrpd/z//w8fgAAAAADzDx76SIsF/cUPAEiJ/kiLPYPPDwBIi4DwAAAASIXAD4RpMP3//+BmDx+EAAAAAADzDx76VWYP78BIieVTSIPsOGRIiwQlKAAAAEiJRegxwEiJddAPEUXYSIX/D4UuMP3/SItF6GRIKwQlKAAAAHUHSIPEOFtdw+jEAfz/Dx9AAPMPHvpIgz0Mzw8AAHUBw1VIieXoGAAAAIXAdQZd6X7z//9dw2ZmLg8fhAAAAAAAkPMPHvpIiwVNxQ8ASIuA6AAAAEiFwHQC/+C4AQAAAMOQ8w8e+lVIieVBV0FWQVVBVEmJ/EiJ91NIgeyYAAAASIm1YP///0iNNXFsAABkSIsEJSgAAABIiUXIMcDocAn8/0iJhXD///9IhcAPhHcCAAC/AAEAALsdAIAAQb4AAQAA6Ov8+/9IweMJSImFeP///0yLvXj///9MifZIi4V4////TYn9RInyTIn/SIuNcP///0kpxUQp6uhkB/z/SInHSIXAD4QNAgAA6LMA/P9NjX7/SInCTIn4TCnoSDnCD4QLNf3/SIu9eP///74KAAAA6PwA/P9IhcB0A8YAAEiLvXj///++IwAAAOjjAPz/SIXAD4XYAQAATIuNeP///0EPtgE8IHdlSA+jww+C/DT9/4TAdVdIi71w////6HEE/P+FwA+ESf///0iLvXj////o/fv7/0iLvXD////oof/7/7gBAAAASItVyGRIKxQlKAAAAHUSSIHEmAAAAFtBXEFdQV5BX13D6AYA/P9Mic9IjTXXgAAATImNaP///+iwpP7/TIuNaP///4TAdSxMicrrFjw9dB48IHcKSA+jww+CNAEAAEiDwgEPtgKEwHXj6Ws0/f/pZjT9/0EPtkEHPCB0CDwJD4XINP3/TIm1WP///0mDwQhBD7YBPCAPhPA1/f88CQ+E6DX9/4TAD4S6AAAATYnORQ+2PkyJ8EmDxgFBgP8gD4TuNP3/QYD/CQ+E5DT9/0WE/3XcxgAAQQ+2AYTAdHwx0kiJlWj///88Lw+F2jT9/0iNRYAx0jH2TInPSInBSImFUP///0Ux7eghCfz/hcB1KEw7bYBzFkiLRYhMiedKizToSYPFAeiT/f//6+RIi71Q////6GX7+/9Ii71o////6Kn6+/9FhP91DEyLtVj////pe/7//+lnNP3/TIu1WP///+lq/v//TIu1WP///+le/v//TDm9eP///w+EZf7//+n8/f//McDpdv7//8YAAOkg/v//6UIz/f8PH0QAAPMPHvpVSInlQVdBVkFVQYn1QVRTSIn7SIPsWEyLZ0BkSIsEJSgAAABIiUXIMcDoDQr//0iLM0iNPRtdAAAxwOj8IP//SIs76DT++/+DwAGD+A4Pjwc2/f+/EAAAACnH6HwIAABIi0NgSIXAD4TZNf3/SIsN2MQPAEg5iOAAAAAPhcU1/f9Mi3NYTANwMEiLPbzEDwBMjW2gTInyTInu6L0G/P+LDUfLDwBMieIxwEyJ7kiNPbt+AABI0+pIi4vgAAAA6Hkg//9Ii0NITDngdAlIhcAPhS81/f9Ii0NgSIXAdE9IizVnxA8ASDmw4AAAAHU/gD0LxA8AAA+I7jT9/0yLq5gAAABNhe0PhS80/f+LDdvKDwBJ0+xNAfRMOSWmzg8AD4IKNP3/gD1ixQ8AAHUjSItFyGRIKwQlKAAAAHUPSIPEWFtBXEFdQV5BX13D6Dz9+/9Iiz31ww8ASItHCP+Q+AEAAEiJx0iFwH7E6P74+/9Iiz3Xww8ARTHkSYnHSItHCEyJ/v+QAAIAAEmJwesaT4ss50iLQ2BJi00QSItQMEk7RSB0LkmDxAFNOcx84UiLRchkSCsEJSgAAAB1kEiDxFhMif9bQVxBXUFeQV9d6Xv4+/9MjRQRTTnycslB9kUYAXTCTDsV3M0PAEyJVZBztU2LXQhNhdt0rEGAOwB0pkiNNZN9AABMid9MiU2YTIldgOgYAPz/TItNmIXAdIdIiz0pww8ATInu6OEH/P9Mi02YhMAPhWz///9Mi12AQYA7JA+EXv///0iLPdjCDwAxyTHSTIneQbgBAAAA6A7/+/9Mi02YTItVkEiFwA+FYDT9/78QAAAATIlNmEyJVYDoWwYAAEmLVQhIi3WAMcBIjT0MfQAA6KUe//9Mi02Y6QP///9mZi4PH4QAAAAAAJDzDx76VUiJ5UFXQVZBVUFURTHkU0iJ+0iD7BhIiz3Www8A6Kn7+/9ED74tfMMPAEiJ30mJxoA/L3UDTQH0RInu6Pv7+/9IhcB0BkiNeAHr5UiJ3+h4+/v/TY1sBAFMie9Nie/oWPf7/0iJRcBJicSAOy91OkiLNX3DDwBMifpMiefoOgL8/005/UyJ+kyJ+UkPQ9VJjTQWSInwTCn4SDnQSA9Cwkgp8U0B9EyNPAgPvjX2wg8ASInf6IP7+/9IhcB0TUgp2EyJ+UiJ3kyJ50iNUAFIiVXI6MUB/P9NOf1Mif5Ii1XISQ9D9UyJ+UiNPDJIifhMKfhIOfBID0LGSCn5SQHUSAHTTI08COlg////TIn6SIneTInn6KMB/P9Ii0XASIPEGFtBXEFdQV5BX13D8w8e+lVIieVBV0FWQVVBVFNIg+woSItHCEiLFbilDwBIi4CAAwAASIHCMAIAAEiJRchIi4cQAQAASIuAqA0AAEyLeChIi0ggSYtHYEiJTcBIOdAPhPoy/f9Mi7DQAAAASIn7SYt/QE2LZkhNheQPhQ0z/f9Jg7+gAAAAAHUQ6A32+/9Ji39ASYmHoAAAAE2Lp6AAAABJjUwkEEyNb/Ax9kyJ6kiJz0iJTbjocfv7/0iLQwhMiea/BAAAAP+QmAAAAEiLQwhMie9JjXQkBP+QmAAAAEiLQwhJjXQkCL8DAAAA/5CYAAAASItFyEWJ6EiJ30HHRCQMR05VAEiLdcBIi4BIAwAASItNuEiLUCDobgAAAEmLd1gx0kkDdhhIid9Ni29A6KgF/P+FwA+FSjL9/0iJ2kyJ7kyJ5+gi9/v/TDnoD5TAD7bAg+ABSIPEKFtBXEFdQV5BX13DDx+AAAAAAPMPHvpIizUdwQ8AvwoAAADpW/v7/2ZmLg8fhAAAAAAA8w8e+lVIieVBV0WJx0FWSYn+QVVJidVBVEmJzFNIifNIjTU1dgAASInfSIHs2AAAAGRIiwQlKAAAAEiJRcgxwOiL/Pv/hcAPhNkBAABIjTVeWwAASInf6HT8+/+JxoXAD4WkMf3/Zg9vBTINDgAPKYUg////Zg9vBTMNDgAPKYUw////D6JIjT3zOAAAg/gGdhW4BwAAAInxD6KB4wAAACAPhVEBAABIjZ0g////SIn+TIn3SInaQf/VhMAPhAkBAACLvTz///+D/ziJ+k0Z7UmD5fBJg8UgA5U0////iZU0////D4ICAQAAi404////idBMjbVA////D6zIHY0M1QAAAAAPyEKJhK04////idCJzsHgC8HuGMHiGyUAAP8AwekICfCB4QD/AABIjTWupg4ACdC6oAAAAAnIQomErTz///9IjUcgSDnQSA9CwkqNFK34////SCn6SCn4TAH3SI1I4Oi4+/v/SInaSo00rQAAAABMiffopSUAAIuFIP///4uNLP///w/IZg9uwIuFJP///w/JZg9u0Q/IicKLhSj///9mD27aD8hmD27Ii4Uw////Zg9iw2YPYsoPyEGJRCQQZg9swUEPEQQkSItFyGRIKwQlKAAAAHVHSIHE2AAAAFtBXEFdQV5BX13Dg4U4////Aeny/v//ifAPooXAD4Sj/v//uAEAAAAPokiNBf4ZAACB4QAACABID0X46Yb+///oCvf7/2YPbwVyCw4AMdIxwEyJ90iNnSD///+JlTj///9IjTXXEgAASImFMP///0iJ2g8phSD///9B/9WEwA+EZv///4uFOP///wGFMP///3MHg4U0////AYP4Nw+G4wAAAEG9eAAAAEEpxUGJxknHx+T///+6nAAAAEmNRhxMiflIjTV3pQ4ATCnxSDnQSI08A0gPQ9BIAdFMiepNAfXoW/r7/4uFMP///0mNVRxMjbUc////SI08E0yJ9sHgA4mFHP///7icAAAASDnCSA9Dwk0p77oEAAAASo0MOOgd+vv/i5U0////i4Uw////TIn2D6zQHUmNVSCJhRz///+4nAAAAEiNPBNIOcJID0PCugQAAABMKehIjUjg6N/5+/9JjXUISI29PP///0iJ2uhsCgAAZg9vpSD///9BDxEkJOll/v//Qb04AAAAQSnF6Rj///9mZi4PH4QAAAAAAJDzDx76iflIiz17vQ8AvgIAAAAxwEyNBVKCAABIjRXxUwAA6cn/+/9mDx+EAAAAAADzDx76g38QAw+EYjD9/zHAg+ABw2ZmLg8fhAAAAAAAkPMPHvpVSInlQVdBVkFVQVRTSIPsSESLZwhkSIsEJSgAAABIiUXIMcBBg/wQD4fcM/3/SI0Vn6EOAESJ4EmJ/0iJ80hjBIJIAdA+/+C/AQAAAOha////SYtHSEiFwA+FEDj9/0GAf2AAD4UDMf3/QYB/YQAPhQsx/f9Ji3dYSIX2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgBlbGZfeDg2XzY0AF9maW5pAC91c3Ivc2hhcmUvbG9jYWxlAC0tc3lzcm9vdD0AeDg2XzY0LXBjLWxpbnV4LWdudQBDT0xMRUNUX05PX0RFTUFOR0xFAExERU1VTEFUSU9OACVQOiBtaXNzaW5nIGFyZ3VtZW50IHRvIC1tCgAtbWlwczEALW1pcHMyAC1taXBzMwAtbWlwczQALW1pcHM1AC1taXBzMzIALW1pcHMzMnIyAC1taXBzMzJyMwAtbWlwczMycjUALW1pcHMzMnI2AC1taXBzNjQALW1pcHM2NHIyAC1taXBzNjRyMwAtbWlwczY0cjUALW1pcHM2NHI2AC1tNDg2AFN1cHBvcnRlZCBlbXVsYXRpb25zOiAAKkFCUyoALi4vLi4vbGQvcGx1Z2luLmMAX29ubG9hZAAlUDogJXM6IHBsdWdpbiBlcnJvcjogJWQKAGJ1aWx0IGluIGxpbmtlciBzY3JpcHQAdXNpbmcgZXh0ZXJuYWwgbGlua2VyIHNjcmlwdDoAdXNpbmcgaW50ZXJuYWwgbGlua2VyIHNjcmlwdDoAJVA6IG5vIGlucHV0IGZpbGVzCgAlUDogbW9kZSAlcwoALnN0YWIAJEdEQl9TVFJJTkdTJAAkR0RCX1NZTUJPTFMkACVQOiBjbG9uZSBzZWN0aW9uIGZhaWxlZDogJUUKACVQOiBmaW5hbCBsaW5rIGZhaWxlZDogJUUKACVQOiBmaW5hbCBsaW5rIGZhaWxlZAoACklucHV0IEZpbGUgUmVtYXBwaW5nCgoAPGRpc2NhcmQ+ACAgUGF0dGVybjogJXMJTWFwcyBUbzogJXMKAApEaXNjYXJkZWQgaW5wdXQgc2VjdGlvbnMKCgAKTWVtb3J5IENvbmZpZ3VyYXRpb24KCgBBdHRyaWJ1dGVzAExlbmd0aABPcmlnaW4ATmFtZQAlLTE2cyAlLTE4cyAlLTE4cyAlcwoAIDB4JS0xNnMAIDB4JSpzACEACkNyb3NzIFJlZmVyZW5jZSBUYWJsZQoKAFN5bWJvbABGaWxlCgBObyBzeW1ib2xzCgAuLi8uLi9sZC9sZGNyZWYuYwAlMTZzOiAAICAgICU2LjJmJSUAJXM6ACBcCiAgJXMACiVzOgoAJVA6IGVycm9yIHdyaXRpbmcgZmlsZSBgJXMnCgAlUDogZXJyb3IgY2xvc2luZyBmaWxlIGAlcycKAEdOVVRBUkdFVAAkU1lTUk9PVAA/KlsAcmVtb3ZlIGlucHV0IGZpbGUgJyVzJwoALWwAaTM4Njp4ODYtNjQAaTM4Njp4NjQtMzIALS1zaGFyZWQALS1saWJyYXJ5PSVzACVQOiAlczogbWlzc2luZyBhcmd1bWVudAoAJVA6IHVucmVjb2duaXplZCBvcHRpb24gJyVzJwoAbm9kZWZpbml0aW9ucwBub3N5bWJvbGljAHB1cmUtdGV4dAAtLWRlZnN5bQAlUDogaW52YWxpZCBudW1iZXIgYCVzJwoAVXNhZ2U6ICVzIFtvcHRpb25zXSBmaWxlLi4uCgBPcHRpb25zOgoAICBARklMRQBSZWFkIG9wdGlvbnMgZnJvbSBGSUxFCgAlczogc3VwcG9ydGVkIHRhcmdldHM6ACVzOiBzdXBwb3J0ZWQgZW11bGF0aW9uczogAEVMRiBlbXVsYXRpb25zOgoAYm90aAoAUmVwb3J0IGJ1Z3MgdG8gJXMKAGlnbm9yZS1hbGwAcmVwb3J0LWFsbABpZ25vcmUtaW4tb2JqZWN0LWZpbGVzAGlnbm9yZS1pbi1zaGFyZWQtbGlicwAlUDogJXM6IGR1cGxpY2F0ZWQgcGx1Z2luCgA8bm8gcGx1Z2luPgAlUDogYmFkIC1wbHVnaW4tb3B0IG9wdGlvbgoAcGFzcy10aHJvdWdoPQAlUDogdW5yZWNvZ25pc2VkIG9wdGlvbjogJXMKACVzJWMlcwAlWCVQOiAlczogJUUKACVQOiAtc2hhcmVkIG5vdCBzdXBwb3J0ZWQKACVQOiAtcGllIG5vdCBzdXBwb3J0ZWQKAGRlc2NlbmRpbmcAYXNjZW5kaW5nACVQOiBpbnZhbGlkIGhleCBudW1iZXIgYCVzJwoALnRleHQtc2VnbWVudAAucm9kYXRhLXNlZ21lbnQALmxkYXRhLXNlZ21lbnQAQysrAHR5cGVpbmZvIG5hbWUgZm9yKgB0eXBlaW5mbyBmb3IqAG9wZXJhdG9yIG5ldyoAb3BlcmF0b3IgZGVsZXRlKgBQLABwbGFjZQB3YXJuAGRpc2NhcmQAc2hhcmUtdW5jb25mbGljdGVkAHNoYXJlLWR1cGxpY2F0ZWQAJXMlcyVzACVzJXMlcy5tYXAAJXMtJXMlcwAlcy0lYwBzaGExAHN5c3YAYm90aAAlUDogaW52YWxpZCBoYXNoIHN0eWxlIGAlcycKAHVuZGVmcwBtdWxkZWZzAG1heC1wYWdlLXNpemU9AGNvbW1vbi1wYWdlLXNpemU9AHN0YWNrLXNpemU9ACVQOiBpbnZhbGlkIHN0YWNrIHNpemUgYCVzJwoAbm9leGVjc3RhY2sAbm91bmlxdWUtc3ltYm9sAGdsb2JhbGF1ZGl0AG5vc3RhcnQtc3RvcC1nYwBzdGFydC1zdG9wLXZpc2liaWxpdHk9AHN0YXJ0LXN0b3AtdmlzaWJpbGl0eT1kZWZhdWx0AHN0YXJ0LXN0b3AtdmlzaWJpbGl0eT1oaWRkZW4Abm9zZWN0aW9uaGVhZGVyAGdsb2JhbABpbml0Zmlyc3QAaW50ZXJwb3NlAGxvYWRmbHRyAG5vZGVmYXVsdGxpYgBub2RlbGV0ZQBub2Rsb3BlbgBub2R1bXAAbGF6eQBvcmlnaW4Abm91bmlxdWUAbm9jb21icmVsb2MAbm9jb3B5cmVsb2MAbm9yZWxybwBub3NlcGFyYXRlLWNvZGUAbm9jb21tb24Abm90ZXh0AHRleHRvZmYAbm9leHRlcm4tcHJvdGVjdGVkLWRhdGEAbm9pbmRpcmVjdC1leHRlcm4tYWNjZXNzAG5vZHluYW1pYy11bmRlZmluZWQtd2VhawBub3JlbG9jLW92ZXJmbG93AGNhbGwtbm9wPQBwcmVmaXgtYWRkcgBzdWZmaXgtbm9wAHByZWZpeC0Ac3VmZml4LQBpYnRwbHQAaWJ0AHNoc3RrAGNldC1yZXBvcnQ9AHJlcG9ydC1yZWxhdGl2ZS1yZWxvYwB4ODYtNjQtYmFzZWxpbmUAeDg2LTY0LXYAbGFtLXU0OABsYW0tdTQ4LXJlcG9ydD0AbGFtLXU1NwBsYW0tdTU3LXJlcG9ydD0AbGFtLXJlcG9ydD0Abm9tYXJrLXBsdABub3BhY2stcmVsYXRpdmUtcmVsb2NzACVQOiB3YXJuaW5nOiAteiAlcyBpZ25vcmVkCgBHTlUgbGQgJXMKACAgU3VwcG9ydGVkIGVtdWxhdGlvbnM6CgAgICAlcwoAJVA6IG1hY3JvcyBuZXN0ZWQgdG9vIGRlZXBseQoALDoAL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudQAvdXNyL2JpbgAvdXNyL3g4Nl82NC1saW51eC1nbnUvYmluAEphdmEAaTM4NnBlAHBlaS1pMzg2AGkzODZwZXAAcGVpLXg4Ni02NABlbGZfaWFtY3UAZWxmMzItaWFtY3UAZWxmX2kzODYAZWxmMzItaTM4NgBlbGYzMl94ODZfNjQAZWxmMzIteDg2LTY0AGVsZjY0LXg4Ni02NABCZ3JvdXAAcGFja2FnZS1tZXRhZGF0YQBjb21wcmVzcy1kZWJ1Zy1zZWN0aW9ucwBkZXBhdWRpdABkaXNhYmxlLW5ldy1kdGFncwBlbmFibGUtbmV3LWR0YWdzAG5vLWVoLWZyYW1lLWhkcgBleGNsdWRlLWxpYnMAaGFzaC1zdHlsZQBuby1sZC1nZW5lcmF0ZWQtdW53aW5kLWluZm8AS0VZV09SRABTZXQgYXJjaGl0ZWN0dXJlAG1yaS1zY3JpcHQAUmVhZCBNUkkgZm9ybWF0IGxpbmtlciBzY3JpcHQAZGMAZHAAZGVwZW5kZW5jeS1maWxlAFdyaXRlIGRlcGVuZGVuY3kgZmlsZQBmb3JjZS1ncm91cC1hbGxvY2F0aW9uAFNldCBzdGFydCBhZGRyZXNzAEV4cG9ydCBhbGwgZHluYW1pYyBzeW1ib2xzAG5vLWV4cG9ydC1keW5hbWljAGVuYWJsZS1ub24tY29udGlndW91cy1yZWdpb25zAGRpc2FibGUtbGlua2VyLXZlcnNpb24AZW5hYmxlLWxpbmtlci12ZXJzaW9uAEVCAExpbmsgYmlnLWVuZGlhbiBvYmplY3RzAExpbmsgbGl0dGxlLWVuZGlhbiBvYmplY3RzAGF1eGlsaWFyeQBmaWx0ZXIASWdub3JlZABncHNpemUAc29uYW1lAEZJTEVOQU1FAFBST0dSQU0Abm8tZHluYW1pYy1saW5rZXIAU2VhcmNoIGZvciBsaWJyYXJ5IExJQk5BTUUAbGlicmFyeS1wYXRoAERJUkVDVE9SWQBzeXNyb290PTxESVJFQ1RPUlk+AFNldCBlbXVsYXRpb24AcHJpbnQtbWFwAG5tYWdpYwBEbyBub3QgcGFnZSBhbGlnbiBkYXRhAG5vLW9tYWdpYwBTZXQgb3V0cHV0IGZpbGUgbmFtZQBPcHRpbWl6ZSBvdXRwdXQgZmlsZQBvdXQtaW1wbGliAEdlbmVyYXRlIGltcG9ydCBsaWJyYXJ5AFBMVUdJTgBMb2FkIG5hbWVkIHBsdWdpbgBwbHVnaW4tb3B0AEFSRwBmbHRvAGZsdG8tcGFydGl0aW9uPQBmdXNlLWxkPQBuby1tYXAtd2hvbGUtZmlsZXMAUXkAZW1pdC1yZWxvY3MAcmVsb2NhdGFibGUAR2VuZXJhdGUgcmVsb2NhdGFibGUgb3V0cHV0AGp1c3Qtc3ltYm9scwByZW1hcC1pbnB1dHMtZmlsZQByZW1hcC1pbnB1dHMAUEFUVEVSTj1GSUxFAHN0cmlwLWFsbABTdHJpcCBhbGwgc3ltYm9scwBzdHJpcC1kZWJ1ZwBTdHJpcCBkZWJ1Z2dpbmcgc3ltYm9scwBuby1zdHJpcC1kaXNjYXJkZWQAdHJhY2UAVHJhY2UgZmlsZSBvcGVucwBSZWFkIGxpbmtlciBzY3JpcHQAZGVmYXVsdC1zY3JpcHQAUmVhZCBkZWZhdWx0IGxpbmtlciBzY3JpcHQAZFQAcmVxdWlyZS1kZWZpbmVkAFs9U0VDVElPTl0AVXIAUHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbgBkaXNjYXJkLWFsbABEaXNjYXJkIGFsbCBsb2NhbCBzeW1ib2xzAGRpc2NhcmQtbG9jYWxzAGRpc2NhcmQtbm9uZQB0cmFjZS1zeW1ib2wAVHJhY2UgbWVudGlvbnMgb2YgU1lNQk9MAHN0YXJ0LWdyb3VwAFN0YXJ0IGEgZ3JvdXAAZW5kLWdyb3VwAEVuZCBhIGdyb3VwAG5vLWFjY2VwdC11bmtub3duLWlucHV0LWFyY2gAbm8tYWRkLW5lZWRlZABuby1hcy1uZWVkZWQAYXNzZXJ0AEJkeW5hbWljAExpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyaWVzAGR5AGNhbGxfc2hhcmVkAEJzdGF0aWMAZG4Abm9uX3NoYXJlZABCbm8tc3ltYm9saWMAQnN5bWJvbGljAEJzeW1ib2xpYy1mdW5jdGlvbnMAbm8tY2hlY2stc2VjdGlvbnMAbm8tY29weS1kdC1uZWVkZWQtZW50cmllcwBjcmVmAE91dHB1dCBjcm9zcyByZWZlcmVuY2UgdGFibGUAU1lNQk9MPUVYUFJFU1NJT04ARGVmaW5lIGEgc3ltYm9sAFs9U1RZTEVdAGRpc2FibGUtbXVsdGlwbGUtYWJzLWRlZnMAZW1iZWRkZWQtcmVsb2NzAEdlbmVyYXRlIGVtYmVkZGVkIHJlbG9jcwBUcmVhdCB3YXJuaW5ncyBhcyBlcnJvcnMAbm8tZmF0YWwtd2FybmluZ3MAQ2FsbCBTWU1CT0wgYXQgdW5sb2FkLXRpbWUAZm9yY2UtZXhlLXN1ZmZpeABuby1nYy1zZWN0aW9ucwBuby1wcmludC1nYy1zZWN0aW9ucwBnYy1rZWVwLWV4cG9ydGVkAGhhc2gtc2l6ZT08TlVNQkVSPgBQcmludCBvcHRpb24gaGVscABDYWxsIFNZTUJPTCBhdCBsb2FkLXRpbWUATWFwAEZJTEUvRElSAG5vLWRlZmluZS1jb21tb24ARG8gbm90IGRlZmluZSBDb21tb24gc3RvcmFnZQBuby1kZW1hbmdsZQBEbyBub3QgZGVtYW5nbGUgc3ltYm9sIG5hbWVzAG5vLWtlZXAtbWVtb3J5AG5vLXVuZGVmaW5lZABuby13YXJuaW5ncwBuby1hbGxvdy1zaGxpYi11bmRlZmluZWQAYWxsb3ctbXVsdGlwbGUtZGVmaW5pdGlvbgBBbGxvdyBtdWx0aXBsZSBkZWZpbml0aW9ucwBlcnJvci1oYW5kbGluZy1zY3JpcHQAQWxsb3cgdW5kZWZpbmVkIHZlcnNpb24Abm8tdW5kZWZpbmVkLXZlcnNpb24ARGlzYWxsb3cgdW5kZWZpbmVkIHZlcnNpb24AZGVmYXVsdC1zeW12ZXIAQ3JlYXRlIGRlZmF1bHQgc3ltYm9sIHZlcnNpb24AZGVmYXVsdC1pbXBvcnRlZC1zeW12ZXIAbm8td2Fybi1taXNtYXRjaABuby13YXJuLXNlYXJjaC1taXNtYXRjaABuby13aG9sZS1hcmNoaXZlAFR1cm4gb2ZmIC0td2hvbGUtYXJjaGl2ZQBub2luaGliaXQtZXhlYwBub2luaGliaXRfZXhlYwBub3N0ZGxpYgBvZm9ybWF0AFNwZWNpZnkgdGFyZ2V0IG9mIG91dHB1dCBmaWxlAHByaW50LW91dHB1dC1mb3JtYXQAUHJpbnQgZGVmYXVsdCBvdXRwdXQgZm9ybWF0AHByaW50LXN5c3Jvb3QAUHJpbnQgY3VycmVudCBzeXNyb290AHFtYWdpYwByZWR1Y2UtbWVtb3J5LW92ZXJoZWFkcwBtYXgtY2FjaGUtc2l6ZT1TSVpFAG5vLXJlbGF4AHJldGFpbi1zeW1ib2xzLWZpbGUAcnBhdGgAcnBhdGgtbGluawBDcmVhdGUgYSBzaGFyZWQgbGlicmFyeQBCc2hhcmVhYmxlAHBpYy1leGVjdXRhYmxlAG5vLXBpZQBzb3J0LWNvbW1vbgBbPWFzY2VuZGluZ3xkZXNjZW5kaW5nXQBzb3J0X2NvbW1vbgBzb3J0LXNlY3Rpb24AbmFtZXxhbGlnbm1lbnQAc3BhcmUtZHluYW1pYy10YWdzAENPVU5UAHNwbGl0LWJ5LWZpbGUAWz1TSVpFXQBzcGxpdC1ieS1yZWxvYwBbPUNPVU5UXQBzdGF0cwBQcmludCBtZW1vcnkgdXNhZ2Ugc3RhdGlzdGljcwB0YXJnZXQtaGVscAB0YXNrLWxpbmsARG8gdGFzayBsZXZlbCBsaW5raW5nAHRyYWRpdGlvbmFsLWZvcm1hdABzZWN0aW9uLXN0YXJ0AFNFQ1RJT049QUREUkVTUwBTZXQgYWRkcmVzcyBvZiBuYW1lZCBzZWN0aW9uAFRic3MAU2V0IGFkZHJlc3Mgb2YgLmJzcyBzZWN0aW9uAFRkYXRhAFNldCBhZGRyZXNzIG9mIC5kYXRhIHNlY3Rpb24AVHRleHQAU2V0IGFkZHJlc3Mgb2YgLnRleHQgc2VjdGlvbgBUdGV4dC1zZWdtZW50AFNldCBhZGRyZXNzIG9mIHRleHQgc2VnbWVudABUcm9kYXRhLXNlZ21lbnQAU2V0IGFkZHJlc3Mgb2Ygcm9kYXRhIHNlZ21lbnQAVGxkYXRhLXNlZ21lbnQAU2V0IGFkZHJlc3Mgb2YgbGRhdGEgc2VnbWVudAB1bnJlc29sdmVkLXN5bWJvbHM9PG1ldGhvZD4AWz1OVU1CRVJdAGRsbC12ZXJib3NlAHZlcnNpb24tc2NyaXB0AHZlcnNpb24tZXhwb3J0cy1zZWN0aW9uAGR5bmFtaWMtbGlzdC1kYXRhAGR5bmFtaWMtbGlzdC1jcHAtbmV3AGR5bmFtaWMtbGlzdC1jcHAtdHlwZWluZm8AVXNlIEMrKyB0eXBlaW5mbyBkeW5hbWljIGxpc3QAZHluYW1pYy1saXN0AFJlYWQgZHluYW1pYyBsaXN0AGV4cG9ydC1keW5hbWljLXN5bWJvbABFeHBvcnQgdGhlIHNwZWNpZmllZCBzeW1ib2wAZXhwb3J0LWR5bmFtaWMtc3ltYm9sLWxpc3QAd2Fybi1jb21tb24Ad2Fybi1jb25zdHJ1Y3RvcnMAbm8tZXJyb3ItZXhlY3N0YWNrAHdhcm4tZXhlY3N0YWNrLW9iamVjdHMAbm8td2Fybi1leGVjc3RhY2sAbm8tZXJyb3Itcnd4LXNlZ21lbnRzAG5vLXdhcm4tcnd4LXNlZ21lbnRzAHdhcm4tbXVsdGlwbGUtZ3AAd2Fybi1vbmNlAHdhcm4tc2VjdGlvbi1hbGlnbgB3YXJuLXRleHRyZWwAd2Fybi1zaGFyZWQtdGV4dHJlbAB3YXJuLWFsdGVybmF0ZS1lbQB3YXJuLXVucmVzb2x2ZWQtc3ltYm9scwBlcnJvci11bnJlc29sdmVkLXN5bWJvbHMAd3JhcABpZ25vcmUtdW5yZXNvbHZlZC1zeW1ib2wAcHVzaC1zdGF0ZQBwb3Atc3RhdGUAcHJpbnQtbWVtb3J5LXVzYWdlAFJlcG9ydCB0YXJnZXQgbWVtb3J5IHVzYWdlAG9ycGhhbi1oYW5kbGluZwA9TU9ERQBuby1wcmludC1tYXAtZGlzY2FyZGVkAG5vLXByaW50LW1hcC1sb2NhbHMAbm8tY3RmLXZhcmlhYmxlcwBjdGYtc2hhcmUtdHlwZXM9PG1ldGhvZD4AYS5vdXQALi4vLi4vbGQvbGRtaXNjLmMAJTEwcwAlcEI6IGluIGZ1bmN0aW9uIGAlcFQnOgoAJXBCOgAlcFQAKCVwQSsweCV2KQBbJXNdACVzIGdlbmVyYXRlZAAlcyglcykAKCVzKSVzACVzKzB4JXYgKHR5cGUgJXMpACVzOiV1AG5vIHN5bWJvbAAlcAAlbGQAJWx1ACUlJWMAJXUlcwAvZGV2L251bGwATlVMAGNhbm5vdCBmaW5kIHNjcmlwdCBmaWxlICVzCgBvcGVuZWQgc2NyaXB0IGZpbGUgJXMKACVzOiAKAE1SSSBzdHlsZSBzY3JpcHQAKmRlZmF1bHQqAHNyZWMAJVA6IHVua25vd24gZm9ybWF0IHR5cGUgJXMKAFNBTkVfRVhQUgAlWCVQOiB1bmtub3duIGZlYXR1cmUgYCVzJwoAR05VIGxkIABmaWxsIHZhbHVlACVQOiBtdWx0aXBsZSBTVEFSVFVQIGZpbGVzCgAuLi8uLi9sZC9sZGxhbmcuYwBfX2xvYWRfc3RhcnRfJXMAX19sb2FkX3N0b3BfJXMAcHJvZ3JhbSBoZWFkZXIgdHlwZQBQVF9HTlVfRUhfRlJBTUUAUFRfR05VX1NUQUNLAFBUX0dOVV9SRUxSTwBQVF9HTlVfUFJPUEVSVFkARklMRUhEUgBQSERSUwBWRVJTSU9OIHNjcmlwdABsb2NhbABleHRlcm4Ac3ludGF4IGVycm9yAEVycm9yOiBkaXNjYXJkaW5nAEVycm9yOiBwb3BwaW5nAG1lbW9yeSBleGhhdXN0ZWQAQ2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQAQ2xlYW51cDogcG9wcGluZwAuLi8uLi9sZC9sZGxleC5sACBpbiBzY3JpcHQAIGluIGV4cHJlc3Npb24AL2xkc2NyaXB0cwAlUDogRU9GIGluIGNvbW1lbnQKACVYJVA6ICVzCgAuLi8uLi9sZC9sZGV4cC5jACVQOiVwUyAlJSBieSB6ZXJvCgAlUDolcFMgLyBieSB6ZXJvCgAlUDolczogaGFzaCBjcmVhdGlvbiBmYWlsZWQKAE5FWFRfU0VDVElPTgBNQVhQQUdFU0laRQBDT01NT05QQUdFU0laRQA/Kl0AJVA6IHdhcm5pbmc6IAAlWCVQOiBlcnJvcjogACVQOiVwUzogJXMgaW4gJXMKACVQOiVwUzogJXMKAFBUX05VTEwAUFRfTE9BRABQVF9EWU5BTUlDAFBUX0lOVEVSUABQVF9OT1RFAFBUX1NITElCAFBUX1BIRFIAUFRfVExTAEVMRl9QQUNLQUdFX01FVEFEQVRBACVwQiAAKCVwVCkKAC5jdGYALmV4cG9ydHMAClNldCAgICAgICAgICAgICAgICAgU3ltYm9sCgoAJUcKAF9fc3RhcnRfJXMAX19laGRyX3N0YXJ0AC5zdGFic3RyAENPTU1PTgAvRElTQ0FSRC8ALnN0YXJ0b2YuJXMAcGhkciBmbGFncwBwaGRyIGxvYWQgYWRkcmVzcwAlUDogY2FuJ3Qgc2V0IHN0YXJ0IGFkZHJlc3MKACVQOiB0YXJnZXQgJXMgbm90IGZvdW5kCgAlcEkKAEFMTAAlUDogY2Fubm90IGZpbmQgJXMgKCVzKTogJUUKACVQOiBjYW5ub3QgZmluZCAlczogJUUKACVQOiBjYW5ub3QgZmluZCAlcyBpbnNpZGUgJXMKAG1pc3NpbmctbGliAGF0dGVtcHQgdG8gb3BlbiAlcyBmYWlsZWQKAGF0dGVtcHQgdG8gb3BlbiAlcyBzdWNjZWVkZWQKACVQOiBpbnZhbGlkIEJGRCB0YXJnZXQgYCVzJwoALi4vLi4vbGQvbGRtYWluLmMAOyAlRDogZmlyc3QgZGVmaW5lZCBoZXJlACVQOiAlcEI6IHJlZmVyZW5jZSB0byAlcwoAJVA6ICVwQjogZGVmaW5pdGlvbiBvZiAlcwoAJVglUDogY3JlZiBhbGxvYyBmYWlsZWQ6ICVFCgAubm90ZS5nbnUuYnVpbGQtaWQALm5vdGUucGFja2FnZQAubm90ZS5HTlUtc3RhY2sALmVoX2ZyYW1lX2VudHJ5AC5laF9mcmFtZQAuZWhfZnJhbWVfaGRyACAoc3ltYm9sIGZyb20gcGx1Z2luKQAlcyBuZWVkZWQgYnkgJXBCCgBMRF9MSUJSQVJZX1BBVEgATERfUlVOX1BBVEgAL2V0Yy9sZC5zby5jb25mAC91c3IALmdudS5saW5rb25jZS50LgAlcy9saWIlcyVzLnNvAC4uLy4uL2xkL2xkZWxmLmMAbWQ1AHV1aWQAJVA6IGludmFsaWQgZGF0YSBzdGF0ZW1lbnQKACVQOiBpbnZhbGlkIHJlbG9jIHN0YXRlbWVudAoAZW5kAApBbGxvY2F0aW5nIGNvbW1vbiBzeW1ib2xzCgAlKnMweCUtMTZzAHVzaW5nIG11bHRpcGxlIGdwIHZhbHVlcwAlUDogJUM6ICVzJXMKACVQOiAlcyVzCgAlUDogJXBCOiAlcyVzCgAlUDogJUg6ICVzJXMKAFdFQUtERUYAV0VBS1VOREVGAERFRkFVTFQAUFJPVEVDVEVEAElOVEVSTkFMAHVua25vd24gTFRPIGtpbmQgdmFsdWUgJXgAQ1RGIHdhcm5pbmcAQ1RGIGVycm9yACVzOiAlcwoALmluaXQALmZpbmkAU0hUX1BST0dCSVRTAFNIVF9TVFJUQUIAU0hUX05PVEUAU0hUX05PQklUUwBTSFRfSU5JVF9BUlJBWQBTSFRfRklOSV9BUlJBWQBTSFRfUFJFSU5JVF9BUlJBWQAqP1sAbGliNjQAUklHSU59AElCfQAlLipzJXMvJXMAJS4qcyVzAC5jdG9ycwAuZHRvcnMALmluaXRfYXJyYXkALmZpbmlfYXJyYXkAJVA6ICVzIG5vdCBmb3VuZCBmb3IgaW5zZXJ0CgBsaWJjLnNvACVQOiAlcEI6IGJmZF9zdGF0IGZhaWxlZDogJUUKAGZvdW5kICVzIGF0ICVzCgAuc28uAC5yZWxhLmR5bgAucmVsLmR5bgAubWJpbmQuYnNzAC5tYmluZC5kYXRhAC5tYmluZC5yb2RhdGEALm1iaW5kLnRleHQALnJlbAAuZ251Lndhcm5pbmcuAC5ub3RlAC5wbHQALnRkYXRhAC5pbnRlcnAALnNkYXRhAC5jb21tZW50AFVOS05PV04AUFJFVkFJTElOR19ERUYAUFJFVkFJTElOR19ERUZfSVJPTkxZAFBSRUVNUFRFRF9SRUcAUFJFRU1QVEVEX0lSAFJFU09MVkVEX0lSAFJFU09MVkVEX0VYRUMAUkVTT0xWRURfRFlOAFBSRVZBSUxJTkdfREVGX0lST05MWV9FWFAALmdudS53YXJuaW5nAGxvYWQgYmFzZQAlUDogY2FuJ3QgcmVsYXggc2VjdGlvbjogJUUKAHN1YnNlY3Rpb24gYWxpZ25tZW50ACVQOiBsb29waW5nIGluIG1hcF9zZWdtZW50cwoALi4vLi4vbGQvbGR3cml0ZS5jAGluY2x1ZGUAMHglcyAlVyAlcEIKACVXIChzaXplIGJlZm9yZSByZWxheGluZykKAChudWxsKQAweCVWICAgICAgICAobG9jYWwpICVzCgAvZGV2L3VyYW5kb20AQllURQBTSE9SVABMT05HAFNRVUFEAFt1bnJlc29sdmVkXQAqdW5kZWYqAFshcHJvdmlkZV0AQkVGT1JFAEFGVEVSAEZhaWwgd2l0aCAlZAoAIFNPUlQgKENPTlNUUlVDVE9SUykKACBDT05TVFJVQ1RPUlMKAEVYQ0xVREVfRklMRSglcwApIABTT1JUX0JZX05BTUUoAFJFVkVSU0UoAFNPUlRfQllfQUxJR05NRU5UKABTT1JUX05PTkUoAFNPUlRfQllfSU5JVF9QUklPUklUWSgAQWRkcmVzcyBvZiBzZWN0aW9uICVzIHNldCB0byAAIENSRUFURV9PQkpFQ1RfU1lNQk9MUwoAIEZJTEwgbWFzayAweAAlMDJ4ADB4JVYgJVcgJXMgMHgldgAweCVWICVXIFJFTE9DICVzIAAlcysAICpmaWxsKgAweCVWICVXIAAKJXMAMHglViAlVwAgbG9hZCBhZGRyZXNzIDB4JVYAJS0zNHMAVEFSR0VUKCVzKQoAT1VUUFVUKCVzAExPQUQgJXMKAFNUQVJUIEdST1VQCgBFTkQgR1JPVVAKAElOU0VSVCAlcyAlcwoAMHglViAgIAAgICAgICAgICAgICAgJXBUCgAgJTEwbHUgQgAlMTBsdSBHQgAlMTBsdSBNQgAlMTBsdSBLQgB1bmRlZmluZWQtc3ltYm9sACVYAE5VTEwgVFJFRQoAJXMrMHgldgBQUk9WSURFICglcyA9IAAgKCIAIiwgAEFTU0VSVCAoACwgJXMpACAoJXMpADxjb2RlICVkPgAlWCVIOgArJXYAZWxmMzItYmlnAGVsZjY0LWJpZwBlbGYzMi1saXR0bGUAZWxmNjQtbGl0dGxlACVwUyBTWVNMSUIgaWdub3JlZAoAJXBTIEhMTCBpZ25vcmVkCgBTdGFjayBub3cAICVkACVzOiBmaWxlIG5vdCByZWNvZ25pemVkOiAlRQoAXCUwM28AJVA6IGludGVybmFsIGVycm9yICVzICVkCgAlUDogcGxlYXNlIHJlcG9ydCB0aGlzIGJ1ZwoAcGUteDg2LTY0AGVpMzg2cGVwLmMAYS5leGUAX19fSW1hZ2VCYXNlAF9faW1hZ2VfYmFzZV9fACVQOiBjYW5ub3Qgb3BlbiBiYXNlIGZpbGUgJXMKAF9fc2l6ZV9vZl9oZWFwX2NvbW1pdF9fAF9fc2l6ZV9vZl9oZWFwX3Jlc2VydmVfXwBfX3NpemVfb2Zfc3RhY2tfY29tbWl0X18AX19zaXplX29mX3N0YWNrX3Jlc2VydmVfXwBfX21ham9yX3N1YnN5c3RlbV92ZXJzaW9uX18AX19taW5vcl9zdWJzeXN0ZW1fdmVyc2lvbl9fAF9fc3Vic3lzdGVtX18AX19tYWpvcl9vc192ZXJzaW9uX18AX19taW5vcl9vc192ZXJzaW9uX18AX19tYWpvcl9pbWFnZV92ZXJzaW9uX18AX19taW5vcl9pbWFnZV92ZXJzaW9uX18AX19maWxlX2FsaWdubWVudF9fAF9fc2VjdGlvbl9hbGlnbm1lbnRfXwBfX2RsbF9fAF9fZGxsX2NoYXJhY3RlcmlzdGljc19fAEdMT0JBTF8ATnRQcm9jZXNzU3RhcnR1cABXaW5NYWluQ1JUU3RhcnR1cABtYWluQ1JUU3RhcnR1cABfX1Bvc2l4UHJvY2Vzc1N0YXJ0dXAAbmF0aXZlAHdpbmRvd3MAY29uc29sZQBwb3NpeAB3aW5jZQB4Ym94AF9fbG9hZGVyX2ZsYWdzX18AYmFzZS1maWxlAGZpbGUtYWxpZ25tZW50AG1ham9yLWltYWdlLXZlcnNpb24AbWFqb3Itb3MtdmVyc2lvbgBtYWpvci1zdWJzeXN0ZW0tdmVyc2lvbgBtaW5vci1pbWFnZS12ZXJzaW9uAG1pbm9yLW9zLXZlcnNpb24AbWlub3Itc3Vic3lzdGVtLXZlcnNpb24Ac2VjdGlvbi1hbGlnbm1lbnQAc3Vic3lzdGVtAHN1cHBvcnQtb2xkLWNvZGUAbm8tbGVhZGluZy11bmRlcnNjb3JlAG91dHB1dC1kZWYAZXhwb3J0LWFsbC1zeW1ib2xzAGV4Y2x1ZGUtYWxsLXN5bWJvbHMAZXhjbHVkZS1tb2R1bGVzLWZvci1pbXBsaWIAa2lsbC1hdABhZGQtc3RkY2FsbC1hbGlhcwBlbmFibGUtc3RkY2FsbC1maXh1cABkaXNhYmxlLXN0ZGNhbGwtZml4dXAAd2Fybi1kdXBsaWNhdGUtZXhwb3J0cwBjb21wYXQtaW1wbGliAGVuYWJsZS1hdXRvLWltYWdlLWJhc2UAZGlzYWJsZS1hdXRvLWltYWdlLWJhc2UAZGxsLXNlYXJjaC1wcmVmaXgAbm8tZGVmYXVsdC1leGNsdWRlcwBlbmFibGUtYXV0by1pbXBvcnQAZGlzYWJsZS1hdXRvLWltcG9ydABlbmFibGUtZXh0cmEtcGVwLWRlYnVnAGVuYWJsZS1ydW50aW1lLXBzZXVkby1yZWxvYwBkaXNhYmxlLXJ1bnRpbWUtcHNldWRvLXJlbG9jAGVuYWJsZS1sb25nLXNlY3Rpb24tbmFtZXMAZGlzYWJsZS1sb25nLXNlY3Rpb24tbmFtZXMAbm8taW5zZXJ0LXRpbWVzdGFtcABlbmFibGUtcmVsb2Mtc2VjdGlvbgBkaXNhYmxlLXJlbG9jLXNlY3Rpb24AZGlzYWJsZS1oaWdoLWVudHJvcHktdmEAZGlzYWJsZS1keW5hbWljYmFzZQBkaXNhYmxlLWZvcmNlaW50ZWcAZGlzYWJsZS1ueGNvbXBhdABkaXNhYmxlLW5vLWlzb2xhdGlvbgBkaXNhYmxlLW5vLXNlaABkaXNhYmxlLW5vLWJpbmQAZGlzYWJsZS13ZG1kcml2ZXIAZGlzYWJsZS10c2F3YXJlACs9AC09ACo9AC89ADw8PQA+Pj0AJj0AfD0AXj0AfHwAJiYAPT0AIT0APDwAPj4ATE9HMkNFSUwAQkxPQ0sAU0VDVElPTlMAU0laRU9GX0hFQURFUlMATUVNT1JZAERFRklORUQAU0VBUkNIX0RJUgBNQVAARU5UUlkATkVYVABBTElHTk9GAFNJWkVPRgBMT0FEQUREUgBBQlNPTFVURQBNQVgATUlOAEFTU0VSVABEQVRBX1NFR01FTlRfQUxJR04AREFUQV9TRUdNRU5UX1JFTFJPX0VORABEQVRBX1NFR01FTlRfRU5EAE9SSUdJTgBMRU5HVEgAU0VHTUVOVF9TVEFSVAArJXMKAF9fcGVpMzg2X3J1bnRpbWVfcmVsb2NhdG9yAGFyZWxlbnQ6ICVzQCUjbHg6IGFkZD0lbGkKACBwY3JlbAAgJWQgYml0IHJlbC4KACVzX25tdGglMDZkLm8ALmlkYXRhJDQAX19ubV90aG5rXwBfX25tXwAlc19mdSUwNmQubwAuaWRhdGEkMgBfaW5hbWUAJXNfcnRyJTA2ZC5vAC5yZGF0YV9ydW50aW1lX3BzZXVkb19yZWxvYwAlc19lcnRyJTA2ZC5vAC5yZGF0YQAuZGVidWdfAHJlbDogJXMKAENyZWF0aW5nIGxpYnJhcnkgZmlsZTogJXMKACVYJVA6IGJmZF9vcGVuciAlczogJUUKACVYJVA6IGJmZF9jbG9zZSAlczogJUUKAExJQlJBUlkgAE5BTUUgACBCQVNFPTB4JWx4AERFU0NSSVBUSU9OIABWRVJTSU9OICVkLiVkCgBWRVJTSU9OICVkCgBTVEFDS1NJWkUgMHgleCwweCV4CgBTVEFDS1NJWkUgMHgleAoASEVBUFNJWkUgMHgleCwweCV4CgBIRUFQU0laRSAweCV4CgAKU0VDVElPTlMKCgAgICAgACBDTEFTUyAAIFJFQUQAIFdSSVRFACBFWEVDVVRFACBTSEFSRUQARVhQT1JUUwoAIEAlZAAgUFJJVkFURQAgQ09OU1RBTlQAIE5PTkFNRQAgREFUQQAKSU1QT1JUUwoKACA9PSAAOyBubyBjb250ZW50cyBhdmFpbGFibGUKAC5pZGF0YQAuaWRhdGEkAF9faGVhZF8AJXMoKQoALSVzCgAqJXMKAC5idWlsZGlkACVzOiVzCgAtPiVzCgAuZHJlY3R2ZQAlcy4lYwAoZGF0YSkAJVglUDogb3BlbiAlczogJUUKACVzIGlzIGFscmVhZHkgbG9hZGVkCgBwZS1pMzg2AGVpMzg2cGUuYwBEbGxNYWluQ1JUU3RhcnR1cEAxMgB0aHVtYi1lbnRyeQBlbmFibGUtZXh0cmEtcGUtZGVidWcAZGlzYWJsZS1sYXJnZS1hZGRyZXNzLWF3YXJlAGxpYiVzLmRsbC5hAGxpYiVzLmEAbGliJXMubGliACVzJXMuZGxsAGxpYiVzLmRsbABsZHNjcmlwdHMvaTM4NnBlLnh1AGxkc2NyaXB0cy9pMzg2cGUueHIAbGRzY3JpcHRzL2kzODZwZS54Ym4AbGRzY3JpcHRzL2kzODZwZS54bgBsZHNjcmlwdHMvaTM4NnBlLnhhAGxkc2NyaXB0cy9pMzg2cGUueAA8dW5rbm93bi1maWxlPgAlUDogJXM6JWQ6ICVzCgAlcy4lcwBMSUJSQVJZAC4uLy4uL2xkL3BlLWRsbC5jAGRsbCBzdHVmZgAlUDogY2FuIG5vdCBjcmVhdGUgQkZEOiAlRQoALmVkYXRhAC5yZWxvYwAkOi1fP0AAJDotXz8vQDw+AENPREUAQkFTRQBjb25zdGFudABERVNDUklQVElPTgBESVJFQ1RJVkUARVhDTFVERV9TWU1CT0xTAEVYUE9SVFMASEVBUFNJWkUASU1QT1JUUwBub25hbWUAcHJpdmF0ZQBTVEFDS1NJWkUAJXMuJXMlcwAlc19kJTA2ZC5vAC5pZGF0YSQ1AC5pZGF0YSQ3AC5pZGF0YSQ2AF9fX2ltcF8AX19mdSVkXwBAZmVhdC4wMABfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUgBEbGxNYWluAF9EbGxNYWluQ1JUU3RhcnR1cABkb19wc2V1ZG9fcmVsb2MAY3lnd2luX2NydDAARGxsTWFpbkAxMgBEbGxFbnRyeVBvaW50QDAAX2N5Z3dpbl9kbGxfZW50cnlAMTIAX2N5Z3dpbl9jcnQwX2NvbW1vbkA4AGN5Z3dpbl9hdHRhY2hfZGxsAGN5Z3dpbl9wcmVtYWluMABjeWd3aW5fcHJlbWFpbjEAY3lnd2luX3ByZW1haW4yAGN5Z3dpbl9wcmVtYWluMwBfaW1wdXJlX3B0cgBfZm1vZGUAZW52aXJvbgBfX2Rzb19oYW5kbGUARGxsRW50cnlQb2ludABfY3lnd2luX2RsbF9lbnRyeQBfY3lnd2luX2NydDBfY29tbW9uAF9jeWd3aW5fbm9uY3lnd2luX2RsbF9lbnRyeQBfTlVMTF9USFVOS19EQVRBAF9fcnR0aV8AX19idWlsdGluXwBfSU1QT1JUX0RFU0NSSVBUT1JfAGRsbGNydDEubwBkbGxjcnQyLm8AZ2NydDAubwBnY3J0MS5vAGdjcnQyLm8AY3J0YmVnaW4ubwBjcnRlbmQubwBsaWJjZWdjYwBsaWJjeWd3aW4AbGliZ2NjAGxpYmdjY19zAGxpYnN0ZGMrKwBsaWJtaW5ndzMyAGxpYm1pbmd3ZXgAbGliZzJjAGxpYnN1cGMrKwBsaWJvYmpjAGxpYmdjagBsaWJtc3ZjcnQAbGlibXN2Y3J0LW9zAGxpYnVjcnQAbGlidWNydGJhc2UAcGUtYmlnb2JqLWkzODYAcGVpLXNobABwZS1zaGwAcGVpLW1pcHMAcGUtbWlwcwBwZWktYXJtLWxpdHRsZQBwZS1hcm0tbGl0dGxlAHBlaS1hcm0td2luY2UtbGl0dGxlAHBlLWFybS13aW5jZS1saXR0bGUAcGVpLWFhcmNoNjQtbGl0dGxlAHBlLWFhcmNoNjQtbGl0dGxlAHBlLWJpZ29iai14ODYtNjQALWhlYXAALWF0dHIALWV4cG9ydAAtYWxpZ25jb21tAC1leGNsdWRlLXN5bWJvbHMAU0VHTUVOVFMAcG9zaXhfc3Bhd25hdHRyX2luaXQAcG9zaXhfc3Bhd25hdHRyX3NldGZsYWdzAHBvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19pbml0AHBvc2l4X3NwYXducABwb3NpeF9zcGF3bgBjbG9zZQB3YWl0ACVYJVA6IGFkZCBzeW1ib2xzICVzOiAlRQoAb3BlbiB0ZW1wb3Jhcnkgb3V0cHV0IGZpbGUAcGV4X2dldF9zdGF0dXMgZmFpbGVkAGVycm9yIGhhbmRsaW5nIHNjcmlwdABUTVBESVIAVE1QAFRFTVAAL3RtcABYWFhYWFgAdG9rZW4AbnRlcm0AJXMgJXMgKAAiZW5kIG9mIGZpbGUiACJpbnZhbGlkIHRva2VuIgBJTlQATE5BTUUAUExVU0VRAE1JTlVTRVEATVVMVEVRAERJVkVRACc9JwBMU0hJRlRFUQBSU0hJRlRFUQBBTkRFUQBYT1JFUQAnPycAJzonAE9ST1IAQU5EQU5EACd8JwAnXicAJyYnACc8JwAnPicAR0UATFNISUZUAFJTSElGVAAnKycAJy0nACcqJwAnLycAJyUnAFVOQVJZACcoJwBBTElHTl9LAEJJTkQAQVNDSVoASU5TRVJUX0sATElOS0VSX1ZFUlNJT04AU09SVF9CWV9OQU1FAFNPUlRfQllfQUxJR05NRU5UAFNPUlRfTk9ORQBTT1JUX0JZX0lOSVRfUFJJT1JJVFkAUkVWRVJTRQAneycAJ30nAE9VVFBVVF9GT1JNQVQARk9SQ0VfQ09NTU9OX0FMTE9DQVRJT04AT1VUUFVUX0FSQ0gASU5ISUJJVF9DT01NT05fQUxMT0NBVElPTgBGT1JDRV9HUk9VUF9BTExPQ0FUSU9OAElOQ0xVREUAUkVHSU9OX0FMSUFTAExEX0ZFQVRVUkUATk9MT0FEAERTRUNUAENPUFkASU5GTwBPVkVSTEFZAFJFQURPTkxZAFRZUEUAVEFSR0VUX0sATUFYX0sATUlOX0sAU1RBUlRVUABITEwAU1lTTElCAE5PRkxPQVQATk9DUk9TU1JFRlMATk9DUk9TU1JFRlNfVE8ARklMTABDUkVBVEVfT0JKRUNUX1NZTUJPTFMAR1JPVVAAT1VUUFVUAENPTlNUUlVDVE9SUwBBTElHTk1PRABTVUJBTElHTgBQUk9WSURFAFBST1ZJREVfSElEREVOAEFTX05FRURFRABDSElQAE5FV0xJTkUARU5EV09SRABPUkRFUgBOQU1FV09SRABBU1NFUlRfSwBQVUJMSUMAREVGU1lNRU5EAFRSVU5DQVRFAFJFTABJTlBVVF9TQ1JJUFQASU5QVVRfTVJJX1NDUklQVABJTlBVVF9ERUZTWU0AQ0FTRQBFWFRFUk4AVkVSU19UQUcAVkVSU19JREVOVElGSUVSAEdMT0JBTABMT0NBTABWRVJTSU9OSwBJTlBVVF9WRVJTSU9OX1NDUklQVABLRUVQAE9OTFlfSUZfUk8AT05MWV9JRl9SVwBTUEVDSUFMAElOUFVUX1NFQ1RJT05fRkxBR1MAQUxJR05fV0lUSF9JTlBVVABFWENMVURFX0ZJTEUASU5QVVRfRFlOQU1JQ19MSVNUACcsJwAnOycAJyknACdbJwAnXScAJyEnACd+JwAkYWNjZXB0AGZpbGVuYW1lAGRlZnN5bV9leHByACRAMQBtcmlfc2NyaXB0X2ZpbGUAJEAyAG1yaV9zY3JpcHRfbGluZXMAbXJpX3NjcmlwdF9jb21tYW5kACRAMwBvcmRlcm5hbWVsaXN0AG1yaV9sb2FkX25hbWVfbGlzdABtcmlfYWJzX25hbWVfbGlzdABjYXNlc3ltbGlzdABleHRlcm5fbmFtZV9saXN0ACRANABpZmlsZV9saXN0AGlmaWxlX3AxACRANQAkQDYAJEA3AGlucHV0X2xpc3QAJEA4AGlucHV0X2xpc3QxAEA5AEAxMABAMTEAc2VjX29yX2dyb3VwX3AxAHN0YXRlbWVudF9hbnl3aGVyZQAkQDEyAHdpbGRjYXJkX25hbWUAd2lsZGNhcmRfbWF5YmVfZXhjbHVkZQB3aWxkY2FyZF9tYXliZV9yZXZlcnNlAGZpbGVuYW1lX3NwZWMAc2VjdGlvbl9uYW1lX3NwZWMAc2VjdF9mbGFnX2xpc3QAc2VjdF9mbGFncwBleGNsdWRlX25hbWVfbGlzdABzZWN0aW9uX25hbWVfbGlzdABpbnB1dF9zZWN0aW9uX3NwZWNfbm9fa2VlcABpbnB1dF9zZWN0aW9uX3NwZWMAJEAxMwBzdGF0ZW1lbnQAJEAxNAAkQDE1AHN0YXRlbWVudF9saXN0AHN0YXRlbWVudF9saXN0X29wdABsZW5ndGgAZmlsbF9leHAAZmlsbF9vcHQAYXNzaWduX29wAHNlcGFyYXRvcgBhc3NpZ25tZW50AG9wdF9jb21tYQBtZW1vcnlfc3BlY19saXN0X29wdABtZW1vcnlfc3BlY19saXN0AG1lbW9yeV9zcGVjACRAMTYAJEAxNwBvcmlnaW5fc3BlYwBsZW5ndGhfc3BlYwBhdHRyaWJ1dGVzX29wdABhdHRyaWJ1dGVzX2xpc3QAYXR0cmlidXRlc19zdHJpbmcAc3RhcnR1cABoaWdoX2xldmVsX2xpYnJhcnkAaGlnaF9sZXZlbF9saWJyYXJ5X05BTUVfbGlzdABsb3dfbGV2ZWxfbGlicmFyeQBsb3dfbGV2ZWxfbGlicmFyeV9OQU1FX2xpc3QAZmxvYXRpbmdfcG9pbnRfc3VwcG9ydABub2Nyb3NzcmVmX2xpc3QAcGFyZW5fc2NyaXB0X25hbWUAJEAxOABtdXN0YmVfZXhwACRAMTkAJEAyMAAkQDIxAG1lbXNwZWNfYXRfb3B0AG9wdF9hdABvcHRfYWxpZ24Ab3B0X2FsaWduX3dpdGhfaW5wdXQAb3B0X3N1YmFsaWduAHNlY3RfY29uc3RyYWludAAkQDIyACRAMjMAJEAyNAAkQDI1ACRAMjYAJEAyNwAkQDI4ACRAMjkAJEAzMAAkQDMxACRAMzIAYXR5cGUAb3B0X2V4cF93aXRoX3R5cGUAb3B0X2V4cF93aXRob3V0X3R5cGUAb3B0X25vY3Jvc3NyZWZzAG1lbXNwZWNfb3B0AHBoZHJfb3B0AG92ZXJsYXlfc2VjdGlvbgAkQDMzACRAMzQAJEAzNQBwaGRycwBwaGRyX2xpc3QAcGhkcgAkQDM2ACRAMzcAcGhkcl90eXBlAHBoZHJfcXVhbGlmaWVycwBwaGRyX3ZhbABkeW5hbWljX2xpc3RfZmlsZQAkQDM4AGR5bmFtaWNfbGlzdF9ub2RlcwBkeW5hbWljX2xpc3Rfbm9kZQBkeW5hbWljX2xpc3RfdGFnAHZlcnNpb25fc2NyaXB0X2ZpbGUAJEAzOQAkQDQwAHZlcnNfbm9kZXMAdmVyc19ub2RlAHZlcmRlcAB2ZXJzX3RhZwB2ZXJzX2RlZm5zAEA0MQBANDIAb3B0X3NlbWljb2xvbgAAAAAAAAAlczogZXJyb3I6IHRvbyBtYW55IEAtZmlsZXMgZW5jb3VudGVyZWQKAAAAAAAAAAAlczogZXJyb3I6IEAtZmlsZSByZWZlcnMgdG8gYSBkaXJlY3RvcnkKAAAAAAAAAAAlUDogZmF0YWwgZXJyb3I6IGxpYmJmZCBBQkkgbWlzbWF0Y2gKAAAAJVglUDogY2FuJ3Qgc2V0IEJGRCBkZWZhdWx0IHRhcmdldCB0byBgJXMnOiAlRQoAJVA6IHVucmVjb2duaXNlZCBlbXVsYXRpb24gbW9kZTogJXMKAAAAACVQOiBjYW4gbm90IGNyZWF0ZSBoYXNoIHRhYmxlOiAlRQoAAAAAAAAlUDogJXM6IGVycm9yIGxvYWRpbmcgcGx1Z2luOiAlcwoAAAAAAAAACj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgAAAAAlUDogLS1uby1kZWZpbmUtY29tbW9uIG1heSBub3QgYmUgdXNlZCB3aXRob3V0IC1zaGFyZWQKACVQOiBjYW5ub3Qgb3BlbiBtYXAgZmlsZSAlczogJUUKAAAAAAAAAAAlUDogY2Fubm90IGNyZWF0ZSBzcGxpdCBzZWN0aW9uIG5hbWUgZm9yICVzCgAAAAAKVGhlcmUgYXJlIG5vIGRpc2NhcmRlZCBpbnB1dCBzZWN0aW9ucwoACkxpbmtlciBzY3JpcHQgYW5kIG1lbW9yeSBtYXAKCgAlUDogc3ltYm9sIGAlcFQnIG1pc3NpbmcgZnJvbSBtYWluIGhhc2ggdGFibGUKAAAlUDogJXBCOiBjb3VsZCBub3QgcmVhZCBzeW1ib2xzOiAlRQoAAAAATWVtb3J5IHJlZ2lvbiAgICAgICAgIFVzZWQgU2l6ZSAgUmVnaW9uIFNpemUgICUlYWdlIFVzZWQKAAAAAAAAACVQOiBjYW5ub3Qgb3BlbiBkZXBlbmRlbmN5IGZpbGUgJXM6ICVFCgAlUDogbGluayBlcnJvcnMgZm91bmQsIGRlbGV0aW5nIGV4ZWN1dGFibGUgYCVzJwoAAAAAAAAAACVQOiAlczogZmluYWwgY2xvc2UgZmFpbGVkOiAlRQoAJVA6IHVuYWJsZSB0byBvcGVuIGZvciBzb3VyY2Ugb2YgY29weSBgJXMnCgAAAAAAJVA6IHVuYWJsZSB0byBvcGVuIGZvciBkZXN0aW5hdGlvbiBvZiBjb3B5IGAlcycKAAAAAAAAAAAlczogdG90YWwgdGltZSBpbiBsaW5rOiAlbGQuJTA2bGQKAAAAAAAAcmVtYXAgaW5wdXQgZmlsZSAnJXMnIHRvICclcycgYmFzZWQgdXBvbiBwYXR0ZXJuICclcycKAAByZW1vdmUgaW5wdXQgZmlsZSAnJXMnIGJhc2VkIHVwb24gcGF0dGVybiAnJXMnCgByZW1hcCBpbnB1dCBmaWxlICclcycgdG8gJyVzJwoAACVQOiBmYWlsZWQgY3JlYXRpbmcgc2VjdGlvbiBgJXMnOiAlRQoAAAAlUDogY2Fubm90IHJlcHJlc2VudCBtYWNoaW5lIGAlcycKAAAAAAAAJVA6IEVycm9yOiB1bmFibGUgdG8gZGlzYW1iaWd1YXRlOiAlcyAoZGlkIHlvdSBtZWFuIC0lcyA/KQoAAAAAACVQOiBXYXJuaW5nOiBncm91cGVkIHNob3J0IGNvbW1hbmQgbGluZSBvcHRpb25zIGFyZSBkZXByZWNhdGVkOiAlcwoAAAAAACVQOiB1c2UgdGhlIC0taGVscCBvcHRpb24gZm9yIHVzYWdlIGluZm9ybWF0aW9uCgAAAAAAAAAAJVA6IHVucmVjb2duaXplZCAtYSBvcHRpb24gYCVzJwoAAAAAAAAAACVQOiB1bnJlY29nbml6ZWQgLWFzc2VydCBvcHRpb24gYCVzJwoAAAAlUDogdW5rbm93biBkZW1hbmdsaW5nIHN0eWxlIGAlcycKAAAAAAAAJXM6IGVtdWxhdGlvbiBzcGVjaWZpYyBvcHRpb25zOgoAAAAAAAAAACAgLS1sZC1nZW5lcmF0ZWQtdW53aW5kLWluZm8gIEdlbmVyYXRlIGV4Y2VwdGlvbiBoYW5kbGluZyBpbmZvIGZvciBQTFQKACAgLS1uby1sZC1nZW5lcmF0ZWQtdW53aW5kLWluZm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9uJ3QgZ2VuZXJhdGUgZXhjZXB0aW9uIGhhbmRsaW5nIGluZm8gZm9yIFBMVAoAAAAgIC0tYnVpbGQtaWRbPVNUWUxFXSAgICAgICAgICBHZW5lcmF0ZSBidWlsZCBJRCBub3RlCgAAACAgLS1wYWNrYWdlLW1ldGFkYXRhWz1KU09OXSAgIEdlbmVyYXRlIHBhY2thZ2UgbWV0YWRhdGEgbm90ZQoAAAAgIC0tY29tcHJlc3MtZGVidWctc2VjdGlvbnM9W25vbmV8emxpYnx6bGliLWdudXx6bGliLWdhYml8enN0ZF0KCQkJICAgICAgQ29tcHJlc3MgRFdBUkYgZGVidWcgc2VjdGlvbnMKACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdDogJXMKAAAAACAgLXogY29tbW9uLXBhZ2Utc2l6ZT1TSVpFICAgIFNldCBjb21tb24gcGFnZSBzaXplIHRvIFNJWkUKAAAAAAAgIC16IG1heC1wYWdlLXNpemU9U0laRSAgICAgICBTZXQgbWF4aW11bSBwYWdlIHNpemUgdG8gU0laRQoAAAAAICAteiBkZWZzICAgICAgICAgICAgICAgICAgICAgUmVwb3J0IHVucmVzb2x2ZWQgc3ltYm9scyBpbiBvYmplY3QgZmlsZXMKAAAAAAAAAAAgIC16IHVuZGVmcyAgICAgICAgICAgICAgICAgICBJZ25vcmUgdW5yZXNvbHZlZCBzeW1ib2xzIGluIG9iamVjdCBmaWxlcwoAAAAAAAAAACAgLXogbXVsZGVmcyAgICAgICAgICAgICAgICAgIEFsbG93IG11bHRpcGxlIGRlZmluaXRpb25zCgAAAAAAAAAgIC16IHN0YWNrLXNpemU9U0laRSAgICAgICAgICBTZXQgc2l6ZSBvZiBzdGFjayBzZWdtZW50CgAAAAAAAAAAICAteiBleGVjc3RhY2sgICAgICAgICAgICAgICAgTWFyayBleGVjdXRhYmxlIGFzIHJlcXVpcmluZyBleGVjdXRhYmxlIHN0YWNrCgAAAAAgIC16IG5vZXhlY3N0YWNrICAgICAgICAgICAgICBNYXJrIGV4ZWN1dGFibGUgYXMgbm90IHJlcXVpcmluZyBleGVjdXRhYmxlIHN0YWNrCgAAAAAAAAAAICAtLXdhcm4tZXhlY3N0YWNrLW9iamVjdHMgICAgR2VuZXJhdGUgYSB3YXJuaW5nIGlmIGFuIG9iamVjdCBmaWxlIHJlcXVlc3RzIGFuIGV4ZWN1dGFibGUgc3RhY2sKAAAAAAAAAAAgIC0td2Fybi1leGVjc3RhY2sgICAgICAgICAgICBHZW5lcmF0ZSBhIHdhcm5pbmcgaWYgY3JlYXRpbmcgYW4gZXhlY3V0YWJsZSBzdGFjayAoZGVmYXVsdCkKAAAAAAAgIC0tbm8td2Fybi1leGVjc3RhY2sgICAgICAgICBEbyBub3QgZ2VuZXJhdGUgYSB3YXJuaW5nIGlmIGNyZWF0aW5nIGFuIGV4ZWN1dGFibGUgc3RhY2sKAAAAAAAAAAAgIC0tZXJyb3ItZXhlY3N0YWNrICAgICAgICAgICBUdXJuIHdhcm5pbmdzIGFib3V0IGV4ZWN1dGFibGUgc3RhY2tzIGludG8gZXJyb3JzCgAAAAAAAAAAICAtLW5vLWVycm9yLWV4ZWNzdGFjayAgICAgICAgIERvIG5vdCB0dXJuIHdhcm5pbmdzIGFib3V0IGV4ZWN1dGFibGUgc3RhY2tzIGludG8gZXJyb3JzCgAAAAAAAAAAICAtLXdhcm4tcnd4LXNlZ21lbnRzICAgICAgICAgR2VuZXJhdGUgYSB3YXJuaW5nIGlmIGEgTE9BRCBzZWdtZW50IGhhcyBSV1ggcGVybWlzc2lvbnMgKGRlZmF1bHQpCgAAAAAAAAAgIC0tbm8td2Fybi1yd3gtc2VnbWVudHMgICAgICBEbyBub3QgZ2VuZXJhdGUgYSB3YXJuaW5nIGlmIGEgTE9BRCBzZWdtZW50cyBoYXMgUldYIHBlcm1pc3Npb25zCgAgIC0tZXJyb3Itcnd4LXNlZ21lbnRzICAgICAgICBUdXJuIHdhcm5pbmdzIGFib3V0IGxvYWRhYmxlIFJXWCBzZWdtZW50cyBpbnRvIGVycm9ycwoAAAAAICAtLW5vLWVycm9yLXJ3eC1zZWdtZW50cyAgICAgRG8gbm90IHR1cm4gd2FybmluZ3MgYWJvdXQgbG9hZGFibGUgUldYIHNlZ21lbnRzIGludG8gZXJyb3JzCgAAAAAAICAteiB1bmlxdWUtc3ltYm9sICAgICAgICAgICAgQXZvaWQgZHVwbGljYXRlZCBsb2NhbCBzeW1ib2wgbmFtZXMKAAAAAAAAICAteiBub3VuaXF1ZS1zeW1ib2wgICAgICAgICAgS2VlcCBkdXBsaWNhdGVkIGxvY2FsIHN5bWJvbCBuYW1lcyAoZGVmYXVsdCkKAAAAAAAgIC16IGdsb2JhbGF1ZGl0ICAgICAgICAgICAgICBNYXJrIGV4ZWN1dGFibGUgcmVxdWlyaW5nIGdsb2JhbCBhdWRpdGluZwoAAAAAAAAAACAgLXogc3RhcnQtc3RvcC1nYyAgICAgICAgICAgIEVuYWJsZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gX19zdGFydC9fX3N0b3AKAAAAAAAAICAteiBub3N0YXJ0LXN0b3AtZ2MgICAgICAgICAgRG9uJ3QgZ2FyYmFnZSBjb2xsZWN0IF9fc3RhcnQvX19zdG9wIChkZWZhdWx0KQoAAAAgIC16IHN0YXJ0LXN0b3AtdmlzaWJpbGl0eT1WICBTZXQgdmlzaWJpbGl0eSBvZiBidWlsdC1pbiBfX3N0YXJ0L19fc3RvcCBzeW1ib2xzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gREVGQVVMVCwgUFJPVEVDVEVELCBISURERU4gb3IgSU5URVJOQUwKAAAAAAAAICAteiBzZWN0aW9uaGVhZGVyICAgICAgICAgICAgR2VuZXJhdGUgc2VjdGlvbiBoZWFkZXIgKGRlZmF1bHQpCgAAAAAAAAAAICAteiBub3NlY3Rpb25oZWFkZXIgICAgICAgICAgRG8gbm90IGdlbmVyYXRlIHNlY3Rpb24gaGVhZGVyCgAAACAgLS1hdWRpdD1BVURJVExJQiAgICAgICAgICAgIFNwZWNpZnkgYSBsaWJyYXJ5IHRvIHVzZSBmb3IgYXVkaXRpbmcKAAAAACAgLUJncm91cCAgICAgICAgICAgICAgICAgICAgIFNlbGVjdHMgZ3JvdXAgbmFtZSBsb29rdXAgcnVsZXMgZm9yIERTTwoAACAgLS1kaXNhYmxlLW5ldy1kdGFncyAgICAgICAgIERpc2FibGUgbmV3IGR5bmFtaWMgdGFncwoAICAtLWVuYWJsZS1uZXctZHRhZ3MgICAgICAgICAgRW5hYmxlIG5ldyBkeW5hbWljIHRhZ3MKAAAgIC0tZWgtZnJhbWUtaGRyICAgICAgICAgICAgICBDcmVhdGUgLmVoX2ZyYW1lX2hkciBzZWN0aW9uCgAAAAAAICAtLW5vLWVoLWZyYW1lLWhkciAgICAgICAgICAgRG8gbm90IGNyZWF0ZSAuZWhfZnJhbWVfaGRyIHNlY3Rpb24KAAAAAAAAICAtLWV4Y2x1ZGUtbGlicz1MSUJTICAgICAgICAgTWFrZSBhbGwgc3ltYm9scyBpbiBMSUJTIGhpZGRlbgoAACAgLS1oYXNoLXN0eWxlPVNUWUxFICAgICAgICAgIFNldCBoYXNoIHN0eWxlIHRvIHN5c3YvZ251L2JvdGguICBEZWZhdWx0OiAAAAAAAAAAICAtUCBBVURJVExJQiwgLS1kZXBhdWRpdD1BVURJVExJQgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5IGEgbGlicmFyeSB0byB1c2UgZm9yIGF1ZGl0aW5nIGRlcGVuZGVuY2llcwoAAAAAICAteiBjb21icmVsb2MgICAgICAgICAgICAgICAgTWVyZ2UgZHluYW1pYyByZWxvY3MgaW50byBvbmUgc2VjdGlvbiBhbmQgc29ydAoAAAAgIC16IG5vY29tYnJlbG9jICAgICAgICAgICAgICBEb24ndCBtZXJnZSBkeW5hbWljIHJlbG9jcyBpbnRvIG9uZSBzZWN0aW9uCgAAAAAAACAgLXogZ2xvYmFsICAgICAgICAgICAgICAgICAgIE1ha2Ugc3ltYm9scyBpbiBEU08gYXZhaWxhYmxlIGZvciBzdWJzZXF1ZW50bHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQgb2JqZWN0cwoAAAAAICAteiBpbml0Zmlyc3QgICAgICAgICAgICAgICAgTWFyayBEU08gdG8gYmUgaW5pdGlhbGl6ZWQgZmlyc3QgYXQgcnVudGltZQoAAAAAAAAgIC16IGludGVycG9zZSAgICAgICAgICAgICAgICBNYXJrIG9iamVjdCB0byBpbnRlcnBvc2UgYWxsIERTT3MgYnV0IGV4ZWN1dGFibGUKACAgLXogdW5pcXVlICAgICAgICAgICAgICAgICAgIE1hcmsgRFNPIHRvIGJlIGxvYWRlZCBhdCBtb3N0IG9uY2UgYnkgZGVmYXVsdCwgYW5kIG9ubHkgaW4gdGhlIG1haW4gbmFtZXNwYWNlCgAAAAAgIC16IG5vdW5pcXVlICAgICAgICAgICAgICAgICBEb24ndCBtYXJrIERTTyBhcyBhIGxvYWRhYmxlIGF0IG1vc3Qgb25jZQoAAAAAAAAAACAgLXogbGF6eSAgICAgICAgICAgICAgICAgICAgIE1hcmsgb2JqZWN0IGxhenkgcnVudGltZSBiaW5kaW5nIChkZWZhdWx0KQoAAAAAAAAAICAteiBsb2FkZmx0ciAgICAgICAgICAgICAgICAgTWFyayBvYmplY3QgcmVxdWlyaW5nIGltbWVkaWF0ZSBwcm9jZXNzCgAAICAteiBub2NvcHlyZWxvYyAgICAgICAgICAgICAgRG9uJ3QgY3JlYXRlIGNvcHkgcmVsb2NzCgAgIC16IG5vZGVmYXVsdGxpYiAgICAgICAgICAgICBNYXJrIG9iamVjdCBub3QgdG8gdXNlIGRlZmF1bHQgc2VhcmNoIHBhdGhzCgAAAAAAACAgLXogbm9kZWxldGUgICAgICAgICAgICAgICAgIE1hcmsgRFNPIG5vbi1kZWxldGFibGUgYXQgcnVudGltZQoAAAAAAAAAACAgLXogbm9kbG9wZW4gICAgICAgICAgICAgICAgIE1hcmsgRFNPIG5vdCBhdmFpbGFibGUgdG8gZGxvcGVuCgAgIC16IG5vZHVtcCAgICAgICAgICAgICAgICAgICBNYXJrIERTTyBub3QgYXZhaWxhYmxlIHRvIGRsZHVtcAoAICAteiBub3cgICAgICAgICAgICAgICAgICAgICAgTWFyayBvYmplY3Qgbm9uLWxhenkgcnVudGltZSBiaW5kaW5nCgAAAAAAICAteiBvcmlnaW4gICAgICAgICAgICAgICAgICAgTWFyayBvYmplY3QgcmVxdWlyaW5nIGltbWVkaWF0ZSAkT1JJR0lOCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZyBhdCBydW50aW1lCgAAAAAgIC16IHJlbHJvICAgICAgICAgICAgICAgICAgICBDcmVhdGUgUkVMUk8gcHJvZ3JhbSBoZWFkZXIgKGRlZmF1bHQpCgAAAAAgIC16IG5vcmVscm8gICAgICAgICAgICAgICAgICBEb24ndCBjcmVhdGUgUkVMUk8gcHJvZ3JhbSBoZWFkZXIKAAAAAAAAAAAgIC16IHNlcGFyYXRlLWNvZGUgICAgICAgICAgICBDcmVhdGUgc2VwYXJhdGUgY29kZSBwcm9ncmFtIGhlYWRlciAoZGVmYXVsdCkKAAAAACAgLXogbm9zZXBhcmF0ZS1jb2RlICAgICAgICAgIERvbid0IGNyZWF0ZSBzZXBhcmF0ZSBjb2RlIHByb2dyYW0gaGVhZGVyCgAAAAAAAAAAICAteiBjb21tb24gICAgICAgICAgICAgICAgICAgR2VuZXJhdGUgY29tbW9uIHN5bWJvbHMgd2l0aCBTVFRfQ09NTU9OIHR5cGUKAAAAAAAgIC16IG5vY29tbW9uICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBjb21tb24gc3ltYm9scyB3aXRoIFNUVF9PQkpFQ1QgdHlwZQoAAAAAACAgLXogdGV4dCAgICAgICAgICAgICAgICAgICAgIFRyZWF0IERUX1RFWFRSRUwgaW4gb3V0cHV0IGFzIGVycm9yIChkZWZhdWx0KQoAAAAAICAteiB0ZXh0ICAgICAgICAgICAgICAgICAgICAgVHJlYXQgRFRfVEVYVFJFTCBpbiBvdXRwdXQgYXMgZXJyb3IKAAAAAAAAICAteiBub3RleHQgICAgICAgICAgICAgICAgICAgRG9uJ3QgdHJlYXQgRFRfVEVYVFJFTCBpbiBvdXRwdXQgYXMgZXJyb3IgKGRlZmF1bHQpCgAAAAAAACAgLXogdGV4dG9mZiAgICAgICAgICAgICAgICAgIERvbid0IHRyZWF0IERUX1RFWFRSRUwgaW4gb3V0cHV0IGFzIGVycm9yIChkZWZhdWx0KQoAAAAAAAAgIC16IG5vdGV4dCAgICAgICAgICAgICAgICAgICBEb24ndCB0cmVhdCBEVF9URVhUUkVMIGluIG91dHB1dCBhcyBlcnJvcgoAAAAAAAAAACAgLXogdGV4dG9mZiAgICAgICAgICAgICAgICAgIERvbid0IHRyZWF0IERUX1RFWFRSRUwgaW4gb3V0cHV0IGFzIGVycm9yCgAAAAAAAAAAPGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvPgAAAAAAACVQOiBiYWQgLS11bnJlc29sdmVkLXN5bWJvbHMgb3B0aW9uOiAlcwoAAAAAAAAAACVQOiAtciBhbmQgJXMgbWF5IG5vdCBiZSB1c2VkIHRvZ2V0aGVyCgAlWCVQOiBlcnJvcjogZHVwbGljYXRlIHJldGFpbi1zeW1ib2xzLWZpbGUKAAAAAAAlUDogYmZkX2hhc2hfdGFibGVfaW5pdCBmYWlsZWQ6ICVFCgAAAAAAJVA6IGJmZF9oYXNoX2xvb2t1cCBmb3IgaW5zZXJ0aW9uIGZhaWxlZDogJUUKAAAAJVA6IGAtcmV0YWluLXN5bWJvbHMtZmlsZScgb3ZlcnJpZGVzIGAtcycgYW5kIGAtUycKAAAAAAAlUDogU09OQU1FIG11c3Qgbm90IGJlIGVtcHR5IHN0cmluZzsga2VlcGluZyBwcmV2aW91cyBvbmUKAAAAAAAAJVA6IGludmFsaWQgY29tbW9uIHNlY3Rpb24gc29ydGluZyBvcHRpb246ICVzCgAAJVA6IGludmFsaWQgc2VjdGlvbiBzb3J0aW5nIG9wdGlvbjogJXMKACVQOiBpbnZhbGlkIGFyZ3VtZW50IHRvIG9wdGlvbiAiLS1zZWN0aW9uLXN0YXJ0IgoAAAAAAAAAJVA6IG1pc3NpbmcgYXJndW1lbnQocykgdG8gb3B0aW9uICItLXNlY3Rpb24tc3RhcnQiCgAAAAAlUDogYmZkX2hhc2hfbG9va3VwIGZhaWxlZDogJUUKACVQOiBncm91cCBlbmRlZCBiZWZvcmUgaXQgYmVnYW4gKC0taGVscCBmb3IgdXNhZ2UpCgAAAAAAJVA6IG1hbGZvcm1lZCByZW1hcCBmaWxlIGVudHJ5OiAlcwoAAAAAACVQOiBpbnZhbGlkIGFyZ3VtZW50IHRvIG9wdGlvbiAtLXJlbWFwLWlucHV0cwoAACVQOiBpbnZhbGlkIGNhY2hlIG1lbW9yeSBzaXplOiAlcwoAAAAAAAAlWCVQOiAtLWhhc2gtc2l6ZSBuZWVkcyBhIG51bWVyaWMgYXJndW1lbnQKAAAAAAAlUDogbm8gc3RhdGUgcHVzaGVkIGJlZm9yZSBwb3BwaW5nCgAAAAAAJVA6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uICItLW9ycGhhbi1oYW5kbGluZyIKAAAAAAAlUDogYmFkIC0tY3RmLXNoYXJlLXR5cGVzIG9wdGlvbjogJXMKAAAAJVA6IG5vIGZpbGUvZGlyZWN0b3J5IG5hbWUgcHJvdmlkZWQgZm9yIG1hcCBvdXRwdXQ7IGlnbm9yZWQKAAAAACVQOiBjYW5ub3Qgc3RhdCBsaW5rZXIgbWFwIGZpbGU6ICVFCgAAAAAlUDogbGlua2VyIG1hcCBmaWxlIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZQoAAAAAAAAlUCVGOiBjYW5ub3QgY3JlYXRlIG5hbWUgZm9yIGxpbmtlciBtYXAgZmlsZTogJUUKAAAAAAAAACVQOiBTT05BTUUgbXVzdCBub3QgYmUgZW1wdHkgc3RyaW5nOyBpZ25vcmVkCgAAACVQOiBtaXNzaW5nIC0tZW5kLWdyb3VwOyBhZGRlZCBhcyBsYXN0IGNvbW1hbmQgbGluZSBvcHRpb24KAAAAAAAlUDogLXIgYW5kIC16IG5vc2VjdGlvbmhlYWRlciBtYXkgbm90IGJlIHVzZWQgdG9nZXRoZXIKACVQOiAtRiBtYXkgbm90IGJlIHVzZWQgd2l0aG91dCAtc2hhcmVkCgAlUDogLWYgbWF5IG5vdCBiZSB1c2VkIHdpdGhvdXQgLXNoYXJlZAoAJVA6IGZhaWxlZCB0byBhZGQgcmVtYXAgZmlsZSAlcwoAAAAAAAAAACVQOiBpbnZhbGlkIC0tY29tcHJlc3MtZGVidWctc2VjdGlvbnMgb3B0aW9uOiBgJXMnCgAAAAAAJVA6IGludmFsaWQgbWF4aW11bSBwYWdlIHNpemUgYCVzJwoAAAAAACVQOiBpbnZhbGlkIGNvbW1vbiBwYWdlIHNpemUgYCVzJwoAAAAAAABzdGFydC1zdG9wLXZpc2liaWxpdHk9aW50ZXJuYWwAAHN0YXJ0LXN0b3AtdmlzaWJpbGl0eT1wcm90ZWN0ZWQAJVA6IGludmFsaWQgdmlzaWJpbGl0eSBpbiBgLXogJXMnOyBtdXN0IGJlIGRlZmF1bHQsIGludGVybmFsLCBoaWRkZW4sIG9yIHByb3RlY3RlZAAAAAAAACVQOiBpbnZhbGlkIG51bWJlciBmb3IgLXogY2FsbC1ub3A9cHJlZml4LTogJXMKACVQOiBpbnZhbGlkIG51bWJlciBmb3IgLXogY2FsbC1ub3A9c3VmZml4LTogJXMKACVQOiB1bnN1cHBvcnRlZCBvcHRpb246IC16ICVzCgAAJVA6IGludmFsaWQgb3B0aW9uIGZvciAteiBjZXQtcmVwb3J0PTogJXMKAAAAAAAAJVA6IGludmFsaWQgeDg2LTY0IElTQSBsZXZlbDogJXMKAAAAAAAAACVQOiBpbnZhbGlkIG9wdGlvbiBmb3IgLXogbGFtLXU0OC1yZXBvcnQ9OiAlcwoAACVQOiBpbnZhbGlkIG9wdGlvbiBmb3IgLXogbGFtLXU1Ny1yZXBvcnQ9OiAlcwoAACVQOiBpbnZhbGlkIG9wdGlvbiBmb3IgLXogbGFtLXJlcG9ydD06ICVzCgAAAAAAAChHTlUgQmludXRpbHMgZm9yIFVidW50dSkgMi40MgAAQ29weXJpZ2h0IChDKSAyMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoAAAAAAABUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IG1heSByZWRpc3RyaWJ1dGUgaXQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgb3IgKGF0IHlvdXIgb3B0aW9uKSBhIGxhdGVyIHZlcnNpb24uClRoaXMgcHJvZ3JhbSBoYXMgYWJzb2x1dGVseSBubyB3YXJyYW50eS4KAAAAAAAAACVQOiAlczogZXJyb3IgaW4gcGx1Z2luIGNsZWFudXA6ICVkIChpZ25vcmVkKQoAACVQOiBlcnJvcjogbGlua2VyIHNjcmlwdCBmaWxlICclcycgYXBwZWFycyBtdWx0aXBsZSB0aW1lcwoAAAAAAAAlUDogaW5jbHVkZXMgbmVzdGVkIHRvbyBkZWVwbHkKACVQOiBjYW5ub3Qgb3BlbiBsaW5rZXIgc2NyaXB0IGZpbGUgJXM6ICVFCgAAAAAAACVYJVA6IHVua25vd24gbGFuZ3VhZ2UgYCVzJyBpbiB2ZXJzaW9uIGluZm9ybWF0aW9uCgAAAAAALyogU2NyaXB0IGZvciAtVXIgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgIDAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgIDAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAwIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgIDAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgMCA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAwOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAwOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgIDAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgMCA6IHsgKigucmVsYS50ZXh0KSB9CiAgLnJlbGEuZmluaSAgICAwIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgIDAgOiB7ICooLnJlbGEucm9kYXRhKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gMCA6IHsgKigucmVsYS5kYXRhLnJlbC5ybykgfQogIC5yZWxhLmRhdGEgICAgMCA6IHsgKigucmVsYS5kYXRhKSB9CiAgLnJlbGEudGRhdGEJMCA6IHsgKigucmVsYS50ZGF0YSkgfQogIC5yZWxhLnRic3MJMCA6IHsgKigucmVsYS50YnNzKSB9CiAgLnJlbGEuY3RvcnMgICAwIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAwIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAwIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgMCA6IHsgKigucmVsYS5ic3MpIH0KICAucmVsYS5sZGF0YSAgIDAgOiB7ICooLnJlbGEubGRhdGEpIH0KICAucmVsYS5sYnNzICAgIDAgOiB7ICooLnJlbGEubGJzcykgfQogIC5yZWxhLmxyb2RhdGEgMCA6IHsgKigucmVsYS5scm9kYXRhKSB9CiAgLnJlbGEuaWZ1bmMgICAwIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAwIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpIH0KLnBsdC5nb3QgICAgICAwIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgMCA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIC5yb2RhdGEgICAgICAgMCA6IHsgKigucm9kYXRhKSB9CiAgLnJvZGF0YTEgICAgICAwIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAwIDogeyAqKC5laF9mcmFtZV9oZHIpIH0KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSB9CiAgLnNmcmFtZSAgICAgICAwIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSkgfQogIC5nbnVfZXh0YWIgMCA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcykgfQogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSB9CiAgLnNmcmFtZSAgICAgICAwIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgfQogIC5nbnVfZXh0YWIgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUpIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMpIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJMCA6CiAgIHsKICAgICAqKC50ZGF0YSkKICAgfQogIC50YnNzCQkwIDogeyAqKC50YnNzKSB9CiAgLmpjciAgICAgICAgICAwIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmR5bmFtaWMgICAgICAwIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAwIDogeyAqKC5nb3QpIH0KICAuZ290LnBsdCAgICAgIDAgOiB7ICooLmdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgIDAgOgogIHsKICAgICooLmRhdGEpCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAwIDogeyAqKC5kYXRhMSkgfQogIC5ic3MgICAgICAgICAgMCA6CiAgewogICAqKC5ic3MpCiAgfQogIC5sYnNzIDAgOgogIHsKICAgICooLmxic3MpCiAgfQogIC5scm9kYXRhIDAgIDoKICB7CiAgICAqKC5scm9kYXRhKQogIH0KICAubGRhdGEgMCAgOgogIHsKICAgICooLmxkYXRhKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcykgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLXIgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgIDAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgIDAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAwIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgIDAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgMCA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAwOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAwOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgIDAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgMCA6IHsgKigucmVsYS50ZXh0KSB9CiAgLnJlbGEuZmluaSAgICAwIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgIDAgOiB7ICooLnJlbGEucm9kYXRhKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gMCA6IHsgKigucmVsYS5kYXRhLnJlbC5ybykgfQogIC5yZWxhLmRhdGEgICAgMCA6IHsgKigucmVsYS5kYXRhKSB9CiAgLnJlbGEudGRhdGEJMCA6IHsgKigucmVsYS50ZGF0YSkgfQogIC5yZWxhLnRic3MJMCA6IHsgKigucmVsYS50YnNzKSB9CiAgLnJlbGEuY3RvcnMgICAwIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAwIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAwIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgMCA6IHsgKigucmVsYS5ic3MpIH0KICAucmVsYS5sZGF0YSAgIDAgOiB7ICooLnJlbGEubGRhdGEpIH0KICAucmVsYS5sYnNzICAgIDAgOiB7ICooLnJlbGEubGJzcykgfQogIC5yZWxhLmxyb2RhdGEgMCA6IHsgKigucmVsYS5scm9kYXRhKSB9CiAgLnJlbGEuaWZ1bmMgICAwIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAwIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpIH0KLnBsdC5nb3QgICAgICAwIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgMCA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIC5yb2RhdGEgICAgICAgMCA6IHsgKigucm9kYXRhKSB9CiAgLnJvZGF0YTEgICAgICAwIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAwIDogeyAqKC5laF9mcmFtZV9oZHIpIH0KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSB9CiAgLnNmcmFtZSAgICAgICAwIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSkgfQogIC5nbnVfZXh0YWIgMCA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcykgfQogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSB9CiAgLnNmcmFtZSAgICAgICAwIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgfQogIC5nbnVfZXh0YWIgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUpIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMpIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJMCA6CiAgIHsKICAgICAqKC50ZGF0YSkKICAgfQogIC50YnNzCQkwIDogeyAqKC50YnNzKSB9CiAgLmpjciAgICAgICAgICAwIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmR5bmFtaWMgICAgICAwIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAwIDogeyAqKC5nb3QpIH0KICAuZ290LnBsdCAgICAgIDAgOiB7ICooLmdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgIDAgOgogIHsKICAgICooLmRhdGEpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguYnNzKQogIH0KICAubGJzcyAwIDoKICB7CiAgICAqKC5sYnNzKQogIH0KICAubHJvZGF0YSAwICA6CiAgewogICAgKigubHJvZGF0YSkKICB9CiAgLmxkYXRhIDAgIDoKICB7CiAgICAqKC5sZGF0YSkKICB9CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1OICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251NjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IC47CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAAAC8qIFNjcmlwdCBmb3IgLW4gKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnU2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZSAteiByZWxybyAteiBub3cgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnU2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IHJlbHJvIC16IG5vdyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudTY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IHNlcGFyYXRlLWNvZGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnU2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnU2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogc2VwYXJhdGUtY29kZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudTY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgICooLnJlbGEuaXBsdCkKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSByb2RhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInJvZGF0YS1zZWdtZW50IiwgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAC8qIFNjcmlwdCBmb3IgLXBpZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudTY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgICooLnJlbGEuaXBsdCkKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAvKiBTY3JpcHQgZm9yIC1zaGFyZWQgLXogY29tYnJlbG9jIC16IHNlcGFyYXRlLWNvZGUgLXogcmVscm8gLXogbm93ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251NjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBQUk9WSURFIChfZWRhdGEgPSAuKTsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBQUk9WSURFIChfX2Jzc19zdGFydCA9IC4pOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBQUk9WSURFIChfZW5kID0gLik7IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoALyogU2NyaXB0IGZvciAtc2hhcmVkIC16IGNvbWJyZWxvYyAteiByZWxybyAteiBub3cgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnU2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBQUk9WSURFIChfZWRhdGEgPSAuKTsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBQUk9WSURFIChfX2Jzc19zdGFydCA9IC4pOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBQUk9WSURFIChfZW5kID0gLik7IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoALyogU2NyaXB0IGZvciAtc2hhcmVkIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251NjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgUFJPVklERSAoX2VkYXRhID0gLik7IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgUFJPVklERSAoX19ic3Nfc3RhcnQgPSAuKTsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgUFJPVklERSAoX2VuZCA9IC4pOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAvKiBTY3JpcHQgZm9yIC1zaGFyZWQgLXogY29tYnJlbG9jICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251NjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIFBST1ZJREUgKF9lZGF0YSA9IC4pOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIFBST1ZJREUgKF9fYnNzX3N0YXJ0ID0gLik7CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIFBST1ZJREUgKF9lbmQgPSAuKTsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAALyogU2NyaXB0IGZvciAtc2hhcmVkIC16IHNlcGFyYXRlLWNvZGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnU2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgICooLnJlbGEuaXBsdCkKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSByb2RhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInJvZGF0YS1zZWdtZW50IiwgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIFBST1ZJREUgKF9lZGF0YSA9IC4pOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIFBST1ZJREUgKF9fYnNzX3N0YXJ0ID0gLik7CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIFBST1ZJREUgKF9lbmQgPSAuKTsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLXNoYXJlZCAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudTY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIFBST1ZJREUgKF9lZGF0YSA9IC4pOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIFBST1ZJREUgKF9fYnNzX3N0YXJ0ID0gLik7CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIFBST1ZJREUgKF9lbmQgPSAuKTsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLXogY29tYnJlbG9jIC16IHNlcGFyYXRlLWNvZGUgLXogcmVscm8gLXogbm93ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251NjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiByZWxybyAteiBub3cgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnU2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251NjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAC8qIFNjcmlwdCBmb3IgLXogY29tYnJlbG9jICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251NjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAvKiBTY3JpcHQgZm9yIC16IHNlcGFyYXRlLWNvZGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnU2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSByb2RhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInJvZGF0YS1zZWdtZW50IiwgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAALyogRGVmYXVsdCBsaW5rZXIgc2NyaXB0LCBmb3Igbm9ybWFsIGV4ZWN1dGFibGVzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251NjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAABvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4geXllbnN1cmVfYnVmZmVyX3N0YWNrKCkAAAAAAAAAAFNoYXJlZCBsaWJyYXJ5IGNvbnRyb2wgZm9yIEhQL1VYIGNvbXBhdGliaWxpdHkAAFNwZWNpZnkgdGFyZ2V0IGZvciBmb2xsb3dpbmcgaW5wdXQgZmlsZXMAAAAAAAAAAEZvcmNlIGNvbW1vbiBzeW1ib2xzIHRvIGJlIGRlZmluZWQAAAAAAABGb3JjZSBncm91cCBtZW1iZXJzIG91dCBvZiBncm91cHMAAAAAAAAAVW5kbyB0aGUgZWZmZWN0IG9mIC0tZXhwb3J0LWR5bmFtaWMAAAAAAEVuYWJsZSBzdXBwb3J0IG9mIG5vbi1jb250aWd1b3VzIG1lbW9yeSByZWdpb25zAGVuYWJsZS1ub24tY29udGlndW91cy1yZWdpb25zLXdhcm5pbmdzAABFbmFibGUgd2FybmluZ3Mgd2hlbiAtLWVuYWJsZS1ub24tY29udGlndW91cy1yZWdpb25zIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW91cgAAAAAARGlzYWJsZSB0aGUgTElOS0VSX1ZFUlNJT04gbGlua2VyIHNjcmlwdCBkaXJlY3RpdmUAAAAAAABFbmFibGUgdGhlIExJTktFUl9WRVJTSU9OIGxpbmtlciBzY3JpcHQgZGlyZWN0aXZlAAAAAAAAAEF1eGlsaWFyeSBmaWx0ZXIgZm9yIHNoYXJlZCBvYmplY3Qgc3ltYm9sIHRhYmxlAEZpbHRlciBmb3Igc2hhcmVkIG9iamVjdCBzeW1ib2wgdGFibGUAAABTbWFsbCBkYXRhIHNpemUgKGlmIG5vIHNpemUsIHNhbWUgYXMgLS1zaGFyZWQpAABTZXQgaW50ZXJuYWwgbmFtZSBvZiBzaGFyZWQgbGlicmFyeQAAAAAAU2V0IFBST0dSQU0gYXMgdGhlIGR5bmFtaWMgbGlua2VyIHRvIHVzZQAAAAAAAAAAUHJvZHVjZSBhbiBleGVjdXRhYmxlIHdpdGggbm8gcHJvZ3JhbSBpbnRlcnByZXRlciBoZWFkZXIAAAAAAAAAAEFkZCBESVJFQ1RPUlkgdG8gbGlicmFyeSBzZWFyY2ggcGF0aAAAAABPdmVycmlkZSB0aGUgZGVmYXVsdCBzeXNyb290IGxvY2F0aW9uAAAAUHJpbnQgbWFwIGZpbGUgb24gc3RhbmRhcmQgb3V0cHV0AAAAAAAAAERvIG5vdCBwYWdlIGFsaWduIGRhdGEsIGRvIG5vdCBtYWtlIHRleHQgcmVhZG9ubHkAAAAAAAAAUGFnZSBhbGlnbiBkYXRhLCBtYWtlIHRleHQgcmVhZG9ubHkAAAAAAFNlbmQgYXJnIHRvIGxhc3QtbG9hZGVkIHBsdWdpbgAASWdub3JlZCBmb3IgR0NDIExUTyBvcHRpb24gY29tcGF0aWJpbGl0eQAAAAAAAAAASWdub3JlZCBmb3IgR0NDIGxpbmtlciBvcHRpb24gY29tcGF0aWJpbGl0eQAAAAAASWdub3JlZCBmb3IgZ29sZCBvcHRpb24gY29tcGF0aWJpbGl0eQAAAElnbm9yZWQgZm9yIFNWUjQgY29tcGF0aWJpbGl0eQAAR2VuZXJhdGUgcmVsb2NhdGlvbnMgaW4gZmluYWwgb3V0cHV0AAAAAEp1c3QgbGluayBzeW1ib2xzIChpZiBkaXJlY3RvcnksIHNhbWUgYXMgLS1ycGF0aCkAAAAAAAAAUHJvdmlkZSBhIEZJTEUgY29udGFpbmluZyBpbnB1dCByZW1hcGluZ3MAAAAAAAAAUmVtYXAgaW5wdXQgZmlsZXMgbWF0Y2hpbmcgUEFUVEVSTiB0byBGSUxFAAAAAAAAU3RyaXAgc3ltYm9scyBpbiBkaXNjYXJkZWQgc2VjdGlvbnMAAAAAAERvIG5vdCBzdHJpcCBzeW1ib2xzIGluIGRpc2NhcmRlZCBzZWN0aW9ucwAAAAAAAFN0YXJ0IHdpdGggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBTWU1CT0wAAAAAAAAAAFJlcXVpcmUgU1lNQk9MIGJlIGRlZmluZWQgaW4gdGhlIGZpbmFsIG91dHB1dAAAAERvbid0IG1lcmdlIGlucHV0IFtTRUNUSU9OIHwgb3JwaGFuXSBzZWN0aW9ucwAAAEJ1aWxkIGdsb2JhbCBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIHRhYmxlcwAAAAAAAFByaW50IHZlcnNpb24gYW5kIGVtdWxhdGlvbiBpbmZvcm1hdGlvbgBEaXNjYXJkIHRlbXBvcmFyeSBsb2NhbCBzeW1ib2xzIChkZWZhdWx0KQAAAAAAAABEb24ndCBkaXNjYXJkIGFueSBsb2NhbCBzeW1ib2xzAERlZmF1bHQgc2VhcmNoIHBhdGggZm9yIFNvbGFyaXMgY29tcGF0aWJpbGl0eQAAAEFjY2VwdCBpbnB1dCBmaWxlcyB3aG9zZSBhcmNoaXRlY3R1cmUgY2Fubm90IGJlIGRldGVybWluZWQAAAAAAABSZWplY3QgaW5wdXQgZmlsZXMgd2hvc2UgYXJjaGl0ZWN0dXJlIGlzIHVua25vd24AAAAAAAAAAE9ubHkgc2V0IERUX05FRURFRCBmb3IgZm9sbG93aW5nIGR5bmFtaWMgbGlicyBpZiB1c2VkAAAAQWx3YXlzIHNldCBEVF9ORUVERUQgZm9yIGR5bmFtaWMgbGlicmFyaWVzIG1lbnRpb25lZCBvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21tYW5kIGxpbmUAAAAAAAAAAElnbm9yZWQgZm9yIFN1bk9TIGNvbXBhdGliaWxpdHkARG8gbm90IGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyaWVzAAAAAERvbid0IGJpbmQgZ2xvYmFsIHJlZmVyZW5jZXMgbG9jYWxseQAAAABCaW5kIGdsb2JhbCByZWZlcmVuY2VzIGxvY2FsbHkAAEJpbmQgZ2xvYmFsIGZ1bmN0aW9uIHJlZmVyZW5jZXMgbG9jYWxseQBDaGVjayBzZWN0aW9uIGFkZHJlc3NlcyBmb3Igb3ZlcmxhcHMgKGRlZmF1bHQpAABEbyBub3QgY2hlY2sgc2VjdGlvbiBhZGRyZXNzZXMgZm9yIG92ZXJsYXBzAAAAAABDb3B5IERUX05FRURFRCBsaW5rcyBtZW50aW9uZWQgaW5zaWRlIERTT3MgdGhhdCBmb2xsb3cAAERvIG5vdCBjb3B5IERUX05FRURFRCBsaW5rcyBtZW50aW9uZWQgaW5zaWRlIERTT3MgdGhhdCBmb2xsb3cAAABEZW1hbmdsZSBzeW1ib2wgbmFtZXMgW3VzaW5nIFNUWUxFXQAAAAAARG8gbm90IGFsbG93IG11bHRpcGxlIGRlZmluaXRpb25zIHdpdGggc3ltYm9scyBpbmNsdWRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGZpbGVuYW1lIGludm9rZWQgYnkgLVIgb3IgLS1qdXN0LXN5bWJvbHMAAAAAAERvIG5vdCB0cmVhdCB3YXJuaW5ncyBhcyBlcnJvcnMgKGRlZmF1bHQpAAAAAAAAAEZvcmNlIGdlbmVyYXRpb24gb2YgZmlsZSB3aXRoIC5leGUgc3VmZml4AAAAAAAAAFJlbW92ZSB1bnVzZWQgc2VjdGlvbnMgKG9uIHNvbWUgdGFyZ2V0cykAAAAAAAAAAERvbid0IHJlbW92ZSB1bnVzZWQgc2VjdGlvbnMgKGRlZmF1bHQpAABMaXN0IHJlbW92ZWQgdW51c2VkIHNlY3Rpb25zIG9uIHN0ZGVycgAARG8gbm90IGxpc3QgcmVtb3ZlZCB1bnVzZWQgc2VjdGlvbnMAAAAAAEtlZXAgZXhwb3J0ZWQgc3ltYm9scyB3aGVuIHJlbW92aW5nIHVudXNlZCBzZWN0aW9ucwAAAAAAU2V0IGRlZmF1bHQgaGFzaCB0YWJsZSBzaXplIGNsb3NlIHRvIDxOVU1CRVI+AAAAV3JpdGUgYSBsaW5rZXIgbWFwIHRvIEZJTEUgb3IgRElSLzxvdXRwdXRuYW1lPi5tYXAAAAAAAABVc2UgbGVzcyBtZW1vcnkgYW5kIG1vcmUgZGlzayBJL08AAAAAAAAARG8gbm90IGFsbG93IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBpbiBvYmplY3QgZmlsZXMAAAAAAABEbyBub3QgZGlzcGxheSBhbnkgd2FybmluZyBvciBlcnJvciBtZXNzYWdlcwAAAABBbGxvdyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgaW4gc2hhcmVkIGxpYnJhcmllcwBEbyBub3QgYWxsb3cgdW5yZXNvbHZlZCByZWZlcmVuY2VzIGluIHNoYXJlZCBsaWJzAAAAAAAAAFByb3ZpZGUgYSBzY3JpcHQgdG8gaGVscCB3aXRoIHVuZGVmaW5lZCBzeW1ib2wgZXJyb3JzAAAAQ3JlYXRlIGRlZmF1bHQgc3ltYm9sIHZlcnNpb24gZm9yIGltcG9ydGVkIHN5bWJvbHMAAAAAAABEb24ndCB3YXJuIGFib3V0IG1pc21hdGNoZWQgaW5wdXQgZmlsZXMARG9uJ3Qgd2FybiBvbiBmaW5kaW5nIGFuIGluY29tcGF0aWJsZSBsaWJyYXJ5AAAAQ3JlYXRlIGFuIG91dHB1dCBmaWxlIGV2ZW4gaWYgZXJyb3JzIG9jY3VyAAAAAAAAT25seSB1c2UgbGlicmFyeSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWFuZCBsaW5lAAAAAAAASWdub3JlZCBmb3IgTGludXggY29tcGF0aWJpbGl0eQBSZWR1Y2UgbWVtb3J5IG92ZXJoZWFkcywgcG9zc2libHkgdGFraW5nIG11Y2ggbG9uZ2VyAAAAAFNldCB0aGUgbWF4aW11bSBjYWNoZSBzaXplIHRvIFNJWkUgYnl0ZXMAAAAAAAAAAFJlZHVjZSBjb2RlIHNpemUgYnkgdXNpbmcgdGFyZ2V0IHNwZWNpZmljIG9wdGltaXphdGlvbnMARG8gbm90IHVzZSByZWxheGF0aW9uIHRlY2huaXF1ZXMgdG8gcmVkdWNlIGNvZGUgc2l6ZQAAAABLZWVwIG9ubHkgc3ltYm9scyBsaXN0ZWQgaW4gRklMRQAAAAAAAAAAU2V0IHJ1bnRpbWUgc2hhcmVkIGxpYnJhcnkgc2VhcmNoIHBhdGgAAFNldCBsaW5rIHRpbWUgc2hhcmVkIGxpYnJhcnkgc2VhcmNoIHBhdGgAAAAAAAAAAENyZWF0ZSBhIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUAAAAAAAAAAENyZWF0ZSBhIHBvc2l0aW9uIGRlcGVuZGVudCBleGVjdXRhYmxlIChkZWZhdWx0KQAAAAAAAAAAU29ydCBjb21tb24gc3ltYm9scyBieSBhbGlnbm1lbnQgW2luIHNwZWNpZmllZCBvcmRlcl0AAABTb3J0IHNlY3Rpb25zIGJ5IG5hbWUgb3IgbWF4aW11bSBhbGlnbm1lbnQAAAAAAABIb3cgbWFueSB0YWdzIHRvIHJlc2VydmUgaW4gLmR5bmFtaWMgc2VjdGlvbgAAAABTcGxpdCBvdXRwdXQgc2VjdGlvbnMgZXZlcnkgU0laRSBvY3RldHMAU3BsaXQgb3V0cHV0IHNlY3Rpb25zIGV2ZXJ5IENPVU5UIHJlbG9jcwAAAAAAAAAARGlzcGxheSB0YXJnZXQgc3BlY2lmaWMgb3B0aW9ucwBVc2Ugc2FtZSBmb3JtYXQgYXMgbmF0aXZlIGxpbmtlcgAAAAAAAAAASG93IHRvIGhhbmRsZSB1bnJlc29sdmVkIHN5bWJvbHMuICA8bWV0aG9kPiBpczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUtYWxsLCByZXBvcnQtYWxsLCBpZ25vcmUtaW4tb2JqZWN0LWZpbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZS1pbi1zaGFyZWQtbGlicwAAAE91dHB1dCBsb3RzIG9mIGluZm9ybWF0aW9uIGR1cmluZyBsaW5rAABSZWFkIHZlcnNpb24gaW5mb3JtYXRpb24gc2NyaXB0AFRha2UgZXhwb3J0IHN5bWJvbHMgbGlzdCBmcm9tIC5leHBvcnRzLCB1c2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZTUJPTCBhcyB0aGUgdmVyc2lvbi4AAAAAQWRkIGRhdGEgc3ltYm9scyB0byBkeW5hbWljIGxpc3QAAAAAAAAAAFVzZSBDKysgb3BlcmF0b3IgbmV3L2RlbGV0ZSBkeW5hbWljIGxpc3QAAAAAAAAAAFJlYWQgZXhwb3J0IGR5bmFtaWMgc3ltYm9sIGxpc3QAV2FybiBhYm91dCBkdXBsaWNhdGUgY29tbW9uIHN5bWJvbHMAAAAAAFdhcm4gaWYgZ2xvYmFsIGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyBhcmUgc2VlbgAAAAAAAAAAV2FybiBpZiB0aGUgbXVsdGlwbGUgR1AgdmFsdWVzIGFyZSB1c2VkAFdhcm4gb25seSBvbmNlIHBlciB1bmRlZmluZWQgc3ltYm9sAAAAAABXYXJuIGlmIHN0YXJ0IG9mIHNlY3Rpb24gY2hhbmdlcyBkdWUgdG8gYWxpZ25tZW50AAAAAAAAAFdhcm4gaWYgb3V0cHV0IGhhcyBEVF9URVhUUkVMIChkZWZhdWx0KQBXYXJuIGlmIGFuIG9iamVjdCBoYXMgYWx0ZXJuYXRlIEVMRiBtYWNoaW5lIGNvZGUAAAAAAAAAAFJlcG9ydCB1bnJlc29sdmVkIHN5bWJvbHMgYXMgd2FybmluZ3MAAABSZXBvcnQgdW5yZXNvbHZlZCBzeW1ib2xzIGFzIGVycm9ycwAAAAAASW5jbHVkZSBhbGwgb2JqZWN0cyBmcm9tIGZvbGxvd2luZyBhcmNoaXZlcwAAAAAAVXNlIHdyYXBwZXIgZnVuY3Rpb25zIGZvciBTWU1CT0wAAAAAAAAAAFVucmVzb2x2ZWQgU1lNQk9MIHdpbGwgbm90IGNhdXNlIGFuIGVycm9yIG9yIHdhcm5pbmcAAAAAUHVzaCBzdGF0ZSBvZiBmbGFncyBnb3Zlcm5pbmcgaW5wdXQgZmlsZSBoYW5kbGluZwAAAAAAAABQb3Agc3RhdGUgb2YgZmxhZ3MgZ292ZXJuaW5nIGlucHV0IGZpbGUgaGFuZGxpbmcAAAAAAAAAAENvbnRyb2wgaG93IG9ycGhhbiBzZWN0aW9ucyBhcmUgaGFuZGxlZC4AAAAAAAAAAFNob3cgZGlzY2FyZGVkIHNlY3Rpb25zIGluIG1hcCBmaWxlIG91dHB1dCAoZGVmYXVsdCkAAAAARG8gbm90IHNob3cgZGlzY2FyZGVkIHNlY3Rpb25zIGluIG1hcCBmaWxlIG91dHB1dAAAAAAAAABTaG93IGxvY2FsIHN5bWJvbHMgaW4gbWFwIGZpbGUgb3V0cHV0AAAARG8gbm90IHNob3cgbG9jYWwgc3ltYm9scyBpbiBtYXAgZmlsZSBvdXRwdXQgKGRlZmF1bHQpAABFbWl0IG5hbWVzIGFuZCB0eXBlcyBvZiBzdGF0aWMgdmFyaWFibGVzIGluIENURgBEbyBub3QgZW1pdCBuYW1lcyBhbmQgdHlwZXMgb2Ygc3RhdGljIHZhcmlhYmxlcyBpbiBDVEYAAEhvdyB0byBzaGFyZSBDVEYgdHlwZXMgYmV0d2VlbiB0cmFuc2xhdGlvbiB1bml0cy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0aG9kPiBpczogc2hhcmUtdW5jb25mbGljdGVkIChkZWZhdWx0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmUtZHVwbGljYXRlZAAAAAAAACAgbm8gZW11bGF0aW9uIHNwZWNpZmljIG9wdGlvbnMuCgAAAAAAAAAlUDogdW5yZWNvZ25pc2VkIGtleXdvcmQgaW4gTVJJIHN0eWxlIHNjcmlwdCAnJXMnCgAAAAAAACVQOiVwUzogZXJyb3I6IGFsaWFzIGZvciBkZWZhdWx0IG1lbW9yeSByZWdpb24KACVQOiVwUzogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiBtZW1vcnkgcmVnaW9uIGFsaWFzIGAlcycKAAAAAAAAAAAlUDolcFM6IGVycm9yOiBtZW1vcnkgcmVnaW9uIGAlcycgZm9yIGFsaWFzIGAlcycgZG9lcyBub3QgZXhpc3QKAAAAAAAAAAAlUDolcFM6IG5vbmNvbnN0YW50IGV4cHJlc3Npb24gZm9yICVzCgAAJVglUDolcFM6IHNlY3Rpb24gaGFzIGJvdGggYSBsb2FkIGFkZHJlc3MgYW5kIGEgbG9hZCByZWdpb24KAAAAACVYJVA6JXBTOiBQSERSUyBhbmQgRklMRUhEUiBhcmUgbm90IHN1cHBvcnRlZCB3aGVuIHByaW9yIFBUX0xPQUQgaGVhZGVycyBsYWNrIHRoZW0KAAAAAAAlWCVQOiVwUzogdW5rbm93biBwaGRyIHR5cGUgYCVzJyAodHJ5IGludGVnZXIgbGl0ZXJhbCkKACVYJVA6JXBTOiBQSERSUyBzeW50YXggZXJyb3IgYXQgYCVzJwoAAABmYXRhbCBmbGV4IHNjYW5uZXIgaW50ZXJuYWwgZXJyb3ItLW5vIGFjdGlvbiBmb3VuZAAAAAAAACAgLXogbm9leHRlcm4tcHJvdGVjdGVkLWRhdGEgIERvIG5vdCB0cmVhdCBwcm90ZWN0ZWQgZGF0YSBzeW1ib2wgYXMgZXh0ZXJuYWwKAAAAICAteiBpbmRpcmVjdC1leHRlcm4tYWNjZXNzICAgRW5hYmxlIGluZGlyZWN0IGV4dGVybmFsIGFjY2VzcwoAACAgLXogbm9pbmRpcmVjdC1leHRlcm4tYWNjZXNzIERpc2FibGUgaW5kaXJlY3QgZXh0ZXJuYWwgYWNjZXNzIChkZWZhdWx0KQoAAAAAAAAAICAteiBkeW5hbWljLXVuZGVmaW5lZC13ZWFrICAgTWFrZSB1bmRlZmluZWQgd2VhayBzeW1ib2xzIGR5bmFtaWMKICAteiBub2R5bmFtaWMtdW5kZWZpbmVkLXdlYWsgRG8gbm90IG1ha2UgdW5kZWZpbmVkIHdlYWsgc3ltYm9scyBkeW5hbWljCgAAAAAAICAteiBub3JlbG9jLW92ZXJmbG93ICAgICAgICAgRGlzYWJsZSByZWxvY2F0aW9uIG92ZXJmbG93IGNoZWNrCgAAAAAAAAAAICAteiBjYWxsLW5vcD1QQURESU5HICAgICAgICAgVXNlIFBBRERJTkcgYXMgMS1ieXRlIE5PUCBmb3IgYnJhbmNoCgAAAAAAICAteiBpYnRwbHQgICAgICAgICAgICAgICAgICAgR2VuZXJhdGUgSUJULWVuYWJsZWQgUExUIGVudHJpZXMKACAgLXogaWJ0ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8xX0lCVAoAACAgLXogc2hzdGsgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8xX1NIU1RLCgAAAAAAAAAAICAteiBjZXQtcmVwb3J0PVtub25lfHdhcm5pbmd8ZXJyb3JdIChkZWZhdWx0OiBub25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnQgbWlzc2luZyBJQlQgYW5kIFNIU1RLIHByb3BlcnRpZXMKAAAAAAAgIC16IHJlcG9ydC1yZWxhdGl2ZS1yZWxvYyAgICBSZXBvcnQgcmVsYXRpdmUgcmVsb2NhdGlvbnMKAAAAAAAAICAteiB4ODYtNjQte2Jhc2VsaW5lfHZbMjM0XX0gTWFyayB4ODYtNjQte2Jhc2VsaW5lfHZbMjM0XX0gSVNBIGxldmVsIGFzIG5lZWRlZAoAAAAAAAAAACAgLXogbGFtLXU0OCAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8xX0xBTV9VNDgKAAAAAAAAICAteiBsYW0tdTQ4LXJlcG9ydD1bbm9uZXx3YXJuaW5nfGVycm9yXSAoZGVmYXVsdDogbm9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVwb3J0IG1pc3NpbmcgTEFNX1U0OCBwcm9wZXJ0eQoAICAteiBsYW0tdTU3ICAgICAgICAgICAgICAgICAgR2VuZXJhdGUgR05VX1BST1BFUlRZX1g4Nl9GRUFUVVJFXzFfTEFNX1U1NwoAAAAAAAAgIC16IGxhbS11NTctcmVwb3J0PVtub25lfHdhcm5pbmd8ZXJyb3JdIChkZWZhdWx0OiBub25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnQgbWlzc2luZyBMQU1fVTU3IHByb3BlcnR5CgAgIC16IGxhbS1yZXBvcnQ9W25vbmV8d2FybmluZ3xlcnJvcl0gKGRlZmF1bHQ6IG5vbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydCBtaXNzaW5nIExBTV9VNDggYW5kIExBTV9VNTcgcHJvcGVydGllcwoAAAAAAAAAICAteiBtYXJrLXBsdCAgICAgICAgICAgICAgICAgTWFyayBQTFQgd2l0aCBkeW5hbWljIHRhZ3MKICAteiBub21hcmstcGx0ICAgICAgICAgICAgICAgRG8gbm90IG1hcmsgUExUIHdpdGggZHluYW1pYyB0YWdzIChkZWZhdWx0KQoAAAAAACAgLXogcGFjay1yZWxhdGl2ZS1yZWxvY3MgICAgIFBhY2sgcmVsYXRpdmUgcmVsb2NhdGlvbnMKAAAAAAAAAAAgIC16IG5vcGFjay1yZWxhdGl2ZS1yZWxvY3MgICBEbyBub3QgcGFjayByZWxhdGl2ZSByZWxvY2F0aW9ucyAoZGVmYXVsdCkKAAAAAAAAAG91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiB5eV9jcmVhdGVfYnVmZmVyKCkAAAAAAC8qIFNjcmlwdCBmb3IgLVVyICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKIC8qIEZvciBzb21lIHJlYXNvbiwgdGhlIFNvbGFyaXMgbGlua2VyIG1ha2VzIGJhZCBleGVjdXRhYmxlcwogIGlmIGdsZCAtciBpcyB1c2VkIGFuZCB0aGUgaW50ZXJtZWRpYXRlIGZpbGUgaGFzIHNlY3Rpb25zIHN0YXJ0aW5nCiAgYXQgbm9uLXplcm8gYWRkcmVzc2VzLiAgQ291bGQgYmUgYSBTb2xhcmlzIGxkIGJ1ZywgY291bGQgYmUgYSBHTlUgbGQKICBidWcuICBCdXQgZm9yIG5vdyBhc3NpZ25pbmcgdGhlIHplcm8gdm1hcyB3b3Jrcy4gICovClNFQ1RJT05TCnsKICAuaW50ZXJwICAgICAgIDAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAwOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAwIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgIDAgOiB7ICooLnJlbGEudGV4dCkgfQogIC5yZWxhLmZpbmkgICAgMCA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAwIDogeyAqKC5yZWxhLnJvZGF0YSkgfQogIC5yZWxhLmRhdGEucmVsLnJvIDAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8pIH0KICAucmVsYS5kYXRhICAgIDAgOiB7ICooLnJlbGEuZGF0YSkgfQogIC5yZWxhLnRkYXRhCTAgOiB7ICooLnJlbGEudGRhdGEpIH0KICAucmVsYS50YnNzCTAgOiB7ICooLnJlbGEudGJzcykgfQogIC5yZWxhLmN0b3JzICAgMCA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgMCA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgMCA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgIDAgOiB7ICooLnJlbGEuYnNzKSB9CiAgLnJlbGEubGRhdGEgICAwIDogeyAqKC5yZWxhLmxkYXRhKSB9CiAgLnJlbGEubGJzcyAgICAwIDogeyAqKC5yZWxhLmxic3MpIH0KICAucmVsYS5scm9kYXRhIDAgOiB7ICooLnJlbGEubHJvZGF0YSkgfQogIC5yZWxhLmlmdW5jICAgMCA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgMCA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSB9Ci5wbHQuZ290ICAgICAgMCA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgIDAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgIDAgOgogIHsKICAgICooLnRleHQgLnN0dWIpCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICAucm9kYXRhICAgICAgIDAgOiB7ICooLnJvZGF0YSkgfQogIC5yb2RhdGExICAgICAgMCA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgMCA6IHsgKiguZWhfZnJhbWVfaGRyKSB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgfQogIC5zZnJhbWUgICAgICAgMCA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUpIH0KICAuZ251X2V4dGFiIDAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMpIH0KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgfQogIC5zZnJhbWUgICAgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOgogICB7CiAgICAgKigudGRhdGEpCiAgIH0KICAudGJzcwkJMCA6IHsgKigudGJzcykgfQogIC5qY3IgICAgICAgICAgMCA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5keW5hbWljICAgICAgMCA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgMCA6IHsgKiguZ290KSB9CiAgLmdvdC5wbHQgICAgICAwIDogeyAqKC5nb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguYnNzKQogIH0KICAubGJzcyAwIDoKICB7CiAgICAqKC5sYnNzKQogIH0KICAubHJvZGF0YSAwICA6CiAgewogICAgKigubHJvZGF0YSkKICB9CiAgLmxkYXRhIDAgIDoKICB7CiAgICAqKC5sZGF0YSkKICB9CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1yICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKIC8qIEZvciBzb21lIHJlYXNvbiwgdGhlIFNvbGFyaXMgbGlua2VyIG1ha2VzIGJhZCBleGVjdXRhYmxlcwogIGlmIGdsZCAtciBpcyB1c2VkIGFuZCB0aGUgaW50ZXJtZWRpYXRlIGZpbGUgaGFzIHNlY3Rpb25zIHN0YXJ0aW5nCiAgYXQgbm9uLXplcm8gYWRkcmVzc2VzLiAgQ291bGQgYmUgYSBTb2xhcmlzIGxkIGJ1ZywgY291bGQgYmUgYSBHTlUgbGQKICBidWcuICBCdXQgZm9yIG5vdyBhc3NpZ25pbmcgdGhlIHplcm8gdm1hcyB3b3Jrcy4gICovClNFQ1RJT05TCnsKICAuaW50ZXJwICAgICAgIDAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAwOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAwIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgIDAgOiB7ICooLnJlbGEudGV4dCkgfQogIC5yZWxhLmZpbmkgICAgMCA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAwIDogeyAqKC5yZWxhLnJvZGF0YSkgfQogIC5yZWxhLmRhdGEucmVsLnJvIDAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8pIH0KICAucmVsYS5kYXRhICAgIDAgOiB7ICooLnJlbGEuZGF0YSkgfQogIC5yZWxhLnRkYXRhCTAgOiB7ICooLnJlbGEudGRhdGEpIH0KICAucmVsYS50YnNzCTAgOiB7ICooLnJlbGEudGJzcykgfQogIC5yZWxhLmN0b3JzICAgMCA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgMCA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgMCA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgIDAgOiB7ICooLnJlbGEuYnNzKSB9CiAgLnJlbGEubGRhdGEgICAwIDogeyAqKC5yZWxhLmxkYXRhKSB9CiAgLnJlbGEubGJzcyAgICAwIDogeyAqKC5yZWxhLmxic3MpIH0KICAucmVsYS5scm9kYXRhIDAgOiB7ICooLnJlbGEubHJvZGF0YSkgfQogIC5yZWxhLmlmdW5jICAgMCA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgMCA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSB9Ci5wbHQuZ290ICAgICAgMCA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgIDAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgIDAgOgogIHsKICAgICooLnRleHQgLnN0dWIpCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICAucm9kYXRhICAgICAgIDAgOiB7ICooLnJvZGF0YSkgfQogIC5yb2RhdGExICAgICAgMCA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgMCA6IHsgKiguZWhfZnJhbWVfaGRyKSB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgfQogIC5zZnJhbWUgICAgICAgMCA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUpIH0KICAuZ251X2V4dGFiIDAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMpIH0KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgfQogIC5zZnJhbWUgICAgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOgogICB7CiAgICAgKigudGRhdGEpCiAgIH0KICAudGJzcwkJMCA6IHsgKigudGJzcykgfQogIC5qY3IgICAgICAgICAgMCA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5keW5hbWljICAgICAgMCA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgMCA6IHsgKiguZ290KSB9CiAgLmdvdC5wbHQgICAgICAwIDogeyAqKC5nb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmJzcykKICB9CiAgLmxic3MgMCA6CiAgewogICAgKigubGJzcykKICB9CiAgLmxyb2RhdGEgMCAgOgogIHsKICAgICooLmxyb2RhdGEpCiAgfQogIC5sZGF0YSAwICA6CiAgewogICAgKigubGRhdGEpCiAgfQogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8pIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KfQoKAAAALyogU2NyaXB0IGZvciAtTiAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gLjsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLW4gKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IHNlcGFyYXRlLWNvZGUgLXogcmVscm8gLXogbm93ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IHJlbHJvIC16IG5vdyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogc2VwYXJhdGUtY29kZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC1waWUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXNoYXJlZCAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZSAteiByZWxybyAteiBub3cgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBQUk9WSURFIChfZWRhdGEgPSAuKTsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBQUk9WSURFIChfX2Jzc19zdGFydCA9IC4pOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICBQUk9WSURFIChfZW5kID0gLik7IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAALyogU2NyaXB0IGZvciAtc2hhcmVkIC16IGNvbWJyZWxvYyAteiByZWxybyAteiBub3cgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgUFJPVklERSAoX2VkYXRhID0gLik7IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgUFJPVklERSAoX19ic3Nfc3RhcnQgPSAuKTsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgUFJPVklERSAoX2VuZCA9IC4pOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXNoYXJlZCAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBQUk9WSURFIChfZWRhdGEgPSAuKTsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBQUk9WSURFIChfX2Jzc19zdGFydCA9IC4pOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICBQUk9WSURFIChfZW5kID0gLik7IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAC8qIFNjcmlwdCBmb3IgLXNoYXJlZCAteiBjb21icmVsb2MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIFBST1ZJREUgKF9lZGF0YSA9IC4pOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIFBST1ZJREUgKF9fYnNzX3N0YXJ0ID0gLik7CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIFBST1ZJREUgKF9lbmQgPSAuKTsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAALyogU2NyaXB0IGZvciAtc2hhcmVkIC16IHNlcGFyYXRlLWNvZGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBQUk9WSURFIChfZWRhdGEgPSAuKTsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBQUk9WSURFIChfX2Jzc19zdGFydCA9IC4pOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICBQUk9WSURFIChfZW5kID0gLik7IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAvKiBTY3JpcHQgZm9yIC1zaGFyZWQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgUFJPVklERSAoX2VkYXRhID0gLik7IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgUFJPVklERSAoX19ic3Nfc3RhcnQgPSAuKTsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgUFJPVklERSAoX2VuZCA9IC4pOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZSAteiByZWxybyAteiBub3cgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiByZWxybyAteiBub3cgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudXgzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC16IHNlcGFyYXRlLWNvZGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAvKiBEZWZhdWx0IGxpbmtlciBzY3JpcHQsIGZvciBub3JtYWwgZXhlY3V0YWJsZXMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251eDMyIik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnV4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAvKiBTY3JpcHQgZm9yIC1VciAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKIC8qIEZvciBzb21lIHJlYXNvbiwgdGhlIFNvbGFyaXMgbGlua2VyIG1ha2VzIGJhZCBleGVjdXRhYmxlcwogIGlmIGdsZCAtciBpcyB1c2VkIGFuZCB0aGUgaW50ZXJtZWRpYXRlIGZpbGUgaGFzIHNlY3Rpb25zIHN0YXJ0aW5nCiAgYXQgbm9uLXplcm8gYWRkcmVzc2VzLiAgQ291bGQgYmUgYSBTb2xhcmlzIGxkIGJ1ZywgY291bGQgYmUgYSBHTlUgbGQKICBidWcuICBCdXQgZm9yIG5vdyBhc3NpZ25pbmcgdGhlIHplcm8gdm1hcyB3b3Jrcy4gICovClNFQ1RJT05TCnsKICAuaW50ZXJwICAgICAgIDAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAwOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAwIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgMCA6IHsgKigucmVsLnRleHQpIH0KICAucmVsLmZpbmkgICAgIDAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAwIDogeyAqKC5yZWwucm9kYXRhKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAwIDogeyAqKC5yZWwuZGF0YS5yZWwucm8pIH0KICAucmVsLmRhdGEgICAgIDAgOiB7ICooLnJlbC5kYXRhKSB9CiAgLnJlbC50ZGF0YQkwIDogeyAqKC5yZWwudGRhdGEpIH0KICAucmVsLnRic3MJMCA6IHsgKigucmVsLnRic3MpIH0KICAucmVsLmN0b3JzICAgIDAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgMCA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAwIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAwIDogeyAqKC5yZWwuYnNzKSB9CiAgLnJlbC5pZnVuYyAgICAwIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgIDAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSB9Ci5wbHQuZ290ICAgICAgMCA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgIDAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgIDAgOgogIHsKICAgICooLnRleHQgLnN0dWIpCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICAucm9kYXRhICAgICAgIDAgOiB7ICooLnJvZGF0YSkgfQogIC5yb2RhdGExICAgICAgMCA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgMCA6IHsgKiguZWhfZnJhbWVfaGRyKSB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgfQogIC5zZnJhbWUgICAgICAgMCA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUpIH0KICAuZ251X2V4dGFiIDAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMpIH0KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgfQogIC5zZnJhbWUgICAgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOgogICB7CiAgICAgKigudGRhdGEpCiAgIH0KICAudGJzcwkJMCA6IHsgKigudGJzcykgfQogIC5qY3IgICAgICAgICAgMCA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5keW5hbWljICAgICAgMCA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgMCA6IHsgKiguZ290KSB9CiAgLmdvdC5wbHQgICAgICAwIDogeyAqKC5nb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguYnNzKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcykgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC1yICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgIDAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgIDAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAwIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgIDAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgMCA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAwOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAwOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgIDAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAwIDogeyAqKC5yZWwudGV4dCkgfQogIC5yZWwuZmluaSAgICAgMCA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgIDAgOiB7ICooLnJlbC5yb2RhdGEpIH0KICAucmVsLmRhdGEucmVsLnJvIDAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybykgfQogIC5yZWwuZGF0YSAgICAgMCA6IHsgKigucmVsLmRhdGEpIH0KICAucmVsLnRkYXRhCTAgOiB7ICooLnJlbC50ZGF0YSkgfQogIC5yZWwudGJzcwkwIDogeyAqKC5yZWwudGJzcykgfQogIC5yZWwuY3RvcnMgICAgMCA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAwIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgIDAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgIDAgOiB7ICooLnJlbC5ic3MpIH0KICAucmVsLmlmdW5jICAgIDAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgMCA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpIH0KLnBsdC5nb3QgICAgICAwIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgMCA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIC5yb2RhdGEgICAgICAgMCA6IHsgKigucm9kYXRhKSB9CiAgLnJvZGF0YTEgICAgICAwIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAwIDogeyAqKC5laF9mcmFtZV9oZHIpIH0KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSB9CiAgLnNmcmFtZSAgICAgICAwIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSkgfQogIC5nbnVfZXh0YWIgMCA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcykgfQogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSB9CiAgLnNmcmFtZSAgICAgICAwIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgfQogIC5nbnVfZXh0YWIgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUpIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMpIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJMCA6CiAgIHsKICAgICAqKC50ZGF0YSkKICAgfQogIC50YnNzCQkwIDogeyAqKC50YnNzKSB9CiAgLmpjciAgICAgICAgICAwIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmR5bmFtaWMgICAgICAwIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAwIDogeyAqKC5nb3QpIH0KICAuZ290LnBsdCAgICAgIDAgOiB7ICooLmdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgIDAgOgogIHsKICAgICooLmRhdGEpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguYnNzKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcykgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC1OICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gLjsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLW4gKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudTMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlIC16IHJlbHJvIC16IG5vdyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSByb2RhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInJvZGF0YS1zZWdtZW50IiwgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IHJlbHJvIC16IG5vdyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogc2VwYXJhdGUtY29kZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSByb2RhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInJvZGF0YS1zZWdtZW50IiwgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtcGllICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtc2hhcmVkIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlIC16IHJlbHJvIC16IG5vdyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBQUk9WSURFIChfZWRhdGEgPSAuKTsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBQUk9WSURFIChfX2Jzc19zdGFydCA9IC4pOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIFBST1ZJREUgKF9lbmQgPSAuKTsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAvKiBTY3JpcHQgZm9yIC1zaGFyZWQgLXogY29tYnJlbG9jIC16IHJlbHJvIC16IG5vdyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgUFJPVklERSAoX2VkYXRhID0gLik7IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgUFJPVklERSAoX19ic3Nfc3RhcnQgPSAuKTsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBQUk9WSURFIChfZW5kID0gLik7IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoALyogU2NyaXB0IGZvciAtc2hhcmVkIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBQUk9WSURFIChfZWRhdGEgPSAuKTsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBQUk9WSURFIChfX2Jzc19zdGFydCA9IC4pOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIFBST1ZJREUgKF9lbmQgPSAuKTsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAALyogU2NyaXB0IGZvciAtc2hhcmVkIC16IGNvbWJyZWxvYyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIFBST1ZJREUgKF9lZGF0YSA9IC4pOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIFBST1ZJREUgKF9fYnNzX3N0YXJ0ID0gLik7CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgUFJPVklERSAoX2VuZCA9IC4pOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAvKiBTY3JpcHQgZm9yIC1zaGFyZWQgLXogc2VwYXJhdGUtY29kZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgUFJPVklERSAoX2VkYXRhID0gLik7IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgUFJPVklERSAoX19ic3Nfc3RhcnQgPSAuKTsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBQUk9WSURFIChfZW5kID0gLik7IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoALyogU2NyaXB0IGZvciAtc2hhcmVkICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuc2VjICAgICAgICA6IHsgKigucGx0LnNlYykgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgUFJPVklERSAoX2VkYXRhID0gLik7IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgUFJPVklERSAoX19ic3Nfc3RhcnQgPSAuKTsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBQUk9WSURFIChfZW5kID0gLik7IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZSAteiByZWxybyAteiBub3cgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudTMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiByZWxybyAteiBub3cgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudTMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLnJlbHIuZHluIDogeyAqKC5yZWxyLmR5bikgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudTMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LnNlYyAgICAgICAgOiB7ICooLnBsdC5zZWMpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC16IHNlcGFyYXRlLWNvZGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL2kzODYtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudTMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5yZWxyLmR5biA6IHsgKigucmVsci5keW4pIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAALyogRGVmYXVsdCBsaW5rZXIgc2NyaXB0LCBmb3Igbm9ybWFsIGV4ZWN1dGFibGVzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi9pMzg2LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIvaTM4Ni1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAucmVsci5keW4gOiB7ICooLnJlbHIuZHluKSB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5zZWMgICAgICAgIDogeyAqKC5wbHQuc2VjKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgLVVyICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKIC8qIEZvciBzb21lIHJlYXNvbiwgdGhlIFNvbGFyaXMgbGlua2VyIG1ha2VzIGJhZCBleGVjdXRhYmxlcwogIGlmIGdsZCAtciBpcyB1c2VkIGFuZCB0aGUgaW50ZXJtZWRpYXRlIGZpbGUgaGFzIHNlY3Rpb25zIHN0YXJ0aW5nCiAgYXQgbm9uLXplcm8gYWRkcmVzc2VzLiAgQ291bGQgYmUgYSBTb2xhcmlzIGxkIGJ1ZywgY291bGQgYmUgYSBHTlUgbGQKICBidWcuICBCdXQgZm9yIG5vdyBhc3NpZ25pbmcgdGhlIHplcm8gdm1hcyB3b3Jrcy4gICovClNFQ1RJT05TCnsKICAuaW50ZXJwICAgICAgIDAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAwOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAwIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgMCA6IHsgKigucmVsLnRleHQpIH0KICAucmVsLmZpbmkgICAgIDAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAwIDogeyAqKC5yZWwucm9kYXRhKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAwIDogeyAqKC5yZWwuZGF0YS5yZWwucm8pIH0KICAucmVsLmRhdGEgICAgIDAgOiB7ICooLnJlbC5kYXRhKSB9CiAgLnJlbC50ZGF0YQkwIDogeyAqKC5yZWwudGRhdGEpIH0KICAucmVsLnRic3MJMCA6IHsgKigucmVsLnRic3MpIH0KICAucmVsLmN0b3JzICAgIDAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgMCA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAwIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAwIDogeyAqKC5yZWwuYnNzKSB9CiAgLnJlbC5pZnVuYyAgICAwIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgIDAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpIH0KLnBsdC5nb3QgICAgICAwIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAwIDoKICB7CiAgICAqKC50ZXh0IC5zdHViKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgLnJvZGF0YSAgICAgICAwIDogeyAqKC5yb2RhdGEpIH0KICAucm9kYXRhMSAgICAgIDAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDAgOiB7ICooLmVoX2ZyYW1lX2hkcikgfQogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpIH0KICAuc2ZyYW1lICAgICAgIDAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlKSB9CiAgLmdudV9leHRhYiAwIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKSB9CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpIH0KICAuc2ZyYW1lICAgICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSB9CiAgLmdudV9leHRhYiAgICAwIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSkgfQogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcykgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkwIDoKICAgewogICAgICooLnRkYXRhKQogICB9CiAgLnRic3MJCTAgOiB7ICooLnRic3MpIH0KICAuamNyICAgICAgICAgIDAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZHluYW1pYyAgICAgIDAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgIDAgOiB7ICooLmdvdCkgfQogIC5nb3QucGx0ICAgICAgMCA6IHsgKiguZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgMCA6CiAgewogICAgKiguZGF0YSkKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmJzcykKICB9CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoALyogU2NyaXB0IGZvciAtciAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCiAvKiBGb3Igc29tZSByZWFzb24sIHRoZSBTb2xhcmlzIGxpbmtlciBtYWtlcyBiYWQgZXhlY3V0YWJsZXMKICBpZiBnbGQgLXIgaXMgdXNlZCBhbmQgdGhlIGludGVybWVkaWF0ZSBmaWxlIGhhcyBzZWN0aW9ucyBzdGFydGluZwogIGF0IG5vbi16ZXJvIGFkZHJlc3Nlcy4gIENvdWxkIGJlIGEgU29sYXJpcyBsZCBidWcsIGNvdWxkIGJlIGEgR05VIGxkCiAgYnVnLiAgQnV0IGZvciBub3cgYXNzaWduaW5nIHRoZSB6ZXJvIHZtYXMgd29ya3MuICAqLwpTRUNUSU9OUwp7CiAgLmludGVycCAgICAgICAwIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgMDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgMCA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgMCA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgIDAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgMCA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAwIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kIDA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yIDA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgMCA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgIDAgOiB7ICooLnJlbC50ZXh0KSB9CiAgLnJlbC5maW5pICAgICAwIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgMCA6IHsgKigucmVsLnJvZGF0YSkgfQogIC5yZWwuZGF0YS5yZWwucm8gMCA6IHsgKigucmVsLmRhdGEucmVsLnJvKSB9CiAgLnJlbC5kYXRhICAgICAwIDogeyAqKC5yZWwuZGF0YSkgfQogIC5yZWwudGRhdGEJMCA6IHsgKigucmVsLnRkYXRhKSB9CiAgLnJlbC50YnNzCTAgOiB7ICooLnJlbC50YnNzKSB9CiAgLnJlbC5jdG9ycyAgICAwIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgIDAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgMCA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgMCA6IHsgKigucmVsLmJzcykgfQogIC5yZWwuaWZ1bmMgICAgMCA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAwIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSB9Ci5wbHQuZ290ICAgICAgMCA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIC5yb2RhdGEgICAgICAgMCA6IHsgKigucm9kYXRhKSB9CiAgLnJvZGF0YTEgICAgICAwIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAwIDogeyAqKC5laF9mcmFtZV9oZHIpIH0KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSB9CiAgLnNmcmFtZSAgICAgICAwIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSkgfQogIC5nbnVfZXh0YWIgMCA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcykgfQogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSB9CiAgLnNmcmFtZSAgICAgICAwIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgfQogIC5nbnVfZXh0YWIgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUpIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMpIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJMCA6CiAgIHsKICAgICAqKC50ZGF0YSkKICAgfQogIC50YnNzCQkwIDogeyAqKC50YnNzKSB9CiAgLmpjciAgICAgICAgICAwIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmR5bmFtaWMgICAgICAwIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAwIDogeyAqKC5nb3QpIH0KICAuZ290LnBsdCAgICAgIDAgOiB7ICooLmdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgIDAgOgogIHsKICAgICooLmRhdGEpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguYnNzKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcykgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9Cn0KCgAvKiBTY3JpcHQgZm9yIC1OICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IC47CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAtbiAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IHNlcGFyYXRlLWNvZGUgLXogcmVscm8gLXogbm93ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSByb2RhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInJvZGF0YS1zZWdtZW50IiwgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2MgLXogcmVscm8gLXogbm93ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IHNlcGFyYXRlLWNvZGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBzZXBhcmF0ZS1jb2RlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC4gPSBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKTsKICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSByb2RhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInJvZGF0YS1zZWdtZW50IiwgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1waWUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1zaGFyZWQgLXogY29tYnJlbG9jIC16IHNlcGFyYXRlLWNvZGUgLXogcmVscm8gLXogbm93ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBQUk9WSURFIChfZWRhdGEgPSAuKTsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBQUk9WSURFIChfX2Jzc19zdGFydCA9IC4pOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIFBST1ZJREUgKF9lbmQgPSAuKTsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAALyogU2NyaXB0IGZvciAtc2hhcmVkIC16IGNvbWJyZWxvYyAteiByZWxybyAteiBub3cgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBQUk9WSURFIChfZWRhdGEgPSAuKTsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBQUk9WSURFIChfX2Jzc19zdGFydCA9IC4pOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIFBST1ZJREUgKF9lbmQgPSAuKTsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAALyogU2NyaXB0IGZvciAtc2hhcmVkIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgUFJPVklERSAoX2VkYXRhID0gLik7IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgUFJPVklERSAoX19ic3Nfc3RhcnQgPSAuKTsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBQUk9WSURFIChfZW5kID0gLik7IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAvKiBTY3JpcHQgZm9yIC1zaGFyZWQgLXogY29tYnJlbG9jICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIFBST1ZJREUgKF9lZGF0YSA9IC4pOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIFBST1ZJREUgKF9fYnNzX3N0YXJ0ID0gLik7CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgUFJPVklERSAoX2VuZCA9IC4pOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciAtc2hhcmVkIC16IHNlcGFyYXRlLWNvZGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBQUk9WSURFIChfZWRhdGEgPSAuKTsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBQUk9WSURFIChfX2Jzc19zdGFydCA9IC4pOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIFBST1ZJREUgKF9lbmQgPSAuKTsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAALyogU2NyaXB0IGZvciAtc2hhcmVkICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCAgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIFBST1ZJREUgKF9lZGF0YSA9IC4pOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIFBST1ZJREUgKF9fYnNzX3N0YXJ0ID0gLik7CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgUFJPVklERSAoX2VuZCA9IC4pOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiBzZXBhcmF0ZS1jb2RlIC16IHJlbHJvIC16IG5vdyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogcmVscm8gLXogbm93ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogc2VwYXJhdGUtY29kZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKFNPUlQoLnRleHQuc29ydGVkLiopKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLiA9IEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpOwogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIHJvZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gU0VHTUVOVF9TVEFSVCgicm9kYXRhLXNlZ21lbnQiLCBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkpOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkICA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyICAgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9STyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLnNmcmFtZSAgICAgICAgIDogT05MWV9JRl9SVyB7ICooLnNmcmFtZSkgKiguc2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOgogICB7CiAgICAgUFJPVklERV9ISURERU4gKF9fdGRhdGFfc3RhcnQgPSAuKTsKICAgICAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopCiAgIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICAuID0gQUxJR04oQUxJR05PRihORVhUX1NFQ1RJT04pKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvIG5vdAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAwIChJTkZPKSA6IHsgKiguY29tbWVudCk7IExJTktFUl9WRVJTSU9OOyB9CiAgLmdudS5idWlsZC5hdHRyaWJ1dGVzIDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMS4gICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZGVidWdfbGluZV9zdHIgMCA6IHsgKiguZGVidWdfbGluZV9zdHIpIH0KICAuZGVidWdfbG9jbGlzdHMgMCA6IHsgKiguZGVidWdfbG9jbGlzdHMpIH0KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfbmFtZXMgICAgMCA6IHsgKiguZGVidWdfbmFtZXMpIH0KICAuZGVidWdfcm5nbGlzdHMgMCA6IHsgKiguZGVidWdfcm5nbGlzdHMpIH0KICAuZGVidWdfc3RyX29mZnNldHMgMCA6IHsgKiguZGVidWdfc3RyX29mZnNldHMpIH0KICAuZGVidWdfc3VwICAgICAgMCA6IHsgKiguZGVidWdfc3VwKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAteiBzZXBhcmF0ZS1jb2RlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooU09SVCgudGV4dC5zb3J0ZWQuKikpCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAuID0gQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSk7CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgcm9kYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJyb2RhdGEtc2VnbWVudCIsIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSk7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciAgIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUk8geyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5zZnJhbWUgICAgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5zZnJhbWUpICooLnNmcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDoKICAgewogICAgIFBST1ZJREVfSElEREVOIChfX3RkYXRhX3N0YXJ0ID0gLik7CiAgICAgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKQogICB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgLiA9IEFMSUdOKEFMSUdOT0YoTkVYVF9TRUNUSU9OKSk7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgMCAoSU5GTykgOiB7ICooLmNvbW1lbnQpOyBMSU5LRVJfVkVSU0lPTjsgfQogIC5nbnUuYnVpbGQuYXR0cmlidXRlcyA6IHsgKiguZ251LmJ1aWxkLmF0dHJpYnV0ZXMgLmdudS5idWlsZC5hdHRyaWJ1dGVzLiopIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEuICAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmRlYnVnX2xpbmVfc3RyIDAgOiB7ICooLmRlYnVnX2xpbmVfc3RyKSB9CiAgLmRlYnVnX2xvY2xpc3RzIDAgOiB7ICooLmRlYnVnX2xvY2xpc3RzKSB9CiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX25hbWVzICAgIDAgOiB7ICooLmRlYnVnX25hbWVzKSB9CiAgLmRlYnVnX3JuZ2xpc3RzIDAgOiB7ICooLmRlYnVnX3JuZ2xpc3RzKSB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIDAgOiB7ICooLmRlYnVnX3N0cl9vZmZzZXRzKSB9CiAgLmRlYnVnX3N1cCAgICAgIDAgOiB7ICooLmRlYnVnX3N1cCkgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAALyogRGVmYXVsdCBsaW5rZXIgc2NyaXB0LCBmb3Igbm9ybWFsIGV4ZWN1dGFibGVzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgICA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgICAgOiB7ICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWwuZmluaSAgICAgICA6IHsgKigucmVsLmZpbmkpIH0KICAucmVsLnJvZGF0YSAgICAgOiB7ICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWwuZGF0YSAgICAgICA6IHsgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbC50ZGF0YQkgIDogeyAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsLnRic3MJICA6IHsgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWwuY3RvcnMgICAgICA6IHsgKigucmVsLmN0b3JzKSB9CiAgLnJlbC5kdG9ycyAgICAgIDogeyAqKC5yZWwuZHRvcnMpIH0KICAucmVsLmdvdCAgICAgICAgOiB7ICooLnJlbC5nb3QpIH0KICAucmVsLmJzcyAgICAgICAgOiB7ICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsLmlmdW5jICAgICAgOiB7ICooLnJlbC5pZnVuYykgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKihTT1JUKC50ZXh0LnNvcnRlZC4qKSkKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgICA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JPIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuc2ZyYW1lICAgICAgICAgOiBPTkxZX0lGX1JXIHsgKiguc2ZyYW1lKSAqKC5zZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6CiAgIHsKICAgICBQUk9WSURFX0hJRERFTiAoX190ZGF0YV9zdGFydCA9IC4pOwogICAgICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikKICAgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIC4gPSBBTElHTihBTElHTk9GKE5FWFRfU0VDVElPTikpOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG8gbm90CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50IDAgKElORk8pIDogeyAqKC5jb21tZW50KTsgTElOS0VSX1ZFUlNJT047IH0KICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzIC5nbnUuYnVpbGQuYXR0cmlidXRlcy4qKSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxLiAgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5kZWJ1Z19saW5lX3N0ciAwIDogeyAqKC5kZWJ1Z19saW5lX3N0cikgfQogIC5kZWJ1Z19sb2NsaXN0cyAwIDogeyAqKC5kZWJ1Z19sb2NsaXN0cykgfQogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19uYW1lcyAgICAwIDogeyAqKC5kZWJ1Z19uYW1lcykgfQogIC5kZWJ1Z19ybmdsaXN0cyAwIDogeyAqKC5kZWJ1Z19ybmdsaXN0cykgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAwIDogeyAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykgfQogIC5kZWJ1Z19zdXAgICAgICAwIDogeyAqKC5kZWJ1Z19zdXApIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAGZhdGFsIGZsZXggc2Nhbm5lciBpbnRlcm5hbCBlcnJvci0tZW5kIG9mIGJ1ZmZlciBtaXNzZWQAZmF0YWwgZXJyb3IgLSBzY2FubmVyIGlucHV0IGJ1ZmZlciBvdmVyZmxvdwAAAAAAJVA6IHJlYWQgaW4gZmxleCBzY2FubmVyIGZhaWxlZAoAAAAAAAAAAG91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiB5eV9nZXRfbmV4dF9idWZmZXIoKQAAACAgLS1iYXNlX2ZpbGUgPGJhc2VmaWxlPiAgICAgICAgICAgICBHZW5lcmF0ZSBhIGJhc2UgZmlsZSBmb3IgcmVsb2NhdGFibGUgRExMcwoAICAtLWRsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBpbWFnZSBiYXNlIHRvIHRoZSBkZWZhdWx0IGZvciBETExzCgAAAAAgIC0tZmlsZS1hbGlnbm1lbnQgPHNpemU+ICAgICAgICAgICAgU2V0IGZpbGUgYWxpZ25tZW50CgAAAAAAAAAAICAtLWhlYXAgPHNpemU+ICAgICAgICAgICAgICAgICAgICAgIFNldCBpbml0aWFsIHNpemUgb2YgdGhlIGhlYXAKAAAAAAAAICAtLWltYWdlLWJhc2UgPGFkZHJlc3M+ICAgICAgICAgICAgIFNldCBzdGFydCBhZGRyZXNzIG9mIHRoZSBleGVjdXRhYmxlCgAAAAAAAAAgIC0tbWFqb3ItaW1hZ2UtdmVyc2lvbiA8bnVtYmVyPiAgICAgU2V0IHZlcnNpb24gbnVtYmVyIG9mIHRoZSBleGVjdXRhYmxlCgAAAAAAACAgLS1tYWpvci1vcy12ZXJzaW9uIDxudW1iZXI+ICAgICAgICBTZXQgbWluaW11bSByZXF1aXJlZCBPUyB2ZXJzaW9uCgAAACAgLS1tYWpvci1zdWJzeXN0ZW0tdmVyc2lvbiA8bnVtYmVyPiBTZXQgbWluaW11bSByZXF1aXJlZCBPUyBzdWJzeXN0ZW0gdmVyc2lvbgoAICAtLW1pbm9yLWltYWdlLXZlcnNpb24gPG51bWJlcj4gICAgIFNldCByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGV4ZWN1dGFibGUKAAAAAAAgIC0tbWlub3Itb3MtdmVyc2lvbiA8bnVtYmVyPiAgICAgICAgU2V0IG1pbmltdW0gcmVxdWlyZWQgT1MgcmV2aXNpb24KAAAgIC0tbWlub3Itc3Vic3lzdGVtLXZlcnNpb24gPG51bWJlcj4gU2V0IG1pbmltdW0gcmVxdWlyZWQgT1Mgc3Vic3lzdGVtIHJldmlzaW9uCgAAAAAAAAAAICAtLXNlY3Rpb24tYWxpZ25tZW50IDxzaXplPiAgICAgICAgIFNldCBzZWN0aW9uIGFsaWdubWVudAoAAAAAACAgLS1zdGFjayA8c2l6ZT4gICAgICAgICAgICAgICAgICAgICBTZXQgc2l6ZSBvZiB0aGUgaW5pdGlhbCBzdGFjawoAAAAAACAgLS1zdWJzeXN0ZW0gPG5hbWU+Wzo8dmVyc2lvbj5dICAgICBTZXQgcmVxdWlyZWQgT1Mgc3Vic3lzdGVtIFsmIHZlcnNpb25dCgAAAAAAICAtLXN1cHBvcnQtb2xkLWNvZGUgICAgICAgICAgICAgICAgIFN1cHBvcnQgaW50ZXJ3b3JraW5nIHdpdGggb2xkIGNvZGUKAAAAAAAAAAAgIC0tW25vLV1sZWFkaW5nLXVuZGVyc2NvcmUgICAgICAgICAgU2V0IGV4cGxpY2l0IHN5bWJvbCB1bmRlcnNjb3JlIHByZWZpeCBtb2RlCgAAAAAAAAAAICAtLVtuby1daW5zZXJ0LXRpbWVzdGFtcCAgICAgICAgICAgIFVzZSBhIHJlYWwgdGltZXN0YW1wIHJhdGhlciB0aGFuIHplcm8gKGRlZmF1bHQpCgAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1ha2VzIGJpbmFyaWVzIG5vbi1kZXRlcm1pbmlzdGljCgAAAAAAICAtLWFkZC1zdGRjYWxsLWFsaWFzICAgICAgICAgICAgICAgIEV4cG9ydCBzeW1ib2xzIHdpdGggYW5kIHdpdGhvdXQgQG5uCgAAAAAAAAAgIC0tZGlzYWJsZS1zdGRjYWxsLWZpeHVwICAgICAgICAgICAgRG9uJ3QgbGluayBfc3ltIHRvIF9zeW1Abm4KAAAAAAAAAAAgIC0tZW5hYmxlLXN0ZGNhbGwtZml4dXAgICAgICAgICAgICAgTGluayBfc3ltIHRvIF9zeW1Abm4gd2l0aG91dCB3YXJuaW5ncwoAAAAAACAgLS1leGNsdWRlLXN5bWJvbHMgc3ltLHN5bSwuLi4gICAgICBFeGNsdWRlIHN5bWJvbHMgZnJvbSBhdXRvbWF0aWMgZXhwb3J0CgAAAAAAICAtLWV4Y2x1ZGUtYWxsLXN5bWJvbHMgICAgICAgICAgICAgIEV4Y2x1ZGUgYWxsIHN5bWJvbHMgZnJvbSBhdXRvbWF0aWMgZXhwb3J0CgAgIC0tZXhjbHVkZS1saWJzIGxpYixsaWIsLi4uICAgICAgICAgRXhjbHVkZSBsaWJyYXJpZXMgZnJvbSBhdXRvbWF0aWMgZXhwb3J0CgAAACAgLS1leGNsdWRlLW1vZHVsZXMtZm9yLWltcGxpYiBtb2QsbW9kLC4uLgoAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlIG9iamVjdHMsIGFyY2hpdmUgbWVtYmVycyBmcm9tIGF1dG8KAAAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0LCBwbGFjZSBpbnRvIGltcG9ydCBsaWJyYXJ5IGluc3RlYWQKACAgLS1leHBvcnQtYWxsLXN5bWJvbHMgICAgICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGV4cG9ydCBhbGwgZ2xvYmFscyB0byBETEwKAAAAICAtLWtpbGwtYXQgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZSBAbm4gZnJvbSBleHBvcnRlZCBzeW1ib2xzCgAAICAtLW91dHB1dC1kZWYgPGZpbGU+ICAgICAgICAgICAgICAgIEdlbmVyYXRlIGEgLkRFRiBmaWxlIGZvciB0aGUgYnVpbHQgRExMCgAAAAAgIC0td2Fybi1kdXBsaWNhdGUtZXhwb3J0cyAgICAgICAgICAgV2FybiBhYm91dCBkdXBsaWNhdGUgZXhwb3J0cwoAAAAAAAAgIC0tY29tcGF0LWltcGxpYiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIGJhY2t3YXJkIGNvbXBhdGlibGUgaW1wb3J0IGxpYnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBfX2ltcF88U1lNQk9MPiBhcyB3ZWxsCgAAAAAAACAgLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGNob29zZSBpbWFnZSBiYXNlIGZvciBETExzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyB1c2VyIHNwZWNpZmllcyBvbmUKACAgLS1kaXNhYmxlLWF1dG8taW1hZ2UtYmFzZSAgICAgICAgICBEbyBub3QgYXV0by1jaG9vc2UgaW1hZ2UgYmFzZSAoZGVmYXVsdCkKAAAAICAtLWRsbC1zZWFyY2gtcHJlZml4PTxzdHJpbmc+ICAgICAgIFdoZW4gbGlua2luZyBkeW5hbWljYWxseSB0byBhIGRsbCB3aXRob3V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGltcG9ydGxpYiwgdXNlIDxzdHJpbmc+PGJhc2VuYW1lPi5kbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gcHJlZmVyZW5jZSB0byBsaWI8YmFzZW5hbWU+LmRsbCAKAAAAAAAAICAtLWVuYWJsZS1hdXRvLWltcG9ydCAgICAgICAgICAgICAgIERvIHNvcGhpc3RpY2F0ZWQgbGlua2luZyBvZiBfc3ltIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW1wX3N5bSBmb3IgREFUQSByZWZlcmVuY2VzCgAAICAtLWRpc2FibGUtYXV0by1pbXBvcnQgICAgICAgICAgICAgIERvIG5vdCBhdXRvLWltcG9ydCBEQVRBIGl0ZW1zIGZyb20gRExMcwoAAAAgIC0tZW5hYmxlLXJ1bnRpbWUtcHNldWRvLXJlbG9jICAgICAgV29yayBhcm91bmQgYXV0by1pbXBvcnQgbGltaXRhdGlvbnMgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaW5nIHBzZXVkby1yZWxvY2F0aW9ucyByZXNvbHZlZCBhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lCgAAAAAAAAAAICAtLWRpc2FibGUtcnVudGltZS1wc2V1ZG8tcmVsb2MgICAgIERvIG5vdCBhZGQgcnVudGltZSBwc2V1ZG8tcmVsb2NhdGlvbnMgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8taW1wb3J0ZWQgREFUQQoAAAAAAAAAICAtLWVuYWJsZS1leHRyYS1wZXAtZGVidWcgICAgICAgICAgICBFbmFibGUgdmVyYm9zZSBkZWJ1ZyBvdXRwdXQgd2hlbiBidWlsZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBsaW5raW5nIHRvIERMTHMgKGVzcC4gYXV0by1pbXBvcnQpCgAAACAgLS1lbmFibGUtbG9uZy1zZWN0aW9uLW5hbWVzICAgICAgICBVc2UgbG9uZyBDT0ZGIHNlY3Rpb24gbmFtZXMgZXZlbiBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlIGltYWdlIGZpbGVzCgAgIC0tZGlzYWJsZS1sb25nLXNlY3Rpb24tbmFtZXMgICAgICAgTmV2ZXIgdXNlIGxvbmcgQ09GRiBzZWN0aW9uIG5hbWVzLCBldmVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIG9iamVjdCBmaWxlcwoAAAAAICAtLVtkaXNhYmxlLV1oaWdoLWVudHJvcHktdmEgICAgICAgIEltYWdlIGlzIGNvbXBhdGlibGUgd2l0aCA2NC1iaXQgYWRkcmVzcyBzcGFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQgcmFuZG9taXphdGlvbiAoQVNMUikKAAAgIC0tW2Rpc2FibGUtXWR5bmFtaWNiYXNlICAgICAgICAgICAgSW1hZ2UgYmFzZSBhZGRyZXNzIG1heSBiZSByZWxvY2F0ZWQgdXNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyBzcGFjZSBsYXlvdXQgcmFuZG9taXphdGlvbiAoQVNMUikKAAAAAAAAAAAgIC0tZW5hYmxlLXJlbG9jLXNlY3Rpb24gICAgICAgICAgICAgQ3JlYXRlIHRoZSBiYXNlIHJlbG9jYXRpb24gdGFibGUKAAAgIC0tZGlzYWJsZS1yZWxvYy1zZWN0aW9uICAgICAgICAgICAgRG8gbm90IGNyZWF0ZSB0aGUgYmFzZSByZWxvY2F0aW9uIHRhYmxlCgAAACAgLS1bZGlzYWJsZS1dZm9yY2VpbnRlZyAgICAgICAgICAgICBDb2RlIGludGVncml0eSBjaGVja3MgYXJlIGVuZm9yY2VkCgAAAAAAAAAAICAtLVtkaXNhYmxlLV1ueGNvbXBhdCAgICAgICAgICAgICAgIEltYWdlIGlzIGNvbXBhdGlibGUgd2l0aCBkYXRhIGV4ZWN1dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50aW9uCgAgIC0tW2Rpc2FibGUtXW5vLWlzb2xhdGlvbiAgICAgICAgICAgSW1hZ2UgdW5kZXJzdGFuZHMgaXNvbGF0aW9uIGJ1dCBkbyBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNvbGF0ZSB0aGUgaW1hZ2UKAAAAICAtLVtkaXNhYmxlLV1uby1zZWggICAgICAgICAgICAgICAgIEltYWdlIGRvZXMgbm90IHVzZSBTRUg7IG5vIFNFIGhhbmRsZXIgbWF5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGNhbGxlZCBpbiB0aGlzIGltYWdlCgAAICAtLVtkaXNhYmxlLV1uby1iaW5kICAgICAgICAgICAgICAgIERvIG5vdCBiaW5kIHRoaXMgaW1hZ2UKAAAAACAgLS1bZGlzYWJsZS1dd2RtZHJpdmVyICAgICAgICAgICAgICBEcml2ZXIgdXNlcyB0aGUgV0RNIG1vZGVsCgAgIC0tW2Rpc2FibGUtXXRzYXdhcmUgICAgICAgICAgICAgICAgSW1hZ2UgaXMgVGVybWluYWwgU2VydmVyIGF3YXJlCgAAAAAgIC0tYnVpbGQtaWRbPVNUWUxFXSAgICAgICAgICAgICAgICAgR2VuZXJhdGUgYnVpbGQgSUQKACAgLS10aHVtYi1lbnRyeT08c3ltYm9sPiAgICAgICAgICAgICBTZXQgdGhlIGVudHJ5IHBvaW50IHRvIGJlIFRodW1iIDxzeW1ib2w+CgAAICAtLVtuby1daW5zZXJ0LXRpbWVzdGFtcCAgICAgICAgICAgIFVzZSBhIHJlYWwgdGltZXN0YW1wIHJhdGhlciB0aGFuIHplcm8gKGRlZmF1bHQpLgoAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnQsIHBsYWNlIGludG8gaW1wb3J0IGxpYnJhcnkgaW5zdGVhZC4KAAAAAAAAAAAgIC0tY29tcGF0LWltcGxpYiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIGJhY2t3YXJkIGNvbXBhdGlibGUgaW1wb3J0IGxpYnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBfX2ltcF88U1lNQk9MPiBhcyB3ZWxsLgoAAAAAACAgLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlWz08YWRkcmVzcz5dIEF1dG9tYXRpY2FsbHkgY2hvb3NlIGltYWdlIGJhc2UgZm9yIERMTHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbmFsbHkgc3RhcnRpbmcgd2l0aCBhZGRyZXNzKSB1bmxlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhbGx5IHNldCB3aXRoIC0taW1hZ2UtYmFzZQoAAAAAACAgLS1kaXNhYmxlLWF1dG8taW1hZ2UtYmFzZSAgICAgICAgICBEbyBub3QgYXV0by1jaG9vc2UgaW1hZ2UgYmFzZS4gKGRlZmF1bHQpCgAAICAtLWVuYWJsZS1ydW50aW1lLXBzZXVkby1yZWxvYyAgICAgIFdvcmsgYXJvdW5kIGF1dG8taW1wb3J0IGxpbWl0YXRpb25zIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGluZyBwc2V1ZG8tcmVsb2NhdGlvbnMgcmVzb2x2ZWQgYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZS4KAAAAAAAAACAgLS1kaXNhYmxlLXJ1bnRpbWUtcHNldWRvLXJlbG9jICAgICBEbyBub3QgYWRkIHJ1bnRpbWUgcHNldWRvLXJlbG9jYXRpb25zIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvLWltcG9ydGVkIERBVEEuCgAAAAAAACAgLS1lbmFibGUtZXh0cmEtcGUtZGVidWcgICAgICAgICAgICBFbmFibGUgdmVyYm9zZSBkZWJ1ZyBvdXRwdXQgd2hlbiBidWlsZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBsaW5raW5nIHRvIERMTHMgKGVzcC4gYXV0by1pbXBvcnQpCgAAAAAgIC0tbGFyZ2UtYWRkcmVzcy1hd2FyZSAgICAgICAgICAgICAgRXhlY3V0YWJsZSBzdXBwb3J0cyB2aXJ0dWFsIGFkZHJlc3NlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVhdGVyIHRoYW4gMiBnaWdhYnl0ZXMKAAAAAAAgIC0tZGlzYWJsZS1sYXJnZS1hZGRyZXNzLWF3YXJlICAgICAgRXhlY3V0YWJsZSBkb2VzIG5vdCBzdXBwb3J0IHZpcnR1YWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzIGdyZWF0ZXIgdGhhbiAyIGdpZ2FieXRlcwoAAAAAACAgLS1bZGlzYWJsZS1dbm8tc2VoICAgICAgICAgICAgICAgICBJbWFnZSBkb2VzIG5vdCB1c2UgU0VILiBObyBTRSBoYW5kbGVyIG1heQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBjYWxsZWQgaW4gdGhpcyBpbWFnZQoAACVQOiVwUzogd2FybmluZzogcmVkZWNsYXJhdGlvbiBvZiBtZW1vcnkgcmVnaW9uIGAlcycKAAAAJVA6JXBTOiB3YXJuaW5nOiBtZW1vcnkgcmVnaW9uIGAlcycgbm90IGRlY2xhcmVkCgAAAAAAAAAlUDogaW52YWxpZCBjaGFyYWN0ZXIgJWMgKCVkKSBpbiBmbGFncwoAJVA6JXBTOiBlcnJvcjogYWxpZ24gd2l0aCBpbnB1dCBhbmQgZXhwbGljaXQgYWxpZ24gc3BlY2lmaWVkCgAAACVQOiB3YXJuaW5nOiBhZGRyZXNzIG9mIGAlcycgaXNuJ3QgbXVsdGlwbGUgb2YgbWF4aW11bSBwYWdlIHNpemUKAAAAAAAAACVQOiVwUyBjYW4gbm90IFBST1ZJREUgYXNzaWdubWVudCB0byBsb2NhdGlvbiBjb3VudGVyCgAAJVA6JXBTIGludmFsaWQgYXNzaWdubWVudCB0byBsb2NhdGlvbiBjb3VudGVyCgAAJVA6JXBTIGFzc2lnbm1lbnQgdG8gbG9jYXRpb24gY291bnRlciBpbnZhbGlkIG91dHNpZGUgb2YgU0VDVElPTlMKAAAAAAAAJVA6JXBTIGNhbm5vdCBtb3ZlIGxvY2F0aW9uIGNvdW50ZXIgYmFja3dhcmRzIChmcm9tICVWIHRvICVWKQoAACVQOiBiZmRfaGFzaF9sb29rdXAgZmFpbGVkIGNyZWF0aW5nIHN5bWJvbCAlcwoAACVQOiBiZmRfbGlua19oYXNoX2xvb2t1cCBmYWlsZWQ6ICVFCgAAAAAlWCVQOiVwUzogdW5yZXNvbHZhYmxlIHN5bWJvbCBgJXMnIHJlZmVyZW5jZWQgaW4gZXhwcmVzc2lvbgoAAAAAJVA6JXBTOiB1bmRlZmluZWQgc3ltYm9sIGAlcycgcmVmZXJlbmNlZCBpbiBleHByZXNzaW9uCgAlUDolcFM6IHVuZGVmaW5lZCBzZWN0aW9uIGAlcycgcmVmZXJlbmNlZCBpbiBleHByZXNzaW9uCgAAAAAAAAAAJVA6JXBTOiB1bmRlZmluZWQgTUVNT1JZIHJlZ2lvbiBgJXMnIHJlZmVyZW5jZWQgaW4gZXhwcmVzc2lvbgoAACVQOiVwUzogdW5rbm93biBjb25zdGFudCBgJXMnIHJlZmVyZW5jZWQgaW4gZXhwcmVzc2lvbgoAJVglUDogYW5vbnltb3VzIHZlcnNpb24gdGFnIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHZlcnNpb24gdGFncwoAJVglUDogZHVwbGljYXRlIHZlcnNpb24gdGFnIGAlcycKAAAAAAAAACVYJVA6IGR1cGxpY2F0ZSBleHByZXNzaW9uIGAlcycgaW4gdmVyc2lvbiBpbmZvcm1hdGlvbgoAJVglUDogdW5hYmxlIHRvIGZpbmQgdmVyc2lvbiBkZXBlbmRlbmN5IGAlcycKAAAAJVA6JXM6IGZpbGUgZm9ybWF0IG5vdCByZWNvZ25pemVkOyB0cmVhdGluZyBhcyBsaW5rZXIgc2NyaXB0CgAAACVQOiB3YXJuaW5nOiAteiBkeW5hbWljLXVuZGVmaW5lZC13ZWFrIGlnbm9yZWQKACVQOiBjb21tb24gcGFnZSBzaXplICgweCV2KSA+IG1heGltdW0gcGFnZSBzaXplICgweCV2KQoAJVA6ICVzOiBwbHVnaW4gcmVwb3J0ZWQgZXJyb3IgYWZ0ZXIgYWxsIHN5bWJvbHMgcmVhZAoAAAAKQXMtbmVlZGVkIGxpYnJhcnkgaW5jbHVkZWQgdG8gc2F0aXNmeSByZWZlcmVuY2UgYnkgZmlsZSAoc3ltYm9sKQoKAAAAAAAlUDogd2FybmluZzogQ1RGIHNlY3Rpb24gaW4gJXBCIG5vdCBsb2FkZWQ7IGl0cyB0eXBlcyB3aWxsIGJlIGRpc2NhcmRlZDogJXMKAAAAACVQOiB3YXJuaW5nOiBDVEYgb3V0cHV0IG5vdCBjcmVhdGVkOiBgJXMnCgAAAAAAACVQOiByZWxvY2F0YWJsZSBsaW5raW5nIHdpdGggcmVsb2NhdGlvbnMgZnJvbSBmb3JtYXQgJXMgKCVwQikgdG8gZm9ybWF0ICVzICglcEIpIGlzIG5vdCBzdXBwb3J0ZWQKAAAAAAAAJVglUDogJXMgYXJjaGl0ZWN0dXJlIG9mIGlucHV0IGZpbGUgYCVwQicgaXMgaW5jb21wYXRpYmxlIHdpdGggJXMgb3V0cHV0CgAAAAAAAAAlWCVQOiBmYWlsZWQgdG8gbWVyZ2UgdGFyZ2V0IHNwZWNpZmljIGRhdGEgb2YgZmlsZSAlcEIKACVYJVA6IHVuYWJsZSB0byByZWFkIC5leHBvcnRzIHNlY3Rpb24gY29udGVudHMKACVYJVA6ICVzIGRvZXMgbm90IHN1cHBvcnQgcmVsb2MgJXMgZm9yIHNldCAlcwoAACVYJVA6IHNwZWNpYWwgc2VjdGlvbiAlcyBkb2VzIG5vdCBzdXBwb3J0IHJlbG9jICVzIGZvciBzZXQgJXMKAAAlWCVQOiB1bnN1cHBvcnRlZCBzaXplICVkIGZvciBzZXQgJXMKAAAAJVglUDogZXJyb3I6IHVucGxhY2VkIG9ycGhhbiBzZWN0aW9uIGAlcEEnIGZyb20gYCVwQicKAAAlUDogd2FybmluZzogb3JwaGFuIHNlY3Rpb24gYCVwQScgZnJvbSBgJXBCJyBiZWluZyBwbGFjZWQgaW4gc2VjdGlvbiBgJXMnCgAAAAAAACVQOiB3YXJuaW5nOiBDVEYgc2VjdGlvbiBpbiAlcEIgY2Fubm90IGJlIGxpbmtlZDogYCVzJwoAJVA6IHdhcm5pbmc6IENURiBsaW5raW5nIGZhaWxlZDsgb3V0cHV0IHdpbGwgaGF2ZSBubyBDVEYgc2VjdGlvbjogJXMKAAAAJVA6IG5vIHNlY3Rpb25zIGFzc2lnbmVkIHRvIHBoZHJzCgAAAAAAACVQOiBiZmRfcmVjb3JkX3BoZHIgZmFpbGVkOiAlRQoAJVglUDogc2VjdGlvbiBgJXMnIGFzc2lnbmVkIHRvIG5vbi1leGlzdGVudCBwaGRyIGAlcycKAAAlWCVQOiBzZWN0aW9uICVzIFZNQSB3cmFwcyBhcm91bmQgYWRkcmVzcyBzcGFjZQoAAAAAAAAAACVYJVA6IHNlY3Rpb24gJXMgTE1BIHdyYXBzIGFyb3VuZCBhZGRyZXNzIHNwYWNlCgAAAAAAAAAAJVglUDogc2VjdGlvbiAlcyBMTUEgWyVWLCVWXSBvdmVybGFwcyBzZWN0aW9uICVzIExNQSBbJVYsJVZdCgAAACVYJVA6IHNlY3Rpb24gJXMgVk1BIFslViwlVl0gb3ZlcmxhcHMgc2VjdGlvbiAlcyBWTUEgWyVWLCVWXQoAAAAlWCVQOiByZWdpb24gYCVzJyBvdmVyZmxvd2VkIGJ5ICVsdSBieXRlcwoAAAAAAAAlWCVQOiByZWdpb24gYCVzJyBvdmVyZmxvd2VkIGJ5ICVsdSBieXRlCgAAAAAAAAAlUDogd2FybmluZzogLS1lbmFibGUtbm9uLWNvbnRpZ3VvdXMtcmVnaW9ucyBkaXNjYXJkcyBzZWN0aW9uIGAlcEEnIGZyb20gYCVwQicKACVYJVA6IHJlcXVpcmVkIHN5bWJvbCBgJXMnIG5vdCBkZWZpbmVkCgAlUDogJXM6IGNhbid0IHNldCBzdGFydCBhZGRyZXNzCgAAAAAAAAAAJVA6IHdhcm5pbmc6IGNhbm5vdCBmaW5kIGVudHJ5IHN5bWJvbCAlczsgZGVmYXVsdGluZyB0byAlVgoAAAAAACVQOiB3YXJuaW5nOiBjYW5ub3QgZmluZCBlbnRyeSBzeW1ib2wgJXM7IG5vdCBzZXR0aW5nIHN0YXJ0IGFkZHJlc3MKAAAAACVQOiAtLWdjLXNlY3Rpb25zIHJlcXVpcmVzIGEgZGVmaW5lZCBzeW1ib2wgcm9vdCBzcGVjaWZpZWQgYnkgLWUgb3IgLXUKACVQOiBpbnB1dCBmaWxlICclcycgaXMgdGhlIHNhbWUgYXMgb3V0cHV0IGZpbGUKACVQOiB3YXJuaW5nOiBjb3VsZCBub3QgZmluZCBhbnkgdGFyZ2V0cyB0aGF0IG1hdGNoIGVuZGlhbm5lc3MgcmVxdWlyZW1lbnQKAAAAAAAAJVA6IGNhbm5vdCBvcGVuIG91dHB1dCBmaWxlICVzOiAlRQoAAAAAACVQOiAlczogY2FuIG5vdCBtYWtlIG9iamVjdCBmaWxlOiAlRQoAAAAlUDogJXM6IGNhbiBub3Qgc2V0IGFyY2hpdGVjdHVyZTogJUUKAAAAJVA6IGludmFsaWQgb3JpZ2luIGZvciBtZW1vcnkgcmVnaW9uICVzCgAAAAAAAAAAJVA6IGludmFsaWQgbGVuZ3RoIGZvciBtZW1vcnkgcmVnaW9uICVzCgAAAAAAAAAAJVA6IHdhcm5pbmc6ICVzIGNvbnRhaW5zIG91dHB1dCBzZWN0aW9uczsgZGlkIHlvdSBmb3JnZXQgLVQ/CgAAACVQOiAlcEI6IGZpbGUgbm90IHJlY29nbml6ZWQ6ICVFOyBtYXRjaGluZyBmb3JtYXRzOgAAAAAAJVA6ICVwQjogZmlsZSBub3QgcmVjb2duaXplZDogJUUKAAAAAAAAACVQOiAlcEI6IC0tanVzdC1zeW1ib2xzIG1heSBub3QgYmUgdXNlZCBvbiBEU08KACVQOiAlcEI6IG1lbWJlciAlcEIgaW4gYXJjaGl2ZSBpcyBub3QgYW4gb2JqZWN0CgAAAAAAAAAAJVA6ICVwQjogZXJyb3IgYWRkaW5nIHN5bWJvbHM6ICVFCgAAAAAAACVQOiBiZmRfaGFzaF9hbGxvY2F0ZSBmYWlsZWQgY3JlYXRpbmcgc3ltYm9sICVzCgAAAAAAAAAAJVA6IEFib3V0IHRvIHJ1biBlcnJvciBoYW5kbGluZyBzY3JpcHQgJyVzJyB3aXRoIGFyZ3VtZW50czogJyVzJyAnJXMnCgAAJVA6IEZhaWxlZCB0byBydW4gZXJyb3IgaGFuZGxpbmcgc2NyaXB0ICclcycsIHJlYXNvbjogAAAlUDogbm90ZSB0byBsaW5rIHdpdGggJXMgdXNlIC1sOiVzIG9yIHJlbmFtZSBpdCB0byBsaWIlcwoAAAAAAAAAJVA6IHNraXBwaW5nIGluY29tcGF0aWJsZSAlcyB3aGVuIHNlYXJjaGluZyBmb3IgJXMKAAAAAAAlUDogYXR0ZW1wdGVkIHN0YXRpYyBsaW5rIG9mIGR5bmFtaWMgb2JqZWN0IGAlcycKAAAAAAAAACVQOiAlcEI6IHdhcm5pbmc6IGRlZmluaXRpb24gb2YgYCVwVCcgb3ZlcnJpZGluZyBjb21tb24gZnJvbSAlcEIKAAAAAAAAACVQOiAlcEI6IHdhcm5pbmc6IGRlZmluaXRpb24gb2YgYCVwVCcgb3ZlcnJpZGluZyBjb21tb24KAAAAAAAAAAAlUDogJXBCOiB3YXJuaW5nOiBjb21tb24gb2YgYCVwVCcgb3ZlcnJpZGRlbiBieSBkZWZpbml0aW9uIGZyb20gJXBCCgAAAAAlUDogJXBCOiB3YXJuaW5nOiBjb21tb24gb2YgYCVwVCcgb3ZlcnJpZGRlbiBieSBkZWZpbml0aW9uCgAAAAAAJVA6ICVwQjogd2FybmluZzogY29tbW9uIG9mIGAlcFQnIG92ZXJyaWRkZW4gYnkgbGFyZ2VyIGNvbW1vbiBmcm9tICVwQgoAJVA6ICVwQjogd2FybmluZzogY29tbW9uIG9mIGAlcFQnIG92ZXJyaWRkZW4gYnkgbGFyZ2VyIGNvbW1vbgoAACVQOiAlcEI6IHdhcm5pbmc6IGNvbW1vbiBvZiBgJXBUJyBvdmVycmlkaW5nIHNtYWxsZXIgY29tbW9uIGZyb20gJXBCCgAAACVQOiAlcEI6IHdhcm5pbmc6IGNvbW1vbiBvZiBgJXBUJyBvdmVycmlkaW5nIHNtYWxsZXIgY29tbW9uCgAAAAAlUDogJXBCIGFuZCAlcEI6IHdhcm5pbmc6IG11bHRpcGxlIGNvbW1vbiBvZiBgJXBUJwoAAAAAACVQOiAlcEI6IHdhcm5pbmc6IG11bHRpcGxlIGNvbW1vbiBvZiBgJXBUJwoAAAAAACVQOiAlQzogd2FybmluZzogbXVsdGlwbGUgZGVmaW5pdGlvbiBvZiBgJXBUJwAAACVYJVA6ICVDOiBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIGAlcFQnAAAlUDogZGlzYWJsaW5nIHJlbGF4YXRpb247IGl0IHdpbGwgbm90IHdvcmsgd2l0aCBtdWx0aXBsZSBkZWZpbml0aW9ucwoAAAAlWCVQOiBiZmRfaGFzaF90YWJsZV9pbml0IG9mIGNyZWYgdGFibGUgZmFpbGVkOiAlRQoAAAAAACVYJVA6IGNyZWZfaGFzaF9sb29rdXAgZmFpbGVkOiAlRQoAAAAAAAAlUDogJXM6IGNhbid0IG9wZW4gZm9yIHdyaXRpbmc6ICVFCgAAAAAAJVA6IHdhcm5pbmc6IHVucmVjb2duaXplZCAtLWJ1aWxkLWlkIHN0eWxlIGlnbm9yZWQKAAAAAAAlUDogd2FybmluZzogY2Fubm90IGNyZWF0ZSAubm90ZS5nbnUuYnVpbGQtaWQgc2VjdGlvbiwgLS1idWlsZC1pZCBpZ25vcmVkCgAAAAAAACVQOiB3YXJuaW5nOiAtLXBhY2thZ2UtbWV0YWRhdGEgaXMgZW1wdHksIGlnbm9yaW5nCgAAAAAAJVA6IHdhcm5pbmc6IC0tcGFja2FnZS1tZXRhZGF0YT0lcyBkb2VzIG5vdCBjb250YWluIHZhbGlkIEpTT04sIGlnbm9yaW5nOiAlcwoAAAAlUDogd2FybmluZzogY2Fubm90IGNyZWF0ZSAubm90ZS5wYWNrYWdlIHNlY3Rpb24sIC0tcGFja2FnZS1tZXRhZGF0YSBpZ25vcmVkCgAAACVQOiBjYW5ub3QgdXNlIGV4ZWN1dGFibGUgZmlsZSAnJXBCJyBhcyBpbnB1dCB0byBhIGxpbmsKAAAAAAAAAAAlUDogY29tcGFjdCBmcmFtZSBkZXNjcmlwdGlvbnMgaW5jb21wYXRpYmxlIHdpdGggRFdBUkYyIC5laF9mcmFtZSBmcm9tICVwQgoAAAAAACVQOiB3YXJuaW5nOiBjYW5ub3QgY3JlYXRlIC5laF9mcmFtZV9oZHIgc2VjdGlvbiwgLS1laC1mcmFtZS1oZHIgaWdub3JlZAoAAAAAAAAAJVA6IGZhaWxlZCB0byBwYXJzZSBFSCBmcmFtZSBlbnRyaWVzCgAAACVQOiBjb3VsZCBub3QgY3JlYXRlIGR1bW15IElSIGJmZDogJUUKAAAlUDogcGx1Z2luIGZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGlucHV0OiAlcwoAAAAAACVQOiBwbHVnaW5fc3RyZHVwIGZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnk6ICVzCgAAAAAAAAAAJVA6ICVzOiBwbHVnaW4gcmVwb3J0ZWQgZXJyb3IgY2xhaW1pbmcgZmlsZQoAAAAAJVA6IGZhaWxlZCB0byBhZGQgRFRfTkVFREVEIGR5bmFtaWMgdGFnCgAAAAAAAAAAJVA6IHdhcm5pbmc6ICVzLCBuZWVkZWQgYnkgJXBCLCBub3QgZm91bmQgKHRyeSB1c2luZyAtcnBhdGggb3IgLXJwYXRoLWxpbmspCgAAAAAlUDogJXM6IG5vbi1FTEYgc3ltYm9sIGluIEVMRiBCRkQhCgAAAAAAJVA6IHVua25vd24gRUxGIHN5bWJvbCB2aXNpYmlsaXR5OiAlZCEKACVQOiBjb3VsZCBub3QgZGVmaW5lIGNvbW1vbiBzeW1ib2wgYCVwVCc6ICVFCgAAAENvbW1vbiBzeW1ib2wgICAgICAgc2l6ZSAgICAgICAgICAgICAgZmlsZQoKAAAAACVwSTogbm8gbmV3IElSIHN5bWJvbHMgdG8gY2xhaW0KAAAAAAAAAABBcmNoaXZlIG1lbWJlciBpbmNsdWRlZCB0byBzYXRpc2Z5IHJlZmVyZW5jZSBieSBmaWxlIChzeW1ib2wpCgoAJVA6ICVwQjogY291bGQgbm90IHJlYWQgcmVsb2NzOiAlRQoAAAAAACVQOiAlczogcGx1Z2luIHN5bWJvbCB0YWJsZSBjb3JydXB0IChzeW0gdHlwZSAlZCkKAAAAAAAAdW5rbm93biBMVE8gdmlzaWJpbGl0eSB2YWx1ZSAleAAlUDogJXBCOiBzeW1ib2wgYCVzJyBkZWZpbml0aW9uOiAlcywgdmlzaWJpbGl0eTogJXMsIHJlc29sdXRpb246ICVzCgAAAABDVEYgZXJyb3I6IGNhbm5vdCBnZXQgQ1RGIGVycm9yczogYCVzJwoAJVA6IGludmFsaWQgdHlwZSBmb3Igb3V0cHV0IHNlY3Rpb24gYCVzJwoAAAAAAAAAdW5yZWNvZ25pc2VkIG9yIHVuc3VwcG9ydGVkIHRva2VuICclcycgaW4gc2VhcmNoIHBhdGgKAAB3YXJuaW5nOiBJTlNFUlQgc3RhdGVtZW50IGluIGxpbmtlciBzY3JpcHQgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1lbmFibGUtbm9uLWNvbnRpZ3VvdXMtcmVnaW9ucy4KAAAAAAAAACVQOiAlcEI6IGJmZF9lbGZfZ2V0X2JmZF9uZWVkZWRfbGlzdCBmYWlsZWQ6ICVFCgAAAAAAAAAAJVA6JXBTOiB3YXJuaW5nOiAtLWVuYWJsZS1ub24tY29udGlndW91cy1yZWdpb25zIG1ha2VzIHNlY3Rpb24gYCVwQScgZnJvbSBgJXBCJyBtYXRjaCAvRElTQ0FSRC8gY2xhdXNlLgoAAAAAAAAAACVQOiVwUzogd2FybmluZzogLS1lbmFibGUtbm9uLWNvbnRpZ3VvdXMtcmVnaW9ucyBtYXkgY2hhbmdlIGJlaGF2aW91ciBmb3Igc2VjdGlvbiBgJXBBJyBmcm9tIGAlcEInIChhc3NpZ25lZCB0byAlcEEsIGJ1dCBhZGRpdGlvbmFsIG1hdGNoOiAlcEEpCgAAAAAAAAAAJVA6IHdhcm5pbmc6ICVzLCBuZWVkZWQgYnkgJXBCLCBtYXkgY29uZmxpY3Qgd2l0aCAlcwoAAAAlUDogaWxsZWdhbCB1c2Ugb2YgYCVzJyBzZWN0aW9uCgAAAAAAAAAAJVA6IG91dHB1dCBmb3JtYXQgJXMgY2Fubm90IHJlcHJlc2VudCBzZWN0aW9uIGNhbGxlZCAlczogJUUKAAAAACVQOiB3YXJuaW5nOiBDVEYgc2VjdGlvbiBlbWlzc2lvbiBmYWlsZWQ7IG91dHB1dCB3aWxsIGhhdmUgbm8gQ1RGIHNlY3Rpb246ICVzCgAAJVA6IGZhaWxlZCB0byBzZXQgZHluYW1pYyBzZWN0aW9uIHNpemVzOiAlRQoAAAAAJVA6ICVwQjogY2FuJ3QgcmVhZCBjb250ZW50cyBvZiBzZWN0aW9uICVwQTogJUUKAAAAAAAAAAAlUDolcFM6IG5vbiBjb25zdGFudCBvciBmb3J3YXJkIHJlZmVyZW5jZSBhZGRyZXNzIGV4cHJlc3Npb24gZm9yIHNlY3Rpb24gJXMKAAAAACVYJVA6IGludGVybmFsIGVycm9yIG9uIENPRkYgc2hhcmVkIGxpYnJhcnkgc2VjdGlvbiAlcwoAJVA6IGVycm9yOiBubyBtZW1vcnkgcmVnaW9uIHNwZWNpZmllZCBmb3IgbG9hZGFibGUgc2VjdGlvbiBgJXMnCgAAAAAAAAAAJVA6IHdhcm5pbmc6IG5vIG1lbW9yeSByZWdpb24gc3BlY2lmaWVkIGZvciBsb2FkYWJsZSBzZWN0aW9uIGAlcycKAAAAAAAAJVA6IHdhcm5pbmc6IHN0YXJ0IG9mIHNlY3Rpb24gJXMgY2hhbmdlZCBieSAlbGQKAAAAAAAAAAAlUDogd2FybmluZzogZG90IG1vdmVkIGJhY2t3YXJkcyBiZWZvcmUgYCVzJwoAAAAlUDogT3V0cHV0IHNlY3Rpb24gYCVwQScgbm90IGxhcmdlIGVub3VnaCBmb3IgdGhlIGxpbmtlci1jcmVhdGVkIHN0dWJzIHNlY3Rpb24gYCVwQScuCgAAJVA6IFJlbGF4YXRpb24gbm90IHN1cHBvcnRlZCB3aXRoIC0tZW5hYmxlLW5vbi1jb250aWd1b3VzLXJlZ2lvbnMgKHNlY3Rpb24gYCVwQScgd291bGQgb3ZlcmZsb3cgYCVwQScgYWZ0ZXIgaXQgY2hhbmdlZCBzaXplKS4KAAAlWCVQOiAuZWhfZnJhbWUvLnN0YWIgZWRpdDogJUUKACVYJVA6IGFkZHJlc3MgMHgldiBvZiAlcEIgc2VjdGlvbiBgJXMnIGlzIG5vdCB3aXRoaW4gcmVnaW9uIGAlcycKAAAAAAAAACVYJVA6ICVwQiBzZWN0aW9uIGAlcycgd2lsbCBub3QgZml0IGluIHJlZ2lvbiBgJXMnCgAAAAAAJVA6ICVwQSBoYXMgYm90aCBvcmRlcmVkIGFuZCB1bm9yZGVyZWQgc2VjdGlvbnMKAAAAAAAAAAAlUDogbWFwIHNlY3Rpb25zIHRvIHNlZ21lbnRzIGZhaWxlZDogJUUKAAAAAAAAAAAlUDogZmFpbGVkIHRvIHN0cmlwIHplcm8tc2l6ZWQgZHluYW1pYyBzZWN0aW9ucwoAAAAAAAAAACVQOiBmYWlsZWQgdG8gcmVjb3JkIGFzc2lnbm1lbnQgdG8gJXM6ICVFCgAAAAAAACVQOiB3YXJuaW5nOiBDVEYgc3RydGFiIGFzc29jaWF0aW9uIGZhaWxlZDsgc3RyaW5ncyB3aWxsIG5vdCBiZSBzaGFyZWQ6ICVzCgAAAAAAJVA6IGJmZF9uZXdfbGlua19vcmRlciBmYWlsZWQ6ICVFCgAAAAAAACVQOiB3YXJuaW5nOiAubm90ZS5nbnUuYnVpbGQtaWQgc2VjdGlvbiBkaXNjYXJkZWQsIC0tYnVpbGQtaWQgaWdub3JlZAoAAFNPUlRfQllfTkFNRShTT1JUX0JZX0FMSUdOTUVOVCgAU09SVF9CWV9BTElHTk1FTlQoU09SVF9CWV9OQU1FKAAlUDogd2FybmluZzogQ1RGIHN5bWJvbCBhZGRpdGlvbiBmYWlsZWQ7IENURiB3aWxsIG5vdCBiZSB0aWVkIHRvIHN5bWJvbHM6ICVzCgAAACVQOiB3YXJuaW5nOiBDVEYgc3ltYm9sIHNodWZmbGluZyBmYWlsZWQ7IENURiB3aWxsIG5vdCBiZSB0aWVkIHRvIHN5bWJvbHM6ICVzCgAAJVglUDogJUg6IHByb2hpYml0ZWQgY3Jvc3MgcmVmZXJlbmNlIGZyb20gJXMgdG8gYCVwVCcgaW4gJXMKAAAAACVYJVA6ICVIOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGAlcFQnCgAlUDogJUg6IHdhcm5pbmc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYCVwVCcKAAAlWCVQOiAlRDogbW9yZSB1bmRlZmluZWQgcmVmZXJlbmNlcyB0byBgJXBUJyBmb2xsb3cKAAAAACVQOiAlRDogd2FybmluZzogbW9yZSB1bmRlZmluZWQgcmVmZXJlbmNlcyB0byBgJXBUJyBmb2xsb3cKAAAAAAAlWCVQOiAlcEI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYCVwVCcKAAAAAAAAAAAlUDogJXBCOiB3YXJuaW5nOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGAlcFQnCgAlWCVQOiAlcEI6IG1vcmUgdW5kZWZpbmVkIHJlZmVyZW5jZXMgdG8gYCVwVCcgZm9sbG93CgAAACVQOiAlcEI6IHdhcm5pbmc6IG1vcmUgdW5kZWZpbmVkIHJlZmVyZW5jZXMgdG8gYCVwVCcgZm9sbG93CgAAAAAgYWRkaXRpb25hbCByZWxvY2F0aW9uIG92ZXJmbG93cyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dAoAAAAAAAAAIHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogJXMgYWdhaW5zdCB1bmRlZmluZWQgc3ltYm9sIGAlcFQnACByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6ICVzIGFnYWluc3Qgc3ltYm9sIGAlcFQnIGRlZmluZWQgaW4gJXBBIHNlY3Rpb24gaW4gJXBCAAAAAAAgcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiAlcyBhZ2FpbnN0IGAlcFQnAAAlUDogd2FybmluZzogLm5vdGUucGFja2FnZSBzZWN0aW9uIGRpc2NhcmRlZCwgLS1wYWNrYWdlLW1ldGFkYXRhIGlnbm9yZWQKAAAAAAAAACVYJUg6IGRhbmdlcm91cyByZWxvY2F0aW9uOiAlcwoAJVglSDogcmVsb2MgcmVmZXJzIHRvIHN5bWJvbCBgJXBUJyB3aGljaCBpcyBub3QgYmVpbmcgb3V0cHV0CgAAACVYJVA6IGRpZmZlcmVudCByZWxvY3MgdXNlZCBpbiBzZXQgJXMKAAAlWCVQOiBkaWZmZXJlbnQgb2JqZWN0IGZpbGUgZm9ybWF0cyBjb21wb3Npbmcgc2V0ICVzCgAAACVQOiB3YXJuaW5nOiBnbG9iYWwgY29uc3RydWN0b3IgJXMgdXNlZAoAAAAAAAAAACVQOiBCRkQgYmFja2VuZCBlcnJvcjogQkZEX1JFTE9DX0NUT1IgdW5zdXBwb3J0ZWQKAAAAAAAAJVA6JXBTOiBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlciBgJXMnJXMKAAAAAAAAJVA6IGludGVybmFsIGVycm9yOiBhYm9ydGluZyBhdCAlczolZCBpbiAlcwoAAAAAJVA6IGludmFsaWQgaGV4IG51bWJlciBmb3IgUEUgcGFyYW1ldGVyICclcycKAAAAJVA6IHN0cmFuZ2UgaGV4IGluZm8gZm9yIFBFIHBhcmFtZXRlciAnJXMnCgAAAAAAJVA6IHdhcm5pbmc6IGJhZCB2ZXJzaW9uIG51bWJlciBpbiAtc3Vic3lzdGVtIG9wdGlvbgoAAAAlUDogaW52YWxpZCBzdWJzeXN0ZW0gdHlwZSAlcwoAACVQOiB3YXJuaW5nOiAtLWV4cG9ydC1keW5hbWljIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFBFKyB0YXJnZXRzLCBkaWQgeW91IG1lYW4gLS1leHBvcnQtYWxsLXN5bWJvbHM/CgAAAAAAJVA6IHdhcm5pbmcsIGZpbGUgYWxpZ25tZW50ID4gc2VjdGlvbiBhbGlnbm1lbnQKAAAAAAAAAAB1c2UtbnVsLXByZWZpeGVkLWltcG9ydC10YWJsZXMAAGVuYWJsZS1ydW50aW1lLXBzZXVkby1yZWxvYy12MgAALyogU2NyaXB0IGZvciAtVXIgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQocGUteDg2LTY0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXBlcC9saWIiKTsKU0VDVElPTlMKewogIC50ZXh0ICA6CiAgewogICAgKigudGV4dCkKICAgIC4gPSBBTElHTig4KTsKICAgICAgIC8qIE5vdGU6IHdlIGFsd2F5cyBkZWZpbmUgX19DVE9SX0xJU1RfXyBhbmQgX19fQ1RPUl9MSVNUX18gaGVyZSwKICAgICAgICAgIHdlIGRvIG5vdCBQUk9WSURFIHRoZW0uICBUaGlzIGlzIGJlY2F1c2UgdGhlIGN0b3JzLm8gc3RhcnR1cAoJICBjb2RlIGluIGxpYmdjYyBkZWZpbmVzIHRoZW0gYXMgY29tbW9uIHN5bWJvbHMsIHdpdGggdGhlCiAgICAgICAgICBleHBlY3RhdGlvbiB0aGF0IHRoZXkgd2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRoZSBkZWZpbml0aW9ucwoJICBoZXJlLiAgSWYgd2UgUFJPVklERSB0aGUgc3ltYm9scyB0aGVuIHRoZXkgd2lsbCBub3QgYmUKCSAgb3ZlcnJpZGRlbiBhbmQgZ2xvYmFsIGNvbnN0cnVjdG9ycyB3aWxsIG5vdCBiZSBydW4uCgkgIFNlZSBQUiAyMjc2MiBmb3IgbW9yZSBkZXRhaWxzLgoKCSAgVGhpcyBkb2VzIG1lYW4gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgZm9yIGEgdXNlciB0byBkZWZpbmUKCSAgdGhlaXIgb3duIF9fQ1RPUl9MSVNUX18gYW5kIF9fRFRPUl9MSVNUX18gc3ltYm9sczsgaWYgdGhleSBkbywKCSAgdGhlIGNvbnRlbnQgZnJvbSB0aG9zZSB2YXJpYWJsZXMgYXJlIGluY2x1ZGVkIGJ1dCB0aGUgc3ltYm9scwoJICBkZWZpbmVkIGhlcmUgc2lsZW50bHkgdGFrZSBwcmVjZWRlbmNlLiAgSWYgdGhleSB0cnVseSBuZWVkIHRvCgkgIGJlIHJlZGVmaW5lZCwgYSBjdXN0b20gbGlua2VyIHNjcmlwdCB3aWxsIGhhdmUgdG8gYmUgdXNlZC4KCSAgKFRoZSBjdXN0b20gc2NyaXB0IGNhbiBqdXN0IGJlIGEgY29weSBvZiB0aGlzIHNjcmlwdCB3aXRoIHRoZQoJICBQUk9WSURFKCkgcXVhbGlmaWVycyBhZGRlZCkuCgkgIEluIHBhcnRpY3VsYXIgdGhpcyBtZWFucyB0aGF0IGxkIC1VciBkb2VzIG5vdCB3b3JrLCBiZWNhdXNlCgkgIHRoZSBwcm9wZXIgX19DVE9SX0xJU1RfXyBzZXQgYnkgbGQgLVVyIGlzIG92ZXJyaWRkZW4gYnkgYQoJICBib2d1cyBfX0NUT1JfTElTVF9fIHNldCBieSB0aGUgZmluYWwgbGluay4gIFNlZSBQUiA0Ni4gICovCiAgICAgICBfX19DVE9SX0xJU1RfXyA9IC47CiAgICAgICBfX0NUT1JfTElTVF9fID0gLjsKICAgICAgIExPTkcgKC0xKTsgTE9ORyAoLTEpOwogICAgICAgS0VFUCAoKiguY3RvcnMpKTsKICAgICAgIEtFRVAgKCooLmN0b3IpKTsKICAgICAgIEtFRVAgKCooU09SVF9CWV9OQU1FKC5jdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7IExPTkcgKDApOwogICAgICAgLyogU2VlIGNvbW1lbnQgYWJvdXQgX19DVE9SX0xJU1RfXyBhYm92ZS4gIFRoZSBzYW1lIHJlYXNvbmluZwogICAgCSAgYXBwbGllcyBoZXJlIHRvby4gICovCiAgICAgICBfX19EVE9SX0xJU1RfXyA9IC47CiAgICAgICBfX0RUT1JfTElTVF9fID0gLjsKICAgICAgIExPTkcgKC0xKTsgTE9ORyAoLTEpOwogICAgICAgS0VFUCAoKiguZHRvcnMpKTsKICAgICAgIEtFRVAgKCooLmR0b3IpKTsKICAgICAgIEtFRVAgKCooU09SVF9CWV9OQU1FKC5kdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7IExPTkcgKDApOwogIH0KICAvKiBUaGUgQ3lnd2luMzIgbGlicmFyeSB1c2VzIGEgc2VjdGlvbiB0byBhdm9pZCBjb3B5aW5nIGNlcnRhaW4gZGF0YQogICAgIG9uIGZvcmsuICBUaGlzIHVzZWQgdG8gYmUgbmFtZWQgIi5kYXRhIi4gIFRoZSBsaW5rZXIgdXNlZAogICAgIHRvIGluY2x1ZGUgdGhpcyBiZXR3ZWVuIF9fZGF0YV9zdGFydF9fIGFuZCBfX2RhdGFfZW5kX18sIGJ1dCB0aGF0CiAgICAgYnJlYWtzIGJ1aWxkaW5nIHRoZSBjeWd3aW4zMiBkbGwuICBJbnN0ZWFkLCB3ZSBuYW1lIHRoZSBzZWN0aW9uCiAgICAgIi5kYXRhX2N5Z3dpbl9ub2NvcHkiIGFuZCBleHBsaWNpdGx5IGluY2x1ZGUgaXQgYWZ0ZXIgX19kYXRhX2VuZF9fLiAqLwogIC5kYXRhICA6CiAgewogICAgKiguZGF0YSkKICAgIEtFRVAoKiguamNyKSkKICB9CiAgLnJkYXRhICA6CiAgewogICAgKigucmRhdGEpCiAgICAuID0gQUxJR04oNCk7CiAgfQogIC5laF9mcmFtZSAgOgogIHsKICAgIEtFRVAgKCooLmVoX2ZyYW1lKSkKICB9CiAgLnBkYXRhICA6CiAgewogICAgS0VFUCgqKC5wZGF0YSkpCiAgfQogIC54ZGF0YSAgOgogIHsKICAgIEtFRVAoKigueGRhdGEpKQogIH0KICAuYnNzICA6CiAgewogICAgKiguYnNzKQogICAgKihDT01NT04pCiAgfQogIC5lZGF0YSAgOgogIHsKICAgICooLmVkYXRhKQogIH0KICAvRElTQ0FSRC8gOgogIHsKICAgICooLmRlYnVnJFMpCiAgICAqKC5kZWJ1ZyRUKQogICAgKiguZGVidWckRikKICB9CiAgLmlkYXRhICA6CiAgewogICAgLyogVGhpcyBjYW5ub3QgY3VycmVudGx5IGJlIGhhbmRsZWQgd2l0aCBncm91cGVkIHNlY3Rpb25zLgoJU2VlIHBlcC5lbTpzb3J0X3NlY3Rpb25zLiAgKi8KICB9CiAgLkNSVCAgOgogIHsKICAgIC8qIF9fX2NydF94bF9lbmRfXyBpcyBkZWZpbmVkIGluIHRoZSBUTFMgRGlyZWN0b3J5IHN1cHBvcnQgY29kZSAqLwogIH0KICAvKiBXaW5kb3dzIFRMUyBleHBlY3RzIC50bHMkQUFBIHRvIGJlIGF0IHRoZSBzdGFydCBhbmQgLnRscyRaWlogdG8gYmUKICAgICBhdCB0aGUgZW5kIG9mIHRoZSAudGxzIHNlY3Rpb24uICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIF90bHNfc3RhcnQgTVVTVAogICAgIGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY3Rpb24gdG8gZW5hYmxlIFNFQ1JFTDMyIHJlbG9jYXRpb25zIHdpdGggVExTCiAgICAgZGF0YS4gICovCiAgLnRscyAgOgogIHsKICAgICooLnRscykKICB9CiAgLmVuZGp1bmsgIDoKICB7CiAgICAvKiBlbmQgaXMgZGVwcmVjYXRlZCwgZG9uJ3QgdXNlIGl0ICovCiAgfQogIC5yc3JjICA6IFNVQkFMSUdOKDQpCiAgewogICAgKigucnNyYykKICB9CiAgLnJlbG9jICA6CiAgewogICAgKigucmVsb2MpCiAgfQogIC5zdGFiICAgOgogIHsKICAgICooLnN0YWIpCiAgfQogIC5zdGFic3RyICAgOgogIHsKICAgICooLnN0YWJzdHIpCiAgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uLiAgVW5saWtlIG90aGVyIHRhcmdldHMgdGhhdCBmYWtlIHRoaXMgYnkgcHV0dGluZyB0aGUKICAgICBzZWN0aW9uIFZNQSBhdCAwLCB0aGUgUEUgZm9ybWF0IHdpbGwgbm90IGFsbG93IGl0LiAgKi8KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAgOgogIHsKICAgICooLmRlYnVnX2FyYW5nZXMpCiAgfQogIC56ZGVidWdfYXJhbmdlcyAgIDoKICB7CiAgICAqKC56ZGVidWdfYXJhbmdlcykKICB9CiAgLmRlYnVnX3B1Ym5hbWVzICAgOgogIHsKICAgICooLmRlYnVnX3B1Ym5hbWVzKQogIH0KICAuemRlYnVnX3B1Ym5hbWVzICAgOgogIHsKICAgICooLnpkZWJ1Z19wdWJuYW1lcykKICB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICA6CiAgewogICAgKiguZGVidWdfaW5mbykKICB9CiAgLnpkZWJ1Z19pbmZvICAgOgogIHsKICAgICooLnpkZWJ1Z19pbmZvKQogIH0KICAuZGVidWdfYWJicmV2ICAgOgogIHsKICAgICooLmRlYnVnX2FiYnJldikKICB9CiAgLnpkZWJ1Z19hYmJyZXYgICA6CiAgewogICAgKiguemRlYnVnX2FiYnJldikKICB9CiAgLmRlYnVnX2xpbmUgICA6CiAgewogICAgKiguZGVidWdfbGluZSkKICB9CiAgLnpkZWJ1Z19saW5lICAgOgogIHsKICAgICooLnpkZWJ1Z19saW5lKQogIH0KICAuZGVidWdfZnJhbWUgICA6CiAgewogICAgKiguZGVidWdfZnJhbWUqKQogIH0KICAuemRlYnVnX2ZyYW1lICAgOgogIHsKICAgICooLnpkZWJ1Z19mcmFtZSopCiAgfQogIC5kZWJ1Z19zdHIgICA6CiAgewogICAgKiguZGVidWdfc3RyKQogIH0KICAuemRlYnVnX3N0ciAgIDoKICB7CiAgICAqKC56ZGVidWdfc3RyKQogIH0KICAuZGVidWdfbG9jICAgOgogIHsKICAgICooLmRlYnVnX2xvYykKICB9CiAgLnpkZWJ1Z19sb2MgICA6CiAgewogICAgKiguemRlYnVnX2xvYykKICB9CiAgLmRlYnVnX21hY2luZm8gICA6CiAgewogICAgKiguZGVidWdfbWFjaW5mbykKICB9CiAgLnpkZWJ1Z19tYWNpbmZvICAgOgogIHsKICAgICooLnpkZWJ1Z19tYWNpbmZvKQogIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgICA6CiAgewogICAgKiguZGVidWdfd2Vha25hbWVzKQogIH0KICAuemRlYnVnX3dlYWtuYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfd2Vha25hbWVzKQogIH0KICAuZGVidWdfZnVuY25hbWVzICAgOgogIHsKICAgICooLmRlYnVnX2Z1bmNuYW1lcykKICB9CiAgLnpkZWJ1Z19mdW5jbmFtZXMgICA6CiAgewogICAgKiguemRlYnVnX2Z1bmNuYW1lcykKICB9CiAgLmRlYnVnX3R5cGVuYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlbmFtZXMpCiAgfQogIC56ZGVidWdfdHlwZW5hbWVzICAgOgogIHsKICAgICooLnpkZWJ1Z190eXBlbmFtZXMpCiAgfQogIC5kZWJ1Z192YXJuYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z192YXJuYW1lcykKICB9CiAgLnpkZWJ1Z192YXJuYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfdmFybmFtZXMpCiAgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJ0eXBlcykKICB9CiAgLnpkZWJ1Z19wdWJ0eXBlcyAgIDoKICB7CiAgICAqKC56ZGVidWdfcHVidHlwZXMpCiAgfQogIC5kZWJ1Z19yYW5nZXMgICA6CiAgewogICAgKiguZGVidWdfcmFuZ2VzKQogIH0KICAuemRlYnVnX3JhbmdlcyAgIDoKICB7CiAgICAqKC56ZGVidWdfcmFuZ2VzKQogIH0KICAvKiBEV0FSRiA0LiAgKi8KICAuZGVidWdfdHlwZXMgICA6CiAgewogICAgKiguZGVidWdfdHlwZXMpCiAgfQogIC56ZGVidWdfdHlwZXMgICA6CiAgewogICAgKiguemRlYnVnX3R5cGVzKQogIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgIDoKICB7CiAgICAqKC5kZWJ1Z19hZGRyKQogIH0KICAuemRlYnVnX2FkZHIgICA6CiAgewogICAgKiguemRlYnVnX2FkZHIpCiAgfQogIC5kZWJ1Z19saW5lX3N0ciAgIDoKICB7CiAgICAqKC5kZWJ1Z19saW5lX3N0cikKICB9CiAgLnpkZWJ1Z19saW5lX3N0ciAgIDoKICB7CiAgICAqKC56ZGVidWdfbGluZV9zdHIpCiAgfQogIC5kZWJ1Z19sb2NsaXN0cyAgIDoKICB7CiAgICAqKC5kZWJ1Z19sb2NsaXN0cykKICB9CiAgLnpkZWJ1Z19sb2NsaXN0cyAgIDoKICB7CiAgICAqKC56ZGVidWdfbG9jbGlzdHMpCiAgfQogIC5kZWJ1Z19tYWNybyAgIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNybykKICB9CiAgLnpkZWJ1Z19tYWNybyAgIDoKICB7CiAgICAqKC56ZGVidWdfbWFjcm8pCiAgfQogIC5kZWJ1Z19uYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19uYW1lcykKICB9CiAgLnpkZWJ1Z19uYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfbmFtZXMpCiAgfQogIC5kZWJ1Z19ybmdsaXN0cyAgIDoKICB7CiAgICAqKC5kZWJ1Z19ybmdsaXN0cykKICB9CiAgLnpkZWJ1Z19ybmdsaXN0cyAgIDoKICB7CiAgICAqKC56ZGVidWdfcm5nbGlzdHMpCiAgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAgIDoKICB7CiAgICAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykKICB9CiAgLnpkZWJ1Z19zdHJfb2Zmc2V0cyAgIDoKICB7CiAgICAqKC56ZGVidWdfc3RyX29mZnNldHMpCiAgfQogIC5kZWJ1Z19zdXAgICA6CiAgewogICAgKiguZGVidWdfc3VwKQogIH0KICAvKiBGb3IgR28gYW5kIFJ1c3QuICAqLwogIC5kZWJ1Z19nZGJfc2NyaXB0cyAgIDoKICB7CiAgICAqKC5kZWJ1Z19nZGJfc2NyaXB0cykKICB9CiAgLnpkZWJ1Z19nZGJfc2NyaXB0cyAgIDoKICB7CiAgICAqKC56ZGVidWdfZ2RiX3NjcmlwdHMpCiAgfQp9CgoALyogU2NyaXB0IGZvciAtciAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVChwZS14ODYtNjQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcGVwL2xpYiIpOwpTRUNUSU9OUwp7CiAgLnRleHQgIDoKICB7CiAgICAqKC50ZXh0KQogIH0KICAvKiBUaGUgQ3lnd2luMzIgbGlicmFyeSB1c2VzIGEgc2VjdGlvbiB0byBhdm9pZCBjb3B5aW5nIGNlcnRhaW4gZGF0YQogICAgIG9uIGZvcmsuICBUaGlzIHVzZWQgdG8gYmUgbmFtZWQgIi5kYXRhIi4gIFRoZSBsaW5rZXIgdXNlZAogICAgIHRvIGluY2x1ZGUgdGhpcyBiZXR3ZWVuIF9fZGF0YV9zdGFydF9fIGFuZCBfX2RhdGFfZW5kX18sIGJ1dCB0aGF0CiAgICAgYnJlYWtzIGJ1aWxkaW5nIHRoZSBjeWd3aW4zMiBkbGwuICBJbnN0ZWFkLCB3ZSBuYW1lIHRoZSBzZWN0aW9uCiAgICAgIi5kYXRhX2N5Z3dpbl9ub2NvcHkiIGFuZCBleHBsaWNpdGx5IGluY2x1ZGUgaXQgYWZ0ZXIgX19kYXRhX2VuZF9fLiAqLwogIC5kYXRhICA6CiAgewogICAgKiguZGF0YSkKICAgIEtFRVAoKiguamNyKSkKICB9CiAgLnJkYXRhICA6CiAgewogICAgKigucmRhdGEpCiAgICAuID0gQUxJR04oNCk7CiAgfQogIC5laF9mcmFtZSAgOgogIHsKICAgIEtFRVAgKCooLmVoX2ZyYW1lKSkKICB9CiAgLnBkYXRhICA6CiAgewogICAgS0VFUCgqKC5wZGF0YSkpCiAgfQogIC54ZGF0YSAgOgogIHsKICAgIEtFRVAoKigueGRhdGEpKQogIH0KICAuYnNzICA6CiAgewogICAgKiguYnNzKQogICAgKihDT01NT04pCiAgfQogIC5lZGF0YSAgOgogIHsKICAgICooLmVkYXRhKQogIH0KICAvRElTQ0FSRC8gOgogIHsKICAgICooLmRlYnVnJFMpCiAgICAqKC5kZWJ1ZyRUKQogICAgKiguZGVidWckRikKICB9CiAgLmlkYXRhICA6CiAgewogICAgLyogVGhpcyBjYW5ub3QgY3VycmVudGx5IGJlIGhhbmRsZWQgd2l0aCBncm91cGVkIHNlY3Rpb25zLgoJU2VlIHBlcC5lbTpzb3J0X3NlY3Rpb25zLiAgKi8KICB9CiAgLkNSVCAgOgogIHsKICAgIC8qIF9fX2NydF94bF9lbmRfXyBpcyBkZWZpbmVkIGluIHRoZSBUTFMgRGlyZWN0b3J5IHN1cHBvcnQgY29kZSAqLwogIH0KICAvKiBXaW5kb3dzIFRMUyBleHBlY3RzIC50bHMkQUFBIHRvIGJlIGF0IHRoZSBzdGFydCBhbmQgLnRscyRaWlogdG8gYmUKICAgICBhdCB0aGUgZW5kIG9mIHRoZSAudGxzIHNlY3Rpb24uICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIF90bHNfc3RhcnQgTVVTVAogICAgIGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY3Rpb24gdG8gZW5hYmxlIFNFQ1JFTDMyIHJlbG9jYXRpb25zIHdpdGggVExTCiAgICAgZGF0YS4gICovCiAgLnRscyAgOgogIHsKICAgICooLnRscykKICB9CiAgLmVuZGp1bmsgIDoKICB7CiAgICAvKiBlbmQgaXMgZGVwcmVjYXRlZCwgZG9uJ3QgdXNlIGl0ICovCiAgfQogIC5yc3JjICA6IFNVQkFMSUdOKDQpCiAgewogICAgKigucnNyYykKICB9CiAgLnJlbG9jICA6CiAgewogICAgKigucmVsb2MpCiAgfQogIC5zdGFiICAgOgogIHsKICAgICooLnN0YWIpCiAgfQogIC5zdGFic3RyICAgOgogIHsKICAgICooLnN0YWJzdHIpCiAgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uLiAgVW5saWtlIG90aGVyIHRhcmdldHMgdGhhdCBmYWtlIHRoaXMgYnkgcHV0dGluZyB0aGUKICAgICBzZWN0aW9uIFZNQSBhdCAwLCB0aGUgUEUgZm9ybWF0IHdpbGwgbm90IGFsbG93IGl0LiAgKi8KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzICAgOgogIHsKICAgICooLmRlYnVnX2FyYW5nZXMpCiAgfQogIC56ZGVidWdfYXJhbmdlcyAgIDoKICB7CiAgICAqKC56ZGVidWdfYXJhbmdlcykKICB9CiAgLmRlYnVnX3B1Ym5hbWVzICAgOgogIHsKICAgICooLmRlYnVnX3B1Ym5hbWVzKQogIH0KICAuemRlYnVnX3B1Ym5hbWVzICAgOgogIHsKICAgICooLnpkZWJ1Z19wdWJuYW1lcykKICB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gICA6CiAgewogICAgKiguZGVidWdfaW5mbykKICB9CiAgLnpkZWJ1Z19pbmZvICAgOgogIHsKICAgICooLnpkZWJ1Z19pbmZvKQogIH0KICAuZGVidWdfYWJicmV2ICAgOgogIHsKICAgICooLmRlYnVnX2FiYnJldikKICB9CiAgLnpkZWJ1Z19hYmJyZXYgICA6CiAgewogICAgKiguemRlYnVnX2FiYnJldikKICB9CiAgLmRlYnVnX2xpbmUgICA6CiAgewogICAgKiguZGVidWdfbGluZSkKICB9CiAgLnpkZWJ1Z19saW5lICAgOgogIHsKICAgICooLnpkZWJ1Z19saW5lKQogIH0KICAuZGVidWdfZnJhbWUgICA6CiAgewogICAgKiguZGVidWdfZnJhbWUqKQogIH0KICAuemRlYnVnX2ZyYW1lICAgOgogIHsKICAgICooLnpkZWJ1Z19mcmFtZSopCiAgfQogIC5kZWJ1Z19zdHIgICA6CiAgewogICAgKiguZGVidWdfc3RyKQogIH0KICAuemRlYnVnX3N0ciAgIDoKICB7CiAgICAqKC56ZGVidWdfc3RyKQogIH0KICAuZGVidWdfbG9jICAgOgogIHsKICAgICooLmRlYnVnX2xvYykKICB9CiAgLnpkZWJ1Z19sb2MgICA6CiAgewogICAgKiguemRlYnVnX2xvYykKICB9CiAgLmRlYnVnX21hY2luZm8gICA6CiAgewogICAgKiguZGVidWdfbWFjaW5mbykKICB9CiAgLnpkZWJ1Z19tYWNpbmZvICAgOgogIHsKICAgICooLnpkZWJ1Z19tYWNpbmZvKQogIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgICA6CiAgewogICAgKiguZGVidWdfd2Vha25hbWVzKQogIH0KICAuemRlYnVnX3dlYWtuYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfd2Vha25hbWVzKQogIH0KICAuZGVidWdfZnVuY25hbWVzICAgOgogIHsKICAgICooLmRlYnVnX2Z1bmNuYW1lcykKICB9CiAgLnpkZWJ1Z19mdW5jbmFtZXMgICA6CiAgewogICAgKiguemRlYnVnX2Z1bmNuYW1lcykKICB9CiAgLmRlYnVnX3R5cGVuYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlbmFtZXMpCiAgfQogIC56ZGVidWdfdHlwZW5hbWVzICAgOgogIHsKICAgICooLnpkZWJ1Z190eXBlbmFtZXMpCiAgfQogIC5kZWJ1Z192YXJuYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z192YXJuYW1lcykKICB9CiAgLnpkZWJ1Z192YXJuYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfdmFybmFtZXMpCiAgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJ0eXBlcykKICB9CiAgLnpkZWJ1Z19wdWJ0eXBlcyAgIDoKICB7CiAgICAqKC56ZGVidWdfcHVidHlwZXMpCiAgfQogIC5kZWJ1Z19yYW5nZXMgICA6CiAgewogICAgKiguZGVidWdfcmFuZ2VzKQogIH0KICAuemRlYnVnX3JhbmdlcyAgIDoKICB7CiAgICAqKC56ZGVidWdfcmFuZ2VzKQogIH0KICAvKiBEV0FSRiA0LiAgKi8KICAuZGVidWdfdHlwZXMgICA6CiAgewogICAgKiguZGVidWdfdHlwZXMpCiAgfQogIC56ZGVidWdfdHlwZXMgICA6CiAgewogICAgKiguemRlYnVnX3R5cGVzKQogIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciAgIDoKICB7CiAgICAqKC5kZWJ1Z19hZGRyKQogIH0KICAuemRlYnVnX2FkZHIgICA6CiAgewogICAgKiguemRlYnVnX2FkZHIpCiAgfQogIC5kZWJ1Z19saW5lX3N0ciAgIDoKICB7CiAgICAqKC5kZWJ1Z19saW5lX3N0cikKICB9CiAgLnpkZWJ1Z19saW5lX3N0ciAgIDoKICB7CiAgICAqKC56ZGVidWdfbGluZV9zdHIpCiAgfQogIC5kZWJ1Z19sb2NsaXN0cyAgIDoKICB7CiAgICAqKC5kZWJ1Z19sb2NsaXN0cykKICB9CiAgLnpkZWJ1Z19sb2NsaXN0cyAgIDoKICB7CiAgICAqKC56ZGVidWdfbG9jbGlzdHMpCiAgfQogIC5kZWJ1Z19tYWNybyAgIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNybykKICB9CiAgLnpkZWJ1Z19tYWNybyAgIDoKICB7CiAgICAqKC56ZGVidWdfbWFjcm8pCiAgfQogIC5kZWJ1Z19uYW1lcyAgIDoKICB7CiAgICAqKC5kZWJ1Z19uYW1lcykKICB9CiAgLnpkZWJ1Z19uYW1lcyAgIDoKICB7CiAgICAqKC56ZGVidWdfbmFtZXMpCiAgfQogIC5kZWJ1Z19ybmdsaXN0cyAgIDoKICB7CiAgICAqKC5kZWJ1Z19ybmdsaXN0cykKICB9CiAgLnpkZWJ1Z19ybmdsaXN0cyAgIDoKICB7CiAgICAqKC56ZGVidWdfcm5nbGlzdHMpCiAgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyAgIDoKICB7CiAgICAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykKICB9CiAgLnpkZWJ1Z19zdHJfb2Zmc2V0cyAgIDoKICB7CiAgICAqKC56ZGVidWdfc3RyX29mZnNldHMpCiAgfQogIC5kZWJ1Z19zdXAgICA6CiAgewogICAgKiguZGVidWdfc3VwKQogIH0KICAvKiBGb3IgR28gYW5kIFJ1c3QuICAqLwogIC5kZWJ1Z19nZGJfc2NyaXB0cyAgIDoKICB7CiAgICAqKC5kZWJ1Z19nZGJfc2NyaXB0cykKICB9CiAgLnpkZWJ1Z19nZGJfc2NyaXB0cyAgIDoKICB7CiAgICAqKC56ZGVidWdfZ2RiX3NjcmlwdHMpCiAgfQp9CgoAAAAALyogU2NyaXB0IGZvciAtTiAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVChwZWkteDg2LTY0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXBlcC9saWIiKTsKU0VDVElPTlMKewogIC8qIE1ha2UgdGhlIHZpcnR1YWwgYWRkcmVzcyBhbmQgZmlsZSBvZmZzZXQgc3luY2VkIGlmIHRoZSBhbGlnbm1lbnQgaXMKICAgICBsb3dlciB0aGFuIHRoZSB0YXJnZXQgcGFnZSBzaXplLiAqLwogIC4gPSBTSVpFT0ZfSEVBREVSUzsKICAuID0gQUxJR04oX19zZWN0aW9uX2FsaWdubWVudF9fKTsKICAudGV4dCAgX19pbWFnZV9iYXNlX18gKyAoIF9fc2VjdGlvbl9hbGlnbm1lbnRfXyA8IDB4MTAwMCA/IC4gOiBfX3NlY3Rpb25fYWxpZ25tZW50X18gKSA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICAgICooLnRleHQpCiAgICAqKFNPUlQoLnRleHQkKikpCiAgICAgKigudGV4dC4qKQogICAgICooLmdudS5saW5rb25jZS50LiopCiAgICAqKC5nbHVlXzd0KQogICAgKiguZ2x1ZV83KQogICAgLiA9IEFMSUdOKDgpOwogICAgICAgLyogTm90ZTogd2UgYWx3YXlzIGRlZmluZSBfX0NUT1JfTElTVF9fIGFuZCBfX19DVE9SX0xJU1RfXyBoZXJlLAogICAgICAgICAgd2UgZG8gbm90IFBST1ZJREUgdGhlbS4gIFRoaXMgaXMgYmVjYXVzZSB0aGUgY3RvcnMubyBzdGFydHVwCgkgIGNvZGUgaW4gbGliZ2NjIGRlZmluZXMgdGhlbSBhcyBjb21tb24gc3ltYm9scywgd2l0aCB0aGUKICAgICAgICAgIGV4cGVjdGF0aW9uIHRoYXQgdGhleSB3aWxsIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGRlZmluaXRpb25zCgkgIGhlcmUuICBJZiB3ZSBQUk9WSURFIHRoZSBzeW1ib2xzIHRoZW4gdGhleSB3aWxsIG5vdCBiZQoJICBvdmVycmlkZGVuIGFuZCBnbG9iYWwgY29uc3RydWN0b3JzIHdpbGwgbm90IGJlIHJ1bi4KCSAgU2VlIFBSIDIyNzYyIGZvciBtb3JlIGRldGFpbHMuCgoJICBUaGlzIGRvZXMgbWVhbiB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSBmb3IgYSB1c2VyIHRvIGRlZmluZQoJICB0aGVpciBvd24gX19DVE9SX0xJU1RfXyBhbmQgX19EVE9SX0xJU1RfXyBzeW1ib2xzOyBpZiB0aGV5IGRvLAoJICB0aGUgY29udGVudCBmcm9tIHRob3NlIHZhcmlhYmxlcyBhcmUgaW5jbHVkZWQgYnV0IHRoZSBzeW1ib2xzCgkgIGRlZmluZWQgaGVyZSBzaWxlbnRseSB0YWtlIHByZWNlZGVuY2UuICBJZiB0aGV5IHRydWx5IG5lZWQgdG8KCSAgYmUgcmVkZWZpbmVkLCBhIGN1c3RvbSBsaW5rZXIgc2NyaXB0IHdpbGwgaGF2ZSB0byBiZSB1c2VkLgoJICAoVGhlIGN1c3RvbSBzY3JpcHQgY2FuIGp1c3QgYmUgYSBjb3B5IG9mIHRoaXMgc2NyaXB0IHdpdGggdGhlCgkgIFBST1ZJREUoKSBxdWFsaWZpZXJzIGFkZGVkKS4KCSAgSW4gcGFydGljdWxhciB0aGlzIG1lYW5zIHRoYXQgbGQgLVVyIGRvZXMgbm90IHdvcmssIGJlY2F1c2UKCSAgdGhlIHByb3BlciBfX0NUT1JfTElTVF9fIHNldCBieSBsZCAtVXIgaXMgb3ZlcnJpZGRlbiBieSBhCgkgIGJvZ3VzIF9fQ1RPUl9MSVNUX18gc2V0IGJ5IHRoZSBmaW5hbCBsaW5rLiAgU2VlIFBSIDQ2LiAgKi8KICAgICAgIF9fX0NUT1JfTElTVF9fID0gLjsKICAgICAgIF9fQ1RPUl9MSVNUX18gPSAuOwogICAgICAgTE9ORyAoLTEpOyBMT05HICgtMSk7CiAgICAgICBLRUVQICgqKC5jdG9ycykpOwogICAgICAgS0VFUCAoKiguY3RvcikpOwogICAgICAgS0VFUCAoKihTT1JUX0JZX05BTUUoLmN0b3JzLiopKSk7CiAgICAgICBMT05HICgwKTsgTE9ORyAoMCk7CiAgICAgICAvKiBTZWUgY29tbWVudCBhYm91dCBfX0NUT1JfTElTVF9fIGFib3ZlLiAgVGhlIHNhbWUgcmVhc29uaW5nCiAgICAJICBhcHBsaWVzIGhlcmUgdG9vLiAgKi8KICAgICAgIF9fX0RUT1JfTElTVF9fID0gLjsKICAgICAgIF9fRFRPUl9MSVNUX18gPSAuOwogICAgICAgTE9ORyAoLTEpOyBMT05HICgtMSk7CiAgICAgICBLRUVQICgqKC5kdG9ycykpOwogICAgICAgS0VFUCAoKiguZHRvcikpOwogICAgICAgS0VFUCAoKihTT1JUX0JZX05BTUUoLmR0b3JzLiopKSk7CiAgICAgICBMT05HICgwKTsgTE9ORyAoMCk7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogICAgLyogPz8/IFdoeSBpcyAuZ2NjX2V4YyBoZXJlPyAgKi8KICAgICAqKC5nY2NfZXhjKQogICAgUFJPVklERSAoZXRleHQgPSAuKTsKICAgICBLRUVQICgqKC5nY2NfZXhjZXB0X3RhYmxlKSkKICB9CiAgLyogVGhlIEN5Z3dpbjMyIGxpYnJhcnkgdXNlcyBhIHNlY3Rpb24gdG8gYXZvaWQgY29weWluZyBjZXJ0YWluIGRhdGEKICAgICBvbiBmb3JrLiAgVGhpcyB1c2VkIHRvIGJlIG5hbWVkICIuZGF0YSIuICBUaGUgbGlua2VyIHVzZWQKICAgICB0byBpbmNsdWRlIHRoaXMgYmV0d2VlbiBfX2RhdGFfc3RhcnRfXyBhbmQgX19kYXRhX2VuZF9fLCBidXQgdGhhdAogICAgIGJyZWFrcyBidWlsZGluZyB0aGUgY3lnd2luMzIgZGxsLiAgSW5zdGVhZCwgd2UgbmFtZSB0aGUgc2VjdGlvbgogICAgICIuZGF0YV9jeWd3aW5fbm9jb3B5IiBhbmQgZXhwbGljaXRseSBpbmNsdWRlIGl0IGFmdGVyIF9fZGF0YV9lbmRfXy4gKi8KICAuZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX2RhdGFfc3RhcnRfXyA9IC4gOwogICAgKiguZGF0YSkKICAgICooLmRhdGEyKQogICAgKihTT1JUKC5kYXRhJCopKQogICAgS0VFUCgqKC5qY3IpKQogICAgX19kYXRhX2VuZF9fID0gLiA7CiAgICAqKC5kYXRhX2N5Z3dpbl9ub2NvcHkpCiAgfQogIC5yZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAqKC5yZGF0YSkKCSAgICAgKihTT1JUKC5yZGF0YSQqKSkKICAgIC4gPSBBTElHTig0KTsKICAgIF9fcnRfcHNyZWxvY3Nfc3RhcnQgPSAuOwogICAgS0VFUCgqKC5yZGF0YV9ydW50aW1lX3BzZXVkb19yZWxvYykpCiAgICBfX3J0X3BzcmVsb2NzX2VuZCA9IC47CiAgfQogIF9fcnRfcHNyZWxvY3Nfc2l6ZSA9IF9fcnRfcHNyZWxvY3NfZW5kIC0gX19ydF9wc3JlbG9jc19zdGFydDsKICBfX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX0VORF9fID0gLjsKICBfX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfRU5EX18gPSAuOwogIF9fX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfXyA9IC4gLSBfX3J0X3BzcmVsb2NzX3NpemU7CiAgX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX18gPSAuIC0gX19ydF9wc3JlbG9jc19zaXplOwogIC5laF9mcmFtZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBLRUVQICgqKC5laF9mcmFtZSopKQogIH0KICAucGRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgS0VFUCgqKC5wZGF0YSopKQogIH0KICAueGRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgS0VFUCgqKC54ZGF0YSopKQogIH0KICAuYnNzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fYnNzX3N0YXJ0X18gPSAuIDsKICAgICooLmJzcykKICAgICooQ09NTU9OKQogICAgX19ic3NfZW5kX18gPSAuIDsKICB9CiAgLmVkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLmVkYXRhKQogIH0KICAvRElTQ0FSRC8gOgogIHsKICAgICooLmRlYnVnJFMpCiAgICAqKC5kZWJ1ZyRUKQogICAgKiguZGVidWckRikKICAgICAqKC5kcmVjdHZlKQogICAgICooLm5vdGUuR05VLXN0YWNrKQogICAgICooLmdudS5sdG9fKikKICB9CiAgLmlkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIC8qIFRoaXMgY2Fubm90IGN1cnJlbnRseSBiZSBoYW5kbGVkIHdpdGggZ3JvdXBlZCBzZWN0aW9ucy4KCVNlZSBwZXAuZW06c29ydF9zZWN0aW9ucy4gICovCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQyKSkKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDMpKQogICAgLyogVGhlc2UgemVyb2VzIG1hcmsgdGhlIGVuZCBvZiB0aGUgaW1wb3J0IGxpc3QuICAqLwogICAgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOwogICAgLiA9IEFMSUdOKDgpOwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNCkpCiAgICBfX0lBVF9zdGFydF9fID0gLjsKICAgIFNPUlQoKikoLmlkYXRhJDUpCiAgICBfX0lBVF9lbmRfXyA9IC47CiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ2KSkKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDcpKQogIH0KICAuQ1JUIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fX2NydF94Y19zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYQyopKSkgIC8qIEMgaW5pdGlhbGl6YXRpb24gKi8KICAgIF9fX2NydF94Y19lbmRfXyA9IC4gOwogICAgX19fY3J0X3hpX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhJKikpKSAgLyogQysrIGluaXRpYWxpemF0aW9uICovCiAgICBfX19jcnRfeGlfZW5kX18gPSAuIDsKICAgIF9fX2NydF94bF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYTCopKSkgIC8qIFRMUyBjYWxsYmFja3MgKi8KICAgIC8qIF9fX2NydF94bF9lbmRfXyBpcyBkZWZpbmVkIGluIHRoZSBUTFMgRGlyZWN0b3J5IHN1cHBvcnQgY29kZSAqLwogICAgX19fY3J0X3hwX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhQKikpKSAgLyogUHJlLXRlcm1pbmF0aW9uICovCiAgICBfX19jcnRfeHBfZW5kX18gPSAuIDsKICAgIF9fX2NydF94dF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYVCopKSkgIC8qIFRlcm1pbmF0aW9uICovCiAgICBfX19jcnRfeHRfZW5kX18gPSAuIDsKICB9CiAgLyogV2luZG93cyBUTFMgZXhwZWN0cyAudGxzJEFBQSB0byBiZSBhdCB0aGUgc3RhcnQgYW5kIC50bHMkWlpaIHRvIGJlCiAgICAgYXQgdGhlIGVuZCBvZiB0aGUgLnRscyBzZWN0aW9uLiAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBfdGxzX3N0YXJ0IE1VU1QKICAgICBiZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWN0aW9uIHRvIGVuYWJsZSBTRUNSRUwzMiByZWxvY2F0aW9ucyB3aXRoIFRMUwogICAgIGRhdGEuICAqLwogIC50bHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19fdGxzX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooLnRscyRBQUEpKQogICAgS0VFUCAoKigudGxzKSkKICAgIEtFRVAgKCooLnRscyQpKQogICAgS0VFUCAoKihTT1JUKC50bHMkKikpKQogICAgS0VFUCAoKigudGxzJFpaWikpCiAgICBfX190bHNfZW5kX18gPSAuIDsKICB9CiAgLmVuZGp1bmsgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgLyogZW5kIGlzIGRlcHJlY2F0ZWQsIGRvbid0IHVzZSBpdCAqLwogICAgUFJPVklERSAoZW5kID0gLik7CiAgICBQUk9WSURFICggX2VuZCA9IC4pOwogICAgIF9fZW5kX18gPSAuOwogIH0KICAucnNyYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDogU1VCQUxJR04oNCkKICB7CiAgICBLRUVQICgqKC5yc3JjKSkKICAgIEtFRVAgKCooLnJzcmMkKikpCiAgfQogIC5yZWxvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAqKC5yZWxvYykKICB9CiAgLnN0YWIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguc3RhYikKICB9CiAgLnN0YWJzdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguc3RhYnN0cikKICB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24uICBVbmxpa2Ugb3RoZXIgdGFyZ2V0cyB0aGF0IGZha2UgdGhpcyBieSBwdXR0aW5nIHRoZQogICAgIHNlY3Rpb24gVk1BIGF0IDAsIHRoZSBQRSBmb3JtYXQgd2lsbCBub3QgYWxsb3cgaXQuICAqLwogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfYXJhbmdlcykKICB9CiAgLnpkZWJ1Z19hcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19hcmFuZ2VzKQogIH0KICAuZGVidWdfcHVibmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcHVibmFtZXMpCiAgfQogIC56ZGVidWdfcHVibmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3B1Ym5hbWVzKQogIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikKICB9CiAgLnpkZWJ1Z19pbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19pbmZvIC56ZGVidWcuZ251LmxpbmtvbmNlLndpLiopCiAgfQogIC5kZWJ1Z19hYmJyZXYgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfYWJicmV2KQogIH0KICAuemRlYnVnX2FiYnJldiBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfYWJicmV2KQogIH0KICAuZGVidWdfbGluZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19saW5lKQogIH0KICAuemRlYnVnX2xpbmUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2xpbmUpCiAgfQogIC5kZWJ1Z19mcmFtZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19mcmFtZSopCiAgfQogIC56ZGVidWdfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2ZyYW1lKikKICB9CiAgLmRlYnVnX3N0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19zdHIpCiAgfQogIC56ZGVidWdfc3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19zdHIpCiAgfQogIC5kZWJ1Z19sb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbG9jKQogIH0KICAuemRlYnVnX2xvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbG9jKQogIH0KICAuZGVidWdfbWFjaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNpbmZvKQogIH0KICAuemRlYnVnX21hY2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX21hY2luZm8pCiAgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC56ZGVidWdfd2Vha25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC5kZWJ1Z19mdW5jbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZnVuY25hbWVzKQogIH0KICAuemRlYnVnX2Z1bmNuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfZnVuY25hbWVzKQogIH0KICAuZGVidWdfdHlwZW5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3R5cGVuYW1lcykKICB9CiAgLnpkZWJ1Z190eXBlbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVuYW1lcykKICB9CiAgLmRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3Zhcm5hbWVzKQogIH0KICAuemRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z192YXJuYW1lcykKICB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3B1YnR5cGVzKQogIH0KICAuemRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19wdWJ0eXBlcykKICB9CiAgLmRlYnVnX3JhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19yYW5nZXMpCiAgfQogIC56ZGVidWdfcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19yYW5nZXMpCiAgfQogIC8qIERXQVJGIDQuICAqLwogIC5kZWJ1Z190eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlcyAuZ251LmxpbmtvbmNlLnd0LiopCiAgfQogIC56ZGVidWdfdHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVzIC5nbnUubGlua29uY2Uud3QuKikKICB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfYWRkcikKICB9CiAgLnpkZWJ1Z19hZGRyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19hZGRyKQogIH0KICAuZGVidWdfbGluZV9zdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbGluZV9zdHIpCiAgfQogIC56ZGVidWdfbGluZV9zdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2xpbmVfc3RyKQogIH0KICAuZGVidWdfbG9jbGlzdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbG9jbGlzdHMpCiAgfQogIC56ZGVidWdfbG9jbGlzdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2xvY2xpc3RzKQogIH0KICAuZGVidWdfbWFjcm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbWFjcm8pCiAgfQogIC56ZGVidWdfbWFjcm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX21hY3JvKQogIH0KICAuZGVidWdfbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbmFtZXMpCiAgfQogIC56ZGVidWdfbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX25hbWVzKQogIH0KICAuZGVidWdfcm5nbGlzdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcm5nbGlzdHMpCiAgfQogIC56ZGVidWdfcm5nbGlzdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3JuZ2xpc3RzKQogIH0KICAuZGVidWdfc3RyX29mZnNldHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfc3RyX29mZnNldHMpCiAgfQogIC56ZGVidWdfc3RyX29mZnNldHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3N0cl9vZmZzZXRzKQogIH0KICAuZGVidWdfc3VwIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3N1cCkKICB9CiAgLyogRm9yIEdvIGFuZCBSdXN0LiAgKi8KICAuZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZ2RiX3NjcmlwdHMpCiAgfQogIC56ZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2dkYl9zY3JpcHRzKQogIH0KfQoKAAAAAAAvKiBTY3JpcHQgZm9yIC1uICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKHBlaS14ODYtNjQpClNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtcGVwL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogTWFrZSB0aGUgdmlydHVhbCBhZGRyZXNzIGFuZCBmaWxlIG9mZnNldCBzeW5jZWQgaWYgdGhlIGFsaWdubWVudCBpcwogICAgIGxvd2VyIHRoYW4gdGhlIHRhcmdldCBwYWdlIHNpemUuICovCiAgLiA9IFNJWkVPRl9IRUFERVJTOwogIC4gPSBBTElHTihfX3NlY3Rpb25fYWxpZ25tZW50X18pOwogIC50ZXh0ICBfX2ltYWdlX2Jhc2VfXyArICggX19zZWN0aW9uX2FsaWdubWVudF9fIDwgMHgxMDAwID8gLiA6IF9fc2VjdGlvbl9hbGlnbm1lbnRfXyApIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogICAgKigudGV4dCkKICAgICooU09SVCgudGV4dCQqKSkKICAgICAqKC50ZXh0LiopCiAgICAgKiguZ251LmxpbmtvbmNlLnQuKikKICAgICooLmdsdWVfN3QpCiAgICAqKC5nbHVlXzcpCiAgICAuID0gQUxJR04oOCk7CiAgICAgICAvKiBOb3RlOiB3ZSBhbHdheXMgZGVmaW5lIF9fQ1RPUl9MSVNUX18gYW5kIF9fX0NUT1JfTElTVF9fIGhlcmUsCiAgICAgICAgICB3ZSBkbyBub3QgUFJPVklERSB0aGVtLiAgVGhpcyBpcyBiZWNhdXNlIHRoZSBjdG9ycy5vIHN0YXJ0dXAKCSAgY29kZSBpbiBsaWJnY2MgZGVmaW5lcyB0aGVtIGFzIGNvbW1vbiBzeW1ib2xzLCB3aXRoIHRoZQogICAgICAgICAgZXhwZWN0YXRpb24gdGhhdCB0aGV5IHdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0aGUgZGVmaW5pdGlvbnMKCSAgaGVyZS4gIElmIHdlIFBST1ZJREUgdGhlIHN5bWJvbHMgdGhlbiB0aGV5IHdpbGwgbm90IGJlCgkgIG92ZXJyaWRkZW4gYW5kIGdsb2JhbCBjb25zdHJ1Y3RvcnMgd2lsbCBub3QgYmUgcnVuLgoJICBTZWUgUFIgMjI3NjIgZm9yIG1vcmUgZGV0YWlscy4KCgkgIFRoaXMgZG9lcyBtZWFuIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIGZvciBhIHVzZXIgdG8gZGVmaW5lCgkgIHRoZWlyIG93biBfX0NUT1JfTElTVF9fIGFuZCBfX0RUT1JfTElTVF9fIHN5bWJvbHM7IGlmIHRoZXkgZG8sCgkgIHRoZSBjb250ZW50IGZyb20gdGhvc2UgdmFyaWFibGVzIGFyZSBpbmNsdWRlZCBidXQgdGhlIHN5bWJvbHMKCSAgZGVmaW5lZCBoZXJlIHNpbGVudGx5IHRha2UgcHJlY2VkZW5jZS4gIElmIHRoZXkgdHJ1bHkgbmVlZCB0bwoJICBiZSByZWRlZmluZWQsIGEgY3VzdG9tIGxpbmtlciBzY3JpcHQgd2lsbCBoYXZlIHRvIGJlIHVzZWQuCgkgIChUaGUgY3VzdG9tIHNjcmlwdCBjYW4ganVzdCBiZSBhIGNvcHkgb2YgdGhpcyBzY3JpcHQgd2l0aCB0aGUKCSAgUFJPVklERSgpIHF1YWxpZmllcnMgYWRkZWQpLgoJICBJbiBwYXJ0aWN1bGFyIHRoaXMgbWVhbnMgdGhhdCBsZCAtVXIgZG9lcyBub3Qgd29yaywgYmVjYXVzZQoJICB0aGUgcHJvcGVyIF9fQ1RPUl9MSVNUX18gc2V0IGJ5IGxkIC1VciBpcyBvdmVycmlkZGVuIGJ5IGEKCSAgYm9ndXMgX19DVE9SX0xJU1RfXyBzZXQgYnkgdGhlIGZpbmFsIGxpbmsuICBTZWUgUFIgNDYuICAqLwogICAgICAgX19fQ1RPUl9MSVNUX18gPSAuOwogICAgICAgX19DVE9SX0xJU1RfXyA9IC47CiAgICAgICBMT05HICgtMSk7IExPTkcgKC0xKTsKICAgICAgIEtFRVAgKCooLmN0b3JzKSk7CiAgICAgICBLRUVQICgqKC5jdG9yKSk7CiAgICAgICBLRUVQICgqKFNPUlRfQllfTkFNRSguY3RvcnMuKikpKTsKICAgICAgIExPTkcgKDApOyBMT05HICgwKTsKICAgICAgIC8qIFNlZSBjb21tZW50IGFib3V0IF9fQ1RPUl9MSVNUX18gYWJvdmUuICBUaGUgc2FtZSByZWFzb25pbmcKICAgIAkgIGFwcGxpZXMgaGVyZSB0b28uICAqLwogICAgICAgX19fRFRPUl9MSVNUX18gPSAuOwogICAgICAgX19EVE9SX0xJU1RfXyA9IC47CiAgICAgICBMT05HICgtMSk7IExPTkcgKC0xKTsKICAgICAgIEtFRVAgKCooLmR0b3JzKSk7CiAgICAgICBLRUVQICgqKC5kdG9yKSk7CiAgICAgICBLRUVQICgqKFNPUlRfQllfTkFNRSguZHRvcnMuKikpKTsKICAgICAgIExPTkcgKDApOyBMT05HICgwKTsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgICAvKiA/Pz8gV2h5IGlzIC5nY2NfZXhjIGhlcmU/ICAqLwogICAgICooLmdjY19leGMpCiAgICBQUk9WSURFIChldGV4dCA9IC4pOwogICAgIEtFRVAgKCooLmdjY19leGNlcHRfdGFibGUpKQogIH0KICAvKiBUaGUgQ3lnd2luMzIgbGlicmFyeSB1c2VzIGEgc2VjdGlvbiB0byBhdm9pZCBjb3B5aW5nIGNlcnRhaW4gZGF0YQogICAgIG9uIGZvcmsuICBUaGlzIHVzZWQgdG8gYmUgbmFtZWQgIi5kYXRhIi4gIFRoZSBsaW5rZXIgdXNlZAogICAgIHRvIGluY2x1ZGUgdGhpcyBiZXR3ZWVuIF9fZGF0YV9zdGFydF9fIGFuZCBfX2RhdGFfZW5kX18sIGJ1dCB0aGF0CiAgICAgYnJlYWtzIGJ1aWxkaW5nIHRoZSBjeWd3aW4zMiBkbGwuICBJbnN0ZWFkLCB3ZSBuYW1lIHRoZSBzZWN0aW9uCiAgICAgIi5kYXRhX2N5Z3dpbl9ub2NvcHkiIGFuZCBleHBsaWNpdGx5IGluY2x1ZGUgaXQgYWZ0ZXIgX19kYXRhX2VuZF9fLiAqLwogIC5kYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fZGF0YV9zdGFydF9fID0gLiA7CiAgICAqKC5kYXRhKQogICAgKiguZGF0YTIpCiAgICAqKFNPUlQoLmRhdGEkKikpCiAgICBLRUVQKCooLmpjcikpCiAgICBfX2RhdGFfZW5kX18gPSAuIDsKICAgICooLmRhdGFfY3lnd2luX25vY29weSkKICB9CiAgLnJkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLnJkYXRhKQoJICAgICAqKFNPUlQoLnJkYXRhJCopKQogICAgLiA9IEFMSUdOKDQpOwogICAgX19ydF9wc3JlbG9jc19zdGFydCA9IC47CiAgICBLRUVQKCooLnJkYXRhX3J1bnRpbWVfcHNldWRvX3JlbG9jKSkKICAgIF9fcnRfcHNyZWxvY3NfZW5kID0gLjsKICB9CiAgX19ydF9wc3JlbG9jc19zaXplID0gX19ydF9wc3JlbG9jc19lbmQgLSBfX3J0X3BzcmVsb2NzX3N0YXJ0OwogIF9fX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfRU5EX18gPSAuOwogIF9fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9FTkRfXyA9IC47CiAgX19fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9fID0gLiAtIF9fcnRfcHNyZWxvY3Nfc2l6ZTsKICBfX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfXyA9IC4gLSBfX3J0X3BzcmVsb2NzX3NpemU7CiAgLmVoX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAgKCooLmVoX2ZyYW1lKikpCiAgfQogIC5wZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBLRUVQKCooLnBkYXRhKikpCiAgfQogIC54ZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBLRUVQKCooLnhkYXRhKikpCiAgfQogIC5ic3MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19ic3Nfc3RhcnRfXyA9IC4gOwogICAgKiguYnNzKQogICAgKihDT01NT04pCiAgICBfX2Jzc19lbmRfXyA9IC4gOwogIH0KICAuZWRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKiguZWRhdGEpCiAgfQogIC9ESVNDQVJELyA6CiAgewogICAgKiguZGVidWckUykKICAgICooLmRlYnVnJFQpCiAgICAqKC5kZWJ1ZyRGKQogICAgICooLmRyZWN0dmUpCiAgICAgKigubm90ZS5HTlUtc3RhY2spCiAgICAgKiguZ251Lmx0b18qKQogIH0KICAuaWRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgLyogVGhpcyBjYW5ub3QgY3VycmVudGx5IGJlIGhhbmRsZWQgd2l0aCBncm91cGVkIHNlY3Rpb25zLgoJU2VlIHBlcC5lbTpzb3J0X3NlY3Rpb25zLiAgKi8KICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDIpKQogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkMykpCiAgICAvKiBUaGVzZSB6ZXJvZXMgbWFyayB0aGUgZW5kIG9mIHRoZSBpbXBvcnQgbGlzdC4gICovCiAgICBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7CiAgICAuID0gQUxJR04oOCk7CiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ0KSkKICAgIF9fSUFUX3N0YXJ0X18gPSAuOwogICAgU09SVCgqKSguaWRhdGEkNSkKICAgIF9fSUFUX2VuZF9fID0gLjsKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDYpKQogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNykpCiAgfQogIC5DUlQgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19fY3J0X3hjX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhDKikpKSAgLyogQyBpbml0aWFsaXphdGlvbiAqLwogICAgX19fY3J0X3hjX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeGlfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEkqKSkpICAvKiBDKysgaW5pdGlhbGl6YXRpb24gKi8KICAgIF9fX2NydF94aV9lbmRfXyA9IC4gOwogICAgX19fY3J0X3hsX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhMKikpKSAgLyogVExTIGNhbGxiYWNrcyAqLwogICAgLyogX19fY3J0X3hsX2VuZF9fIGlzIGRlZmluZWQgaW4gdGhlIFRMUyBEaXJlY3Rvcnkgc3VwcG9ydCBjb2RlICovCiAgICBfX19jcnRfeHBfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWFAqKSkpICAvKiBQcmUtdGVybWluYXRpb24gKi8KICAgIF9fX2NydF94cF9lbmRfXyA9IC4gOwogICAgX19fY3J0X3h0X3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhUKikpKSAgLyogVGVybWluYXRpb24gKi8KICAgIF9fX2NydF94dF9lbmRfXyA9IC4gOwogIH0KICAvKiBXaW5kb3dzIFRMUyBleHBlY3RzIC50bHMkQUFBIHRvIGJlIGF0IHRoZSBzdGFydCBhbmQgLnRscyRaWlogdG8gYmUKICAgICBhdCB0aGUgZW5kIG9mIHRoZSAudGxzIHNlY3Rpb24uICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIF90bHNfc3RhcnQgTVVTVAogICAgIGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY3Rpb24gdG8gZW5hYmxlIFNFQ1JFTDMyIHJlbG9jYXRpb25zIHdpdGggVExTCiAgICAgZGF0YS4gICovCiAgLnRscyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX190bHNfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKigudGxzJEFBQSkpCiAgICBLRUVQICgqKC50bHMpKQogICAgS0VFUCAoKigudGxzJCkpCiAgICBLRUVQICgqKFNPUlQoLnRscyQqKSkpCiAgICBLRUVQICgqKC50bHMkWlpaKSkKICAgIF9fX3Rsc19lbmRfXyA9IC4gOwogIH0KICAuZW5kanVuayBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAvKiBlbmQgaXMgZGVwcmVjYXRlZCwgZG9uJ3QgdXNlIGl0ICovCiAgICBQUk9WSURFIChlbmQgPSAuKTsKICAgIFBST1ZJREUgKCBfZW5kID0gLik7CiAgICAgX19lbmRfXyA9IC47CiAgfQogIC5yc3JjIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOiBTVUJBTElHTig0KQogIHsKICAgIEtFRVAgKCooLnJzcmMpKQogICAgS0VFUCAoKigucnNyYyQqKSkKICB9CiAgLnJlbG9jIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLnJlbG9jKQogIH0KICAuc3RhYiBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5zdGFiKQogIH0KICAuc3RhYnN0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5zdGFic3RyKQogIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbi4gIFVubGlrZSBvdGhlciB0YXJnZXRzIHRoYXQgZmFrZSB0aGlzIGJ5IHB1dHRpbmcgdGhlCiAgICAgc2VjdGlvbiBWTUEgYXQgMCwgdGhlIFBFIGZvcm1hdCB3aWxsIG5vdCBhbGxvdyBpdC4gICovCiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyLiAgKi8KICAuZGVidWdfYXJhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19hcmFuZ2VzKQogIH0KICAuemRlYnVnX2FyYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2FyYW5nZXMpCiAgfQogIC5kZWJ1Z19wdWJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJuYW1lcykKICB9CiAgLnpkZWJ1Z19wdWJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfcHVibmFtZXMpCiAgfQogIC8qIERXQVJGIDIuICAqLwogIC5kZWJ1Z19pbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKQogIH0KICAuemRlYnVnX2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2luZm8gLnpkZWJ1Zy5nbnUubGlua29uY2Uud2kuKikKICB9CiAgLmRlYnVnX2FiYnJldiBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19hYmJyZXYpCiAgfQogIC56ZGVidWdfYWJicmV2IEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19hYmJyZXYpCiAgfQogIC5kZWJ1Z19saW5lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2xpbmUpCiAgfQogIC56ZGVidWdfbGluZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbGluZSkKICB9CiAgLmRlYnVnX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2ZyYW1lKikKICB9CiAgLnpkZWJ1Z19mcmFtZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfZnJhbWUqKQogIH0KICAuZGVidWdfc3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3N0cikKICB9CiAgLnpkZWJ1Z19zdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3N0cikKICB9CiAgLmRlYnVnX2xvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19sb2MpCiAgfQogIC56ZGVidWdfbG9jIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19sb2MpCiAgfQogIC5kZWJ1Z19tYWNpbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX21hY2luZm8pCiAgfQogIC56ZGVidWdfbWFjaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbWFjaW5mbykKICB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zLiAgKi8KICAuZGVidWdfd2Vha25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3dlYWtuYW1lcykKICB9CiAgLnpkZWJ1Z193ZWFrbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3dlYWtuYW1lcykKICB9CiAgLmRlYnVnX2Z1bmNuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19mdW5jbmFtZXMpCiAgfQogIC56ZGVidWdfZnVuY25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19mdW5jbmFtZXMpCiAgfQogIC5kZWJ1Z190eXBlbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfdHlwZW5hbWVzKQogIH0KICAuemRlYnVnX3R5cGVuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfdHlwZW5hbWVzKQogIH0KICAuZGVidWdfdmFybmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfdmFybmFtZXMpCiAgfQogIC56ZGVidWdfdmFybmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3Zhcm5hbWVzKQogIH0KICAvKiBEV0FSRiAzLiAgKi8KICAuZGVidWdfcHVidHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcHVidHlwZXMpCiAgfQogIC56ZGVidWdfcHVidHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3B1YnR5cGVzKQogIH0KICAuZGVidWdfcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3JhbmdlcykKICB9CiAgLnpkZWJ1Z19yYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3JhbmdlcykKICB9CiAgLyogRFdBUkYgNC4gICovCiAgLmRlYnVnX3R5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3R5cGVzIC5nbnUubGlua29uY2Uud3QuKikKICB9CiAgLnpkZWJ1Z190eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfdHlwZXMgLmdudS5saW5rb25jZS53dC4qKQogIH0KICAvKiBEV0FSRiA1LiAgKi8KICAuZGVidWdfYWRkciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19hZGRyKQogIH0KICAuemRlYnVnX2FkZHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2FkZHIpCiAgfQogIC5kZWJ1Z19saW5lX3N0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19saW5lX3N0cikKICB9CiAgLnpkZWJ1Z19saW5lX3N0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbGluZV9zdHIpCiAgfQogIC5kZWJ1Z19sb2NsaXN0cyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19sb2NsaXN0cykKICB9CiAgLnpkZWJ1Z19sb2NsaXN0cyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbG9jbGlzdHMpCiAgfQogIC5kZWJ1Z19tYWNybyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNybykKICB9CiAgLnpkZWJ1Z19tYWNybyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbWFjcm8pCiAgfQogIC5kZWJ1Z19uYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19uYW1lcykKICB9CiAgLnpkZWJ1Z19uYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbmFtZXMpCiAgfQogIC5kZWJ1Z19ybmdsaXN0cyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19ybmdsaXN0cykKICB9CiAgLnpkZWJ1Z19ybmdsaXN0cyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfcm5nbGlzdHMpCiAgfQogIC5kZWJ1Z19zdHJfb2Zmc2V0cyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19zdHJfb2Zmc2V0cykKICB9CiAgLnpkZWJ1Z19zdHJfb2Zmc2V0cyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfc3RyX29mZnNldHMpCiAgfQogIC5kZWJ1Z19zdXAgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfc3VwKQogIH0KICAvKiBGb3IgR28gYW5kIFJ1c3QuICAqLwogIC5kZWJ1Z19nZGJfc2NyaXB0cyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19nZGJfc2NyaXB0cykKICB9CiAgLnpkZWJ1Z19nZGJfc2NyaXB0cyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfZ2RiX3NjcmlwdHMpCiAgfQp9CgoAAAAAAC8qIFNjcmlwdCBmb3IgLS1lbmFibGUtYXV0by1pbXBvcnQgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQocGVpLXg4Ni02NCkKU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnUiKTsgU0VBUkNIX0RJUigiPS9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1wZXAvbGliIik7ClNFQ1RJT05TCnsKICAvKiBNYWtlIHRoZSB2aXJ0dWFsIGFkZHJlc3MgYW5kIGZpbGUgb2Zmc2V0IHN5bmNlZCBpZiB0aGUgYWxpZ25tZW50IGlzCiAgICAgbG93ZXIgdGhhbiB0aGUgdGFyZ2V0IHBhZ2Ugc2l6ZS4gKi8KICAuID0gU0laRU9GX0hFQURFUlM7CiAgLiA9IEFMSUdOKF9fc2VjdGlvbl9hbGlnbm1lbnRfXyk7CiAgLnRleHQgIF9faW1hZ2VfYmFzZV9fICsgKCBfX3NlY3Rpb25fYWxpZ25tZW50X18gPCAweDEwMDAgPyAuIDogX19zZWN0aW9uX2FsaWdubWVudF9fICkgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgICAqKC50ZXh0KQogICAgKihTT1JUKC50ZXh0JCopKQogICAgICooLnRleHQuKikKICAgICAqKC5nbnUubGlua29uY2UudC4qKQogICAgKiguZ2x1ZV83dCkKICAgICooLmdsdWVfNykKICAgIC4gPSBBTElHTig4KTsKICAgICAgIC8qIE5vdGU6IHdlIGFsd2F5cyBkZWZpbmUgX19DVE9SX0xJU1RfXyBhbmQgX19fQ1RPUl9MSVNUX18gaGVyZSwKICAgICAgICAgIHdlIGRvIG5vdCBQUk9WSURFIHRoZW0uICBUaGlzIGlzIGJlY2F1c2UgdGhlIGN0b3JzLm8gc3RhcnR1cAoJICBjb2RlIGluIGxpYmdjYyBkZWZpbmVzIHRoZW0gYXMgY29tbW9uIHN5bWJvbHMsIHdpdGggdGhlCiAgICAgICAgICBleHBlY3RhdGlvbiB0aGF0IHRoZXkgd2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRoZSBkZWZpbml0aW9ucwoJICBoZXJlLiAgSWYgd2UgUFJPVklERSB0aGUgc3ltYm9scyB0aGVuIHRoZXkgd2lsbCBub3QgYmUKCSAgb3ZlcnJpZGRlbiBhbmQgZ2xvYmFsIGNvbnN0cnVjdG9ycyB3aWxsIG5vdCBiZSBydW4uCgkgIFNlZSBQUiAyMjc2MiBmb3IgbW9yZSBkZXRhaWxzLgoKCSAgVGhpcyBkb2VzIG1lYW4gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgZm9yIGEgdXNlciB0byBkZWZpbmUKCSAgdGhlaXIgb3duIF9fQ1RPUl9MSVNUX18gYW5kIF9fRFRPUl9MSVNUX18gc3ltYm9sczsgaWYgdGhleSBkbywKCSAgdGhlIGNvbnRlbnQgZnJvbSB0aG9zZSB2YXJpYWJsZXMgYXJlIGluY2x1ZGVkIGJ1dCB0aGUgc3ltYm9scwoJICBkZWZpbmVkIGhlcmUgc2lsZW50bHkgdGFrZSBwcmVjZWRlbmNlLiAgSWYgdGhleSB0cnVseSBuZWVkIHRvCgkgIGJlIHJlZGVmaW5lZCwgYSBjdXN0b20gbGlua2VyIHNjcmlwdCB3aWxsIGhhdmUgdG8gYmUgdXNlZC4KCSAgKFRoZSBjdXN0b20gc2NyaXB0IGNhbiBqdXN0IGJlIGEgY29weSBvZiB0aGlzIHNjcmlwdCB3aXRoIHRoZQoJICBQUk9WSURFKCkgcXVhbGlmaWVycyBhZGRlZCkuCgkgIEluIHBhcnRpY3VsYXIgdGhpcyBtZWFucyB0aGF0IGxkIC1VciBkb2VzIG5vdCB3b3JrLCBiZWNhdXNlCgkgIHRoZSBwcm9wZXIgX19DVE9SX0xJU1RfXyBzZXQgYnkgbGQgLVVyIGlzIG92ZXJyaWRkZW4gYnkgYQoJICBib2d1cyBfX0NUT1JfTElTVF9fIHNldCBieSB0aGUgZmluYWwgbGluay4gIFNlZSBQUiA0Ni4gICovCiAgICAgICBfX19DVE9SX0xJU1RfXyA9IC47CiAgICAgICBfX0NUT1JfTElTVF9fID0gLjsKICAgICAgIExPTkcgKC0xKTsgTE9ORyAoLTEpOwogICAgICAgS0VFUCAoKiguY3RvcnMpKTsKICAgICAgIEtFRVAgKCooLmN0b3IpKTsKICAgICAgIEtFRVAgKCooU09SVF9CWV9OQU1FKC5jdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7IExPTkcgKDApOwogICAgICAgLyogU2VlIGNvbW1lbnQgYWJvdXQgX19DVE9SX0xJU1RfXyBhYm92ZS4gIFRoZSBzYW1lIHJlYXNvbmluZwogICAgCSAgYXBwbGllcyBoZXJlIHRvby4gICovCiAgICAgICBfX19EVE9SX0xJU1RfXyA9IC47CiAgICAgICBfX0RUT1JfTElTVF9fID0gLjsKICAgICAgIExPTkcgKC0xKTsgTE9ORyAoLTEpOwogICAgICAgS0VFUCAoKiguZHRvcnMpKTsKICAgICAgIEtFRVAgKCooLmR0b3IpKTsKICAgICAgIEtFRVAgKCooU09SVF9CWV9OQU1FKC5kdG9ycy4qKSkpOwogICAgICAgTE9ORyAoMCk7IExPTkcgKDApOwogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICAgIC8qID8/PyBXaHkgaXMgLmdjY19leGMgaGVyZT8gICovCiAgICAgKiguZ2NjX2V4YykKICAgIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgICAgS0VFUCAoKiguZ2NjX2V4Y2VwdF90YWJsZSkpCiAgfQogIC8qIFRoZSBDeWd3aW4zMiBsaWJyYXJ5IHVzZXMgYSBzZWN0aW9uIHRvIGF2b2lkIGNvcHlpbmcgY2VydGFpbiBkYXRhCiAgICAgb24gZm9yay4gIFRoaXMgdXNlZCB0byBiZSBuYW1lZCAiLmRhdGEiLiAgVGhlIGxpbmtlciB1c2VkCiAgICAgdG8gaW5jbHVkZSB0aGlzIGJldHdlZW4gX19kYXRhX3N0YXJ0X18gYW5kIF9fZGF0YV9lbmRfXywgYnV0IHRoYXQKICAgICBicmVha3MgYnVpbGRpbmcgdGhlIGN5Z3dpbjMyIGRsbC4gIEluc3RlYWQsIHdlIG5hbWUgdGhlIHNlY3Rpb24KICAgICAiLmRhdGFfY3lnd2luX25vY29weSIgYW5kIGV4cGxpY2l0bHkgaW5jbHVkZSBpdCBhZnRlciBfX2RhdGFfZW5kX18uICovCiAgLmRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19kYXRhX3N0YXJ0X18gPSAuIDsKICAgICooLmRhdGEpCiAgICAqKC5kYXRhMikKICAgICooU09SVCguZGF0YSQqKSkKCSAgICAqKC5yZGF0YSkKCSAgICAqKFNPUlQoLnJkYXRhJCopKQogICAgS0VFUCgqKC5qY3IpKQogICAgX19kYXRhX2VuZF9fID0gLiA7CiAgICAqKC5kYXRhX2N5Z3dpbl9ub2NvcHkpCiAgfQogIC5yZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAuID0gQUxJR04oNCk7CiAgICBfX3J0X3BzcmVsb2NzX3N0YXJ0ID0gLjsKICAgIEtFRVAoKigucmRhdGFfcnVudGltZV9wc2V1ZG9fcmVsb2MpKQogICAgX19ydF9wc3JlbG9jc19lbmQgPSAuOwogIH0KICBfX3J0X3BzcmVsb2NzX3NpemUgPSBfX3J0X3BzcmVsb2NzX2VuZCAtIF9fcnRfcHNyZWxvY3Nfc3RhcnQ7CiAgX19fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9FTkRfXyA9IC47CiAgX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX0VORF9fID0gLjsKICBfX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX18gPSAuIC0gX19ydF9wc3JlbG9jc19zaXplOwogIF9fUlVOVElNRV9QU0VVRE9fUkVMT0NfTElTVF9fID0gLiAtIF9fcnRfcHNyZWxvY3Nfc2l6ZTsKICAuZWhfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgS0VFUCAoKiguZWhfZnJhbWUqKSkKICB9CiAgLnBkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAoKigucGRhdGEqKSkKICB9CiAgLnhkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIEtFRVAoKigueGRhdGEqKSkKICB9CiAgLmJzcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX2Jzc19zdGFydF9fID0gLiA7CiAgICAqKC5ic3MpCiAgICAqKENPTU1PTikKICAgIF9fYnNzX2VuZF9fID0gLiA7CiAgfQogIC5lZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAqKC5lZGF0YSkKICB9CiAgL0RJU0NBUkQvIDoKICB7CiAgICAqKC5kZWJ1ZyRTKQogICAgKiguZGVidWckVCkKICAgICooLmRlYnVnJEYpCiAgICAgKiguZHJlY3R2ZSkKICAgICAqKC5ub3RlLkdOVS1zdGFjaykKICAgICAqKC5nbnUubHRvXyopCiAgfQogIC5pZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAvKiBUaGlzIGNhbm5vdCBjdXJyZW50bHkgYmUgaGFuZGxlZCB3aXRoIGdyb3VwZWQgc2VjdGlvbnMuCglTZWUgcGVwLmVtOnNvcnRfc2VjdGlvbnMuICAqLwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkMikpCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQzKSkKICAgIC8qIFRoZXNlIHplcm9lcyBtYXJrIHRoZSBlbmQgb2YgdGhlIGltcG9ydCBsaXN0LiAgKi8KICAgIExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsKICAgIC4gPSBBTElHTig4KTsKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDQpKQogICAgX19JQVRfc3RhcnRfXyA9IC47CiAgICBTT1JUKCopKC5pZGF0YSQ1KQogICAgX19JQVRfZW5kX18gPSAuOwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNikpCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ3KSkKICB9CiAgLkNSVCBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX19jcnRfeGNfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEMqKSkpICAvKiBDIGluaXRpYWxpemF0aW9uICovCiAgICBfX19jcnRfeGNfZW5kX18gPSAuIDsKICAgIF9fX2NydF94aV9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYSSopKSkgIC8qIEMrKyBpbml0aWFsaXphdGlvbiAqLwogICAgX19fY3J0X3hpX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeGxfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWEwqKSkpICAvKiBUTFMgY2FsbGJhY2tzICovCiAgICAvKiBfX19jcnRfeGxfZW5kX18gaXMgZGVmaW5lZCBpbiB0aGUgVExTIERpcmVjdG9yeSBzdXBwb3J0IGNvZGUgKi8KICAgIF9fX2NydF94cF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYUCopKSkgIC8qIFByZS10ZXJtaW5hdGlvbiAqLwogICAgX19fY3J0X3hwX2VuZF9fID0gLiA7CiAgICBfX19jcnRfeHRfc3RhcnRfXyA9IC4gOwogICAgS0VFUCAoKihTT1JUKC5DUlQkWFQqKSkpICAvKiBUZXJtaW5hdGlvbiAqLwogICAgX19fY3J0X3h0X2VuZF9fID0gLiA7CiAgfQogIC8qIFdpbmRvd3MgVExTIGV4cGVjdHMgLnRscyRBQUEgdG8gYmUgYXQgdGhlIHN0YXJ0IGFuZCAudGxzJFpaWiB0byBiZQogICAgIGF0IHRoZSBlbmQgb2YgdGhlIC50bHMgc2VjdGlvbi4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgX3Rsc19zdGFydCBNVVNUCiAgICAgYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VjdGlvbiB0byBlbmFibGUgU0VDUkVMMzIgcmVsb2NhdGlvbnMgd2l0aCBUTFMKICAgICBkYXRhLiAgKi8KICAudGxzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fX3Rsc19zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKC50bHMkQUFBKSkKICAgIEtFRVAgKCooLnRscykpCiAgICBLRUVQICgqKC50bHMkKSkKICAgIEtFRVAgKCooU09SVCgudGxzJCopKSkKICAgIEtFRVAgKCooLnRscyRaWlopKQogICAgX19fdGxzX2VuZF9fID0gLiA7CiAgfQogIC5lbmRqdW5rIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIC8qIGVuZCBpcyBkZXByZWNhdGVkLCBkb24ndCB1c2UgaXQgKi8KICAgIFBST1ZJREUgKGVuZCA9IC4pOwogICAgUFJPVklERSAoIF9lbmQgPSAuKTsKICAgICBfX2VuZF9fID0gLjsKICB9CiAgLnJzcmMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6IFNVQkFMSUdOKDQpCiAgewogICAgS0VFUCAoKigucnNyYykpCiAgICBLRUVQICgqKC5yc3JjJCopKQogIH0KICAucmVsb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKigucmVsb2MpCiAgfQogIC5zdGFiIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnN0YWIpCiAgfQogIC5zdGFic3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnN0YWJzdHIpCiAgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uLiAgVW5saWtlIG90aGVyIHRhcmdldHMgdGhhdCBmYWtlIHRoaXMgYnkgcHV0dGluZyB0aGUKICAgICBzZWN0aW9uIFZNQSBhdCAwLCB0aGUgUEUgZm9ybWF0IHdpbGwgbm90IGFsbG93IGl0LiAgKi8KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIuICAqLwogIC5kZWJ1Z19hcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2FyYW5nZXMpCiAgfQogIC56ZGVidWdfYXJhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfYXJhbmdlcykKICB9CiAgLmRlYnVnX3B1Ym5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3B1Ym5hbWVzKQogIH0KICAuemRlYnVnX3B1Ym5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19wdWJuYW1lcykKICB9CiAgLyogRFdBUkYgMi4gICovCiAgLmRlYnVnX2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopCiAgfQogIC56ZGVidWdfaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfaW5mbyAuemRlYnVnLmdudS5saW5rb25jZS53aS4qKQogIH0KICAuZGVidWdfYWJicmV2IEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2FiYnJldikKICB9CiAgLnpkZWJ1Z19hYmJyZXYgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2FiYnJldikKICB9CiAgLmRlYnVnX2xpbmUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbGluZSkKICB9CiAgLnpkZWJ1Z19saW5lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19saW5lKQogIH0KICAuZGVidWdfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZnJhbWUqKQogIH0KICAuemRlYnVnX2ZyYW1lIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19mcmFtZSopCiAgfQogIC5kZWJ1Z19zdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfc3RyKQogIH0KICAuemRlYnVnX3N0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfc3RyKQogIH0KICAuZGVidWdfbG9jIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2xvYykKICB9CiAgLnpkZWJ1Z19sb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2xvYykKICB9CiAgLmRlYnVnX21hY2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbWFjaW5mbykKICB9CiAgLnpkZWJ1Z19tYWNpbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19tYWNpbmZvKQogIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMuICAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfd2Vha25hbWVzKQogIH0KICAuemRlYnVnX3dlYWtuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfd2Vha25hbWVzKQogIH0KICAuZGVidWdfZnVuY25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2Z1bmNuYW1lcykKICB9CiAgLnpkZWJ1Z19mdW5jbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2Z1bmNuYW1lcykKICB9CiAgLmRlYnVnX3R5cGVuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlbmFtZXMpCiAgfQogIC56ZGVidWdfdHlwZW5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z190eXBlbmFtZXMpCiAgfQogIC5kZWJ1Z192YXJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z192YXJuYW1lcykKICB9CiAgLnpkZWJ1Z192YXJuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfdmFybmFtZXMpCiAgfQogIC8qIERXQVJGIDMuICAqLwogIC5kZWJ1Z19wdWJ0eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19wdWJ0eXBlcykKICB9CiAgLnpkZWJ1Z19wdWJ0eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfcHVidHlwZXMpCiAgfQogIC5kZWJ1Z19yYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcmFuZ2VzKQogIH0KICAuemRlYnVnX3JhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfcmFuZ2VzKQogIH0KICAvKiBEV0FSRiA0LiAgKi8KICAuZGVidWdfdHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfdHlwZXMgLmdudS5saW5rb25jZS53dC4qKQogIH0KICAuemRlYnVnX3R5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z190eXBlcyAuZ251LmxpbmtvbmNlLnd0LiopCiAgfQogIC8qIERXQVJGIDUuICAqLwogIC5kZWJ1Z19hZGRyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2FkZHIpCiAgfQogIC56ZGVidWdfYWRkciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfYWRkcikKICB9CiAgLmRlYnVnX2xpbmVfc3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2xpbmVfc3RyKQogIH0KICAuemRlYnVnX2xpbmVfc3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19saW5lX3N0cikKICB9CiAgLmRlYnVnX2xvY2xpc3RzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2xvY2xpc3RzKQogIH0KICAuemRlYnVnX2xvY2xpc3RzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19sb2NsaXN0cykKICB9CiAgLmRlYnVnX21hY3JvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX21hY3JvKQogIH0KICAuemRlYnVnX21hY3JvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19tYWNybykKICB9CiAgLmRlYnVnX25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX25hbWVzKQogIH0KICAuemRlYnVnX25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19uYW1lcykKICB9CiAgLmRlYnVnX3JuZ2xpc3RzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3JuZ2xpc3RzKQogIH0KICAuemRlYnVnX3JuZ2xpc3RzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19ybmdsaXN0cykKICB9CiAgLmRlYnVnX3N0cl9vZmZzZXRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3N0cl9vZmZzZXRzKQogIH0KICAuemRlYnVnX3N0cl9vZmZzZXRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19zdHJfb2Zmc2V0cykKICB9CiAgLmRlYnVnX3N1cCBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19zdXApCiAgfQogIC8qIEZvciBHbyBhbmQgUnVzdC4gICovCiAgLmRlYnVnX2dkYl9zY3JpcHRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX2dkYl9zY3JpcHRzKQogIH0KICAuemRlYnVnX2dkYl9zY3JpcHRzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19nZGJfc2NyaXB0cykKICB9Cn0KCgAAAC8qIERlZmF1bHQgbGlua2VyIHNjcmlwdCwgZm9yIG5vcm1hbCBleGVjdXRhYmxlcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVChwZWkteDg2LTY0KQpTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIveDg2XzY0LWxpbnV4LWdudSIpOyBTRUFSQ0hfRElSKCI9L2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LXBlcC9saWIiKTsKU0VDVElPTlMKewogIC8qIE1ha2UgdGhlIHZpcnR1YWwgYWRkcmVzcyBhbmQgZmlsZSBvZmZzZXQgc3luY2VkIGlmIHRoZSBhbGlnbm1lbnQgaXMKICAgICBsb3dlciB0aGFuIHRoZSB0YXJnZXQgcGFnZSBzaXplLiAqLwogIC4gPSBTSVpFT0ZfSEVBREVSUzsKICAuID0gQUxJR04oX19zZWN0aW9uX2FsaWdubWVudF9fKTsKICAudGV4dCAgX19pbWFnZV9iYXNlX18gKyAoIF9fc2VjdGlvbl9hbGlnbm1lbnRfXyA8IDB4MTAwMCA/IC4gOiBfX3NlY3Rpb25fYWxpZ25tZW50X18gKSA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICAgICooLnRleHQpCiAgICAqKFNPUlQoLnRleHQkKikpCiAgICAgKigudGV4dC4qKQogICAgICooLmdudS5saW5rb25jZS50LiopCiAgICAqKC5nbHVlXzd0KQogICAgKiguZ2x1ZV83KQogICAgLiA9IEFMSUdOKDgpOwogICAgICAgLyogTm90ZTogd2UgYWx3YXlzIGRlZmluZSBfX0NUT1JfTElTVF9fIGFuZCBfX19DVE9SX0xJU1RfXyBoZXJlLAogICAgICAgICAgd2UgZG8gbm90IFBST1ZJREUgdGhlbS4gIFRoaXMgaXMgYmVjYXVzZSB0aGUgY3RvcnMubyBzdGFydHVwCgkgIGNvZGUgaW4gbGliZ2NjIGRlZmluZXMgdGhlbSBhcyBjb21tb24gc3ltYm9scywgd2l0aCB0aGUKICAgICAgICAgIGV4cGVjdGF0aW9uIHRoYXQgdGhleSB3aWxsIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGRlZmluaXRpb25zCgkgIGhlcmUuICBJZiB3ZSBQUk9WSURFIHRoZSBzeW1ib2xzIHRoZW4gdGhleSB3aWxsIG5vdCBiZQoJICBvdmVycmlkZGVuIGFuZCBnbG9iYWwgY29uc3RydWN0b3JzIHdpbGwgbm90IGJlIHJ1bi4KCSAgU2VlIFBSIDIyNzYyIGZvciBtb3JlIGRldGFpbHMuCgoJICBUaGlzIGRvZXMgbWVhbiB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSBmb3IgYSB1c2VyIHRvIGRlZmluZQoJICB0aGVpciBvd24gX19DVE9SX0xJU1RfXyBhbmQgX19EVE9SX0xJU1RfXyBzeW1ib2xzOyBpZiB0aGV5IGRvLAoJICB0aGUgY29udGVudCBmcm9tIHRob3NlIHZhcmlhYmxlcyBhcmUgaW5jbHVkZWQgYnV0IHRoZSBzeW1ib2xzCgkgIGRlZmluZWQgaGVyZSBzaWxlbnRseSB0YWtlIHByZWNlZGVuY2UuICBJZiB0aGV5IHRydWx5IG5lZWQgdG8KCSAgYmUgcmVkZWZpbmVkLCBhIGN1c3RvbSBsaW5rZXIgc2NyaXB0IHdpbGwgaGF2ZSB0byBiZSB1c2VkLgoJICAoVGhlIGN1c3RvbSBzY3JpcHQgY2FuIGp1c3QgYmUgYSBjb3B5IG9mIHRoaXMgc2NyaXB0IHdpdGggdGhlCgkgIFBST1ZJREUoKSBxdWFsaWZpZXJzIGFkZGVkKS4KCSAgSW4gcGFydGljdWxhciB0aGlzIG1lYW5zIHRoYXQgbGQgLVVyIGRvZXMgbm90IHdvcmssIGJlY2F1c2UKCSAgdGhlIHByb3BlciBfX0NUT1JfTElTVF9fIHNldCBieSBsZCAtVXIgaXMgb3ZlcnJpZGRlbiBieSBhCgkgIGJvZ3VzIF9fQ1RPUl9MSVNUX18gc2V0IGJ5IHRoZSBmaW5hbCBsaW5rLiAgU2VlIFBSIDQ2LiAgKi8KICAgICAgIF9fX0NUT1JfTElTVF9fID0gLjsKICAgICAgIF9fQ1RPUl9MSVNUX18gPSAuOwogICAgICAgTE9ORyAoLTEpOyBMT05HICgtMSk7CiAgICAgICBLRUVQICgqKC5jdG9ycykpOwogICAgICAgS0VFUCAoKiguY3RvcikpOwogICAgICAgS0VFUCAoKihTT1JUX0JZX05BTUUoLmN0b3JzLiopKSk7CiAgICAgICBMT05HICgwKTsgTE9ORyAoMCk7CiAgICAgICAvKiBTZWUgY29tbWVudCBhYm91dCBfX0NUT1JfTElTVF9fIGFib3ZlLiAgVGhlIHNhbWUgcmVhc29uaW5nCiAgICAJICBhcHBsaWVzIGhlcmUgdG9vLiAgKi8KICAgICAgIF9fX0RUT1JfTElTVF9fID0gLjsKICAgICAgIF9fRFRPUl9MSVNUX18gPSAuOwogICAgICAgTE9ORyAoLTEpOyBMT05HICgtMSk7CiAgICAgICBLRUVQICgqKC5kdG9ycykpOwogICAgICAgS0VFUCAoKiguZHRvcikpOwogICAgICAgS0VFUCAoKihTT1JUX0JZX05BTUUoLmR0b3JzLiopKSk7CiAgICAgICBMT05HICgwKTsgTE9ORyAoMCk7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogICAgLyogPz8/IFdoeSBpcyAuZ2NjX2V4YyBoZXJlPyAgKi8KICAgICAqKC5nY2NfZXhjKQogICAgUFJPVklERSAoZXRleHQgPSAuKTsKICAgICBLRUVQICgqKC5nY2NfZXhjZXB0X3RhYmxlKSkKICB9CiAgLyogVGhlIEN5Z3dpbjMyIGxpYnJhcnkgdXNlcyBhIHNlY3Rpb24gdG8gYXZvaWQgY29weWluZyBjZXJ0YWluIGRhdGEKICAgICBvbiBmb3JrLiAgVGhpcyB1c2VkIHRvIGJlIG5hbWVkICIuZGF0YSIuICBUaGUgbGlua2VyIHVzZWQKICAgICB0byBpbmNsdWRlIHRoaXMgYmV0d2VlbiBfX2RhdGFfc3RhcnRfXyBhbmQgX19kYXRhX2VuZF9fLCBidXQgdGhhdAogICAgIGJyZWFrcyBidWlsZGluZyB0aGUgY3lnd2luMzIgZGxsLiAgSW5zdGVhZCwgd2UgbmFtZSB0aGUgc2VjdGlvbgogICAgICIuZGF0YV9jeWd3aW5fbm9jb3B5IiBhbmQgZXhwbGljaXRseSBpbmNsdWRlIGl0IGFmdGVyIF9fZGF0YV9lbmRfXy4gKi8KICAuZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBfX2RhdGFfc3RhcnRfXyA9IC4gOwogICAgKiguZGF0YSkKICAgICooLmRhdGEyKQogICAgKihTT1JUKC5kYXRhJCopKQogICAgS0VFUCgqKC5qY3IpKQogICAgX19kYXRhX2VuZF9fID0gLiA7CiAgICAqKC5kYXRhX2N5Z3dpbl9ub2NvcHkpCiAgfQogIC5yZGF0YSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAqKC5yZGF0YSkKCSAgICAgKihTT1JUKC5yZGF0YSQqKSkKICAgIC4gPSBBTElHTig0KTsKICAgIF9fcnRfcHNyZWxvY3Nfc3RhcnQgPSAuOwogICAgS0VFUCgqKC5yZGF0YV9ydW50aW1lX3BzZXVkb19yZWxvYykpCiAgICBfX3J0X3BzcmVsb2NzX2VuZCA9IC47CiAgfQogIF9fcnRfcHNyZWxvY3Nfc2l6ZSA9IF9fcnRfcHNyZWxvY3NfZW5kIC0gX19ydF9wc3JlbG9jc19zdGFydDsKICBfX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX0VORF9fID0gLjsKICBfX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfRU5EX18gPSAuOwogIF9fX1JVTlRJTUVfUFNFVURPX1JFTE9DX0xJU1RfXyA9IC4gLSBfX3J0X3BzcmVsb2NzX3NpemU7CiAgX19SVU5USU1FX1BTRVVET19SRUxPQ19MSVNUX18gPSAuIC0gX19ydF9wc3JlbG9jc19zaXplOwogIC5laF9mcmFtZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICBLRUVQICgqKC5laF9mcmFtZSopKQogIH0KICAucGRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgS0VFUCgqKC5wZGF0YSopKQogIH0KICAueGRhdGEgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgS0VFUCgqKC54ZGF0YSopKQogIH0KICAuYnNzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fYnNzX3N0YXJ0X18gPSAuIDsKICAgICooLmJzcykKICAgICooQ09NTU9OKQogICAgX19ic3NfZW5kX18gPSAuIDsKICB9CiAgLmVkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgICooLmVkYXRhKQogIH0KICAvRElTQ0FSRC8gOgogIHsKICAgICooLmRlYnVnJFMpCiAgICAqKC5kZWJ1ZyRUKQogICAgKiguZGVidWckRikKICAgICAqKC5kcmVjdHZlKQogICAgICooLm5vdGUuR05VLXN0YWNrKQogICAgICooLmdudS5sdG9fKikKICB9CiAgLmlkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIC8qIFRoaXMgY2Fubm90IGN1cnJlbnRseSBiZSBoYW5kbGVkIHdpdGggZ3JvdXBlZCBzZWN0aW9ucy4KCVNlZSBwZXAuZW06c29ydF9zZWN0aW9ucy4gICovCiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQyKSkKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDMpKQogICAgLyogVGhlc2UgemVyb2VzIG1hcmsgdGhlIGVuZCBvZiB0aGUgaW1wb3J0IGxpc3QuICAqLwogICAgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAoMCk7IExPTkcgKDApOwogICAgLiA9IEFMSUdOKDgpOwogICAgS0VFUCAoU09SVCgqKSguaWRhdGEkNCkpCiAgICBfX0lBVF9zdGFydF9fID0gLjsKICAgIFNPUlQoKikoLmlkYXRhJDUpCiAgICBfX0lBVF9lbmRfXyA9IC47CiAgICBLRUVQIChTT1JUKCopKC5pZGF0YSQ2KSkKICAgIEtFRVAgKFNPUlQoKikoLmlkYXRhJDcpKQogIH0KICAuQ1JUIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIF9fX2NydF94Y19zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYQyopKSkgIC8qIEMgaW5pdGlhbGl6YXRpb24gKi8KICAgIF9fX2NydF94Y19lbmRfXyA9IC4gOwogICAgX19fY3J0X3hpX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhJKikpKSAgLyogQysrIGluaXRpYWxpemF0aW9uICovCiAgICBfX19jcnRfeGlfZW5kX18gPSAuIDsKICAgIF9fX2NydF94bF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYTCopKSkgIC8qIFRMUyBjYWxsYmFja3MgKi8KICAgIC8qIF9fX2NydF94bF9lbmRfXyBpcyBkZWZpbmVkIGluIHRoZSBUTFMgRGlyZWN0b3J5IHN1cHBvcnQgY29kZSAqLwogICAgX19fY3J0X3hwX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooU09SVCguQ1JUJFhQKikpKSAgLyogUHJlLXRlcm1pbmF0aW9uICovCiAgICBfX19jcnRfeHBfZW5kX18gPSAuIDsKICAgIF9fX2NydF94dF9zdGFydF9fID0gLiA7CiAgICBLRUVQICgqKFNPUlQoLkNSVCRYVCopKSkgIC8qIFRlcm1pbmF0aW9uICovCiAgICBfX19jcnRfeHRfZW5kX18gPSAuIDsKICB9CiAgLyogV2luZG93cyBUTFMgZXhwZWN0cyAudGxzJEFBQSB0byBiZSBhdCB0aGUgc3RhcnQgYW5kIC50bHMkWlpaIHRvIGJlCiAgICAgYXQgdGhlIGVuZCBvZiB0aGUgLnRscyBzZWN0aW9uLiAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBfdGxzX3N0YXJ0IE1VU1QKICAgICBiZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWN0aW9uIHRvIGVuYWJsZSBTRUNSRUwzMiByZWxvY2F0aW9ucyB3aXRoIFRMUwogICAgIGRhdGEuICAqLwogIC50bHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19fdGxzX3N0YXJ0X18gPSAuIDsKICAgIEtFRVAgKCooLnRscyRBQUEpKQogICAgS0VFUCAoKigudGxzKSkKICAgIEtFRVAgKCooLnRscyQpKQogICAgS0VFUCAoKihTT1JUKC50bHMkKikpKQogICAgS0VFUCAoKigudGxzJFpaWikpCiAgICBfX190bHNfZW5kX18gPSAuIDsKICB9CiAgLmVuZGp1bmsgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgLyogZW5kIGlzIGRlcHJlY2F0ZWQsIGRvbid0IHVzZSBpdCAqLwogICAgUFJPVklERSAoZW5kID0gLik7CiAgICBQUk9WSURFICggX2VuZCA9IC4pOwogICAgIF9fZW5kX18gPSAuOwogIH0KICAucnNyYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDogU1VCQUxJR04oNCkKICB7CiAgICBLRUVQICgqKC5yc3JjKSkKICAgIEtFRVAgKCooLnJzcmMkKikpCiAgfQogIC5yZWxvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7CiAgICAqKC5yZWxvYykKICB9CiAgLnN0YWIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguc3RhYikKICB9CiAgLnN0YWJzdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguc3RhYnN0cikKICB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24uICBVbmxpa2Ugb3RoZXIgdGFyZ2V0cyB0aGF0IGZha2UgdGhpcyBieSBwdXR0aW5nIHRoZQogICAgIHNlY3Rpb24gVk1BIGF0IDAsIHRoZSBQRSBmb3JtYXQgd2lsbCBub3QgYWxsb3cgaXQuICAqLwogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMi4gICovCiAgLmRlYnVnX2FyYW5nZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfYXJhbmdlcykKICB9CiAgLnpkZWJ1Z19hcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19hcmFuZ2VzKQogIH0KICAuZGVidWdfcHVibmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcHVibmFtZXMpCiAgfQogIC56ZGVidWdfcHVibmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3B1Ym5hbWVzKQogIH0KICAvKiBEV0FSRiAyLiAgKi8KICAuZGVidWdfaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikKICB9CiAgLnpkZWJ1Z19pbmZvIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19pbmZvIC56ZGVidWcuZ251LmxpbmtvbmNlLndpLiopCiAgfQogIC5kZWJ1Z19hYmJyZXYgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfYWJicmV2KQogIH0KICAuemRlYnVnX2FiYnJldiBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfYWJicmV2KQogIH0KICAuZGVidWdfbGluZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19saW5lKQogIH0KICAuemRlYnVnX2xpbmUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2xpbmUpCiAgfQogIC5kZWJ1Z19mcmFtZSBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19mcmFtZSopCiAgfQogIC56ZGVidWdfZnJhbWUgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2ZyYW1lKikKICB9CiAgLmRlYnVnX3N0ciBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19zdHIpCiAgfQogIC56ZGVidWdfc3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19zdHIpCiAgfQogIC5kZWJ1Z19sb2MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbG9jKQogIH0KICAuemRlYnVnX2xvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfbG9jKQogIH0KICAuZGVidWdfbWFjaW5mbyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19tYWNpbmZvKQogIH0KICAuemRlYnVnX21hY2luZm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX21hY2luZm8pCiAgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucy4gICovCiAgLmRlYnVnX3dlYWtuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC56ZGVidWdfd2Vha25hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z193ZWFrbmFtZXMpCiAgfQogIC5kZWJ1Z19mdW5jbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZnVuY25hbWVzKQogIH0KICAuemRlYnVnX2Z1bmNuYW1lcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC56ZGVidWdfZnVuY25hbWVzKQogIH0KICAuZGVidWdfdHlwZW5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3R5cGVuYW1lcykKICB9CiAgLnpkZWJ1Z190eXBlbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVuYW1lcykKICB9CiAgLmRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3Zhcm5hbWVzKQogIH0KICAuemRlYnVnX3Zhcm5hbWVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z192YXJuYW1lcykKICB9CiAgLyogRFdBUkYgMy4gICovCiAgLmRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3B1YnR5cGVzKQogIH0KICAuemRlYnVnX3B1YnR5cGVzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19wdWJ0eXBlcykKICB9CiAgLmRlYnVnX3JhbmdlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z19yYW5nZXMpCiAgfQogIC56ZGVidWdfcmFuZ2VzIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19yYW5nZXMpCiAgfQogIC8qIERXQVJGIDQuICAqLwogIC5kZWJ1Z190eXBlcyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIChOT0xPQUQpIDoKICB7CiAgICAqKC5kZWJ1Z190eXBlcyAuZ251LmxpbmtvbmNlLnd0LiopCiAgfQogIC56ZGVidWdfdHlwZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3R5cGVzIC5nbnUubGlua29uY2Uud3QuKikKICB9CiAgLyogRFdBUkYgNS4gICovCiAgLmRlYnVnX2FkZHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfYWRkcikKICB9CiAgLnpkZWJ1Z19hZGRyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLnpkZWJ1Z19hZGRyKQogIH0KICAuZGVidWdfbGluZV9zdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbGluZV9zdHIpCiAgfQogIC56ZGVidWdfbGluZV9zdHIgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2xpbmVfc3RyKQogIH0KICAuZGVidWdfbG9jbGlzdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbG9jbGlzdHMpCiAgfQogIC56ZGVidWdfbG9jbGlzdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2xvY2xpc3RzKQogIH0KICAuZGVidWdfbWFjcm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbWFjcm8pCiAgfQogIC56ZGVidWdfbWFjcm8gQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX21hY3JvKQogIH0KICAuZGVidWdfbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfbmFtZXMpCiAgfQogIC56ZGVidWdfbmFtZXMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX25hbWVzKQogIH0KICAuZGVidWdfcm5nbGlzdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfcm5nbGlzdHMpCiAgfQogIC56ZGVidWdfcm5nbGlzdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3JuZ2xpc3RzKQogIH0KICAuZGVidWdfc3RyX29mZnNldHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfc3RyX29mZnNldHMpCiAgfQogIC56ZGVidWdfc3RyX29mZnNldHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX3N0cl9vZmZzZXRzKQogIH0KICAuZGVidWdfc3VwIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5PTE9BRCkgOgogIHsKICAgICooLmRlYnVnX3N1cCkKICB9CiAgLyogRm9yIEdvIGFuZCBSdXN0LiAgKi8KICAuZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguZGVidWdfZ2RiX3NjcmlwdHMpCiAgfQogIC56ZGVidWdfZ2RiX3NjcmlwdHMgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgKiguemRlYnVnX2dkYl9zY3JpcHRzKQogIH0KfQoKAAAAAAAlUDogJUg6IGNhbm5vdCBnZXQgc2VjdGlvbiBjb250ZW50cyAtIGF1dG8taW1wb3J0IGV4Y2VwdGlvbgoAAAAAaW1wb3J0IG9mIDB4JWx4KDB4JWx4KSBzZWNfYWRkcj0weCVseAAAAGNyZWF0aW5nIHJ1bnRpbWUgcHNldWRvLXJlbG9jIGVudHJ5IGZvciAlcyAoYWRkZW5kPSVkKQoAJVglUDogJUg6IHZhcmlhYmxlICclcFQnIGNhbid0IGJlIGF1dG8taW1wb3J0ZWQ7IHBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciBsZCdzIC0tZW5hYmxlLWF1dG8taW1wb3J0IGZvciBkZXRhaWxzCgAAAAAAAAAlUDogd2FybmluZzogLmJ1aWxkaWQgc2VjdGlvbiBkaXNjYXJkZWQsIC0tYnVpbGQtaWQgaWdub3JlZAoAAAAAJVA6IGJhc2UgcmVsb2NhdGlvbiBmb3Igc2VjdGlvbiBgJXMnIGFib3ZlIC5yZWxvYyBzZWN0aW9uCgAAAAAAACVYJVA6IGVycm9yOiAlZC1iaXQgcmVsb2MgaW4gZGxsCgAAAAAAAAAlWCVQOiBjYW4ndCBvcGVuIC5saWIgZmlsZTogJXMKACVYJVA6ICVzKCVzKTogY2FuJ3QgZmluZCBtZW1iZXIgaW4gbm9uLWFyY2hpdmUgZmlsZQAAAAAAJVglUDogJXMoJXMpOiBjYW4ndCBmaW5kIG1lbWJlciBpbiBhcmNoaXZlAAAAAAAAJVglUDogYmZkX3NldF9hcmNoaXZlX2hlYWQ6ICVFCgAlUDogY2FuJ3Qgb3BlbiBvdXRwdXQgZGVmIGZpbGUgJXMKAAAAAAAAJVA6IHdhcm5pbmc6IGNhbm5vdCBjcmVhdGUgLmJ1aWxkaWQgc2VjdGlvbiwgLS1idWlsZC1pZCBpZ25vcmVkCgAAAAAAAAAAJVA6IGNhbm5vdCBwZXJmb3JtIFBFIG9wZXJhdGlvbnMgb24gbm9uIFBFIG91dHB1dCBmaWxlICclcEInCgAAAEluZm86IHJlc29sdmluZyAlcyBieSBsaW5raW5nIHRvICVzIChhdXRvLWltcG9ydCkKAAAAAAAAJVA6IHdhcm5pbmc6IGF1dG8taW1wb3J0aW5nIGhhcyBiZWVuIGFjdGl2YXRlZCB3aXRob3V0IC0tZW5hYmxlLWF1dG8taW1wb3J0IHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lOyB0aGlzIHNob3VsZCB3b3JrIHVubGVzcyBpdCBpbnZvbHZlcyBjb25zdGFudCBkYXRhIHN0cnVjdHVyZXMgcmVmZXJlbmNpbmcgc3ltYm9scyBmcm9tIGF1dG8taW1wb3J0ZWQgRExMcwoAAAAAd2FybmluZzogcmVzb2x2aW5nICVzIGJ5IGxpbmtpbmcgdG8gJXMKAFVzZSAtLWVuYWJsZS1zdGRjYWxsLWZpeHVwIHRvIGRpc2FibGUgdGhlc2Ugd2FybmluZ3MKAAAAVXNlIC0tZGlzYWJsZS1zdGRjYWxsLWZpeHVwIHRvIGRpc2FibGUgdGhlc2UgZml4dXBzCgAAAAAlUDogd2FybmluZzogb3ZlcndyaXRpbmcgZGVjb3JhdGVkIG5hbWUgJXMgd2l0aCAlcwoAAAAAACVYJVA6IGNhbm5vdCBleHBvcnQgJXM6IGludmFsaWQgZXhwb3J0IG5hbWUKAAAAACVYJVA6IGVycm9yLCBkdXBsaWNhdGUgRVhQT1JUIHdpdGggb3JkaW5hbHM6ICVzICglZCB2cyAlZCkKAAAAAAAlUDogd2FybmluZywgZHVwbGljYXRlIEVYUE9SVDogJXMKAAAAAAAAJVglUDogY2Fubm90IGV4cG9ydCAlczogc3ltYm9sIG5vdCBkZWZpbmVkCgAAAAAAJVglUDogY2Fubm90IGV4cG9ydCAlczogc3ltYm9sIHdyb25nIHR5cGUgKCVkIHZzICVkKQoAAAAlWCVQOiBjYW5ub3QgZXhwb3J0ICVzOiBzeW1ib2wgbm90IGZvdW5kCgAAAAAAAAAlWCVQOiBlcnJvcjogb3JkaW5hbCB1c2VkIHR3aWNlOiAlZCAoJXMgdnMgJXMpCgAlWCVQOiBlcnJvcjogZXhwb3J0IG9yZGluYWwgdG9vIGxhcmdlOiAlZAoAAAAAAAAlWCVQOiB1bmFibGUgdG8gcHJvY2VzcyByZWxvY3M6ICVFCgAAAAAAJVglUDogJXM6IHRoaXMgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSBETEwKAAAAAAAAJXMgJXM6IDB4JTA4bHgtMHglMDhseCAoMHglMDhseCkKAAAAAAAAACVzIGRsbC1uYW1lOiAlcyBzeW06ICVzIGFkZHI6IDB4JWx4ICVzCgAlUDogd2FybmluZzogLS1leHBvcnQtZHluYW1pYyBpcyBub3Qgc3VwcG9ydGVkIGZvciBQRSB0YXJnZXRzLCBkaWQgeW91IG1lYW4gLS1leHBvcnQtYWxsLXN5bWJvbHM/CgAAAAAAACVQOiB3YXJuaW5nOiByZXNvbHZpbmcgJXMgYnkgbGlua2luZyB0byAlcwoAAAAAAGVuYWJsZS1ydW50aW1lLXBzZXVkby1yZWxvYy12MQAAJVglUDogZXJyb3I6IGNhbid0IHVzZSBsb25nIHNlY3Rpb24gbmFtZXMgb24gdGhpcyBhcmNoCgAlczolZDogV2FybmluZzogcGF0aCBjb21wb25lbnRzIHN0cmlwcGVkIGZyb20gJXMsICclcycKACVYJVA6IHVuc3VwcG9ydGVkIFBFSSBhcmNoaXRlY3R1cmU6ICVzCgBjb25zaWRlcmluZyBleHBvcnRpbmc6ICVzLCBhYmZkPSVwLCBhYmZkLT5teV9hcmM9JXAKAAAAACVYJVA6IGNhbiBub3QgY3JlYXRlIC5lZGF0YSBzZWN0aW9uOiAlRQoAAAAAAAAAACVYJVA6IGNhbiBub3QgY3JlYXRlIC5yZWxvYyBzZWN0aW9uOiAlRQoAAAAAAAAAAFdhcm5pbmc6IC5kcmVjdHZlIGAlcycgdW5yZWNvZ25pemVkCgAAAABXYXJuaW5nOiBjb3JydXB0IC5kcmVjdHZlIGF0IGVuZCBvZiBkZWYgZmlsZQoAAAAlUDogZXJyb3I6IE5VTEwgZGVjb3JhdGVkIG5hbWUgZm9yICVzCgAAX2N5Z3dpbl9ub25jeWd3aW5fZGxsX2VudHJ5QDEyAABwb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfYWRkZHVwMgAAAAAAAAAAcG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX2FkZGNsb3NlAAAAAAAAAENhbm5vdCBj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+qLw/9Cj8P9PovD/NKTw/76i8P/ab+7/8XTu/5qe8P+anvD/sHHu/9107v9ice7/TnHu/zNr7v8fa+7/C2vu//dq7v/jau7/z2ru/7tq7v+jcu7/j3Lu/3ty7v9ncu7/U3Lu/z9y7v+wce7/3XTu/2Jx7v9Oce7/M2vu/x9r7v8La+7/92ru/+Nq7v/Pau7/u2ru/6Ny7v+Pcu7/e3Lu/4107v9ncu7/U3Lu/z9y7v9Qbe7//aDw/+tr7v8YpvD/GKLw/3Vt7v9toPD/g6Lw/9Og8P+anvD/mp7w/9il8P9Ha+7/W2vu/4107v/npfD/b2vu/4xr7v+la+7/xmvu/9Vr7v/Ece7/5nHu/yZy7v92ce7/DqPw/1yh8P9cofD/XKHw/1yh8P9cofD/XKHw/1yh8P9cofD/XKHw/2uT7v99k+7/fZPu/32T7v99k+7/fZPu/32T7v99k+7/fZPu/32T7v99k+7/fZPu/32T7v99k+7/fZPu/32T7v99k+7/fZPu/32T7v99k+7/fZPu/32T7v99k+7/fZPu/32T7v99k+7/fZPu/32T7v99k+7/fZPu/32T7v99k+7/H6Tx/32T7v99k+7/fZPu/32T7v99k+7/fZPu/32T7v9hk+7/fZPu/32T7v9hk+7/fZPu/32T7v99k+7/fZPu/32T7v8YpPH/fZPu/32T7v99k+7/fZPu/xGk8f8EpPH/fZPu/32T7v99k+7/fZPu/32T7v99k+7/fZPu/32T7v8fpPH/fZPu/32T7v99k+7/fZPu/32T7v99k+7/fZPu/2GT7v99k+7/fZPu/2GT7v99k+7/fZPu/32T7v99k+7/fZPu/xik8f99k+7/fZPu/32T7v99k+7/EaTx/wSk8f9osPD/+LHw//iw8P/or/D/6Kzw/+is8P/orPD/qK7w/1iy8P9Ole7/t7Pw/3Oz8P/mle7/5pXu/+aV7v/Ys/D/ELPw/+aV7v9Xs/D/5pXu/4iz8P/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v8LtPD/5pXu/+mz8P/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v/mle7/5pXu/+aV7v/mle7/d5Xu/1iv8P/OsfD/6K/w/9iu8P/Yq/D/2Kvw/9ir8P+YrfD/SLHw/z6U7v8wr/D/HLPw/8Cv8P+wrvD/sKvw/7Cr8P+wq/D/cK3w/yCx8P8WlO7/XJLu/32S7v90tfD/gbPw/zS18P8StfD/ZbXw/1a18P+ulO7/rpTu/6+18P+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/yK08P+ks/D/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/66U7v+ulO7/rpTu/5a18P/kke7/Zbbw/7qS7v+6ku7/upLu/7qS7v+6ku7/upLu/7qS7v+6ku7/upLu/7qS7v+6ku7/upLu/7qS7v+6ku7/upLu/7qS7v+6ku7/z7bw/7qS7v+6ku7/upLu/7qS7v+6ku7/u7Xw/7u18P9Rt/D/4rfw/7qS7v+6ku7/upLu/7qS7v+6ku7/upLu/7qS7v+6ku7/upLu/8W38P+6ku7/qLfw/wAAAABwb3Bfc3RhdF9wdHIAAAAAcHVzaF9zdGF0X3B0cgAAAAAAAAAAAAAAAAAVABYAFwAYABkAGgAbABUAHAAdAB4AHwAgACEAIgAjACQAJQAmACYAJwAoACkAKgArABUALAAtAC4ALwAwADEAMgAzADQAIwAjADUANgA3ADgAOQAjADoAOwA8ACMAPQAjACMAIwAjABUAIwAVAD4AIwAjACMAIwAjACMAIwAjACMAIwAjAD8AIwAjAEAAIwAjACMAIwAjACMAQQBCAEMARAAUAEUAFwAUAEYAFACFARQAFABIAEkAFAAUAEoASwDWAEwAFAAUABQAFAAUABQATQAUABQATgDXABoBGwGFARYAFwAWABcAGgDnABoA4wDdAOgA3gDkAN8A6wDlAMAA7ADAAOAA6QB0AxQAhwEUABQA4QDiAO4A9wDqAO8A8QDyAPQACwH9APkA9QD4AIUB+gD2APMA+wD8AP4AFAAUABQAFABFABcAFABGABQAhgEUABQASABJABQAFABKAEsAEgFMABQAFAAUABQAFAAUAE0AFAAUAE4AwQAAAcEA0gAYAQEB1gAdAR4BLwEzARIBAgE/ATEBDQMDAQQBEwEwATQBBQEyAUkBFAEUANIAFAAUAHUDJgEYASYBQgE1ARoBGwEnATYBUwEoAWMBNwEdAR4BVAFkARABEAF2AxQAFAAUAE8AUAAXAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAawBdAGwAbQBdAF0AbgBvAHAAcQByAF0AcwB0AHUAXQBdAF0AXQBdAF0ATwBdAE8AdgBdAGsAawBrAGsAawBrAF0AXQBdAF0AXQBdAF0AXQBdAF0AXQBdAF0AXQB3AHgAeQB6ABUAFgB7AHwAFQB9AH4AfwCAAB0AHgCBACAAIQAiAIIAgwCEAIUAhQAnAIYAhwCIAIkAigCLAIwAjQCOAI8AkACCAIIAkQCCAIIAkgCCAJMAlACVAIIAggCWAJcAggCCAIIAggCCAIIAmACCAJkAmgCCAJsAnACdAI4AngCfAIIAggCCAIIAoACCAKEAogCjAIIApAClAIIAggBBAKYAQwCnABUAFgAXAKgAGQAaAKgAFQCpAB0AHgCqAKsAqACsAKgArQCoAKgAqACoACgAKQCuAK8AqACwALEAsgCoALMAtACoALUAtgCoALcAuACoAKgAqAC5ALoAuwC8AKgAqACoAKgAqACoAKgAvQCoAL4AvwCoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqABBAEIAQwCoABUAFgAXABUAFQAaAHcDFQAVABUAFQAVABUAwwAVABgBwAAVABUAFQDDAMMAFQAVABUAFQAmAUkBJgEqASYBWAEmASsBOgF6ARABQgE7ASkBEAF7ARgBEAEQATwBWQEsARABJgE9ASYBFQAVABUAFQALAUwBSQEQARgBSQFNAUkBcAFxARABEAFCAU4BYgFCAXMBQgFRAXQBhQHEABUAxQAVABUAFgAXABUAFQAaABgBFQAVABUAFQAVABUAwwAVAGgBwAAVABUAFQDDAMMAFQAVABUAFQBJAUkBaQFJAT8BSQHMAX8BzQGnAUIBQgFPAUIBgAFCAYEBqAGfAYgBeANvA1ABoAGlAXADFQAVABUAFQCmAaEBWwFdAaIBXgGsAUkBtQGtAbYBXAFfAdIBtwGFAdMBQgFJAXkDCALEABUAxQAVABUAFgAXAEIBGQAaANoBFQAVABUAFQAJAhUAwwCFAdsBwAAVABUAFQDDAMMAFQAVABUA2ADYANgA1QEdAiYBhQEmAYUB1gFgAYUBhQF6A0kBEAEmAWEBJgHZAEkB2QAQARABQgFJARABJgEQAscBQgHnAdoAxgEQAUIBxwAQAcgAhQFJARECyQAbAhABEAGhAqACogLZAEIB2QDKABUAywAVABUAFgAXANoAGQAaABwCFQAVABUAFQB7AxUAwwCFAfgBwAAVABUAFQDDAMMAFQAVABUA2ADYANgAbQJ8A/oBJgFnAyYBbgLYANgA2AAWARYBFgEQAUkBSQHZAEkB2QB9AxABEAERAw4DQgFCAdkAQgHZANMEfgLTBOkBxwDqAcgAfwKFARIDyQCFATgDGAF+A38DgAPZAIED2QDKABUAywAVANEA0QDRANkAOQPZANME+wHTBNEA0QDRANEA0QDRACYBGAEmASYB2QAmAdkAzwGCA4MDEAFlA4QDEAGFA4YDDwMQAc4BaAMQARABhwNmA4gD0QDRANEA0QDRANEAEQERAREB2QCJA9kAJgGKAyYBEQERAREBEQERAREBiwMQAYwDJgGNAyYBjgNPAhABEAFXAo8DkAMQAZEDkgOTA5QDlQOWAxABEAGXA5gDmQMRAREBEQERAREBEQEVARUBFQGaA5sDnAOdA54DnwMWARcBFgEXARYBFgGgAxgBoQOiA9kAowPZAKQDGAGlA6YDpwOoA6kDhQGFAaoDGQGrA6wDrQOuA68DsAOxAxYBFwEWARcBFgEWAbIDGAGzA9kAtAPZALUDGAG4A7kDugO7A7YDGQEfAR8BHwG3A7wDvQO+A78DwAMfASABHwEhAR8BHwHBAyIBwgPDA8QDIwHFA8YDIgHHA8gDyQMkASUBygPLA8wDIgHNA84DzwPQA9ED0gPTAx8BJgEfASYBHwEfAdQDIgHVA9YD1wPYA9kDIgHaA9sD3APdA94DIgFDAUMBQwHfA+AD4QPiA+MD5ANDAUMBQwFDAUMBQwHlA+YD5wPoA+kD6gPrA+wD7QPuA+8D8APxA/ID8wP0A/UD9gP3A/gD+QP9A/4D/wMABEMBQwFDAUMBQwFDAUcBRwFHAQEEAgQDBAQEBQQHBEcBSAFHAUkBRwFHAQYESgH6AwgECQRLAQoECwRKAQwE+wMNBA4EDwQQBPwDEQRKARMEFAQVBBYEFwQYBBIERwFJAUcBSQFHAUcBGQRKARoEGwQcBB0EHgRKAR8EIAQhBCIEIwRKAdEA0QDRACQEJQQmBCcEKAQpBNEA0QDRANEA0QDRACoEKwQsBC0EiQEuBIkBLwQwBDEEMgQzBDQENQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAE0QDRANEA0QDRANEAQQRCBEMEiQFEBIkBEQERAREBRQRGBEcESARJBEoEEQERAREBEQERAREBSwRMBE0ETgTEAU8ExAFQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQQRAREBEQERAREBEQFiBGMEZATEAWUExAFDAUMBQwFmBGcEaARpBGoEbgRDAUMBQwFDAUMBQwFvBGsEcARxBOYBbATmAXIEcwR0BHgEeQR6BHsEfAR1BH0EfgRtBHYEfwSABIEEggSDBEMBQwFDAUMBQwFDAYQEdwSFBOYBhgTmAe4C7gKHBO4C7gLuAogE7gLuAu4C7gLuAokE7gKKBIsEjASNBI4EjwSQBO4C7gLuAu4C7gKRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0E7gKuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTuAu4C7gL5AvkCwwT5AvkC+QLEBPkC+QL5AvkC+QLFBPkCxgTHBMgEyQTKBMsEzAT5AvkC+QL5AvkCzQTOBM8E0ATRBNIEcwNyA3EDbgNtA2wDawNqA2kDhQFkA2MDYgNhA2ADXwNeA10DXANbA1oDWQNYA/kCVwNWA1UDVANTA1IDUQNQA08DTgNNA0wDSwNKA0kDSANHA0YDRQNEA0MD+QL5AvkC7gLuAkID7gLuAu4CQQPuAu4C7gLuAu4CQAPuAj8DPgM9AzwDOwM6AzcD7gLuAu4C7gLuAjYDNQM0AzMDMgMxAzADLwMuAy0DLAMrAyoDKQMoAycDJgMlAyQDIwMiAyEDIAMfAx4DHQMcAxsDGgPuAhkDGAMXAxYDFQMUAxMDEAMMAwsDCgMJAwgDBwMGAwUDBAMDAwIDAQMAA+4C7gLuAvkC+QL/AvkC+QL5Av4C+QL5AvkC+QL5Av0C+QL8AvsC+AL3AvYC9QL0AvkC+QL5AvkC+QLzAvIC8QLwAu0C7ALrAuoC6QLoAucC5gLlAuQC4wLiAuEC4ALfAt4C3QLcAtsC2gLZAtgC1wLWAtUC+QLUAtMC0gLRAtACzwLOAs0CzALLAsoCyQLIAscCxgLFAsQCwwLCAsECwAL5AvkC+QIUABQAFAAUABQAFAAUABQAFAAUABQARwBHAEcARwBHAEcARwBHAEcARwBHABUAFQAVABUAFQAVABUAFQAVABUAFQDCAMIAwgDCAMIAwgDCAMIAwgDCAMIAxgDGAMYAxgDGAMYAxgDGAMYAxgDGAM0AzQDNAM0AzQDNAM0AzQDNAM0AzQDPAL8CzwDPAM8AzwDPAM8AzwDPAM8A0ADQANAA0ADQANAA0ADQAA0BvgK9ArwCDQENAbsCDQEQAboCuQK4AhABEAEQARABQAFAAUABQAFAAUABQAFAAUABQAFAAUIBQgG3AkIBQgFCAUIBQgFEAbYCRAFEAUQBRAFEAUQBRAFEAUQBRgG1AkYBRgFGAUYBRgFGAUYBRgFGAWsBawFrAWsBawFrAWsBawFrAYMBtAKDAYMBhAGEAbMCsgKEAYQBsQKEAYQBigGKAcEBwQHBAcEBwQHBAcEBwQHCAcIBwgHCAcIBwgHCAcIB7wKwAu8C7wLvAu8C7wLvAu8C7wLvAvoCrwL6AvoC+gL6AvoC+gL6AvoC+gLuAq4C7gLuAu4C7gLuAu4C7gLuAu4C+QKtAvkC+QL5AvkC+QL5AvkC+QL5AqwCqwKqAqkCqAKnAqYCpQKkAqMCnwKeAp0CnAKbApoCmQKYApcClgKVApQCkwKSApECkAKPAo4CjQKMAosCigKJAogChwKGAoUChAKDAoICgQKAAn0CfAJ7AnoCeQJ4AncCdgJ1AnQCcwJyAnECcAJvAmwCawJqAmkCaAJnAmYCZQJkAmMCYgJhAmACXwJeAl0CXAJbAloCWQJYAlYCVQJUAlMCUgJRAlACTgJNAkwCSwJKAkkCSAJHAkYCRQJEAkMCQgJBAkACPwI+Aj0CPAI7AjoCOQI4AjcCNgI1AjQCMwIyAjECMAIvAi4CLQIsAisCKgIpAigCJwImAiUCJAIjAiICIQIgAh8CHgKEAYUBGgIZAhgCFwIWAhUCFAITAhICDwIOAg0CDAILAgoCBwIGAgUCBAIDAgICAQIAAv8B/gH9AfwB+QH3AfYB9QH0AfMB8gHxAfAB7wHuAe0B7AHrAegBQQHlAeQB4wHiAeEB4AHfAd4B3QHcAdkB2AHXAdQB0QHQAcsBygHJAcgBjAGLAcUBwwHAAb8BvgG9AbwBuwG6AbkBuAG0AbMBsgGxAbABrwGuAasBqgGpAaQBowGeAZ0BnAGbAZoBmQGYAZcBlgGVAZQBkwGSAZEBkAGPAY4BjQGMAYsBzgDMAIUB1gCCAX4BfQF8AXkBeAF3AXYBdQFyAdwAbwFuAW0BbAHSAGoBZwFmAWUBCAFaAVcBVgFVAVIBHAETAUUBQQEPAQgBPgE5ATgBLgEtARwB1QDUANMAzgAPAcwADgHWAAwBzgDMAAsBCgEJAQgBBwEGAf8A8ADtAOYA3ADbANUA1ADTANIAzgDMANMEEwDTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABQAFAAUABQAFAAUAyAAFAAUABQAFAAUABQAFAAUAJAAFAAUABQAFAAUABQAFAAUABQAFAAUAJABjAGMAxwANAA0ADgAOAA0ALwAOAC0ALAAvACwALQAsADEALQANADEADgAsADAAIAMFAMgABQAFACwALAAzADcAMAAzADUANQA2AHgAOQA4ADYANwCgAjgANgA1ADgAOAA5AAUABQAFAAYABgAGAAYABgAGAMcABgAGAAYABgAGAAYABgAGAFYABgAGAAYABgAGAAYABgAGAAYABgAGAA0AOwAOAFYAYAA7AF4AZQBlAG4AcACAADsAeABvAKACOwA7AF4AbgBwADsAbwCOAF4ABgCAAAYABgAhA2gAYABoAI4AcQCHAIcAaABxAJIAaACgAHEAiQCJAJIAoABoAGgAIwMGAAYABgAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwAPAA8ADwAPAA8ADwAkAw8ADwAPAA8ADwAPAA8ADwCFAA8ADwAPAA8ADwAPAA8ADwAPAA8AaQCfAGkAagBqAJYAagBqAHQAuABpAJ8AdABpAGoAuACFAGkAaQB0AJYAagBqAGsAdABrAA8ADwAPAA8ApgCMAIwAawAVAZAAjQCNALAAsABrAGsAjACNAJ8AkACyAI0AkACyAMkADwAPAA8ADwAQABAAEAAQABAAEAAVARAAEAAQABAAEAAQABAAEACkABAAEAAQABAAEAAQABAAEAAQABAAjwCbAKQAnACmAJ0AKQG8ACkB9ACPAJsAjwCcALwAnQC8APQA8ADJACUDGQOPAPAA8wAZAxAAEAAQABAA8wDwAJsAnADwAJ0A+ABHAQAB+AAAAZsAnQAuAQABiAEuAUcBngAnA3ABEAAQABAAEAARABEAEQCeABEAEQA0AREAEQARABEAcAERABEAhgE0AREAEQARABEAEQARABEAEQARACUAJQAlADABiAEfARsCHwEcAjABngAdAocBKANIAR8BIAGeACABJQBJASUAHwEfAUgBWwEgASEBeAEhAUkBSAElACABIAFbAREAIQERAA0DXQF4AREAhgEhASEBHAIbAh0CJQBdASUAEQARABEAEQASABIAEgAlABIAEgCHARIAEgASABIAKQMSABIAoQJbARIAEgASABIAEgASABIAEgASACYAJgAmAOgBKgNdASYBDQMmAegB2ADYANgAFgEWARYBJgFeAUwBJgBNASYAKwMmASYBpQKhAl4BTAHYAE0B2AAWAfkBFgFMARIATQESAPkBogKlAhIADgPRAhYBLAMtAy4DJgAvAyYAEgASABIAEgAbABsAGwDYANEC2AAWAV4BFgEbABsAGwAbABsAGwAqARYBKgErAYoBKwGKASsBMAMxAyoBCwM0AysBNQM2A6ICKgEqAQ4DKwErATcDCwM4AxsAGwAbABsAGwAbAFQAVABUAIoBOQOKAccBOwPHAVQAVABUAFQAVABUADwDxwE9A88BPwPPAUEDxwHHAccBzwFCA0MDzwFFA0cDSANJA0oDSwPPAc8BTANNA04DVABUAFQAVABUAFQAXwBfAF8ATwNSA1QDVQNWA1oDXwBfAF8AXwBfAF8AXANfAF0DXgNfAGADXwBhA18AYgNjA2QDZQNmA2cDaANpA18AawNsA20DbwNwA3IDcwNfAF8AXwBfAF8AXwB0A18AdQNfAHYDXwB4A18AewN8A30DfgN5A18AZwBnAGcAeQN/A4ADgwOFA4YDZwBnAGcAZwBnAGcAhwNnAIkDigOLA2cAjgOPA2cAkAORA5MDZwBnAJQDlQOWA2cAmAOZA5oDnAOdA54DnwNnAGcAZwBnAGcAZwCgA2cAoQOiA6QDpQOmA2cAqAOpA6sDrQOuA2cAfgB+AH4ArwOwA7EDtAO1A7YDfgB+AH4AfgB+AH4AtwO4A7kDugO8A70DvwPAA8IDxAPHA8gDyQPLA8wD1APVA9YD1wPYA9kD2wPcA90D3gN+AH4AfgB+AH4AfgCLAIsAiwDfA+AD4QPiA+MD5AOLAIsAiwCLAIsAiwDjA4sA2gPlA+YDiwDnA+gDiwDpA9oD6gPtA+4D7wPaA/ADiwDxA/ID8wP0A/UD9gPwA4sAiwCLAIsAiwCLAPcDiwD4A/kD+gP7A/wDiwD+A/8DAAQBBAIEiwDRANEA0QAEBAcECAQJBAoEDATRANEA0QDRANEA0QANBA4EDwQQBNEAEwTRABQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQmBNEA0QDRANEA0QDRACcEKAQpBNEAKgTRABEBEQERASsELAQtBC4ELwQwBBEBEQERAREBEQERATEEMgQzBDQEEQE1BBEBNgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQwREBEUERgRHBEgEEQERAREBEQERAREBSQRKBEwEEQFOBBEBQwFDAUMBTwRQBFEEUgRUBFYEQwFDAUMBQwFDAUMBVwRVBFgEWQRDAVUEQwFbBF0EXgRgBGEEYwRkBGUEXwRmBGcEVQRfBGgEaQRqBGsEbARDAUMBQwFDAUMBQwFtBF8EbgRDAW8EQwF1AnUCcAR1AnUCdQJ0BHUCdQJ1AnUCdQJ1BHUCdgR3BHsEfAR/BIAEgQR1AnUCdQJ1AnUCggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJEEkwSUBJUElgSYBJoEmwScBJ0EngSfBKAEoQSiBHUCowSkBKUEpgSnBKkEqwSsBK0ErgSwBLEEsgSzBLQEtQS2BLcEuAS5BLsEdQJ1AnUChQKFArwEhQKFAoUCvQSFAoUChQKFAoUCvgSFAr8EwATBBMIEwwTEBMUEhQKFAoUChQKFAsYExwTLBM0E0ATRBB4DHAMbAxcDFgMVAxIDEQMQAw8DCQMIAwcDBgMFAwQDAwMCAwEDAAP+AvwC+AKFAvcC9gL0AvMC8QLtAuwC6wLqAugC5wLmAuUC5ALjAuIC4QLgAt8C3gLdAoUChQKFAu8C7wLcAu8C7wLvAtsC7wLvAu8C7wLvAtoC7wLZAtgC1gLVAtQC0gLQAu8C7wLvAu8C7wLPAs4CzQLMAssCygLJAsgCxwLGAsUCxALDAsICwAK/Ar4CvQK8ArsCugK5ArgCtwK2ArUCswKyArEC7wKvAq0CqwKqAqkCpwKmAqMCnwKeAp0CnAKaApgClgKVApQCkgKRApACjgLvAu8C7wL6AvoCjQL6AvoC+gKMAvoC+gL6AvoC+gKLAvoCiQKIAoQCgwJ/An4CfQL6AvoC+gL6AvoCfAJ7AnkCeAJ0AnMCcgJuAm0CbAJqAmkCaAJnAmYCZQJkAmMCYgJhAmACXgJdAlwCWgJZAlgCVwJWAvoCVAJTAlECUAJOAk0CTAJLAkoCSQJIAkcCRgJFAkQCQwJCAkECQAI/Aj4C+gL6AvoC1ATUBNQE1ATUBNQE1ATUBNQE1ATUBNUE1QTVBNUE1QTVBNUE1QTVBNUE1QTWBNYE1gTWBNYE1gTWBNYE1gTWBNYE1wTXBNcE1wTXBNcE1wTXBNcE1wTXBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATZBNkE2QTZBNkE2QTZBNkE2QTZBNkE2gQ9AtoE2gTaBNoE2gTaBNoE2gTaBNsE2wTbBNsE2wTbBNsE2wTcBDwCOwI6AtwE3AQ5AtwE3QQ3AjYCNQLdBN0E3QTdBN4E3gTeBN4E3gTeBN4E3gTeBN4E3gTfBN8ENALfBN8E3wTfBN8E4AQzAuAE4ATgBOAE4ATgBOAE4ATgBOEEMgLhBOEE4QThBOEE4QThBOEE4QTiBOIE4gTiBOIE4gTiBOIE4gTjBDEC4wTjBOQE5AQwAi8C5ATkBC4C5ATkBOUE5QTmBOYE5gTmBOYE5gTmBOYE5wTnBOcE5wTnBOcE5wTnBOgELQLoBOgE6AToBOgE6AToBOgE6ATpBCwC6QTpBOkE6QTpBOkE6QTpBOkE6gQrAuoE6gTqBOoE6gTqBOoE6gTqBOsEKgLrBOsE6wTrBOsE6wTrBOsE6wQpAigCJwImAiUCIwIiAiECIAIeAhoCGQIYAhcCFgIVAhQCEwISAhECEAIPAg4CDQIMAgsCCgIJAggCBwIGAgUCBAIDAgICAQIAAv8B/gH8AfsB+gH4AfcB9gH1AfQB8wHyAfEB8AHvAe4B7QHrAeoB6QHnAeUB5AHjAeIB4QHgAd8B3gHdAdwB2wHaAdkB1gHVAdQB0wHSAdEB0AHOAc0BzAHLAcoByQHIAcYBxQHDAb4BvQG8AbsBugG5AbgBtwG2AbUBtAGzAbIBsQGwAa8BrgGtAawBqwGpAaYBpQGkAaMBogGhAaABnwGdAZwBmwGaAZkBmAGXAZYBlQGUAZMBkgGRAZABjwGOAY0BhQGEAYEBgAF/AX4BfQF8AXsBegF5AXcBdgF1AXQBcwFyAWoBaQFoAWcBZgFlAWQBYwFiAWEBYAFfAVwBWgFZAVgBVwFWAVUBVAFTAVIBUQFQAU8BTgFLAUABPgE9ATwBOwE6ATkBOAE3ATYBNQEzATIBMQEvAS0BLAEoAScBJAEjAR4BGgEUAQ4BCgEJAQcBBgEFAQQBAwECAQEB/wD+AP0A/AD7APoA+QD3APYA9QDyAPEA7wDuAO0A7ADrAOoA6QDoAOcA5gDlAOQA4wDhAOAA3wDeAN0A3ADbAM0AzADGAMAAvwC7ALoAuQC3ALYAtQC0ALMAsQCvAK0ArACrAKoAqQClAKMAogChAJoAlwCVAJQAkwCRAIgAgwCBAH0AfAB2AHUAcwByAG0AbABkAFwAWgBZAFIAUQBQAE4ATABLAEYARQBCAEAAPwA+AD0APAA6ADQAMgAuACsAKQAiACAAHwAcABkAFgATANME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUQChAPEAAABCAQAAkwEAAG8AcQDkATUChgLXAmAIYQhhCF0IYQhhCFkIAAAXA0UIYQhhCEQIQwhhCEIIAABVAI4C3wJhCGEIQghhCD8IXQBZAC4IWwBcAFgAKghpAC0IcgB3AG4AbQByADUInwA4CDMIOQgSCAYIYQg2CGEIAABLCEcIAABhCGEIYQgHCD4IAAAcCGEIRggvCEEIAABFA2EIqABhCGEILQgsCGEIKwgAALcAcwOPAGEIYQhXACoIrABhCK8DvwDjAecB+gEeCBgIpwCwAKgAtwATCB8I6AEKCCQIYQh7AGEIYQhhCCMINwjrA2EIvwAhCAAAIAgAAMIBAADJAB8I0ABhCBkEAwIIArgANAIGAg4IwQAaCAgIBAjlAQYIYQhhCBkINQI3AjkCZALkAaQA9gfmB+IHBwLkBwUCAAAAABQIEwgSCBEIEAgAAA4I+AHzBwQC8wcBCAAI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0wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNME2wTbBNME5gTnBNsE0wTdBN0E0wTTBNMEXwBfABYB0wTlBNME0wTTBNME0wRnAGcAZwDdBN0E3QTdBGcA3QTdBN0EZwBnAN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E0wTeBNME3wTfBOAE4AThBIsAiwCLAN8E3wSLAIsA3wTfBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wSLAN8EiwCLAN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOME5ATTBOQE5ATkBNsE5QTTBNME2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTmBOcE2wTdBNME3QRnAN0E3QTdBN0E3QTdBN0EZwDdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBN8E4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTkBOQE5ATbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE0wTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTfBN8E3wTfBN8E3wTfBN8E3wToBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBOkE3wTfBN8E3wTfBN8E3wTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOQE5ATkBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTTBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN8E3wTfBN8E3wTfBOoE6ATfBN8E3wTfBN8E3wTfBN8E3wTrBOkE3wTfBN8E3wTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE5ATkBOQE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNME3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN8E3wTfBN8E3wTfBN8E3wTfBN8E3wTfBN8E4gTiBOIE4gTiBOIE4gTiBOIE4gTiBOIE5ATkBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTTBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN8E3wTfBN8E3wTfBN8E4gTiBOIE4gTiBOIE4gTiBOIE4gTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNME3QTdBN0E3QTdBN0E3QTdBN0E3QTdBN0E3QTfBN8E3wTfBN8E3wTiBOIE4gTiBOIE4gTiBOIE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTTBN0E3QTdBN0E3QTdBN0E4gTiBOIE4gTiBOIE4gTiBOIE4gTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTbBN0E3QTdBN0E3QTdBN0E3QTiBOIE4gTiBOIE4gTiBOIE4gTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE2wTdBN0E3QTdBN0E3QTiBOIE4gTiBOIE4gTiBOIE4gTbBNsE2wTbBNsE2wTbBNsE2wTbBNsE3QTdBN0E3QTdBN0E4gTiBOIE4gTiBOIE4gTiBOIE2wTbBNsE2wTbBNsE2wTbBNsE2wTdBN0E3QTdBN0E3QTiBOIE4gTiBOIE4gTbBNsE2wTbBNsE2wTbBNsE2wTbBN0E3QTdBN0E3QTdBN0E4gTiBOIE4gTiBOIE2wTbBNsE2wTbBNsE2wTdBN0E3QTdBOIE4gTiBOIE2wTbBNsE2wTbBNsE2wTdBN0E3QTdBOIE4gTiBOIE2wTbBNsE2wTbBN0E3QTiBOIE4gTiBNsE2wTbBNsE2wTdBN0E4gTiBOIE2wTbBNsE2wTdBOIE4gTiBNsE2wTbBNsE3QTiBOIE2wTbBNsE2wTdBOIE4gTbBNsE2wTbBN0E2wTbBNsE2wQAANME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBNME0wTTBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALYAtgAAAAAAAAAAAAAAAADJAMgAxgC5ALgAHQDGALoAsQDGACoAKQDGACAAGQAhALEAsQAEAAQAKwAsAMYAJgAYALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxAMYAewB5ACgAxgAnABwAuQDIALEAKgApABkAyACxAMgAsQDHALkAHQDHALoAtAAjABoAKgApAB8AIAAZACEAtAAiAAQABAArACwAJAAmABgAHgC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAAlACgAGwAnABwAigAdAIkAsAAjABoAHwCwACIABAAEACwAJAAmABgAHgCwALAAsACwALAAsACwALAAsACwALAAsACwAAYABQAlALAAsACwALAAsACwALAAsACwALAAsAAbABwAtgAaALYAtgC2ALYAJgDGALYAtgC2ALYAtgC2ALYAtgC2ALYAtgC2ALYABgAFALYAxgDBAMAAuwDCAMMAvwC/AL8AvwDEAMUAuQAAALcAugCxAAQAFAASABAAEQABABMABAAEAAAAAAAAALEAsQCxALEAsQCAALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAFgCxALEAFQAAALIAsQALALQAAgAXABMAAAAEAAAAAwADAAMADgANAAoADAAPALQAAwADAAMAtAC0AIAAAwC0ALQAAwC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAAJAIkAiQCwAAIAiwASAIwAsAADAAMAAwCwALAAsAADALAAAwADALAAsACwALAAsACwALAAsACwAAMAsACwALAAAwCwAAMAAwCwALAAsACwALAAsACwALAAtgASABAAEQATALYAgAC2ALYAtgC2ALYAtgC2ALYAtgC2ALYAtgC2ALYAtgC2ABYAwAC/AAAAvwC/AL8ABAAEAAcACACxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAXACxALEAsQCxALEAsQCxALEARgA9ALEAPgCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAfAB6ALMAsgCxAAQAAAC0AAMAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAPQA+ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQABACwALAAsACwALAAjQCwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwAJ4AsACwALAAsACwALAAsACwALAAsAC2ALYAtgC2ALYAtgC2ALYAtgC2ALYAtgC2ALYAtgC2ALYAtgC2AL8AvwC/ALEAOQCxALEAsQCxADMAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQBDALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQAAALQAOQC0ALQAMwC0ALQAcwC0ALQAtAC0ALQAdAC0ALQAtABDALQAtAC0ALQAtAC0ALQAtAC0ALQAtAB1ALAAsACwAJIAmgCRALAAsACwAJwAlQCYALAAsACdALAAsACwALAAsACjAKsAogCwALAArgCmAKkAsACwAK8AsACwALYAtgBjALYAtgC2AFgAtgC2ALYAhgC2AGEAtgBfALYAtgBsALYAvwC/AL8AsQBWADUAsQCxADIAsQCxALEAQQCxAF4AsQBMALEAsQCxAEsAsQCxALEAsQCxALEAsQCxALEAsQCxALEAfwCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxAAAAtAA1ALQAMgC0ALQAtAByALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAsACTAJAAsACwALAAnACcAJcAsACbALAAsACkAKEAsACwAK4ArgCoALAArQCwAGQAtgC2ALYAtgC2ALYAtgC2ALYAtgBiALYAYAC/AL8AvQCxALEAsQBAAFcAsQCxALEAQgCxAIMAsQCxAFUAsQA0ALEAsQAtALEAsQCxADAASgCxALEAsQCxALEAsQBHALEAsQCxAF0ASACxALEAAAC0ALQAtABAALQAtAC0AIMAtAA0ALQAtAC0AHAAtAAwALQAtAC0ALQARwC0ALQAsACwAEIAmQCwAJYAsACwALAArACqAKcAsABAALYAtgC2AIMAtgC2ALYAtgC2ALYAtgC+ALwAsQA7ALEAsQCxAE4AsQCxAH4AsQCxALEAsQCxAGYAsQCxAGkAhACxALEAsQCxALEAeABZALEAMQCxAAAAtAA7ALQAtAC0AE4AfgC0ALQAtAC0AGkAhAC0ALQAtAB4ALQAsACwAH4AsACwALAAsAC2ALYAtgB+ALYAtgCEAG8AtgC2ADwAsQCIALEAsQCxALEAsQA6AD8AsQCxALEAsQCxALEAsQBUALEAsQCCALEAAAA8ALQAiAC0ADoAPwC0ALQAtABxALQAtACCAI4AjwCUAJ8AoAClALYAtgC2ALYAtgC2ALYAtgCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQBNALUAtAC0ALQAtAC0ALQAtAC2ALYAtgC2ALYAtgC2ALYAtgBuALEAsQCxALEAsQAvALEAdgB3ALEAsQCxALEASQCxALEAtAC0ALQAdgB3ALQAtAC0ALYAtgC2ALYAtgC2ALYAtgC2ALEAsQCxALEAsQBnAFsAsQCxALEAsQCxALQAtABnALQAtAC0ALYAtgC2ALYAtgC2ALYAtgC2ALEAsQCxALEAsQCxALEAsQAuALEAsQC0ALQAtAC0ALQAtABQALYAhwC2ALYAtgC2ALYAagCxALEAsQCxALEAsQBaALEARQCxALQAtAC0ALQARQC0ALYAtgC2ALYAtgC2ALEAsQCxALEAsQCxALEAaACFAEQAtAC0ALQAtABoAIUARAC2ALYAZQCFALYAtgCxALEAsQCxALEAsQCxALQAtAC0ALQAtgC2ALYAtgCBALEAOACxALEAsQCxAIEAtAA4ALQAtgC2ALYAtgCxALEAsQCxALEAtAC0ALYAtgBrALYANgCxALEAsQCxADYAtAC2ALYAtgCxALEAsQCxALQAtgB9ALYAsQCxALEAsQC0ALYAtgCxALEAsQCxALQATwBtADcAsQBSALEANwBRALEAsQBTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAgMBAQIBAQEBAQEBAQEBAQEBAQEBAQECBAUGBwgJAQoLDA0ODxAREhMUExMTExMTExUWFxgZGgEbHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5ATo7PD0+P0BBQhBDREVGR0gQSUpLTBAQTRAQTk9QUQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAXl5bGV4AAAAAAAAAAAAAAB1AQAAdgEAAIABAACJAQAAdwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIYAhwCIAJEAmgCjALEAsgCnAKgApQCmAB0BHgEYARkBAACzAKkABABwAHEAcgDYAD4AjAAhASIBPgAaARsBMAAxADIAQQBCAEMARABFAEcASABJAEoAUwBUAFUAVgBeAF8AYABhAGIAYwBkAGkAagBrAH0AigCcALQAvgDAANgA2gDlAOYA6ADqABABHwEgAQQAJwBHAG0AdAB1AHYAdwB4AHoAewB8AH8AgACCAIMAhACJAIoAiwCqAAYABwAIAAkACgALAAwADQAOAA8A1gAmACYAJgAEAIoAjQCOAI8AJAElAT4AIgGOAI8AHAElARsBPgA+ADMANAAmACYABACkAD4AJgAmACYAJgAmACYAJgAmACYAJgAmACYAtQAmAMEAJgCbAJwA1wCQAAQApAAEAAMABAAfACAAJgAnACgANgA3ADgAQABGAFIAVwBYAFkAWgBbAFwAXQBlAGcAdwB9AH4AmQCgAKEA8AAEAAQArgAEAK0ArAAEAAQABADwAAQAAwAEAK8ABACwAAQAeQDuAO8A7gAEAAQABAAEABEAEQA/AJwAJAE/AJwAvwARAQQABAAEAAQAtgAEAEcA2wDcAN0ABAAEAAQApACkAAQApACdAKQA5wDpAAQA6wDrALgAuQAmAKQAJgC3AD4ACgCbAKsACgCbAPAA8ADwACYAJgAmACYAJgDxACYAJgDsAO0A7ADsAOwAJgAmAOwA7AAmACYAJgAmAPAA8AAQABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjAJsACgCbAPAAmwCbAAQAmwAKAJsA8ACbAJsABACbAPAACgAKAAoAPgAlASUBnAAEAIoAjQCOAI8APwCcAAQAPwBHAE8AagDAAPkABAA/ABIBmwCdAJ0AswDeAKQAPwCbANkAmwCdAJ0AnQCdAJ0AnQCdANkAnQDZAJsA6wCdAJ0AnQAEAAUAcwC6ALgAnQDwALAAIQHwAPAAqQDwAPAAnQDwAPAA8ADwAPAAJgAEAPAAJgDwAPAA8ADwAPAABADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAAQABAAEAPAA8AADAAQABAAEAO4A7gDuACcBnACcAAQAjACcACMB+gCkAP4AAgETAQQAJQAmAOIA3wDdAAQApACkAOsAJgAEAAUAcwCbAJ0AmwCdAD8AJQCbAJ0AnQCbAJsAnQAEAJ0AnQAEAJsAmwCdAJsAnQCdABEAnQCdAJ0AJQGPAD4AjACcACYAKQDwAAYBBwEEAREA8AAIAQcB8AAVAZsABACgAOMA5AARANsAnQC7ACYABAAFAHMABADwAPAA8ADyAJ0A8ADwAAQA8ACcACgBEQAmAUsATABNAE4ATwBQAFEAnQAFASYAJgAGAREAbgD0AL8AEQBjAAkBAwEEAG4AFgEEAAQAnQDkAGUA4AAlALoAvQAmAJ0AnQCdAJ0AmwCdAJ0AnQA/ACUBJQEmAAoAnQDwABEAJgAnAPUAJQD0AD4AJgAXASYAFAGdAAoA2QCdALoAvADwAJwAKAFRAPAAnQDwACYAlwD2AG8A9wC/APAAFgHwAJwA7gBnAOEAnQC6AJ0APwAKACgABgGdAPAA9wAmAP8APwCdAJ0ACgCdAPAAJgARAJ0AkwCUAJUA+ADwAD4AFgHuAJ0A8AD7AJ0AAAGdAD4ADAEGAQQAKgArACwALQAuAC8ANQA5ADsAPQBHAGYAaABsAH0AkgCWAJgAnACeAMIAwwDEAMUAyADLAMwAzgDRANIA0wDYAAQAPwARAAQAJgAmACYApAAmAM8AJgAmACYABAA5ADoAOwA8AD0AxADGAMoAJgAEADkAngDFAM4APwAmANcADQEaAAoBPQBsAMQAxAA5AMMA0ADUAO4AJgDNAAQAxwDCAMkAJgAmACYAJgAmAJ8A2QDKACYAygAmAPwA7gA+AAQAbgDzACYAnQCdAJ0AJgCdANIAnQDwAAQAywAWAJ0AnQDCADkAOgDEADkAOgDEAMQAxAA5ADwAxgCdAJ8AygAKAZ0A0gAaAAsBwwAlAJsAnQAEAMIAJgAmAJ0AJgAmAJ0AnQCdACYAJgCdAPMAPwAEAAoAEQDVAJ0ABADEAMQAxADEAMMAwwALAQ4B1AAEAAEBnQCdAJ0AnQCdAJ0AnQCdANUACwHZANcAnQCdAJ0AnQCdAJ0A/QDVANkADwHZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAIEACwAMAAkACgATAF0A+gC8ALsAuQDEAMYABwAIABIAPQCPAN0A9gDxAPIAbgH4AUsCKgI+ANcATQGRAJsCnAKdAp4CuwLVAp8C1wK8AqACoQLTAqICsALPAqMCpAKlAtACIQNoAJUAQADeAkEA4ADhAOIAVgG7AScCXwK6AfMB9AFCAEMA7ABEAO0ARQDvAAgBCQHRAsoA/wAFAQEC6AIZAj4CVQJXAngCTgGyAX8C4wJBA7QBawKBAi4DtQEeAukBEwLnAegB7AEdAsgCCgOEAsYCKwNEA0YA2ABRAbYBRQLvASECQwIPABAAHgAfAHcADQAOAEcASAAbABwAsQFxAHIACgKrAQgCAAAAAAAAAAAAAAAAAAAAAAAAAf0B/bj/Af0B/QH9Af37AQH9Af0B/QH9Af0B/QACAf0B/TICAf0B/QH9Af0KAgH9Jf4B/QH9Af0B/S3+8v8B/YL9fv6MBGwAIAAB/QH9Af1f/jkAAf0B/WoAAf0B/QH9Xv0B/fX/Av0B/W/99P8h/wH9XQEB/cUBAf0B/QH9Af0B/QH9IgEB/QH9Af0B/QH9Af1//5sAAf2n/wH9tP8B/QH9HgAEAQH9Af3NAAH9Af0B/QH9Af0B/QH9Af0B/QH9Af0B/QH9Af0k/oABAf0B/UIAEv0B/QH9Af0B/QH9Af0B/QH9Af0B/dn9Af0B/QH9Af0RAwH9Af0B/QH9Af1EAur/Af2+Aun/Af0B/fwAAAAAAAAAAAAAAAAAAAAAAAAAAACiAKMAowCjAKMAowCkAKYApQCoAKcAqQCpAKoAqgCqAKoAqgCqAKoAqgCqAKoAqgCqAKoAqgCqAKoAqgCqAKoAqgCqAKoAqgCqAKoAqgCrAKoAqgCqAKwArACsAK0ArQCuAK4ArwCvAK8AsACwALAAsgCxALMAswC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtQC0ALQAtgC0ALQAtAC3ALQAtAC0ALQAtAC5ALgAugC6ALoAugC6ALoAuwC6ALwAugC9ALoAvgC/AL8AvwDAAMAAwQDAAMIAwwDDAMQAxADFAMUAxQDFAMYAxgDGAMYAxgDGAMYAxgDGAMYAxgDHAMcAyADJAMkAygDKAMsAywDLAMsAywDLAMwAzQDMAM4AzgDOAM4AzgDOAM4AzgDOAM4AzwDOANAAzgDRANEA0gDSANMA0wDTANMA0wDUANUA1QDWANYA1gDWANYA1gDWANYA1gDXANcA2ADYANgA2ADYANkA2QDaANsA2wDcANwA3gDdAN8A3QDgAOEA4gDiAOMA4wDkAOQA5QDmAOYA5wDnAOgA6QDpAOoA6gDrAOsA6wDtAOwA7wDuAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPEA8gDwAPAA8ADwAPAA8ADwAPAA8ADzAPMA9AD0APUA9QD2APYA9wD3APgA+AD4APgA+gD7APwA/QD5AP4A/wAAAQEB+QACAQMB+QAEAfkABQEFAQUBBQEFAQUBBQEFAQYBBgEGAQcBBwEHAQcBCAEIAQkBCQEKAQoBCwELAQwBDQEOAQ8BDAEQAREBEQETARQBEgEVARYBFgEWARcBFwEZARgBGgEaARsBHAEeAR0BIAEfASEBIQEiASIBIgEjASMBJAEkASQBJAEkASUBJQElASUBJgElAScBJQElASUBJQElASUBJQEoASgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAQACAAIDAAIEAQECAQQEAwIEAwQEBAQEAgICBAQCAgICAAUCAAMCAAEDAQMAAQMBAgMAAgIAAQEBAQEBAQEBAQQEBAQIBAEBAQQABQQABQQEAAUDAwYEAAIBAwIBAwIABQAHAAYEAgIABAIABwEBBQEEAQQE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mQC3AOYBzgLrAeYB7gELA7gAugBJAb0AvgCwAL8AwQDDAMIASgGxALIAxQDHAMgAzADNAEsB/gHOAM8A/wEAAtAALwCaAJsA0QADAgQC0gDTANUAywEGAswB1gDZALMA3wEsAdoAKAMpA0wBtAC1ANsA3ADjABUAFgAXAJwAnQDkAOUA6ADuAPMAngCfAKAAOgD1AAABQgEBAQIBQwFEAeABAwEEAQYB9wChAKIAowALAgwCDQIOAg8CEAIRAqQABwFIAS4BLwE6AqUADQEOAREBEgELAgwCDQIOAg8CEAIRAqYAEwEUATUBNgGnAKgAqQCqAKsArACtADoBOwE8AUwCQAE/Aj0BrgBGAa8ARwFQAlQBXQJbAVICWAE1AjYCXAFdAVkCXgFbAl8BsABgAX8BgAGIAWEBsQCyAGgBaQFqAZoAmwBoAkoBggFwAZ8BMgGgARICoQFLAaYBpwGuAbcBuQF8Ai8AcQK9AawBrQGzAMEBeQLRARICnACdALQAtQDUAX4C4QGeAJ8AoABMAfkB9QH9AfABxgEVABYAFwDSAQUCCQIHAqEAogCjABgC2gEUAjoAFwIcAiICpAAjAiYC3AErAigCpQCuAt0B3gH3ATcCMAI5A5oAmwACAiwCpgAzAjgCNAI5AqcAqACpAKoAqwCsAK0AOwI8AkMDPQJBAkUDQgKuAEQCrwBHAuQCnACdAEYCWQFPAk0CVALkAZ8AoADlAaYCUwKwAFwCVgJkAl4CagKxALIAbwJjAqEAogCjAPECcgJ6AnMCFQKpAoMCpACqAqsCrAKtAq8CpQCxArICswKmAsMCvQLEArMAxwIzAdQCpgC0AtICtAC1AKcAqACpAKoAqwCsAK0A2AKaAJsA2QLaAuYC2wKuANwCrwCM/+AC4gLpAucC6gEjASQBJQEmAScBKAEpAeUCpgKwAOoC6wLtApwAnQCxALIA7ALuAgkDngCfAKAA8AIHA5oAmwAMA3H/DwOmAh0DDgMRAxIDEwOhAKIAowAUAxUDFgMXA7MAGQMaA6QAHgMjAy0DtAC1AKUAnACdABgDIgMvA3YBcgGeAJ8AoAAwA6YAMQNvAQIDMgOnAKgAqQCqAKsArACtAKEAogCjADMDwQLzAsICrgBVAa8ApAA0AzUDLAMlAjYDpQD2ATsDPAM9Az4DPwNAA7wBsABAAmkCpgAcAwYDsQCyAKcAqACpAKoAqwCsAK0AeQCGAtQATgIAAAAA7QGuAAAArwAAAAAAcwEAAAAAAAAAAAAAAACzAAAAAAAAAAAAAACwALQAtQAAAAAAAACxALIAAAAAAAAAAAAAAAAAhwKIAokCigKLAowCAAAAAAAAAAAAAI0CAAAAAAAAjgIAAI8CAACQArMAAAAAAAAAAAAAAAAAtAC1AJECFwEAABgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpAQAAAAAAAAAAAAAAABQAAAAAAAAAkgIAAJMCAAAAAAAAlAIAAAAAAAAVABYAFwBeAF8AYABhAGIAYwBkAGUAZgBnAJUCGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEgACEAIgAAAJYCjP8AAAAAlwIAAJgCAAAAAAAAmQIAAJoCIwAkACUAJgAnAAAAKAApACoAKwAAAAAAAAAUAAAAAAAAAAAALAAtAC4ALwAAAAAAAAAAAAAAAAAAADAAMQAyADMANAA1ADYAAAAAAAAAAAA3ADgAOQAAAAAAAAC4ARUAFgAXAAAAAAAAAAAAeQEAAAAAIAAhACIAOgAfASABIQEiASMBJAElASYBJwEoASkBAAA7ACMAJAAlACYAJwCb/igAKQAqACsAAAAAAAAAAAAAAAAAAAA8ACwALQAuAC8AAAAAAAAAAAAAAAAAAAAwADEAMgAzADQANQA2AAAAAAAAAAAANwA4ADkAAAAAAAAAAAAVABYAFwBeAF8AYABhAGIAYwBkAGUAZgBnADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEAABcBPAAYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAQAAGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwEAABgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcBAAAYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAQAAGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwEAABgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcBAAAYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAc0BGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwHQARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcB0wEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAdcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwHZARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcBLQIYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAS4CGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwEvAhgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcBMQIYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXATICGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwFRAhgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcBYgIYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAWcCGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwFtAhgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcBbgIYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAXQCGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwF9AhgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpARcBgAIYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEAAIICSAEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBAAAXASoBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBFwHHARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpAQAAzgEAAGwCAAAAAAAAAABJAAAAAABKAQAAAAAAAAAAAAAAAAAASwEAAM8BAAAAAAAAAAAvAAAAAAAAAAAAAAAAAEkAAAAAAAAAAAAAAAAAAADVAQAASgAAAAAATAEAAAAAAAAAAAAAFQAWABcAAAAAAAAAAAAAAAAA1gEAAAAAAAA6AMoBAABKAAAAAAAAAAAAAAAXAUsAGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBAAAAABUCAAAAANgBSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAANA00ATgBPAFAAUQDV/1IAUwBUAAAAAABVAFYAAABXAFgAWQC6AkwAAAAAAFoAWwBcAAAATQBOAE8AUABRAAAAUgBTAFQAywLMAlUAVgAAAFcAWABZAAAAAAAAAAAAWgBbAFwAAAAAAAAAugIAAAAAugIXAdsBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBAAAAAAAA+gL9Av4C/wIAAAAAugIAAMsCAAC6AhcBGwIYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEXAQAAGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBAAAAAAAAAAAAAAAAJAMlAwAAJgMnAxkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpAQwATQDhAEsAEgAbAB0ABAAEAGIA5gFXAI0A7ADtAGgABAAEAAQABAAEAKYC6QEWAAQABQAEAAUAQwL4AQQABAAEAD4AJQA+AD8ABAAEAAUAjAAEAAQAjAAqA88CHAMEAJsABAAEAAUAnwCzAgQABQCcAAoAOAOcAD8AKwOGAIcAEQCJAIoA5QIzADQAmwBuApAAOQCfADsAmwA9AJ0AKgKcAJ0ABAAKAAQABQAEAD0ABADXAj8ABACbAAQAnQA5AD8AOwAEAD0ABAAEAAoAAAC0ALUABAC3ACYA7gBBAowASwKMAEcAvwA+AFECBAAmAPYCHwAgACEAIgAjAMoAcABxAHIAPgAhACIAIwBsAHMAPgBzAG4AOQA6ADsAPAA9ADkAOgA5ADoAPQBzAD0A3wCbADkAOQA9ADwABACdADADnQBzACYAoACgAHMAggKbAJgA9QCdAJ0A+AD5AJ4A+wD8AJsAmACdAAABAQECAQMBBAHQANEABwGWAJsAmACdAJsADQEOAXMAngARARIBEwGbAJsAnQAXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAToBOwE8AZsAZgEyATMBPgCbAJgAmwCYAJ0AJgCYAIoAmAAmAI0AjgCPAJgAmwCYAJgAmwCcAIoAAwAEAI0AjgCPAEoBEAAKABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjAAMABAAfACAAYwG9AmUBBADAAiYAJwAoAIoAPgAmAI0AjgCPAAQAmwCtAp0AkwCUAJUANgA3ADgABAAmACYAKACGAIcAiABAAJsAmwCdAJ0AJgBGAOICkQAmAKkAqgCrAFUBJwKuAK8AmgBSACYAJgAmACYAVwBYAFkAWgBbAFwAXQAmACYA3AImACYAcwEmAGUAJgBnAJAABAAEAAQAsgHpArQBtQG2Ae0CBAAEAD8ABAAEAHcABAAEAAQAAwBHAH0AfgAEAAQAeQAEAAQATwDLAQQABADOAc8BEQBWAAMABAARANUB1gE/AJwAPwCbANsBnQCcAAQAmQCrAZsABAAZAxoDagCgAKEABAAEAAQAcABxAHIAHwAgAAQABAAEAAQAJgAmACcAKAB9ACYAJgCKACYAJgCNAI4AjwAmACYAJgA+ADYANwA4AEsATABNAE4ATwBQAFEAQAAmAAQAmwCbABQCRgAmACYAJgAmAEsATABNAE4ATwBQAFEAUgAmACYAmwCbAFcAWABZAFoAWwBcAF0ACgAKAAoAMAKcACUAPgBlAD8AZwCcADgCnQBHApsAPAI/AAkCCgKdAJ0AQgKdAEQCnQB3AJ0AJgAEAAQAnQB9AH4AnQCdAJ0AAwAEAFMCRwAmAJ0ABAAKAAQAnQAEAE8ABAAEAAQABAAmAG8CVgBkAgQAnACcAJkAJgBqAgQAnQAfACAAoAChAAQAcgI+ACYAJwAoAGoAJgARAAQAmwCdAHAAcQByAJ0ABAARAJwANgA3ADgAbgCdACYAfQARAGMABABAAAQAZQCdACYAJQBGAJECnQCdAJ0AJgCbAC4DAwAEAJ0AnQBSAJ0ACgA/AJ0AVwBYAFkAWgBbAFwAXQARACYAQQMnAD4ARAMmAGUAJgBnAAoAxAIfACAAnQCbAFEAnACXACYAJwAoACkAgwImAHcAnABvAAoAZwAmAH0AfgAKAD8ANgA3ADgA0gImAD4AEQAmABEAPgBAAAQAJgAmACYAJgBGACYAJgAmAKMCPwAmACYAmQAaAJsABABSAAQAJgCgAKEAVwBYAFkAWgBbAFwAXQAmAAMABAAmACYABAAmAGUAJgBnACYAJgAmACYAbgARAB0AHgAfACAAIQAiACMAPgDPAncAnQCdACYAHwAgAH0AfgCdAJ0AGgAmACcAKACdAJ0AAwAEACUAnQAEAOUCPwCdACYAJgCdADYANwA4ACYAJgCdAJ0AmQAmACYAQAAEAAQABACgAKEARgAfACAAnQCdAJ0A+gD2ACYAJwAoAJ0AUgCdAPMA3gKdAFcAWABZAFoAWwBcAF0ANgA3ADgAnQCfAtMCowJlAN0AZwBAAJ0AnQAfA/MBnQBGALsBnQCdAJ0AnQCdAJ0AWgF3AB0CVQJSAAYD4wJ9AH4AVwBYAFkAWgBbAFwAXQAeAAQAcwA2Av////+1AWUA//9nAP/////3AP///////////////5kA/////////////3cAoAChAP///////30AfgD///////////////8qACsALAAtAC4ALwD/////////////NQD///////85AP//OwD//z0AmQD///////////////+gAKEARwAQAP//EgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMA////////////////BAD///////9mAP//aAD///////9sAP///////3AAcQByAAYABwAIAAkACgALAAwADQAOAA8AfQAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjADAAMQAyAP//kgAmAP////+WAP//mAD///////+cAP//ngBBAEIAQwBEAEUA//9HAEgASQBKAP///////wQA//////////9TAFQAVQBWAP//////////////////XgBfAGAAYQBiAGMAZAD//////////2kAagBrAP///////yUAcABxAHIA//////////+dAP////8wADEAMgB9ABkAGgAbABwAHQAeAB8AIAAhACIAIwD//4oAQQBCAEMARABFAJAARwBIAEkASgD//////////////////5wAUwBUAFUAVgD//////////////////14AXwBgAGEAYgBjAGQA//////////9pAGoAawD//////////3AAcQByAAYABwAIAAkACgALAAwADQAOAA8AfQD///////////////////////////////+KABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjAP//EACcABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjABAA//8SABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAQAP//EgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAEAD//xIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjABAA//8SABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAQAP//EgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAEAD//xIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjABAAnQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAQAJ0AEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAEACdABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjABAAnQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAQAJ0AEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAEACdABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjABAAnQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAQAJ0AEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAEACdABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjABAAnQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAQAJ0AEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAEACdABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjABAAnQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAQAJ0AEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAEACdABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjABAAnQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAQAJ0AEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAEACdABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjAP//nQAEABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwD//xAAmwASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAQAJsAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMA//+bAP//PwD//////////wQA/////0cA//////////////////9PAP//mwD//////////1YA////////////////BAD//////////////////5sA//8nAP////9qAP////////////9wAHEAcgD///////////////+bAP///////30AJQD//ycA/////////////xAARwASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwD/////JgD/////mwBHAP///////////////////////////////20A/////////////5sAdAB1AHYAdwB4AHkAegB7AHwA/////38AgAD//4IAgwCEAJoCbQD/////iQCKAIsA//90AHUAdgB3AHgA//96AHsAfACrAqwCfwCAAP//ggCDAIQA//////////+JAIoAiwD///////+9Av/////AAhAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwD////////YAtkC2gLbAv/////eAv//4AL//+ICEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjABAA//8SABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwD///////////////8RAxID//8UAxUDEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjABcA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P0lNQEpFRj5OAABTXFwGZzIyMzQ1NgkuCgALKgwUWgANIg5dAABgEhABAgBPUAAABAUABwgvACwrKRUAWAAAIQBeZAAAYVJRADEtWQAwVgAPY2YRYmhbVxgAACgAZV8dHhscHyAZGjAwVVZWVlYYJwAlJhYXVlYjJAAAAAAAAAAxAEYAPgBDADgARABCAF0AEQBeABIAEwAUABUAFgAXAC4AGAAZABoAGwAcAB0AHgAfAHgAIAAhACIAIwAkACUAJgAnAE0AKABJACkALwABAAIAAwAEAAUABgAHADkACAAJAAoACwCNAI4APgBYAHkADAANAHoAZQAyADMANAA1AA4AfwCAAEMAZgBEAGQAZwCBAIIAgwCEAD8AaQCPAJEAkgCTAIUAhgBrAGIAYwBIAHQAlwCYAHAAeQBLAHMAkAABAAIAAwAEAAUABgAHAHcACAAJAAoACwBOAND/0P/Q/9D/DAANAIsALwBPAFsAjABVAA4AMgAzADQANQCVAC8AUgBgAFcAYQBoAHkAbABiAG4AbwBVAJYAcQB1AH0AfACJAIoASgBfAFoAWQCUAGoALQAAAEwAAAAAAFQAAAAAAAAAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQANAAkAHgAHACAACwAgAAMAIgAFAAYABwAIAAkACgAeAAwADQAOAA8AEAARABIAEwBtABUAFgAXABgAGQAaABsAHAApAB4AAAAgAB8AAwAEAAUABgAHAAgACQAeAAsADAANAA4AhwCIADwAOQAdABQAFQAgAEcAFgAXABgAGQAcAAkACgAeAEsAIAAhAE4AEAARABIAEwAeAFIAigCLAIwAjQAaABsAWwAgACEAHgBkAJUAlgBgAB0AIABjACAAAwAEAAUABgAHAAgACQBsAAsADAANAA4AIAAWABcAGAAZABQAFQAeAB8ADwAiAHwAIQAcABYAFwAYABkAHgAfACEAIAAeAB4AIgAdACMAIAAeAB4AIQCQAB8AHwAeACAAHgAeAA8AQAA8ADoAjgBWAAIA//8pAP////8xAP///////y0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIQIgAgICAgICAgICAgICAgIiAgIjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fAF0FBfIHByYmEAUuB+XlOSSrq6urq6urq6urq6urq6urq6urq6urq6s9BUyrZmarq19fq6urq1erV2QQqwWrVOcuq2GrZTVnJaurqwVMqwViq6sHq6urJqtXq6sFY2prqwerbQflZ6urbqurqwdpGm+rq3CrZ6urqzhyc6tVq6urq6urq6urq2lpq2g/aGg4q2Crq6uraGirqwAAAAAAAABwZV9pbXBsaWVkX2ltcG9ydF9kbGwAAAAAAAAAAAAAAHBlX2ZpbmRfZGF0YV9pbXBvcnRzAAAAAAAAAAAAAAAAcGVfZml4dXBfc3RkY2FsbHMAAAAAAAAAAAAAAAAAAABnbGRpMzg2cGVfYWZ0ZXJfb3BlbgAAAAAvdG1wAAAAAC92YXIvdG1wAAAAAAEbAzt4FAAAjgIAADQw7f+sFAAAZEDt/9QUAAC0QO3/7BQAANRQ7f9MFQAA61Dt/7AVAABSUe3/BBYAAPpS7f9IFgAACVPt/5gWAACdU+3/4BYAALVT7f9cFwAAF1Tt/6AXAABIVO3/7BcAAJN27f+cGAAAMnft//QYAABkf+3/MBkAAGyJ7f94GQAAO5Pt/6AZAADynu3/3BkAAASf7f9IGgAAIZ/t/8gaAABNn+3/MBsAAGuf7f+EGwAAd5/t/9AbAACGn+3/QBwAAEig7f+EHAAAXaDt/8wcAACFoO3/AB0AAI2g7f9EHQAAAKHt/6AdAAA6oe3/3B0AAEah7f9AHgAAVaHt/4geAAD7pe3/BB8AAJWm7f9MIAAA+9Lt/6ggAAD03u3/3CAAAP3e7f/4IAAA8eHt/zAhAAAR4u3/nCEAAEzk7f8QIgAAWOTt/1giAABr5O3/jCIAAHTk7f+8IgAAteXt/+QiAADX5u3/+CIAAMjo7f8cIwAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0GAEAAAAAACQYAQAAAAAAD5vBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuVcFAAAAAAABAAAAAAAAAAAAAAAAAAAAmQEAAAAAAAAsWwUAAAAAAAAAAAAAAAAAAAAAAAAAAACSAQAAAAAAAORwBQAAAAAAAgAAAAAAAAAAAAAAAAAAAJcBAAAAAAAAM1sFAAAAAAACAAAAAAAAAAAAAAAAAAAAmAEAAAAAAABEWwUAAAAAAAEAAAAAAAAAAAAAAAAAAACaAQAAAAAAAFxbBQAAAAAAAQAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAZVsFAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAEAAAAAAAB3WwUAAAAAAAAAAAAAAAAAAAAAAAAAAACRAQAAAAAAAItbBQAAAAAAAAAAAAAAAAAAAAAAAAAAAJMBAAAAAAAAiFsFAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAEAAAAAAACYWwUAAAAAAAEAAAAAAAAAAAAAAAAAAACVAQAAAAAAAKVbBQAAAAAAAQAAAAAAAAAAAAAAAAAAAJYBAAAAAAAAs1sFAAAAAAAAAAAAAAAAAAAAAAAAAAAALQEAAAAAAACwWwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuVcFAAAAAAABAAAAAAAAAAAAAAAAAAAAmQEAAAAAAAAsWwUAAAAAAAAAAAAAAAAAAAAAAAAAAACSAQAAAAAAAORwBQAAAAAAAgAAAAAAAAAAAAAAAAAAAJcBAAAAAAAAM1sFAAAAAAACAAAAAAAAAAAAAAAAAAAAmAEAAAAAAABEWwUAAAAAAAEAAAAAAAAAAAAAAAAAAACaAQAAAAAAAFxbBQAAAAAAAQAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAZVsFAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAEAAAAAAAB3WwUAAAAAAAAAAAAAAAAAAAAAAAAAAACRAQAAAAAAAItbBQAAAAAAAAAAAAAAAAAAAAAAAAAAAJMBAAAAAAAAiFsFAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAEAAAAAAACYWwUAAAAAAAEAAAAAAAAAAAAAAAAAAACVAQAAAAAAAKVbBQAAAAAAAQAAAAAAAAAAAAAAAAAAAJYBAAAAAAAAs1sFAAAAAAAAAAAAAAAAAAAAAAAAAAAALQEAAAAAAACwWwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuVcFAAAAAAABAAAAAAAAAAAAAAAAAAAAmQEAAAAAAAAsWwUAAAAAAAAAAAAAAAAAAAAAAAAAAACSAQAAAAAAAORwBQAAAAAAAgAAAAAAAAAAAAAAAAAAAJcBAAAAAAAAM1sFAAAAAAACAAAAAAAAAAAAAAAAAAAAmAEAAAAAAABEWwUAAAAAAAEAAAAAAAAAAAAAAAAAAACaAQAAAAAAAFxbBQAAAAAAAQAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAZVsFAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAEAAAAAAAB3WwUAAAAAAAAAAAAAAAAAAAAAAAAAAACRAQAAAAAAAItbBQAAAAAAAAAAAAAAAAAAAAAAAAAAAJMBAAAAAAAAiFsFAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAEAAAAAAACYWwUAAAAAAAEAAAAAAAAAAAAAAAAAAACVAQAAAAAAAKVbBQAAAAAAAQAAAAAAAAAAAAAAAAAAAJYBAAAAAAAAs1sFAAAAAAAAAAAAAAAAAAAAAAAAAAAALQEAAAAAAACwWwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuVcFAAAAAAABAAAAAAAAAAAAAAAAAAAAmQEAAAAAAAAsWwUAAAAAAAAAAAAAAAAAAAAAAAAAAACSAQAAAAAAAORwBQAAAAAAAgAAAAAAAAAAAAAAAAAAAJcBAAAAAAAAM1sFAAAAAAACAAAAAAAAAAAAAAAAAAAAmAEAAAAAAABEWwUAAAAAAAEAAAAAAAAAAAAAAAAAAACaAQAA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kOQAAAAAAACg5AAAAAAAALDkAAAAAAAAwOQAAAAAAADQ5AAAAAAAAODkAAAAAAAA8OQAAAAAAAAA5QAAAAAAABDlAAAAAAAAIOUAAAAAAAAw5QAAAAAAAEDlAAAAAAAAUOUAAAAAAABg5QAAAAAAAHDlAAAAAAAAgOUAAAAAAACQ5QAAAAAAAKDlAAAAAAAAsOUAAAAAAADA5QAAAAAAANDlAAAAAAAA4OUAAAAAAADw5QAAAAAAAADmAAAAAAAAEOYAAAAAAAAg5gAAAAAAADDmAAAAAAAAQOYAAAAAAABQ5gAAAAAAAGDmAAAAAAAAcOYAAAAAAACA5gAAAAAAAJDmAAAAAAAAoOYAAAAAAACw5gAAAAAAAMDmAAAAAAAA0OYAAAAAAADg5gAAAAAAAPDmAAAAAAAAAOcAAAAAAAAQ5wAAAAAAACDnAAAAAAAAMOcAAAAAAABA5wAAAAAAAFDnAAAAAAAAYOcAAAAAAABw5wAAAAAAAIDnAAAAAAAAkOcAAAAAAACg5wAAAAAAALDnAAAAAAAAwOcAAAAAAADQ5wAAAAAAAODnAAAAAAAA8OcAAAAAAAAA6AAAAAAAABDoAAAAAAAAIOgAAAAAAAAw6AAAAAAAAEDoAAAAAAAAUOgAAAAAAABg6AAAAAAAAHDoAAAAAAAAgOgAAAAAAACQ6AAAAAAAAKDoAAAAAAAAsOgAAAAAAADA6AAAAAAAANDoAAAAAAAA4OgAAAAAAADw6AAAAAAAAADpAAAAAAAAEOkAAAAAAAAg6QAAAAAAADDpAAAAAAAAQOkAAAAAAABQ6QAAAAAAAGDpAAAAAAAAcOkAAAAAAACA6QAAAAAAAJDpAAAAAAAAoOkAAAAAAACw6QAAAAAAAMDpAAAAAAAA0OkAAAAAAADg6QAAAAAAAPDpAAAAAAAAAOoAAAAAAAAQ6gAAAAAAACDqAAAAAAAAMOoAAAAAAABA6gAAAAAAAFDqAAAAAAAAYOoAAAAAAABw6gAAAAAAAIDqAAAAAAAAkOoAAAAAAACg6gAAAAAAALDqAAAAAAAAwOoAAAAAAADQ6gAAAAAAAODqAAAAAAAA8OoAAAAAAAAA6wAAAAAAABDrAAAAAAAAIOsAAAAAAAAw6wAAAAAAAEDrAAAAAAAAUOsAAAAAAABg6wAAAAAAAHDrAAAAAAAAgOsAAAAAAACQ6wAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAACAAAAAAAAABgDAAAAAAAAGAMAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAAHAAAAAgAAAAAAAAA4AwAAAAAAADgDAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAmAAAABwAAAAIAAAAAAAAAaAMAAAAAAABoAwAAAAAAACQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOQAAAAcAAAACAAAAAAAAAIwDAAAAAAAAjAMAAAAAAAAgAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEcAAAD2//9vAgAAAAAAAACwAwAAAAAAALADAAAAAAAAXAAAAAAAAAAGAAAAAAAAAAgAAAAAAAAAAAAAAAAAAABRAAAACwAAAAIAAAAAAAAAEAQAAAAAAAAQBAAAAAAAABgbAAAAAAAABwAAAAEAAAAIAAAAAAAAABgAAAAAAAAAWQAAAAMAAAACAAAAAAAAACgfAAAAAAAAKB8AAAAAAABLEgAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAGEAAAD///9vAgAAAAAAAAB0MQAAAAAAAHQxAAAAAAAAQgIAAAAAAAAGAAAAAAAAAAIAAAAAAAAAAgAAAAAAAABuAAAA/v//bwIAAAAAAAAAuDMAAAAAAAC4MwAAAAAAABABAAAAAAAABwAAAAMAAAAIAAAAAAAAAAAAAAAAAAAAfQAAAAQAAAACAAAAAAAAAMg0AAAAAAAAyDQAAAAAAADAkAAAAAAAAAYAAAAAAAAACAAAAAAAAAAYAAAAAAAAAIcAAAAEAAAAQgAAAAAAAACIxQAAAAAAAIjFAAAAAAAAMBgAAAAAAAAGAAAAGQAAAAgAAAAAAAAAGAAAAAAAAACRAAAAAQAAAAYAAAAAAAAAAOAAAAAAAAAA4AAAAAAAABsAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAjAAAAAEAAAAGAAAAAAAAACDgAAAAAAAAIOAAAAAAAAAwEAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAJcAAAABAAAABgAAAAAAAABQ8AAAAAAAAFDwAAAAAAAAUAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAACgAAAAAQAAAAYAAAAAAAAAoPAAAAAAAACg8AAAAAAAACAQAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAqQAAAAEAAAAGAAAAAAAAAMAAAQAAAAAAwAABAAAAAACeQAQAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAK8AAAABAAAABgAAAAAAAABgQQUAAAAAAGBBBQAAAAAADQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAC1AAAAAQAAAAIAAAAAAAAAAFAFAAAAAAAAUAUAAAAAAOlfDgAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAvQAAAAEAAAACAAAAAAAAAOyvEwAAAAAA7K8TAAAAAAB8FAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAMsAAAABAAAAAgAAAAAAAABoxBMAAAAAAGjEEwAAAAAAhFkAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAADVAAAADgAAAAMAAAAAAAAAEC0UAAAAAAAQLRQAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAA4QAAAA8AAAADAAAAAAAAABgtFAAAAAAAGC0UAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAO0AAAABAAAAAwAAAAAAAAAgLRQAAAAAACAtFAAAAAAA6GcAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAD6AAAABgAAAAMAAAAAAAAACJUUAAAAAAAIlRQAAAAAACACAAAAAAAABwAAAAAAAAAIAAAAAAAAABAAAAAAAAAAmwAAAAEAAAADAAAAAAAAACiXFAAAAAAAKJcUAAAAAADYCAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAMBAAABAAAAAwAAAAAAAAAAoBQAAAAAAACgFAAAAAAAGBQAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAJAQAACAAAAAMAAAAAAAAAILQUAAAAAAAYtBQAAAAAAEAWAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAADgEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAGLQUAAAAAABZAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAHG0FAAAAAAAIAEAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA=
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 1
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
ld
1.30 MB
lrwxr-xr-x
2025-12-03 15:01:20
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).