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AFRoZSBnYXRld2F5IHRvIHRoZSBEaXN0dXRpbHM6IGRvIGV2ZXJ5dGhpbmcgeW91ciBzZXR1cCBzY3JpcHQgbmVlZHMKICAgIHRvIGRvLCBpbiBhIGhpZ2hseSBmbGV4aWJsZSBhbmQgdXNlci1kcml2ZW4gd2F5LiAgQnJpZWZseTogY3JlYXRlIGEKICAgIERpc3RyaWJ1dGlvbiBpbnN0YW5jZTsgZmluZCBhbmQgcGFyc2UgY29uZmlnIGZpbGVzOyBwYXJzZSB0aGUgY29tbWFuZAogICAgbGluZTsgcnVuIGVhY2ggRGlzdHV0aWxzIGNvbW1hbmQgZm91bmQgdGhlcmUsIGN1c3RvbWl6ZWQgYnkgdGhlIG9wdGlvbnMKICAgIHN1cHBsaWVkIHRvICdzZXR1cCgpJyAoYXMga2V5d29yZCBhcmd1bWVudHMpLCBpbiBjb25maWcgZmlsZXMsIGFuZCBvbgogICAgdGhlIGNvbW1hbmQgbGluZS4KCiAgICBUaGUgRGlzdHJpYnV0aW9uIGluc3RhbmNlIG1pZ2h0IGJlIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgc3VwcGxpZWQgdmlhCiAgICB0aGUgJ2Rpc3RjbGFzcycga2V5d29yZCBhcmd1bWVudCB0byAnc2V0dXAnOyBpZiBubyBzdWNoIGNsYXNzIGlzCiAgICBzdXBwbGllZCwgdGhlbiB0aGUgRGlzdHJpYnV0aW9uIGNsYXNzIChpbiBkaXN0LnB5KSBpcyBpbnN0YW50aWF0ZWQuCiAgICBBbGwgb3RoZXIgYXJndW1lbnRzIHRvICdzZXR1cCcgKGV4Y2VwdCBmb3IgJ2NtZGNsYXNzJykgYXJlIHVzZWQgdG8gc2V0CiAgICBhdHRyaWJ1dGVzIG9mIHRoZSBEaXN0cmlidXRpb24gaW5zdGFuY2UuCgogICAgVGhlICdjbWRjbGFzcycgYXJndW1lbnQsIGlmIHN1cHBsaWVkLCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBjb21tYW5kCiAgICBuYW1lcyB0byBjb21tYW5kIGNsYXNzZXMuICBFYWNoIGNvbW1hbmQgZW5jb3VudGVyZWQgb24gdGhlIGNvbW1hbmQgbGluZQogICAgd2lsbCBiZSB0dXJuZWQgaW50byBhIGNvbW1hbmQgY2xhc3MsIHdoaWNoIGlzIGluIHR1cm4gaW5zdGFudGlhdGVkOyBhbnkKICAgIGNsYXNzIGZvdW5kIGluICdjbWRjbGFzcycgaXMgdXNlZCBpbiBwbGFjZSBvZiB0aGUgZGVmYXVsdCwgd2hpY2ggaXMKICAgIChmb3IgY29tbWFuZCAnZm9vX2JhcicpIGNsYXNzICdmb29fYmFyJyBpbiBtb2R1bGUKICAgICdkaXN0dXRpbHMuY29tbWFuZC5mb29fYmFyJy4gIFRoZSBjb21tYW5kIGNsYXNzIG11c3QgcHJvdmlkZSBhCiAgICAndXNlcl9vcHRpb25zJyBhdHRyaWJ1dGUgd2hpY2ggaXMgYSBsaXN0IG9mIG9wdGlvbiBzcGVjaWZpZXJzIGZvcgogICAgJ2Rpc3R1dGlscy5mYW5jeV9nZXRvcHQnLiAgQW55IGNvbW1hbmQtbGluZSBvcHRpb25zIGJldHdlZW4gdGhlIGN1cnJlbnQKICAgIGFuZCB0aGUgbmV4dCBjb21tYW5kIGFyZSB1c2VkIHRvIHNldCBhdHRyaWJ1dGVzIG9mIHRoZSBjdXJyZW50IGNvbW1hbmQKICAgIG9iamVjdC4KCiAgICBXaGVuIHRoZSBlbnRpcmUgY29tbWFuZC1saW5lIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBwYXJzZWQsIGNhbGxzIHRoZQogICAgJ3J1bigpJyBtZXRob2Qgb24gZWFjaCBjb21tYW5kIG9iamVjdCBpbiB0dXJuLiAgVGhpcyBtZXRob2Qgd2lsbCBiZQogICAgZHJpdmVuIGVudGlyZWx5IGJ5IHRoZSBEaXN0cmlidXRpb24gb2JqZWN0ICh3aGljaCBlYWNoIGNvbW1hbmQgb2JqZWN0CiAgICBoYXMgYSByZWZlcmVuY2UgdG8sIHRoYW5rcyB0byBpdHMgY29uc3RydWN0b3IpLCBhbmQgdGhlCiAgICBjb21tYW5kLXNwZWNpZmljIG9wdGlvbnMgdGhhdCBiZWNhbWUgYXR0cmlidXRlcyBvZiBlYWNoIGNvbW1hbmQKICAgIG9iamVjdC4KICAgIHISAAAAcg0AAAByAQAAAHITAAAA6QEAAABOchUAAAB6GmVycm9yIGluIHNldHVwIGNvbW1hbmQ6ICVzeh1lcnJvciBpbiAlcyBzZXR1cCBjb21tYW5kOiAlc9oEaW5pdHolb3B0aW9ucyAoYWZ0ZXIgcGFyc2luZyBjb25maWcgZmlsZXMpOtoGY29uZmlnegoKZXJyb3I6ICVzeiVvcHRpb25zIChhZnRlciBwYXJzaW5nIGNvbW1hbmQgbGluZSk62gtjb21tYW5kbGluZSkU2gNnZXRyBAAAAHIIAAAAcgkAAAByCgAAANoDc3lz2gRhcmd22hNfc2V0dXBfZGlzdHJpYnV0aW9u2hNEaXN0dXRpbHNTZXR1cEVycm9y2gpTeXN0ZW1FeGl02hFfc2V0dXBfc3RvcF9hZnRlctoScGFyc2VfY29uZmlnX2ZpbGVzcgIAAADaBXByaW502hFkdW1wX29wdGlvbl9kaWN0c9oScGFyc2VfY29tbWFuZF9saW5l2hFEaXN0dXRpbHNBcmdFcnJvcnIRAAAAcg0AAADaDHJ1bl9jb21tYW5kcykF2gVhdHRyc9oFa2xhc3PaBGRpc3TaA21zZ9oCb2tyDwAAAHIPAAAAchAAAADaBXNldHVwOgAAAHNQAAAACiUEAQgBBAIIAhYBCAESAQIEEAEOAQgBDAEEAgoBBv8IgAL8CAcEAQgEBAIIAQgBCAIEAQIFDAEOARYBCIAC/wQDCAEIAQgCBAEEAwgBBAJySgAAAGMBAAAAAAAAAAAAAAADAAAACgAAAEMAAABzkgAAAHoHfACgAKEAAQBXAHwAUwAEAHQBeRIBAAEAAQB0AmQBgwGCAQQAdAN5MAEAfQEBAHoTdARyJXQFagagB2QCfAFmARYAoQEBAIIAdAJkA3wBZgEWAIMBggFkBH0BfgF3AQQAdAh0CWYCeUgBAH0CAQB6C3QEcjyCAHQCZAV0CnwCgwEXAIMBggFkBH0CfgJ3AXcAKQZ63EdpdmVuIGEgRGlzdHJpYnV0aW9uIG9iamVjdCBydW4gYWxsIHRoZSBjb21tYW5kcywKICAgIHJhaXNpbmcgYGBTeXN0ZW1FeGl0YGAgZXJyb3JzIGluIHRoZSBjYXNlIG9mIGZhaWx1cmUuCgogICAgVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgZWl0aGVyIGBgc3lzLmFyZ3ZgYCBvciBgYGRpc3Quc2NyaXB0X2FyZ3NgYAogICAgaXMgYWxyZWFkeSBzZXQgYWNjb3JkaW5nbHkuCiAgICDaC2ludGVycnVwdGVkegplcnJvcjogJXMKegllcnJvcjogJXNOegdlcnJvcjogKQtyRAAAANoRS2V5Ym9hcmRJbnRlcnJ1cHRyPQAAANoHT1NFcnJvcnICAAAAcjkAAADaBnN0ZGVyctoFd3JpdGXaDkRpc3R1dGlsc0Vycm9y2g5DQ29tcGlsZXJFcnJvctoDc3RyKQNyRwAAANoDZXhjckgAAAByDwAAAHIPAAAAchAAAAByRAAAAJsAAABzJgAAAAIHCgEEEQzwCAEOAQQBEgECAQ4CCIAEAgIBDP8EAgIBEAIIgAL7ckQAAADaA3J1bmMDAAAAAAAAAAAAAAAHAAAACAAAAEMAAABz3gAAAHwCZAF2AXILdABkAnwCZgEWAIMBggF8AmEBdAJqA6AEoQB9A3wAZANkBJwCfQR6Qno5fAB0AmoDZAU8AHwBZAZ1AXIpfAF0AmoDZAdkBoUCPAB0BaAGfAChAY8VfQV8BaAHoQCgCGQIZAmhAn0GdAl8BnwEgwIBAFcAZAYEAAQAgwMBAG4IMQBzRncBAQABAAEAWQABAFcAfAN0Al8DZAZhAW4GfAN0Al8DZAZhAXcAVwBuCQQAdAp5YgEAAQABAFkAbgF3AHQLZAZ1AHJtdAxkCnwAFgCDAYIBdAtTACkLYS4FAABSdW4gYSBzZXR1cCBzY3JpcHQgaW4gYSBzb21ld2hhdCBjb250cm9sbGVkIGVudmlyb25tZW50LCBhbmQKICAgIHJldHVybiB0aGUgRGlzdHJpYnV0aW9uIGluc3RhbmNlIHRoYXQgZHJpdmVzIHRoaW5ncy4gIFRoaXMgaXMgdXNlZnVsCiAgICBpZiB5b3UgbmVlZCB0byBmaW5kIG91dCB0aGUgZGlzdHJpYnV0aW9uIG1ldGEtZGF0YSAocGFzc2VkIGFzCiAgICBrZXl3b3JkIGFyZ3MgZnJvbSAnc2NyaXB0JyB0byAnc2V0dXAoKScsIG9yIHRoZSBjb250ZW50cyBvZiB0aGUKICAgIGNvbmZpZyBmaWxlcyBvciBjb21tYW5kLWxpbmUuCgogICAgJ3NjcmlwdF9uYW1lJyBpcyBhIGZpbGUgdGhhdCB3aWxsIGJlIHJlYWQgYW5kIHJ1biB3aXRoICdleGVjKCknOwogICAgJ3N5cy5hcmd2WzBdJyB3aWxsIGJlIHJlcGxhY2VkIHdpdGggJ3NjcmlwdCcgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUKICAgIGNhbGwuICAnc2NyaXB0X2FyZ3MnIGlzIGEgbGlzdCBvZiBzdHJpbmdzOyBpZiBzdXBwbGllZCwKICAgICdzeXMuYXJndlsxOl0nIHdpbGwgYmUgcmVwbGFjZWQgYnkgJ3NjcmlwdF9hcmdzJyBmb3IgdGhlIGR1cmF0aW9uIG9mCiAgICB0aGUgY2FsbC4KCiAgICAnc3RvcF9hZnRlcicgdGVsbHMgJ3NldHVwKCknIHdoZW4gdG8gc3RvcCBwcm9jZXNzaW5nOyBwb3NzaWJsZQogICAgdmFsdWVzOgogICAgICBpbml0CiAgICAgICAgc3RvcCBhZnRlciB0aGUgRGlzdHJpYnV0aW9uIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgYW5kCiAgICAgICAgcG9wdWxhdGVkIHdpdGggdGhlIGtleXdvcmQgYXJndW1lbnRzIHRvICdzZXR1cCgpJwogICAgICBjb25maWcKICAgICAgICBzdG9wIGFmdGVyIGNvbmZpZyBmaWxlcyBoYXZlIGJlZW4gcGFyc2VkIChhbmQgdGhlaXIgZGF0YQogICAgICAgIHN0b3JlZCBpbiB0aGUgRGlzdHJpYnV0aW9uIGluc3RhbmNlKQogICAgICBjb21tYW5kbGluZQogICAgICAgIHN0b3AgYWZ0ZXIgdGhlIGNvbW1hbmQtbGluZSAoJ3N5cy5hcmd2WzE6XScgb3IgJ3NjcmlwdF9hcmdzJykKICAgICAgICBoYXZlIGJlZW4gcGFyc2VkIChhbmQgdGhlIGRhdGEgc3RvcmVkIGluIHRoZSBEaXN0cmlidXRpb24pCiAgICAgIHJ1biBbZGVmYXVsdF0KICAgICAgICBzdG9wIGFmdGVyIGFsbCBjb21tYW5kcyBoYXZlIGJlZW4gcnVuICh0aGUgc2FtZSBhcyBpZiAnc2V0dXAoKScKICAgICAgICBoYWQgYmVlbiBjYWxsZWQgaW4gdGhlIHVzdWFsIHdheQoKICAgIFJldHVybnMgdGhlIERpc3RyaWJ1dGlvbiBpbnN0YW5jZSwgd2hpY2ggcHJvdmlkZXMgYWxsIGluZm9ybWF0aW9uCiAgICB1c2VkIHRvIGRyaXZlIHRoZSBEaXN0dXRpbHMuCiAgICApBHI1AAAAcjYAAAByNwAAAHJUAAAAeiJpbnZhbGlkIHZhbHVlIGZvciAnc3RvcF9hZnRlcic6ICVy2ghfX21haW5fXykC2ghfX2ZpbGVfX9oIX19uYW1lX19yAQAAAE5yNAAAAHoEXHJcbnoCXG56WidkaXN0dXRpbHMuY29yZS5zZXR1cCgpJyB3YXMgbmV2ZXIgY2FsbGVkIC0tIHBlcmhhcHMgJyVzJyBpcyBub3QgYSBEaXN0dXRpbHMgc2V0dXAgc2NyaXB0PykN2gpWYWx1ZUVycm9ycj4AAAByOQAAAHI6AAAA2gRjb3B52gh0b2tlbml6ZdoEb3BlbtoEcmVhZNoHcmVwbGFjZdoEZXhlY3I9AAAAcjsAAADaDFJ1bnRpbWVFcnJvcikHcg0AAAByEwAAANoKc3RvcF9hZnRlctoJc2F2ZV9hcmd22gFn2gFm2gRjb2Rlcg8AAAByDwAAAHIQAAAA2glydW5fc2V0dXC3AAAAczYAAAAIHw4BBAMKAgoBAgECAQoBCAEOAQwCEAEMARz+AoAGBAYBBv8KAQwBBAMC/QgFBAECAgb+BAdyZQAAACkCTnJUAAAAKRjaB19fZG9jX19yCAAAAHI5AAAAcloAAADaD2Rpc3R1dGlscy5kZWJ1Z3ICAAAA2hBkaXN0dXRpbHMuZXJyb3Jz2g5kaXN0dXRpbHMuZGlzdHIEAAAA2g1kaXN0dXRpbHMuY21kcgUAAADaEGRpc3R1dGlscy5jb25maWdyBgAAANoTZGlzdHV0aWxzLmV4dGVuc2lvbnIHAAAAcgsAAAByEQAAAHI+AAAAcjsAAADaDnNldHVwX2tleXdvcmRz2hJleHRlbnNpb25fa2V5d29yZHNySgAAAHJEAAAAcmUAAAByDwAAAHIPAAAAcg8AAAByEAAAANoIPG1vZHVsZT4BAAAAcyYAAAAEAAgICAEIAQwCCAEMAwwBDAEMAQQGCAcEBgQBBAMECQgGCGEOHA==