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UwApGNoNQnl0ZWNvZGVDYWNoZWHeAwAAVG8gaW1wbGVtZW50IHlvdXIgb3duIGJ5dGVjb2RlIGNhY2hlIHlvdSBoYXZlIHRvIHN1YmNsYXNzIHRoaXMgY2xhc3MKICAgIGFuZCBvdmVycmlkZSA6bWV0aDpgbG9hZF9ieXRlY29kZWAgYW5kIDptZXRoOmBkdW1wX2J5dGVjb2RlYC4gIEJvdGggb2YKICAgIHRoZXNlIG1ldGhvZHMgYXJlIHBhc3NlZCBhIDpjbGFzczpgfmppbmphMi5iY2NhY2hlLkJ1Y2tldGAuCgogICAgQSB2ZXJ5IGJhc2ljIGJ5dGVjb2RlIGNhY2hlIHRoYXQgc2F2ZXMgdGhlIGJ5dGVjb2RlIG9uIHRoZSBmaWxlIHN5c3RlbTo6CgogICAgICAgIGZyb20gb3MgaW1wb3J0IHBhdGgKCiAgICAgICAgY2xhc3MgTXlDYWNoZShCeXRlY29kZUNhY2hlKToKCiAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXJlY3RvcnkpOgogICAgICAgICAgICAgICAgc2VsZi5kaXJlY3RvcnkgPSBkaXJlY3RvcnkKCiAgICAgICAgICAgIGRlZiBsb2FkX2J5dGVjb2RlKHNlbGYsIGJ1Y2tldCk6CiAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHBhdGguam9pbihzZWxmLmRpcmVjdG9yeSwgYnVja2V0LmtleSkKICAgICAgICAgICAgICAgIGlmIHBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgICAgIGJ1Y2tldC5sb2FkX2J5dGVjb2RlKGYpCgogICAgICAgICAgICBkZWYgZHVtcF9ieXRlY29kZShzZWxmLCBidWNrZXQpOgogICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBwYXRoLmpvaW4oc2VsZi5kaXJlY3RvcnksIGJ1Y2tldC5rZXkpCiAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgYnVja2V0LndyaXRlX2J5dGVjb2RlKGYpCgogICAgQSBtb3JlIGFkdmFuY2VkIHZlcnNpb24gb2YgYSBmaWxlc3lzdGVtIGJhc2VkIGJ5dGVjb2RlIGNhY2hlIGlzIHBhcnQgb2YKICAgIEppbmphLgogICAgTikC2gZidWNrZXRyCQAAAGMCAAAAAAAAAAIAAAABAAAAQwAAAHMKAAAAdACDAIIBZAFTACkCerlTdWJjbGFzc2VzIGhhdmUgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gbG9hZCBieXRlY29kZSBpbnRvIGEKICAgICAgICBidWNrZXQuICBJZiB0aGV5IGFyZSBub3QgYWJsZSB0byBmaW5kIGNvZGUgaW4gdGhlIGNhY2hlIGZvciB0aGUKICAgICAgICBidWNrZXQsIGl0IG11c3Qgbm90IGRvIGFueXRoaW5nLgogICAgICAgIE4pAdoTTm90SW1wbGVtZW50ZWRFcnJvcikCcgsAAAByOQAAAHIKAAAAcgoAAAByDAAAAHItAAAAggAAAHMCAAAAAAV6G0J5dGVjb2RlQ2FjaGUubG9hZF9ieXRlY29kZWMCAAAAAAAAAAIAAAABAAAAQwAAAHMKAAAAdACDAIIBZAFTACkCesBTdWJjbGFzc2VzIGhhdmUgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gd3JpdGUgdGhlIGJ5dGVjb2RlCiAgICAgICAgZnJvbSBhIGJ1Y2tldCBiYWNrIHRvIHRoZSBjYWNoZS4gIElmIGl0IHVuYWJsZSB0byBkbyBzbyBpdCBtdXN0IG5vdAogICAgICAgIGZhaWwgc2lsZW50bHkgYnV0IHJhaXNlIGFuIGV4Y2VwdGlvbi4KICAgICAgICBOKQFyOgAAACkCcgsAAAByOQAAAHIKAAAAcgoAAAByDAAAANoNZHVtcF9ieXRlY29kZYkAAABzAgAAAAAFehtCeXRlY29kZUNhY2hlLmR1bXBfYnl0ZWNvZGUpAXIJAAAAYwEAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJ6ukNsZWFycyB0aGUgY2FjaGUuICBUaGlzIG1ldGhvZCBpcyBub3QgdXNlZCBieSBKaW5qYSBidXQgc2hvdWxkIGJlCiAgICAgICAgaW1wbGVtZW50ZWQgdG8gYWxsb3cgYXBwbGljYXRpb25zIHRvIGNsZWFyIHRoZSBieXRlY29kZSBjYWNoZSB1c2VkCiAgICAgICAgYnkgYSBwYXJ0aWN1bGFyIGVudmlyb25tZW50LgogICAgICAgIE5yCgAAACkBcgsAAAByCgAAAHIKAAAAcgwAAADaBWNsZWFykAAAAHMAAAAAehNCeXRlY29kZUNhY2hlLmNsZWFyKQPaBG5hbWXaCGZpbGVuYW1lcgkAAABjAwAAAAAAAAAEAAAAAwAAAEMAAABzMgAAAHQAfAFqAWQBgwGDAX0DfAJkAmsJcip8A2oCZAN8ApsAnQJqAYMAgwEBAHwDagODAFMAKQR6M1JldHVybnMgdGhlIHVuaXF1ZSBoYXNoIGtleSBmb3IgdGhpcyB0ZW1wbGF0ZSBuYW1lLnoFdXRmLThO+gF8KQRyAgAAANoGZW5jb2Rl2gZ1cGRhdGXaCWhleGRpZ2VzdCkEcgsAAAByPQAAAHI+AAAA2gRoYXNocgoAAAByCgAAAHIMAAAA2g1nZXRfY2FjaGVfa2V5lgAAAHMIAAAAAAQOAggBFAJ6G0J5dGVjb2RlQ2FjaGUuZ2V0X2NhY2hlX2tleSkC2gZzb3VyY2VyCQAAAGMCAAAAAAAAAAIAAAADAAAAQwAAAHMSAAAAdAB8AWoBZAGDAYMBagKDAFMAKQJ6IlJldHVybnMgYSBjaGVja3N1bSBmb3IgdGhlIHNvdXJjZS56BXV0Zi04KQNyAgAAAHJAAAAAckIAAAApAnILAAAAckUAAAByCgAAAHIKAAAAcgwAAADaE2dldF9zb3VyY2VfY2hlY2tzdW2hAAAAcwIAAAAAAnohQnl0ZWNvZGVDYWNoZS5nZXRfc291cmNlX2NoZWNrc3VtcgYAAAApBXIdAAAAcj0AAAByPgAAAHJFAAAAcgkAAABjBQAAAAAAAAAIAAAABAAAAEMAAABzMAAAAHwAagB8AnwDgwJ9BXwAagF8BIMBfQZ0AnwBfAV8BoMDfQd8AGoDfAeDAQEAfAdTACkBendSZXR1cm4gYSBjYWNoZSBidWNrZXQgZm9yIHRoZSBnaXZlbiB0ZW1wbGF0ZS4gIEFsbCBhcmd1bWVudHMgYXJlCiAgICAgICAgbWFuZGF0b3J5IGJ1dCBmaWxlbmFtZSBtYXkgYmUgYE5vbmVgLgogICAgICAgICkEckQAAAByRgAAAHIcAAAAci0AAAApCHILAAAAch0AAAByPQAAAHI+AAAAckUAAAByCAAAAHIeAAAAcjkAAAByCgAAAHIKAAAAcgwAAADaCmdldF9idWNrZXSlAAAAcwoAAAAACgwBCgEMAQoBehhCeXRlY29kZUNhY2hlLmdldF9idWNrZXRjAgAAAAAAAAACAAAAAgAAAEMAAABzDgAAAHwAagB8AYMBAQBkAVMAKQJ6HlB1dCB0aGUgYnVja2V0IGludG8gdGhlIGNhY2hlLk4pAXI7AAAAKQJyCwAAAHI5AAAAcgoAAAByCgAAAHIMAAAA2gpzZXRfYnVja2V0tQAAAHMCAAAAAAJ6GEJ5dGVjb2RlQ2FjaGUuc2V0X2J1Y2tldCkBTikQchEAAAByEgAAAHITAAAAcjYAAAByHAAAAHItAAAAcjsAAAByPAAAAHIUAAAAchYAAAByFwAAANoFVW5pb25yRAAAAHJGAAAAckcAAABySAAAAHIKAAAAcgoAAAByCgAAAHIMAAAAcjgAAABlAAAAcxoAAAAIGwQCEAcQBw4HEgEOCRAGAgECAQgBAgEOCnI4AAAAYwAAAAAAAAAAAAAAAAUAAABAAAAAc3YAAABlAFoBZABaAmQBWgNkE2UEagVlBhkAZQZkAmQEnANkBWQGhAVaB2UGZAecAWQIZAmEBFoIZQllBmQKnAJkC2QMhARaCmUJZAJkCpwCZA1kDoQEWgtlCWQCZAqcAmQPZBCEBFoMZAJkB5wBZBFkEoQEWg1kAlMAKRTaF0ZpbGVTeXN0ZW1CeXRlY29kZUNhY2hlYe8CAABBIGJ5dGVjb2RlIGNhY2hlIHRoYXQgc3RvcmVzIGJ5dGVjb2RlIG9uIHRoZSBmaWxlc3lzdGVtLiAgSXQgYWNjZXB0cwogICAgdHdvIGFyZ3VtZW50czogVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgY2FjaGUgaXRlbXMgYXJlIHN0b3JlZCBhbmQgYQogICAgcGF0dGVybiBzdHJpbmcgdGhhdCBpcyB1c2VkIHRvIGJ1aWxkIHRoZSBmaWxlbmFtZS4KCiAgICBJZiBubyBkaXJlY3RvcnkgaXMgc3BlY2lmaWVkIGEgZGVmYXVsdCBjYWNoZSBkaXJlY3RvcnkgaXMgc2VsZWN0ZWQuICBPbgogICAgV2luZG93cyB0aGUgdXNlcidzIHRlbXAgZGlyZWN0b3J5IGlzIHVzZWQsIG9uIFVOSVggc3lzdGVtcyBhIGRpcmVjdG9yeQogICAgaXMgY3JlYXRlZCBmb3IgdGhlIHVzZXIgaW4gdGhlIHN5c3RlbSB0ZW1wIGRpcmVjdG9yeS4KCiAgICBUaGUgcGF0dGVybiBjYW4gYmUgdXNlZCB0byBoYXZlIG11bHRpcGxlIHNlcGFyYXRlIGNhY2hlcyBvcGVyYXRlIG9uIHRoZQogICAgc2FtZSBkaXJlY3RvcnkuICBUaGUgZGVmYXVsdCBwYXR0ZXJuIGlzIGBgJ19famluamEyXyVzLmNhY2hlJ2BgLiAgYGAlc2BgCiAgICBpcyByZXBsYWNlZCB3aXRoIHRoZSBjYWNoZSBrZXkuCgogICAgPj4+IGJjYyA9IEZpbGVTeXN0ZW1CeXRlY29kZUNhY2hlKCcvdG1wL2ppbmphX2NhY2hlJywgJyVzLmNhY2hlJykKCiAgICBUaGlzIGJ5dGVjb2RlIGNhY2hlIHN1cHBvcnRzIGNsZWFyaW5nIG9mIHRoZSBjYWNoZSB1c2luZyB0aGUgY2xlYXIgbWV0aG9kLgogICAgTvoRX19qaW5qYTJfJXMuY2FjaGUpA9oJZGlyZWN0b3J52gdwYXR0ZXJucgkAAABjAwAAAAAAAAADAAAAAgAAAEMAAABzIAAAAHwBZABrCHIQfABqAIMAfQF8AXwAXwF8AnwAXwJkAFMAKQFOKQPaFl9nZXRfZGVmYXVsdF9jYWNoZV9kaXJyTAAAAHJNAAAAKQNyCwAAAHJMAAAAck0AAAByCgAAAHIKAAAAcgwAAAByIAAAAMwAAABzCAAAAAADCAEIAQYBeiBGaWxlU3lzdGVtQnl0ZWNvZGVDYWNoZS5fX2luaXRfXykBcgkAAABjAQAAAAAAAAAHAAAAHgAAAEMAAABzYgEAAGQBZAKcAWQDZASEBH0BdABqAYMAfQJ0AmoDZAVrAnIkfAJTAHQEdAJkBoMCczR8AYMAAQBkB3QCagWDAJsAnQJ9A3QCagZqB3wCfAODAn0EeRJ0AmoIfAR0CWoKgwIBAFcAbjAEAHQLawpykgEAfQUBAHoUfAVqDHQMag1rA3KCggBXAFkAZABkAH0FfgVYAG4CWAB5UHQCag58BHQJagqDAgEAdAJqD3wEgwF9BnwGahB0AmoFgwBrA3PcdAlqEXwGahKDAQwAc9x0CWoTfAZqEoMBdAlqCmsDcuJ8AYMAAQBXAG40BAB0C2sKkAFyGAEAfQUBAHoWfAVqDHQMag1rA5ABcgiCAFcAWQBkAGQAfQV+BVgAbgJYAHQCag98BIMBfQZ8BmoQdAJqBYMAawOQAXNYdAlqEXwGahKDAQwAkAFzWHQJahN8BmoSgwF0CWoKawOQAXJefAGDAAEAfARTACkITnoLdGUuTm9SZXR1cm4pAXIJAAAAYwAAAAAAAAAAAAAAAAIAAABTAAAAcwwAAAB0AGQBgwGCAWQAUwApAk56SkNhbm5vdCBkZXRlcm1pbmUgc2FmZSB0ZW1wIGRpcmVjdG9yeS4gIFlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgcHJvdmlkZSBvbmUuKQHaDFJ1bnRpbWVFcnJvcnIKAAAAcgoAAAByCgAAAHIMAAAA2gtfdW5zYWZlX2RpctUAAABzBAAAAAABAgF6Q0ZpbGVTeXN0ZW1CeXRlY29kZUNhY2hlLl9nZXRfZGVmYXVsdF9jYWNoZV9kaXIuPGxvY2Fscz4uX3Vuc2FmZV9kaXLaAm502gZnZXR1aWR6Dl9qaW5qYTItY2FjaGUtKRTaCHRlbXBmaWxl2gpnZXR0ZW1wZGly2gJvc3I9AAAA2gdoYXNhdHRyclIAAADaBHBhdGjaBGpvaW7aBW1rZGly2gRzdGF02gdTX0lSV1hV2gdPU0Vycm9y2gVlcnJub9oGRUVYSVNU2gVjaG1vZNoFbHN0YXTaBnN0X3VpZNoHU19JU0RJUtoHc3RfbW9kZdoHU19JTU9ERSkHcgsAAAByUAAAAFoGdG1wZGly2gdkaXJuYW1lWgphY3R1YWxfZGly2gFlWg9hY3R1YWxfZGlyX3N0YXRyCgAAAHIKAAAAcgwAAAByTgAAANQAAABzOgAAAAABDgYIBAoBBAEKAQYCDgEOAgIBEgEQAQwBFAECAQ4BCgIOAQ4BEgIKARIBDgEUAgoCEAEQARQCBgJ6LkZpbGVTeXN0ZW1CeXRlY29kZUNhY2hlLl9nZXRfZGVmYXVsdF9jYWNoZV9kaXIpAnI5AAAAcgkAAABjAgAAAAAAAAACAAAABAAAAEMAAABzGgAAAHQAagFqAnwAagN8AGoEfAFqBWYBFgCDAlMAKQFOKQZyVQAAAHJXAAAAclgAAAByTAAAAHJNAAAAcggAAAApAnILAAAAcjkAAAByCgAAAHIKAAAAcgwAAADaE19nZXRfY2FjaGVfZmlsZW5hbWUDAQAAcwIAAAAAAXorRmlsZVN5c3RlbUJ5dGVjb2RlQ2FjaGUuX2dldF9jYWNoZV9maWxlbmFtZWMCAAAAAAAAAAQAAAAJAAAAQwAAAHM6AAAAfABqAHwBgwF9AnQBagJqA3wCgwFyNnQEfAJkAYMCjxB9A3wBagV8A4MBAQBXAGQAUQBSAFgAZABTACkCTtoCcmIpBnJnAAAAclUAAAByVwAAANoGZXhpc3Rz2gRvcGVuci0AAAApBHILAAAAcjkAAAByPgAAAHIiAAAAcgoAAAByCgAAAHIMAAAAci0AAAAGAQAAcwgAAAAAAQoCDAEMAXolRmlsZVN5c3RlbUJ5dGVjb2RlQ2FjaGUubG9hZF9ieXRlY29kZWMCAAAAAAAAAAMAAAAJAAAAQwAAAHMqAAAAdAB8AGoBfAGDAWQBgwKPEH0CfAFqAnwCgwEBAFcAZABRAFIAWABkAFMAKQJO2gJ3YikDcmoAAAByZwAAAHIwAAAAKQNyCwAAAHI5AAAAciIAAAByCgAAAHIKAAAAcgwAAAByOwAAAA0BAABzBAAAAAABEgF6JUZpbGVTeXN0ZW1CeXRlY29kZUNhY2hlLmR1bXBfYnl0ZWNvZGVjAQAAAAAAAAAEAAAADAAAAEMAAABzZgAAAGQBZAJsAG0BfQEBAHQCagN0AGoEfABqBYMBfABqBmQEFgCDAn0CeDp8AkQAXTJ9A3kYfAF0AGoHagh8AGoFfAODAoMBAQBXAHEsBAB0CWsKclwBAAEAAQBZAHEsWABxLFcAZABTACkFTnIBAAAAKQHaBnJlbW92ZdoBKikBcm0AAAApCnJVAAAAcmwAAADaB2ZubWF0Y2jaBmZpbHRlctoHbGlzdGRpcnJMAAAAck0AAAByVwAAAHJYAAAAclwAAAApBHILAAAAcmwAAADaBWZpbGVzcj4AAAByCgAAAHIKAAAAcgwAAAByPAAAABEBAABzDgAAAAAEDAIaAQoBAgEYAQ4Beh1GaWxlU3lzdGVtQnl0ZWNvZGVDYWNoZS5jbGVhcikCTnJLAAAAKQ5yEQAAAHISAAAAchMAAAByNgAAAHIWAAAAchcAAAByFAAAAHIgAAAAck4AAAByHAAAAHJnAAAAci0AAAByOwAAAHI8AAAAcgoAAAByCgAAAHIKAAAAcgwAAABySgAAALoAAABzEAAAAAgQBAMMAQ4GDi8QAxAHEARySgAAAGMAAAAAAAAAAAAAAAAGAAAAQAAAAHNMAAAAZQBaAWQAWgJkAVoDZA5kBWUEZQVqBmUHGQBlCGQGnARkB2QIhAVaCWUKZANkCZwCZApkC4QEWgtlCmQDZAmcAmQMZA2EBFoMZANTACkP2hZNZW1jYWNoZWRCeXRlY29kZUNhY2hlYScHAABUaGlzIGNsYXNzIGltcGxlbWVudHMgYSBieXRlY29kZSBjYWNoZSB0aGF0IHVzZXMgYSBtZW1jYWNoZSBjYWNoZSBmb3IKICAgIHN0b3JpbmcgdGhlIGluZm9ybWF0aW9uLiAgSXQgZG9lcyBub3QgZW5mb3JjZSBhIHNwZWNpZmljIG1lbWNhY2hlIGxpYnJhcnkKICAgICh0dW1teSdzIG1lbWNhY2hlIG9yIGNtZW1jYWNoZSkgYnV0IHdpbGwgYWNjZXB0IGFueSBjbGFzcyB0aGF0IHByb3ZpZGVzCiAgICB0aGUgbWluaW1hbCBpbnRlcmZhY2UgcmVxdWlyZWQuCgogICAgTGlicmFyaWVzIGNvbXBhdGlibGUgd2l0aCB0aGlzIGNsYXNzOgoKICAgIC0gICBgY2FjaGVsaWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9wYWxsZXRzL2NhY2hlbGliPmBfCiAgICAtICAgYHB5dGhvbi1tZW1jYWNoZWQgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXRob24tbWVtY2FjaGVkLz5gXwoKICAgIChVbmZvcnR1bmF0ZWx5IHRoZSBkamFuZ28gY2FjaGUgaW50ZXJmYWNlIGlzIG5vdCBjb21wYXRpYmxlIGJlY2F1c2UgaXQKICAgIGRvZXMgbm90IHN1cHBvcnQgc3RvcmluZyBiaW5hcnkgZGF0YSwgb25seSB0ZXh0LiBZb3UgY2FuIGhvd2V2ZXIgcGFzcwogICAgdGhlIHVuZGVybHlpbmcgY2FjaGUgY2xpZW50IHRvIHRoZSBieXRlY29kZSBjYWNoZSB3aGljaCBpcyBhdmFpbGFibGUKICAgIGFzIGBkamFuZ28uY29yZS5jYWNoZS5jYWNoZS5fY2xpZW50YC4pCgogICAgVGhlIG1pbmltYWwgaW50ZXJmYWNlIGZvciB0aGUgY2xpZW50IHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IgaXMgdGhpczoKCiAgICAuLiBjbGFzczo6IE1pbmltYWxDbGllbnRJbnRlcmZhY2UKCiAgICAgICAgLi4gbWV0aG9kOjogc2V0KGtleSwgdmFsdWVbLCB0aW1lb3V0XSkKCiAgICAgICAgICAgIFN0b3JlcyB0aGUgYnl0ZWNvZGUgaW4gdGhlIGNhY2hlLiAgYHZhbHVlYCBpcyBhIHN0cmluZyBhbmQKICAgICAgICAgICAgYHRpbWVvdXRgIHRoZSB0aW1lb3V0IG9mIHRoZSBrZXkuICBJZiB0aW1lb3V0IGlzIG5vdCBwcm92aWRlZAogICAgICAgICAgICBhIGRlZmF1bHQgdGltZW91dCBvciBubyB0aW1lb3V0IHNob3VsZCBiZSBhc3N1bWVkLCBpZiBpdCdzCiAgICAgICAgICAgIHByb3ZpZGVkIGl0J3MgYW4gaW50ZWdlciB3aXRoIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0aGUgY2FjaGUKICAgICAgICAgICAgaXRlbSBzaG91bGQgZXhpc3QuCgogICAgICAgIC4uIG1ldGhvZDo6IGdldChrZXkpCgogICAgICAgICAgICBSZXR1cm5zIHRoZSB2YWx1ZSBmb3IgdGhlIGNhY2hlIGtleS4gIElmIHRoZSBpdGVtIGRvZXMgbm90CiAgICAgICAgICAgIGV4aXN0IGluIHRoZSBjYWNoZSB0aGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYE5vbmVgLgoKICAgIFRoZSBvdGhlciBhcmd1bWVudHMgdG8gdGhlIGNvbnN0cnVjdG9yIGFyZSB0aGUgcHJlZml4IGZvciBhbGwga2V5cyB0aGF0CiAgICBpcyBhZGRlZCBiZWZvcmUgdGhlIGFjdHVhbCBjYWNoZSBrZXkgYW5kIHRoZSB0aW1lb3V0IGZvciB0aGUgYnl0ZWNvZGUgaW4KICAgIHRoZSBjYWNoZSBzeXN0ZW0uICBXZSByZWNvbW1lbmQgYSBoaWdoIChvciBubykgdGltZW91dC4KCiAgICBUaGlzIGJ5dGVjb2RlIGNhY2hlIGRvZXMgbm90IHN1cHBvcnQgY2xlYXJpbmcgb2YgdXNlZCBpdGVtcyBpbiB0aGUgY2FjaGUuCiAgICBUaGUgY2xlYXIgbWV0aG9kIGlzIGEgbm8tb3BlcmF0aW9uIGZ1bmN0aW9uLgoKICAgIC4uIHZlcnNpb25hZGRlZDo6IDIuNwogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgaWdub3JpbmcgbWVtY2FjaGUgZXJyb3JzIHRocm91Z2ggdGhlCiAgICAgICBgaWdub3JlX21lbWNhY2hlX2Vycm9yc2AgcGFyYW1ldGVyLgogICAg+hBqaW5qYTIvYnl0ZWNvZGUvTlRyBwAAACkE2gZjbGllbnTaBnByZWZpeHIPAAAA2hZpZ25vcmVfbWVtY2FjaGVfZXJyb3JzYwUAAAAAAAAABQAAAAIAAABDAAAAcxwAAAB8AXwAXwB8AnwAXwF8A3wAXwJ8BHwAXwNkAFMAKQFOKQRydAAAAHJ1AAAAcg8AAABydgAAACkFcgsAAABydAAAAHJ1AAAAcg8AAABydgAAAHIKAAAAcgoAAAByDAAAAHIgAAAATAEAAHMIAAAAAAcGAQYBBgF6H01lbWNhY2hlZEJ5dGVjb2RlQ2FjaGUuX19pbml0X18pAnI5AAAAcgkAAABjAgAAAAAAAAADAAAACwAAAEMAAABzRAAAAHkYfABqAGoBfABqAnwBagMXAIMBfQJXAG4cBAB0BGsKcjQBAAEAAQB8AGoFczCCAFkAbgxYAHwBagZ8AoMBAQBkAFMAKQFOKQdydAAAAHINAAAAcnUAAAByCAAAANoJRXhjZXB0aW9ucnYAAAByMgAAACkDcgsAAAByOQAAAHIhAAAAcgoAAAByCgAAAHIMAAAAci0AAABYAQAAcwwAAAAAAQIBGAEOAQYBCAJ6JE1lbWNhY2hlZEJ5dGVjb2RlQ2FjaGUubG9hZF9ieXRlY29kZWMCAAAAAAAAAAQAAAALAAAAQwAAAHNmAAAAfABqAHwBagEXAH0CfAFqAoMAfQN5MHwAagNkAGsJcjR8AGoEagV8AnwDfABqA4MDAQBuDnwAagRqBXwCfAODAgEAVwBuHAQAdAZrCnJgAQABAAEAfABqB3NcggBZAG4CWABkAFMAKQFOKQhydQAAAHIIAAAAcjUAAAByDwAAAHJ0AAAAchAAAABydwAAAHJ2AAAAKQRyCwAAAHI5AAAAcggAAAByDgAAAHIKAAAAcgoAAAByDAAAAHI7AAAAYQEAAHMSAAAAAAEMAQgCAgEKARQCEgEOAQYBeiRNZW1jYWNoZWRCeXRlY29kZUNhY2hlLmR1bXBfYnl0ZWNvZGUpA3JzAAAATlQpDXIRAAAAchIAAAByEwAAAHI2AAAAchQAAAByFgAAAHIXAAAAchgAAADaBGJvb2xyIAAAAHIcAAAAci0AAAByOwAAAHIKAAAAcgoAAAByCgAAAHIMAAAAcnIAAAAfAQAAcwwAAAAIKwQFAAEAARwHEAlycgAAACkgcjYAAAByXQAAAHJuAAAAcigAAAByVQAAAHImAAAAcloAAADaA3N5c3JTAAAA2gZ0eXBpbmdyFgAAANoHaGFzaGxpYnICAAAA2gJpb3IDAAAA2gV0eXBlc3IEAAAA2g1UWVBFX0NIRUNLSU5HWhF0eXBpbmdfZXh0ZW5zaW9uc9oCdGVyHQAAAHIGAAAA2ghQcm90b2NvbHIHAAAAWgpiY192ZXJzaW9u2gVkdW1wc9oMdmVyc2lvbl9pbmZvciUAAAByHAAAAHI4AAAAckoAAABycgAAAHIKAAAAcgoAAAByCgAAAHIMAAAA2gg8bW9kdWxlPgcAAABzLAAAAAQBCAEIAQgBCAEIAQgBCAEIAQgBDAEMAQwCBgEIAQwCEggEBzAEDjkOVRBl