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nAJkFWQWhARaD2QCUwApGNoNQnl0ZWNvZGVDYWNoZWHeAwAAVG8gaW1wbGVtZW50IHlvdXIgb3duIGJ5dGVjb2RlIGNhY2hlIHlvdSBoYXZlIHRvIHN1YmNsYXNzIHRoaXMgY2xhc3MKICAgIGFuZCBvdmVycmlkZSA6bWV0aDpgbG9hZF9ieXRlY29kZWAgYW5kIDptZXRoOmBkdW1wX2J5dGVjb2RlYC4gIEJvdGggb2YKICAgIHRoZXNlIG1ldGhvZHMgYXJlIHBhc3NlZCBhIDpjbGFzczpgfmppbmphMi5iY2NhY2hlLkJ1Y2tldGAuCgogICAgQSB2ZXJ5IGJhc2ljIGJ5dGVjb2RlIGNhY2hlIHRoYXQgc2F2ZXMgdGhlIGJ5dGVjb2RlIG9uIHRoZSBmaWxlIHN5c3RlbTo6CgogICAgICAgIGZyb20gb3MgaW1wb3J0IHBhdGgKCiAgICAgICAgY2xhc3MgTXlDYWNoZShCeXRlY29kZUNhY2hlKToKCiAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXJlY3RvcnkpOgogICAgICAgICAgICAgICAgc2VsZi5kaXJlY3RvcnkgPSBkaXJlY3RvcnkKCiAgICAgICAgICAgIGRlZiBsb2FkX2J5dGVjb2RlKHNlbGYsIGJ1Y2tldCk6CiAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHBhdGguam9pbihzZWxmLmRpcmVjdG9yeSwgYnVja2V0LmtleSkKICAgICAgICAgICAgICAgIGlmIHBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgICAgIGJ1Y2tldC5sb2FkX2J5dGVjb2RlKGYpCgogICAgICAgICAgICBkZWYgZHVtcF9ieXRlY29kZShzZWxmLCBidWNrZXQpOgogICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBwYXRoLmpvaW4oc2VsZi5kaXJlY3RvcnksIGJ1Y2tldC5rZXkpCiAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicpIGFzIGY6CiAgICAgICAgICAg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CZwCZAxkDYQEWgxkA1MAKQ/aFk1lbWNhY2hlZEJ5dGVjb2RlQ2FjaGVhJwcAAFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGJ5dGVjb2RlIGNhY2hlIHRoYXQgdXNlcyBhIG1lbWNhY2hlIGNhY2hlIGZvcgogICAgc3RvcmluZyB0aGUgaW5mb3JtYXRpb24uICBJdCBkb2VzIG5vdCBlbmZvcmNlIGEgc3BlY2lmaWMgbWVtY2FjaGUgbGlicmFyeQogICAgKHR1bW15J3MgbWVtY2FjaGUgb3IgY21lbWNhY2hlKSBidXQgd2lsbCBhY2NlcHQgYW55IGNsYXNzIHRoYXQgcHJvdmlkZXMKICAgIHRoZSBtaW5pbWFsIGludGVyZmFjZSByZXF1aXJlZC4KCiAgICBMaWJyYXJpZXMgY29tcGF0aWJsZSB3aXRoIHRoaXMgY2xhc3M6CgogICAgLSAgIGBjYWNoZWxpYiA8aHR0cHM6Ly9naXRodWIuY29tL3BhbGxldHMvY2FjaGVsaWI+YF8KICAgIC0gICBgcHl0aG9uLW1lbWNhY2hlZCA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5dGhvbi1tZW1jYWNoZWQvPmBfCgogICAgKFVuZm9ydHVuYXRlbHkgdGhlIGRqYW5nbyBjYWNoZSBpbnRlcmZhY2UgaXMgbm90IGNvbXBhdGlibGUgYmVjYXVzZSBpdAogICAgZG9lcyBub3Qgc3VwcG9ydCBzdG9yaW5nIGJpbmFyeSBkYXRhLCBvbmx5IHRleHQuIFlvdSBjYW4gaG93ZXZlciBwYXNzCiAgICB0aGUgdW5kZXJseWluZyBjYWNoZSBjbGllbnQgdG8gdGhlIGJ5dGVjb2RlIGNhY2hlIHdoaWNoIGlzIGF2YWlsYWJsZQogICAgYXMgYGRqYW5nby5jb3JlLmNhY2hlLmNhY2hlLl9jbGllbnRgLikKCiAgICBUaGUgbWluaW1hbCBpbnRlcmZhY2UgZm9yIHRoZSBjbGllbnQgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvciBpcyB0aGlzOgoKICAgIC4uIGNsYXNzOjogTWluaW1hbENsaWVudEludGVyZmFjZQoKICAgICAgICAuLiBtZXRob2Q6OiBzZXQoa2V5LCB2YWx1ZVssIHRpbWVvdXRdKQoKICAgICAgICAgICAgU3RvcmVzIHRoZSBieXRlY29kZSBpbiB0aGUgY2FjaGUuICBgdmFsdWVgIGlzIGEgc3RyaW5nIGFuZAogICAgICAgICAgICBgdGltZW91dGAgdGhlIHRpbWVvdXQgb2YgdGhlIGtleS4gIElmIHRpbWVvdXQgaXMgbm90IHByb3ZpZGVkCiAgICAgICAgICAgIGEgZGVmYXVsdCB0aW1lb3V0IG9yIG5vIHRpbWVvdXQgc2hvdWxkIGJlIGFzc3VtZWQsIGlmIGl0J3MKICAgICAgICAgICAgcHJvdmlkZWQgaXQncyBhbiBpbnRlZ2VyIHdpdGggdGhlIG51bWJlciBvZiBzZWNvbmRzIHRoZSBjYWNoZQogICAgICAgICAgICBpdGVtIHNob3VsZCBleGlzdC4KCiAgICAgICAgLi4gbWV0aG9kOjogZ2V0KGtleSkKCiAgICAgICAgICAgIFJldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgY2FjaGUga2V5LiAgSWYgdGhlIGl0ZW0gZG9lcyBub3QKICAgICAgICAgICAgZXhpc3QgaW4gdGhlIGNhY2hlIHRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBgTm9uZWAuCgogICAgVGhlIG90aGVyIGFyZ3VtZW50cyB0byB0aGUgY29uc3RydWN0b3IgYXJlIHRoZSBwcmVmaXggZm9yIGFsbCBrZXlzIHRoYXQKICAgIGlzIGFkZGVkIGJlZm9yZSB0aGUgYWN0dWFsIGNhY2hlIGtleSBhbmQgdGhlIHRpbWVvdXQgZm9yIHRoZSBieXRlY29kZSBpbgogICAgdGhlIGNhY2hlIHN5c3RlbS4gIFdlIHJlY29tbWVuZCBhIGhpZ2ggKG9yIG5vKSB0aW1lb3V0LgoKICAgIFRoaXMgYnl0ZWNvZGUgY2FjaGUgZG9lcyBub3Qgc3VwcG9ydCBjbGVhcmluZyBvZiB1c2VkIGl0ZW1zIGluIHRoZSBjYWNoZS4KICAgIFRoZSBjbGVhciBtZXRob2QgaXMgYSBuby1vcGVyYXRpb24gZnVuY3Rpb24uCgogICAgLi4gdmVyc2lvbmFkZGVkOjogMi43CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBpZ25vcmluZyBtZW1jYWNoZSBlcnJvcnMgdGhyb3VnaCB0aGUKICAgICAgIGBpZ25vcmVfbWVtY2FjaGVfZXJyb3JzYCBwYXJhbWV0ZXIuCiAgICD6EGppbmphMi9ieXRlY29kZS9OVHIHAAAAqQTaBmNsaWVudHJ4AAAAchAAAADaFmlnbm9yZV9tZW1jYWNoZV9lcnJvcnNjBQAAAAAAAAAAAAAABQAAAAIAAABDAAAAcxwAAAB8AXwAXwB8AnwAXwF8A3wAXwJ8BHwAXwNkAFMAcgoAAAByiQAAACkFcgwAAAByigAAAHJ4AAAAchAAAAByiwAAAHILAAAAcgsAAAByDQAAAHIhAAAAdgEAAHMIAAAAAAcGAQYBBgF6H01lbWNhY2hlZEJ5dGVjb2RlQ2FjaGUuX19pbml0X19yPQAAAGMCAAAAAAAAAAAAAAADAAAACAAAAEMAAABzQgAAAHoYfABqAKABfABqAnwBagMXAKEBfQJXAG4aBAB0BHkyAQABAAEAfABqBXMuggBZAG4MMAB8AaAGfAKhAQEAZABTAHIKAAAAKQdyigAAAHIOAAAAcngAAAByCAAAANoJRXhjZXB0aW9ucosAAAByNQAAACkDcgwAAAByPgAAAHIjAAAAcgsAAAByCwAAAHINAAAAcjAAAACCAQAAcwwAAAAAAQIBGAEMAQYBCAJ6JE1lbWNhY2hlZEJ5dGVjb2RlQ2FjaGUubG9hZF9ieXRlY29kZWMCAAAAAAAAAAAAAAAEAAAACAAAAEMAAABzZAAAAHwAagB8AWoBFwB9AnwBoAKhAH0DejB8AGoDZAB1AXI0fABqBKAFfAJ8A3wAagOhAwEAbg58AGoEoAV8AnwDoQIBAFcAbhoEAHQGeV4BAAEAAQB8AGoHc1qCAFkAbgIwAGQAUwByCgAAACkIcngAAAByCAAAAHI4AAAAchAAAAByigAAAHIRAAAAcowAAAByiwAAACkEcgwAAAByPgAAAHIIAAAAcg8AAAByCwAAAHILAAAAcg0AAAByQgAAAIsBAABzEgAAAAABDAEIAgIBCgEUAhIBDAEGAXokTWVtY2FjaGVkQnl0ZWNvZGVDYWNoZS5kdW1wX2J5dGVjb2RlKQNyiAAAAE5UKQ1yEgAAAHITAAAAchQAAAByOQAAAHIVAAAAchcAAAByGAAAAHIZAAAA2gRib29sciEAAAByHQAAAHIwAAAAckIAAAByCwAAAHILAAAAcgsAAAByDQAAAHKHAAAASQEAAHMYAAAACAEELwABAAEA+wICAgECAQgBAvsMDBAJcocAAAApIHI5AAAAcmUAAABygwAAAHIrAAAAcl0AAAByKQAAAHJiAAAA2gNzeXNyWwAAANoGdHlwaW5nchcAAADaB2hhc2hsaWJyAgAAANoCaW9yAwAAANoFdHlwZXNyBAAAANoNVFlQRV9DSEVDS0lOR1oRdHlwaW5nX2V4dGVuc2lvbnPaAnRlch4AAAByBgAAANoIUHJvdG9jb2xyBwAAAFoKYmNfdmVyc2lvbtoFZHVtcHPaDHZlcnNpb25faW5mb3IoAAAAch0AAAByPAAAAHJSAAAAcocAAAByCwAAAHILAAAAcgsAAAByDQAAANoIPG1vZHVsZT4BAAAAczgAAAAEBwgBCAEIAQgBCAEIAQgBCAEIAQwBDAEMAgYBCAEMAhIIBAUCAQr/AgIe/gL/AgcOOQ5VEH8AEA==