REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 87.93 KB
Close
/usr/lib/python3.6/site-packages/OpenSSL/__pycache__/crypto.cpython-36.pyc
Text
Base64
Mw0NCqsXRlyUiAEA4wAAAAAAAAAAAAAAACQAAABAAAAAc6wDAABkAGQBbABaAGQAZAJsAW0CWgIBAGQAZANsA20EWgQBAGQAZARsBW0GWgZtB1oHbQhaCG0JWgltCloKbQtaCwEAZABkBWwMbQ1aDm0PWhBtEVoSAQBkAGQGbBNtFFoUAQBkAGQHbBVtFloWbRdaFwEAZABkCGwYbRlaGQEAZABkCWwabRtaHG0dWh5tH1ogbSFaIm0jWiRtJVombSdaKG0pWioBAGQKZAtkDGQNZA5kD2QQZBFkEmQTZBRkFWQWZBdkGGQZZBpkG2QcZB1kHmQfZCBkIWQiZCNkJGQlZCZkJ2QoZClkKmQrZCxkLWckWitlHmosWi1lHmouWi9kblowZR5qMVoyZR5qM1o0ZR5qNVo2ZR5qN1o4RwBkMWQPhABkD2U5gwNaOmUEZSBlOoMCWjtlKmU6gwFaPGQyZDOEAFo9ZDRkNYQAWj5kb2Q2ZDeEAVo/ZDhkOYQAWkBkOmQ7hABaQWQ8ZD2EAFpCRwBkPmQ/hABkP2VDgwNaREcAZEBkEIQAZBBlQ4MDWkVlGWVFZUZkQWVHgwRaSEcAZEJkQ4QAZENlQ4MDWklkRGQRhABaSmRFZBKEAFpLRwBkRmQThABkE2VDgwNaTGUZZUxlRmRHZUeDBFpNRwBkSGQUhABkFGVDgwNaTmUZZU5lRmRJZUeDBFpPRwBkSmQVhABkFWVDgwNaUGUZZVBlRmRLZUeDBFpRRwBkTGQWhABkFmVDgwNaUmUZZVJlRmRNZUeDBFpTRwBkTmQXhABkF2VDgwNaVEcAZE9kGIQAZBhlQ4MDWlVlGWVVZUZkUGVHgwRaVkcAZFFkGYQAZBllOYMDWldHAGRSZBqEAGQaZUODA1pYZFNkG4QAWllkVGQchABaWmRVZB2EAFpbZHBkVmQehAFaXEcAZFdkH4QAZB9lQ4MDWl1HAGRYZCCEAGQgZUODA1peZRllXmVGZFllR4MEWl9HAGRaZCGEAGQhZUODA1pgZRllYGVGZFtlR4MEWmFHAGRcZCKEAGQiZUODA1piZRllYmVGZF1lR4MEWmNHAGReZCOEAGQjZUODA1pkZRllZGVGZF9lR4MEWmVHAGRgZGGEAGRhZUODA1pmZGJkJIQAWmdkcWRjZCWEAVpoZGRkJoQAWmlkZWQnhABaamRmZCiEAFprZGdkKYQAWmxkaGQqhABabWRpZCuEAFpuZGpkLIQAWm9kcmRrZC2EAVpwZR5qcYMAAQBlHmpygwABAGUeanNkbIMBAQBkAVMAKXPpAAAAAE4pAdoJYjE2ZW5jb2RlKQHaB3BhcnRpYWwpBtoGX19lcV9f2gZfX25lX1/aBl9fbHRfX9oGX19sZV9f2gZfX2d0X1/aBl9fZ2VfXykD2g1pbnRlZ2VyX3R5cGVz2gl0ZXh0X3R5cGXaA1BZMykB2gR4NTA5KQLaA2RzYdoDcnNhKQHaCmRlcHJlY2F0ZWQpCNoDZmZp2gNsaWLaGmV4Y2VwdGlvbl9mcm9tX2Vycm9yX3F1ZXVl2gtieXRlX3N0cmluZ9oGbmF0aXZl2gtVTlNQRUNJRklFRNoWdGV4dF90b19ieXRlc19hbmRfd2FybtoLbWFrZV9hc3NlcnTaDEZJTEVUWVBFX1BFTdoNRklMRVRZUEVfQVNOMdoNRklMRVRZUEVfVEVYVNoIVFlQRV9SU0HaCFRZUEVfRFNB2gVFcnJvctoEUEtledoTZ2V0X2VsbGlwdGljX2N1cnZlc9oSZ2V0X2VsbGlwdGljX2N1cnZl2ghYNTA5TmFtZdoNWDUwOUV4dGVuc2lvbtoHWDUwOVJlcdoEWDUwOdoOWDUwOVN0b3JlRmxhZ3PaCVg1MDlTdG9yZdoVWDUwOVN0b3JlQ29udGV4dEVycm9y2hBYNTA5U3RvcmVDb250ZXh02hBsb2FkX2NlcnRpZmljYXRl2hBkdW1wX2NlcnRpZmljYXRl2g5kdW1wX3B1YmxpY2tledoPZHVtcF9wcml2YXRla2V52gdSZXZva2Vk2gNDUkzaBVBLQ1M32gZQS0NTMTLaDE5ldHNjYXBlU1BLSdoObG9hZF9wdWJsaWNrZXnaD2xvYWRfcHJpdmF0ZWtledoYZHVtcF9jZXJ0aWZpY2F0ZV9yZXF1ZXN02hhsb2FkX2NlcnRpZmljYXRlX3JlcXVlc3TaBHNpZ27aBnZlcmlmedoIZHVtcF9jcmzaCGxvYWRfY3Js2g9sb2FkX3BrY3M3X2RhdGHaC2xvYWRfcGtjczEy6QIAAADpEAAAAOkBAAAAYwAAAAAAAAAAAAAAAAEAAABAAAAAcxAAAABlAFoBZABaAmQBWgNkAlMAKQNyHgAAAHo3CiAgICBBbiBlcnJvciBvY2N1cnJlZCBpbiBhbiBgT3BlblNTTC5jcnlwdG9gIEFQSS4KICAgIE4pBNoIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX9oHX19kb2NfX6kAckQAAAByRAAAAPocL3Vzci9saWIvcHl0aG9uMy42L2NyeXB0by5weXIeAAAATgAAAHMCAAAACANjAAAAAAAAAAABAAAAAgAAAEMAAABzEAAAAGQBZAJsAG0BfQABAHwAUwApA2FwAQAACiAgICBJbXBvcnRpbmcgdGhlIGJhY2tlbmQgZnJvbSBjcnlwdG9ncmFwaHkgaGFzIHRoZSBzaWRlIGVmZmVjdCBvZiBhY3RpdmF0aW5nCiAgICB0aGUgb3NyYW5kb20gZW5naW5lLiBUaGlzIG11dGF0ZXMgdGhlIGdsb2JhbCBzdGF0ZSBvZiBPcGVuU1NMIGluIHRoZQogICAgcHJvY2VzcyBhbmQgY2F1c2VzIGlzc3VlcyBmb3IgdmFyaW91cyBwcm9ncmFtcyB0aGF0IHVzZSBzdWJpbnRlcnByZXRlcnMgb3IKICAgIGVtYmVkIFB5dGhvbi4gQnkgcHV0dGluZyB0aGUgaW1wb3J0IGluIHRoaXMgZnVuY3Rpb24gd2UgY2FuIGF2b2lkCiAgICB0cmlnZ2VyaW5nIHRoaXMgc2lkZSBlZmZlY3QgdW5sZXNzIF9nZXRfYmFja2VuZCBpcyBjYWxsZWQuCiAgICByAQAAACkB2gdiYWNrZW5kKQJaLGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMub3BlbnNzbC5iYWNrZW5kckYAAAApAXJGAAAAckQAAAByRAAAAHJFAAAA2gxfZ2V0X2JhY2tlbmRYAAAAcwQAAAAACAwBckcAAABjAQAAAAAAAAABAAAAAwAAAEMAAABzEgAAAHQAZAF8AGYBFgCDAYIBZAJTACkDetAKICAgIEFuIE9wZW5TU0wgQVBJIGZhaWxlZCBzb21laG93LiAgQWRkaXRpb25hbGx5LCB0aGUgZmFpbHVyZSB3aGljaCB3YXMKICAgIGVuY291bnRlcmVkIGlzbid0IG9uZSB0aGF0J3MgZXhlcmNpc2VkIGJ5IHRoZSB0ZXN0IHN1aXRlIHNvIGZ1dHVyZSBiZWhhdmlvcgogICAgb2YgcHlPcGVuU1NMIGlzIG5vdyBzb21ld2hhdCBsZXNzIHByZWRpY3RhYmxlLgogICAgehJVbmtub3duICVzIGZhaWx1cmVOKQHaDFJ1bnRpbWVFcnJvcikB2gV3aGVyZXJEAAAAckQAAAByRQAAANoPX3VudGVzdGVkX2Vycm9yZAAAAHMCAAAAAAZySgAAAGMBAAAAAAAAAAQAAAAEAAAAQwAAAHNkAAAAfABkAWsIch50AGoBdABqAoMAgwF9AXQAagN9Am4odARqBWQCfACDAn0DdABqBnwDdAd8AIMBgwJ9AXwDZgFkA2QEhAF9AnQIfAF0BGoJawODAQEAdARqCnwBfAKDAn0BfAFTACkFetkKICAgIEFsbG9jYXRlIGEgbmV3IE9wZW5TU0wgbWVtb3J5IEJJTy4KCiAgICBBcnJhbmdlIGZvciB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgdG8gY2xlYW4gaXQgdXAgYXV0b21hdGljYWxseS4KCiAgICA6cGFyYW0gYnVmZmVyOiBOb25lIG9yIHNvbWUgYnl0ZXMgdG8gdXNlIHRvIHB1dCBpbnRvIHRoZSBCSU8gc28gdGhhdCB0aGV5CiAgICAgICAgY2FuIGJlIHJlYWQgb3V0LgogICAgTnoGY2hhcltdYwIAAAAAAAAAAgAAAAIAAABTAAAAcwoAAAB0AGoBfACDAVMAKQFOKQLaBF9saWLaCEJJT19mcmVlKQLaA2Jpb9oDcmVmckQAAAByRAAAAHJFAAAA2gRmcmVlfgAAAHMCAAAAAAF6Gl9uZXdfbWVtX2J1Zi48bG9jYWxzPi5mcmVlKQtySwAAANoHQklPX25ld9oJQklPX3NfbWVtckwAAADaBF9mZmnaA25ld1oPQklPX25ld19tZW1fYnVm2gNsZW7aD19vcGVuc3NsX2Fzc2VydNoETlVMTNoCZ2MpBNoGYnVmZmVyck0AAAByTwAAANoEZGF0YXJEAAAAckQAAAByRQAAANoMX25ld19tZW1fYnVmbQAAAHMSAAAAAAkIAQ4BCAIMARADDAMOAgwBcloAAABjAQAAAAAAAAADAAAAAwAAAEMAAABzLgAAAHQAagFkAYMBfQF0AmoDfAB8AYMCfQJ0AGoEfAFkAhkAfAKDAmQDZAOFAhkAUwApBHpPCiAgICBDb3B5IHRoZSBjb250ZW50cyBvZiBhbiBPcGVuU1NMIEJJTyBvYmplY3QgaW50byBhIFB5dGhvbiBieXRlIHN0cmluZy4KICAgIHoGY2hhcioqcgEAAABOKQVyUgAAAHJTAAAAcksAAABaEEJJT19nZXRfbWVtX2RhdGFyWAAAACkDck0AAADaDXJlc3VsdF9idWZmZXJaDWJ1ZmZlcl9sZW5ndGhyRAAAAHJEAAAAckUAAADaDl9iaW9fdG9fc3RyaW5nhwAAAHMGAAAAAAQKAQwBclwAAABjAgAAAAAAAAADAAAAAwAAAEMAAABzMgAAAHQAfAF0AYMCcxJ0AmQBgwGCAXQDagR8AHwBgwJ9AnwCZAJrAnIudAVkA4MBggFkBFMAKQVh9AEAAAogICAgVGhlIHRoZSB0aW1lIHZhbHVlIG9mIGFuIEFTTjEgdGltZSBvYmplY3QuCgogICAgQHBhcmFtIGJvdW5kYXJ5OiBBbiBBU04xX1RJTUUgcG9pbnRlciAob3IgYW4gb2JqZWN0IHNhZmVseQogICAgICAgIGNhc3RhYmxlIHRvIHRoYXQgdHlwZSkgd2hpY2ggd2lsbCBoYXZlIGl0cyB2YWx1ZSBzZXQuCiAgICBAcGFyYW0gd2hlbjogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlc2lyZWQgdGltZSB2YWx1ZS4KCiAgICBAcmFpc2UgVHlwZUVycm9yOiBJZiBDe3doZW59IGlzIG5vdCBhIEx7Ynl0ZXN9IHN0cmluZy4KICAgIEByYWlzZSBWYWx1ZUVycm9yOiBJZiBDe3doZW59IGRvZXMgbm90IHJlcHJlc2VudCBhIHRpbWUgaW4gdGhlIHJlcXVpcmVkCiAgICAgICAgZm9ybWF0LgogICAgQHJhaXNlIFJ1bnRpbWVFcnJvcjogSWYgdGhlIHRpbWUgdmFsdWUgY2Fubm90IGJlIHNldCBmb3Igc29tZSBvdGhlcgogICAgICAgICh1bnNwZWNpZmllZCkgcmVhc29uLgogICAgehp3aGVuIG11c3QgYmUgYSBieXRlIHN0cmluZ3IBAAAAeg5JbnZhbGlkIHN0cmluZ04pBtoKaXNpbnN0YW5jZdoFYnl0ZXPaCVR5cGVFcnJvcnJLAAAAWhRBU04xX1RJTUVfc2V0X3N0cmluZ9oKVmFsdWVFcnJvcikD2ghib3VuZGFyedoEd2hlbtoKc2V0X3Jlc3VsdHJEAAAAckQAAAByRQAAANoOX3NldF9hc24xX3RpbWWQAAAAcwoAAAAADgoBCAIMAQgBcmQAAABjAQAAAAAAAAAFAAAABAAAAEMAAABzpgAAAHQAagFkAXwAgwJ9AXQCagN8AYMBZAJrAnIeZANTAHQCagR8AYMBdAJqBWsCcj50AGoGdAJqB3wBgwGDAVMAdABqCGQEgwF9AnQCagl8AHwCgwIBAHwCZAIZAHQAagprAnJsdAtkBYMBAQBuNnQAagFkAXwCZAIZAIMCfQF0AmoHfAGDAX0DdABqBnwDgwF9BHQCagx8AmQCGQCDAQEAfARTAGQDUwApBmFdAQAACiAgICBSZXRyaWV2ZSB0aGUgdGltZSB2YWx1ZSBvZiBhbiBBU04xIHRpbWUgb2JqZWN0LgoKICAgIEBwYXJhbSB0aW1lc3RhbXA6IEFuIEFTTjFfR0VORVJBTElaRURUSU1FKiAob3IgYW4gb2JqZWN0IHNhZmVseSBjYXN0YWJsZSB0bwogICAgICAgIHRoYXQgdHlwZSkgZnJvbSB3aGljaCB0aGUgdGltZSB2YWx1ZSB3aWxsIGJlIHJldHJpZXZlZC4KCiAgICBAcmV0dXJuOiBUaGUgdGltZSB2YWx1ZSBmcm9tIEN7dGltZXN0YW1wfSBhcyBhIEx7Ynl0ZXN9IHN0cmluZyBpbiBhIGNlcnRhaW4KICAgICAgICBmb3JtYXQuICBPciBDe05vbmV9IGlmIHRoZSBvYmplY3QgY29udGFpbnMgbm8gdGltZSB2YWx1ZS4KICAgIHoMQVNOMV9TVFJJTkcqcgEAAABOehZBU04xX0dFTkVSQUxJWkVEVElNRSoq2hxBU04xX1RJTUVfdG9fZ2VuZXJhbGl6ZWR0aW1lKQ1yUgAAANoEY2FzdHJLAAAA2hJBU04xX1NUUklOR19sZW5ndGhaEEFTTjFfU1RSSU5HX3R5cGVaFlZfQVNOMV9HRU5FUkFMSVpFRFRJTUXaBnN0cmluZ9oQQVNOMV9TVFJJTkdfZGF0YXJTAAAAcmUAAAByVgAAAHJKAAAAWhlBU04xX0dFTkVSQUxJWkVEVElNRV9mcmVlKQVaCXRpbWVzdGFtcFoQc3RyaW5nX3RpbWVzdGFtcFoV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ICAgICAgOnR5cGUgdHlwZTogOnB5OmRhdGE6YFRZUEVfUlNBYCBvciA6cHk6ZGF0YTpgVFlQRV9EU0FgCiAgICAgICAgOnBhcmFtIGJpdHM6IFRoZSBudW1iZXIgb2YgYml0cy4KICAgICAgICA6dHlwZSBiaXRzOiA6cHk6ZGF0YTpgaW50YCBgYD49IDBgYAogICAgICAgIDpyYWlzZXMgVHlwZUVycm9yOiBJZiA6cHk6ZGF0YTpgdHlwZWAgb3IgOnB5OmRhdGE6YGJpdHNgIGlzbid0CiAgICAgICAgICAgIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLgogICAgICAgIDpyYWlzZXMgVmFsdWVFcnJvcjogSWYgdGhlIG51bWJlciBvZiBiaXRzIGlzbid0IGFuIGludGVnZXIgb2YKICAgICAgICAgICAgdGhlIGFwcHJvcHJpYXRlIHNpemUuCiAgICAgICAgOnJldHVybjogYGBOb25lYGAKICAgICAgICB6F3R5cGUgbXVzdCBiZSBhbiBpbnRlZ2VyehdiaXRzIG11c3QgYmUgYW4gaW50ZWdlcnIBAAAAehZJbnZhbGlkIG51bWJlciBvZiBiaXRzcj8AAAB6EE5vIHN1Y2gga2V5IHR5cGVUTikacl0AAADaA2ludHJfAAAAchwAAAByYAAAAHJLAAAA2gZCTl9uZXdyUgAAAHJXAAAA2gdCTl9mcmVlWgtCTl9zZXRfd29yZFoGUlNBX0Y0WgdSU0FfbmV3WhNSU0FfZ2VuZXJhdGVfa2V5X2V4clYAAAByVQAAAFoTRVZQX1BLRVlfYXNzaWduX1JTQXJ2AAAAch0AAABaB0RTQV9uZXdaCERTQV9mcmVlWhpEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leFoQRFNBX2dlbmVyYXRlX2tleVoRRVZQX1BLRVlfc2V0MV9EU0FyHgAAAHJ3AAAAKQhybgAAANoEdHlwZdoEYml0c1oIZXhwb25lbnRyDwAAANoGcmVzdWx0cg4AAADaA3Jlc3JEAAAAckQAAAByRQAAANoMZ2VuZXJhdGVfa2V5DwEAAHM0AAAAABAKAQgCCgEIAggBCAEIAwgBDgEOAggCEgEMAg4BDgIKAQgBDgIOAQQBGgIMAhIBGAIIAnoRUEtleS5nZW5lcmF0ZV9r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bQF9AQEAdAKDAH0CfAF8AnwAagODAlMAKQN6rgogICAgICAgIEV4cG9ydCBhcyBhIGBgY3J5cHRvZ3JhcGh5YGAgY2VydGlmaWNhdGUgc2lnbmluZyByZXF1ZXN0LgoKICAgICAgICA6cnR5cGU6IGBgY3J5cHRvZ3JhcGh5Lng1MDkuQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdGBgCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDE3LjEuMAogICAgICAgIHIBAAAAKQHaGl9DZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0KQTaKWNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMub3BlbnNzbC54NTA5cuMAAAByRwAAAHLgAAAAKQNybgAAAHLjAAAAckYAAAByRAAAAHJEAAAAckUAAADaD3RvX2NyeXB0b2dyYXBoeXUDAABzBgAAAAAIDAMGAXoXWDUwOVJlcS50b19jcnlwdG9ncmFwaHljAgAAAAAAAAADAAAAAwAAAEMAAABzJgAAAHQAfAF0AWoCgwJzFHQDZAGDAYIBfACDAH0CfAFqBHwCXwV8AlMAKQJhGwEAAAogICAgICAgIENvbnN0cnVjdCBiYXNlZCBvbiBhIGBgY3J5cHRvZ3JhcGh5YGAgKmNyeXB0b19yZXEqLgoKICAgICAgICA6cGFyYW0gY3J5cHRvX3JlcTogQSBgYGNyeXB0b2dyYXBoeWBgIFguNTA5IGNlcnRpZmljYXRlIHNpZ25pbmcgcmVxdWVzdAogICAgICAgIDp0eXBlIGNyeXB0b19yZXE6IGBgY3J5cHRvZ3JhcGh5Lng1MDkuQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdGBgCgogICAgICAgIDpydHlwZTogWDUwOVJlcQoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxNy4xLjAKICAgICAgICB6JU11c3QgYmUgYSBjZXJ0aWZpY2F0ZSBzaWduaW5nIHJlcXVlc3QpBnJdAAAAcg0AAABaGUNlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3RyXwAAAFoJX3g1MDlfcmVxcuAAAAApA3J7AAAAWgpjcnlwdG9fcmVxcuIAAAByRAAAAHJEAAAAckUAAADaEWZyb21fY3J5cHRvZ3JhcGh5gwMA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Q1JJVElDQUxaF1g1MDlfVl9GTEFHX1g1MDlfU1RSSUNUWgtYNTA5X1NUUklDVFodWDUwOV9WX0ZMQUdfQUxMT1dfUFJPWFlfQ0VSVFNaEUFMTE9XX1BST1hZX0NFUlRTWhhYNTA5X1ZfRkxBR19QT0xJQ1lfQ0hFQ0taDFBPTElDWV9DSEVDS1obWDUwOV9WX0ZMQUdfRVhQTElDSVRfUE9MSUNZWg9FWFBMSUNJVF9QT0xJQ1laF1g1MDlfVl9GTEFHX0lOSElCSVRfTUFQWgtJTkhJQklUX01BUFoZWDUwOV9WX0ZMQUdfTk9USUZZX1BPTElDWVoNTk9USUZZX1BPTElDWVoeWDUwOV9WX0ZMQUdfQ0hFQ0tfU1NfU0lHTkFUVVJFWhJDSEVDS19TU19TSUdOQVRVUkVaG1g1MDlfVl9GTEFHX0NCX0lTU1VFUl9DSEVDS1oPQ0JfSVNTVUVSX0NIRUNLckQAAAByRAAAAHJEAAAAckUAAAByJgAAABEGAABzGAAAAAgJBAEGAQYBBgEGAQYBBgEGAQYBBgEGAWMAAAAAAAAAAAAAAAACAAAAQAAAAHM4AAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBGQFhABaBWQGZAeEAFoGZAhkCYQAWgdkCmQLhABaCGQMUwApDXInAAAAYboBAAAKICAgIEFuIFguNTA5IHN0b3JlLgoKICAgIEFuIFguNTA5IHN0b3JlIGlzIHVzZWQgdG8gZGVzY3JpYmUgYSBjb250ZXh0IGluIHdoaWNoIHRvIHZlcmlmeSBhCiAgICBjZXJ0aWZpY2F0ZS4gQSBkZXNjcmlwdGlvbiBvZiBhIGNvbnRleHQgbWF5IGluY2x1ZGUgYSBzZXQgb2YgY2VydGlmaWNhdGVzCiAgICB0byB0cnVzdCwgYSBzZXQgb2YgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0cywgdmVyaWZpY2F0aW9uIGZsYWdzIGFuZAogICAgbW9yZS4KCiAgICBBbiBYLjUwOSBzdG9yZSwgYmVpbmcgb25seSBhIGRlc2NyaXB0aW9uLCBjYW5ub3QgYmUgdXNlZCBieSBpdHNlbGYgdG8KICAgIHZlcmlmeSBhIGNlcnRpZmljYXRlLiBUbyBjYXJyeSBvdXQgdGhlIGFjdHVhbCB2ZXJpZmlj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IHR5cGUgKG9uZSBvZiA6Y29uc3Q6YEZJTEVUWVBFX1BFTWAsCiAgICAgICAgOmNvbnN0OmBGSUxFVFlQRV9BU04xYCwgb3IgOmNvbnN0OmBGSUxFVFlQRV9URVhUYCkKICAgIDpwYXJhbSBQS2V5IHBrZXk6IFRoZSBQS2V5IHRvIGR1bXAKICAgIDpwYXJhbSBjaXBoZXI6IChvcHRpb25hbCkgaWYgZW5jcnlwdGVkIFBFTSBmb3JtYXQsIHRoZSBjaXBoZXIgdG8gdXNlCiAgICA6cGFyYW0gcGFzc3BocmFzZTogKG9wdGlvbmFsKSBpZiBlbmNyeXB0ZWQgUEVNIGZvcm1hdCwgdGhpcyBjYW4gYmUgZWl0aGVyCiAgICAgICAgdGhlIHBhc3NwaHJhc2UgdG8gdXNlLCBvciBhIGNhbGxiYWNrIGZvciBwcm92aWRpbmcgdGhlIHBhc3NwaHJhc2UuCgogICAgOnJldHVybjogVGhlIGJ1ZmZlciB3aXRoIHRoZSBkdW1wZWQga2V5IGluCiAgICA6cnR5cGU6IGJ5dGVzCiAgICB6E3BrZXkgbXVzdCBiZSBhIFBLZXlOekRpZiBhIHZhbHVlIGlzIGdpdmVuIGZvciBjaXBoZXIgb25lIG11c3QgYWxzbyBiZSBnaXZlbiBmb3IgcGFzc3BocmFzZXoTSW52YWxpZCBjaXBoZXIgbmFtZXIBAAAAei1Pbmx5IFJTQSBrZXlzIGFyZSBzdXBwb3J0ZWQgZm9yIEZJTEVUWVBFX1RFWFR6Q3R5cGUgYXJndW1lbnQgbXVzdCBiZSBGSUxFVFlQRV9QRU0sIEZJTEVUWVBFX0FTTjEsIG9yIEZJTEVUWVBFX1RFWFQpHHJaAAAAcl0AAAByHwAAAHJfAAAAcksAAABaFEVWUF9nZXRfY2lwaGVyYnluYW1lcqsAAAByUgAAAHJWAAAAcmAAAADaEV9QYXNzcGhyYXNlSGVscGVychkAAABaGFBFTV93cml0ZV9iaW9fUHJpdmF0ZUtleXJ2AAAA2ghjYWxsYmFja9oNY2FsbGJhY2tfYXJnc9oQcmFpc2VfaWZfcHJvYmxlbXIaAAAAWhJpMmRfUHJpdmF0ZUtleV9iaW9yGwAAAHKKAAAAcoUAAAByVwAAAHKGAAAAcocAAABaCVJTQV9wcmludHJVAAAAclwAAAApCXKAAAAAcngAAABaBmNpcGhlctoKcGFzc3BocmFzZXJNAAAAWgpjaXBoZXJfb2Jq2gZoZWxwZXJyQAEAAHIPAAAAckQAAAByRAAAAHJFAAAAci0AAABmBwAAczwAAAAAEAYCCgEIAggBCAECAQYCDgEKAQoCBgIKAQgBBAEOAQwBCgEIARABCAESAQgCBAEKAQgCEAICAQYDDAJjAAAAAAAAAAAAAAAABwAAAEAAAABzagAAAGUAWgFkAFoCZAFaA2QCZANkBGQFZAZkB2QIZwdaBGQJZAqEAFoFZAtkDIQAWgZkDWQOhABaB2QPZBCEAFoIZBFkEoQAWglkE2QUhABaCmQVZBaEAFoLZBdkGIQAWgxkGWQahABaDWQbUwApHHIuAAAAeiMKICAgIEEgY2VydGlmaWNhdGUgcmV2b2NhdGlvbi4KICAgIHMLAAAAdW5zcGVjaWZpZWRzDQAAAGtleUNvbXByb21pc2VzDAAAAENBQ29tcHJvbWlzZXMSAAAAYWZmaWxpYXRpb25DaGFuZ2VkcwoAAABzdXBlcnNlZGVkcxQAAABjZXNzYXRpb25PZk9wZXJhdGlvbnMPAAAAY2VydGlmaWNhdGVIb2xkYwEAAAAAAAAAAgAAAAMAAABDAAAAcxwAAAB0AGoBgwB9AXQCagN8AXQAagSDAnwAXwVkAFMAKQFOKQZySwAAAFoQWDUwOV9SRVZPS0VEX25ld3JSAAAAclcAAADaEVg1MDlfUkVWT0tFRF9mcmVl2ghfcmV2b2tlZCkCcm4AAADaB3Jldm9rZWRyRAAAAHJEAAAAckUAAABybwAAALQHAABzBAAAAAABCAF6EFJldm9rZWQuX19pbml0X19jAgAAAAAAAAAGAAAABAAAAEMAAABzZgAAAHQAagF0AmoDgwB0AmoEgwJ9AnQAagVkAYMBfQN8AnwDZAI8AHQCagZ8A3wBgwJ9BHwEczx0B2QDgwGCAXQAagF0AmoIfAJ0AGoJgwJ0AmoKgwJ9BXQCagt8AGoMfAWDAgEAZARTACkFetMKICAgICAgICBTZXQgdGhlIHNlcmlhbCBudW1iZXIuCgogICAgICAgIFRoZSBzZXJpYWwgbnVtYmVyIGlzIGZvcm1hdHRlZCBhcyBhIGhleGFkZWNpbWFsIG51bWJlciBlbmNvZGVkIGluCiAgICAgICAgQVNDSUkuCgogICAgICAgIDpwYXJhbSBieXRlcyBoZXhfc3RyOiBUaGUgbmV3IHNlcmlhbCBudW1iZXIuCgogICAgICAgIDpyZXR1cm46IGBgTm9uZWBgCiAgICAgICAgeghCSUdOVU0qKnIBAAAAeg5iYWQgaGV4IHN0cmluZ04pDXJSAAAAclcAAABySwAAAHJ+AAAAcn8AAAByUwAAAHIGAQAAcmAAAAByCAEAAHJWAAAAcgkBAABaHVg1MDlfUkVWT0tFRF9zZXRfc2VyaWFsTnVtYmVyckgBAAApBnJuAAAAWgdoZXhfc3RycgwBAABaCmJpZ251bV9wdHJaCWJuX3Jlc3VsdHINAQAAckQAAAByRAAAAHJFAAAA2gpzZXRfc2VyaWFsuAcAAHMUAAAAAAsSAQoBCAEMAQQBCAIEAQwBCAF6ElJldm9rZWQuc2V0X3NlcmlhbGMBAAAAAAAAAAQAAAADAAAAQwAAAHNAAAAAdACDAH0BdAFqAnwAagODAX0CdAR8AnQFagZrA4MBAQB0AWoHfAF8AoMCfQN0BHwDZAFrBYMBAQB0CHwBgwFTACkCer0KICAgICAgICBHZXQgdGhlIHNlcmlhbCBudW1iZXIuCgogICAgICAgIFRoZSBzZXJpYWwgbnVtYmVyIGlzIGZvcm1hdHRlZCBhcyBhIGhleGFkZWNpbWFsIG51bWJlciBlbmNvZGVkIGluCiAgICAgICAgQVNDSUkuCgogICAgICAgIDpyZXR1cm46IFRoZSBzZXJpYWwgbnVtYmVyLgogICAgICAgIDpydHlwZTogYnl0ZXMKICAgICAgICByAQAAACkJcloAAABySwAAAFoeWDUwOV9SRVZPS0VEX2dldDBfc2VyaWFsTnVtYmVyckgBAAByVQAAAHJSAAAAclYAAABaEGkyYV9BU04xX0lOVEVHRVJyXAAAACkEcm4AAAByTQAAAFoIYXNuMV9pbnRyggAAAHJEAAAAckQAAAByRQAAANoKZ2V0X3NlcmlhbM8HAABzDAAAAAAKBgIMAQ4BDAEMAXoSUmV2b2tlZC5nZXRfc2VyaWFsYwEAAAAAAAAABAAAAAQAAABDAAAAc2AAAAB4WnQAdAFqAnwAagODAYMBRABdRn0BdAFqBHwAagN8AYMCfQJ0AWoFfAKDAX0DdAFqBnwDgwF0AWoHawJyEnQBagh8AoMBAQB0AWoJfABqA3wBgwIBAFAAcRJXAGQAUwApAU4pCnKuAAAAcksAAADaGlg1MDlfUkVWT0tFRF9nZXRfZXh0X2NvdW50ckgBAADaFFg1MDlfUkVWT0tFRF9nZXRfZXh0cssAAABysgAAANoOTklEX2NybF9yZWFzb25yxgAAAFoXWDUwOV9SRVZPS0VEX2RlbGV0ZV9leHQpBHJuAAAAcrYAAABy8AAAAHLZAAAAckQAAAByRAAAAHJFAAAA2g5fZGVsZXRlX3JlYXNvbuEHAABzDgAAAAABFgEOAQoBEAEKAQ4BehZSZXZva2VkLl9kZWxldGVfcmVhc29uYwIAAAAAAAAABgAAAAYAAABDAAAAc7gAAAB8AWQBawhyEnwAagCDAAEAbqJ0AXwBdAKDAnMmdANkAoMBggFujnwBagSDAGoFZANkBIMCfQFkBWQGhAB8AGoGRACDAWoHfAGDAX0CdAhqCYMAfQN0CnwDdAtqDGsDgwEBAHQLag18A3QIag6DAn0DdAhqD3wDfAKDAn0EdAp8BHQLagxrA4MBAQB8AGoAgwABAHQIahB8AGoRdAhqEnwDZAdkB4MFfQV0CnwFZAhrAoMBAQBkAVMAKQlhkAEAAAogICAgICAgIFNldCB0aGUgcmVhc29uIG9mIHRoaXMgcmV2b2NhdGlvbi4KCiAgICAgICAgSWYgOmRhdGE6YHJlYXNvbmAgaXMgYGBOb25lYGAsIGRlbGV0ZSB0aGUgcmVhc29uIGluc3RlYWQuCgogICAgICAgIDpwYXJhbSByZWFzb246IFRoZSByZWFzb24gc3RyaW5nLgogICAgICAgIDp0eXBlIHJlYXNvbjogOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBOb25lVHlwZWAKCiAgICAgICAgOnJldHVybjogYGBOb25lYGAKCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6bWV0aDpgYWxsX3JlYXNvbnNgLCB3aGljaCBnaXZlcyB5b3UgYSBsaXN0IG9mIGFsbCBzdXBwb3J0ZWQKICAgICAgICAgICAgcmVhc29ucyB3aGljaCB5b3UgbWlnaHQgcGFzcyB0byB0aGlzIG1ldGhvZC4KICAgICAgICBOeiRyZWFzb24gbXVzdCBiZSBOb25lIG9yIGEgYnl0ZSBzdHJpbmfzAQAAACDzAAAAAGMBAAAAAAAAAAIAAAADAAAAUwAAAHMUAAAAZwB8AF0MfQF8AWoAgwCRAnEEUwByRAAAACkB2gVsb3dlcikCcpMAAADaAXJyRAAAAHJEAAAAckUAAAByAgEAAAAIAABzAgAAAAYAeiZSZXZva2VkLnNldF9yZWFzb24uPGxvY2Fscz4uPGxpc3Rjb21wPnIBAAAAcj8AAAApE3JPAQAAcl0AAAByXgAAAHJfAAAAclIBAADaB3JlcGxhY2XaDF9jcmxfcmVhc29uc3InAQAAcksAAABaE0FTTjFfRU5VTUVSQVRFRF9uZXdyVQAAAHJSAAAAclYAAAByVwAAAFoUQVNOMV9FTlVNRVJBVEVEX2ZyZWVaE0FTTjFfRU5VTUVSQVRFRF9zZXRaGVg1MDlfUkVWT0tFRF9hZGQxX2V4dF9pMmRySAEAAHJOAQAAKQZybgAAANoGcmVhc29uWgtyZWFzb25fY29kZVoObmV3X3JlYXNvbl9leHRyYwAAAHK4AAAAckQAAAByRAAAAHJFAAAA2gpzZXRfcmVhc29u6gcAAHMeAAAAABAIAQoBCgEKAhABFgIIAQ4BDgIMAQ4CCAEEARIBehJSZXZva2VkLnNldF9yZWFzb25jAQAAAAAAAAAGAAAABgAAAEMAAABzhgAAAHiAdAB0AWoCfABqA4MBgwFEAF1sfQF0AWoEfABqA3wBgwJ9AnQBagV8AoMBfQN0AWoGfAODAXQBagdrAnISdAiDAH0EdAFqCXwEfAJkAWQBgwR9BXwFc3Z0AWoKfAR0AWoLfAKDAYMCfQV0DHwFZAFrA4MBAQB0DXwEgwFTAHESVwBkAlMAKQNhIAEAAAogICAgICAgIEdldCB0aGUgcmVhc29uIG9mIHRoaXMgcmV2b2NhdGlvbi4KCiAgICAgICAgOnJldHVybjogVGhlIHJlYXNvbiwgb3IgYGBOb25lYGAgaWYgdGhlcmUgaXMgbm9uZS4KICAgICAgICA6cnR5cGU6IGJ5dGVzIG9yIE5vbmVUeXBlCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOm1ldGg6YGFsbF9yZWFzb25zYCwgd2hpY2ggZ2l2ZXMgeW91IGEgbGlzdCBvZiBhbGwgc3VwcG9ydGVkCiAgICAgICAgICAgIHJlYXNvbnMgdGhpcyBtZXRob2QgbWlnaHQgcmV0dXJuLgogICAgICAgIHIBAAAATikOcq4AAABySwAAAHJMAQAAckgBAAByTQEAAHLLAAAAcrIAAAByTgEAAHJaAAAActUAAABaGU1fQVNOMV9PQ1RFVF9TVFJJTkdfcHJpbnRy2wAAAHJVAAAAclwAAAApBnJuAAAAcrYAAABy8AAAAHLZAAAAck0AAABy1gAAAHJEAAAAckQAAAByRQAAANoKZ2V0X3JlYXNvbg4IAABzFgAAAAAMFgEOAQoBEAEGAhABBAEEAQ4CDAJ6ElJldm9rZWQuZ2V0X3JlYXNvbmMBAAAAAAAAAAEAAAADAAAAQwAAAHMOAAAAfABqAGQBZAGFAhkAUwApAmEBAQAACiAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIHN1cHBvcnRlZCByZWFzb24gc3RyaW5ncy4KCiAgICAgICAgVGhpcyBsaXN0IGlzIGEgY29weTsgbW9kaWZ5aW5nIGl0IGRvZXMgbm90IGNoYW5nZSB0aGUgc3VwcG9ydGVkIHJlYXNvbgogICAgICAgIHN0cmluZ3MuCgogICAgICAgIDpyZXR1cm46IEEgbGlzdCBvZiByZWFzb24gc3RyaW5ncy4KICAgICAgICA6cnR5cGU6IDpjbGFzczpgbGlzdGAgb2YgOmNsYXNzOmBieXRlc2AKICAgICAgICBOKQFyVQEAACkBcm4AAAByRAAAAHJEAAAAckUAAADaC2FsbF9yZWFzb25zKQgAAHMCAAAAAAp6E1Jldm9rZWQuYWxsX3JlYXNvbnNjAgAAAAAAAAADAAAAAwAAAEMAAABzFgAAAHQAagF8AGoCgwF9AnQDfAJ8AYMCUwApAXqhCiAgICAgICAgU2V0IHRoZSByZXZvY2F0aW9uIHRpbWVzdGFtcC4KCiAgICAgICAgOnBhcmFtIGJ5dGVzIHdoZW46IFRoZSB0aW1lc3RhbXAgb2YgdGhlIHJldm9jYXRpb24sCiAgICAgICAgICAgIGFzIEFTTi4xIFRJTUUuCiAgICAgICAgOnJldHVybjogYGBOb25lYGAKICAgICAgICApBHJLAAAA2iBYNTA5X1JFVk9LRURfZ2V0MF9yZXZvY2F0aW9uRGF0ZXJIAQAAcmQAAAApA3JuAAAAcmIAAADaAmR0ckQAAAByRAAAAHJFAAAA2gxzZXRfcmV2X2RhdGU1CAAAcwQAAAAACAwBehRSZXZva2VkLnNldF9yZXZfZGF0ZWMBAAAAAAAAAAIAAAACAAAAQwAAAHMUAAAAdABqAXwAagKDAX0BdAN8AYMBUwApAXqHCiAgICAgICAgR2V0IHRoZSByZXZvY2F0aW9uIHRpbWVzdGFtcC4KCiAgICAgICAgOnJldHVybjogVGhlIHRpbWVzdGFtcCBvZiB0aGUgcmV2b2NhdGlvbiwgYXMgQVNOLjEgVElNRS4KICAgICAgICA6cnR5cGU6IGJ5dGVzCiAgICAgICAgKQRySwAAAHJaAQAAckgBAAByawAAACkCcm4AAAByWwEAAHJEAAAAckQAAAByRQAAANoMZ2V0X3Jldl9kYXRlQAgAAHMEAAAAAAcMAXoUUmV2b2tlZC5nZXRfcmV2X2RhdGVOKQ5yQAAAAHJBAAAAckIAAAByQwAAAHJVAQAAcm8AAABySgEAAHJLAQAAck8BAAByVwEAAHJYAQAAclkBAAByXAEAAHJdAQAAckQAAAByRAAAAHJEAAAAckUAAAByLgAAAKEHAABzIgAAAAgDBAYCAQIBAgECAQIBAgEGBAgECBcIEggJCCQIGwgMCAtjAAAAAAAAAAAAAAAAAwAAAEAAAABzfAAAAGUAWgFkAFoCZAFaA2QCZAOEAFoEZARkBYQAWgVlBmQGZAeEAIMBWgdkCGQJhABaCGQKZAuEAFoJZAxkDYQAWgpkDmQPhABaC2QQZBGEAFoMZBJkE4QAWg1kFGQVhABaDmQWZBeEAFoPZRBkGGURZgNkGWQahAFaEmQbUwApHHIvAAAAeigKICAgIEEgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0LgogICAgYwEAAAAAAAAAAgAAAAMAAABDAAAAcxwAAAB0AGoBgwB9AXQCagN8AXQAagSDAnwAXwVkAFMAKQFOKQZySwAAAFoMWDUwOV9DUkxfbmV3clIAAAByVwAAANoNWDUwOV9DUkxfZnJlZXItAQAAKQJybgAAAHIuAQAAckQAAAByRAAAAHJFAAAAcm8AAABQCAAAcwQAAAAAAQgBegxDUkwuX19pbml0X19jAQAAAAAAAAADAAAAAwAAAEMAAABzHgAAAGQBZAJsAG0BfQEBAHQCgwB9AnwBfAJ8AGoDgwJTACkDepYKICAgICAgICBFeHBvcnQgYXMgYSBgYGNyeXB0b2dyYXBoeWBgIENSTC4KCiAgICAgICAgOnJ0eXBlOiBgYGNyeXB0b2dyYXBoeS54NTA5LkNlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3RgYAoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxNy4xLjAKICAgICAgICByAQAAACkB2hpfQ2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdCkEcuQAAAByXwEAAHJHAAAAci0BAAApA3JuAAAAcl8BAAByRgAAAHJEAAAAckQAAAByRQAAAHLlAAAAVAgAAHMGAAAAAAgMAwYBehNDUkwudG9fY3J5cHRvZ3JhcGh5YwIAAAAAAAAAAwAAAAMAAABDAAAAcyYAAAB0AHwBdAFqAoMCcxR0A2QBgwGCAXwAgwB9AnwBagR8Al8FfAJTACkCYREBAAAKICAgICAgICBDb25zdHJ1Y3QgYmFzZWQgb24gYSBgYGNyeXB0b2dyYXBoeWBgICpjcnlwdG9fY3JsKi4KCiAgICAgICAgOnBhcmFtIGNyeXB0b19jcmw6IEEgYGBjcnlwdG9ncmFwaHlgYCBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3QKICAgICAgICA6dHlwZSBjcnlwdG9fY3JsOiBgYGNyeXB0b2dyYXBoeS54NTA5LkNlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3RgYAoKICAgICAgICA6cnR5cGU6IENSTAoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxNy4xLjAKICAgICAgICB6JU11c3QgYmUgYSBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3QpBnJdAAAAcg0AAABaGUNlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3RyXwAAAFoJX3g1MDlfY3Jsci0BAAApA3J7AAAAWgpjcnlwdG9fY3Jsci4BAAByRAAAAHJEAAAAckUAAABy5gAAAGIIAABzCgAAAAAMDAEIAgYBCAF6FUNSTC5mcm9tX2NyeXB0b2dyYXBoeWMBAAAAAAAAAAcAAAAEAAAAQwAAAHNyAAAAZwB9AXQAagF8AGoCgwF9AnhQdAN0AGoEfAKDAYMBRABdPn0DdABqBXwCfAODAn0EdABqBnwEgwF9BXQHagh0B4MBfQZ0CWoKfAV0AGoLgwJ8Bl8MfAFqDXwGgwEBAHEgVwB8AXJudA58AYMBUwBkAVMAKQJhQQEAAAogICAgICAgIFJldHVybiB0aGUgcmV2b2NhdGlvbnMgaW4gdGhpcyBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3QuCgogICAgICAgIFRoZXNlIHJldm9jYXRpb25zIHdpbGwgYmUgcHJvdmlkZWQgYnkgdmFsdWUsIG5vdCBieSByZWZlcmVuY2UuCiAgICAgICAgVGhhdCBtZWFucyBpdCdzIG9rYXkgdG8gbXV0YXRlIHRoZW06IGl0IHdvbid0IGFmZmVjdCB0aGlzIENSTC4KCiAgICAgICAgOnJldHVybjogVGhlIHJldm9jYXRpb25zIGluIHRoaXMgQ1JMLgogICAgICAgIDpydHlwZTogOmNsYXNzOmB0dXBsZWAgb2YgOmNsYXNzOmBSZXZvY2F0aW9uYAogICAgICAgIE4pD3JLAAAAWhRYNTA5X0NSTF9nZXRfUkVWT0tFRHItAQAAcq4AAABaE3NrX1g1MDlfUkVWT0tFRF9udW1aFXNrX1g1MDlfUkVWT0tFRF92YWx1ZdodQ3J5cHRvZ3JhcGh5X1g1MDlfUkVWT0tFRF9kdXByLgAAAHLoAAAAclIAAAByVwAAAHJHAQAAckgBAABycAAAANoFdHVwbGUpB3JuAAAA2gdyZXN1bHRzWg1yZXZva2VkX3N0YWNrcrYAAABySQEAAFoMcmV2b2tlZF9jb3B5WgVweXJldnJEAAAAckQAAAByRQAAANoLZ2V0X3Jldm9rZWR1CAAAcxQAAAAACgQBDAEUAQwBCgEKARABDgEEAXoPQ1JMLmdldF9yZXZva2VkYwIAAAAAAAAABAAAAAMAAABDAAAAczgAAAB0AGoBfAFqAoMBfQJ0A3wCdARqBWsDgwEBAHQAagZ8AGoHfAKDAn0DdAN8A2QBawODAQEAZAJTACkDYTkBAAAKICAgICAgICBBZGQgYSByZXZva2VkIChieSB2YWx1ZSBub3QgcmVmZXJlbmNlKSB0byB0aGUgQ1JMIHN0cnVjdHVyZQoKICAgICAgICBUaGlzIHJldm9jYXRpb24gd2lsbCBiZSBhZGRlZCBieSB2YWx1ZSwgbm90IGJ5IHJlZmVyZW5jZS4gVGhhdAogICAgICAgIG1lYW5zIGl0J3Mgb2theSB0byBtdXRhdGUgaXQgYWZ0ZXIgYWRkaW5nOiBpdCB3b24ndCBhZmZlY3QKICAgICAgICB0aGlzIENSTC4KCiAgICAgICAgOnBhcmFtIFJldm9rZWQgcmV2b2tlZDogVGhlIG5ldyByZXZvY2F0aW9uLgogICAgICAgIDpyZXR1cm46IGBgTm9uZWBgCiAgICAgICAgcgEAAABOKQhySwAAAHJgAQAAckgBAAByVQAAAHJSAAAAclYAAABaFVg1MDlfQ1JMX2FkZDBfcmV2b2tlZHItAQAAKQRybgAAAHJJAQAA2gRjb3B5crgAAAByRAAAAHJEAAAAckUAAADaC2FkZF9yZXZva2VkiggAAHMIAAAAAAsMAQ4CDgF6D0NSTC5hZGRfcmV2b2tlZGMBAAAAAAAAAAMAAAADAAAAQwAAAHNCAAAAdABqAXQAagJ8AGoDgwGDAX0BdAR8AXQFagZrA4MBAQB0BWoHfAF0AGoIgwJ9AXQJagp0CYMBfQJ8AXwCXwt8AlMAKQF6YwogICAgICAgIEdldCB0aGUgQ1JMJ3MgaXNzdWVyLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxNi4xLjAKCiAgICAgICAgOnJ0eXBlOiBYNTA5TmFtZQogICAgICAgICkMcksAAAByowAAAFoTWDUwOV9DUkxfZ2V0X2lzc3VlcnItAQAAclUAAAByUgAAAHJWAAAAclcAAABypAAAAHIiAAAAcugAAABycwAAACkDcm4AAABaB19pc3N1ZXJyyQAAAHJEAAAAckQAAAByRQAAAHIhAQAAmwgAAHMMAAAAAAgSAQ4BDgEKAQYBeg5DUkwuZ2V0X2lzc3VlcmMCAAAAAAAAAAIAAAAEAAAAQwAAAHMaAAAAdAB0AWoCfABqA3wBgwJkAWsDgwEBAGQCUwApA3qXCiAgICAgICAgU2V0IHRoZSBDUkwgdmVyc2lvbi4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMTYuMS4wCgogICAgICAgIDpwYXJhbSBpbnQgdmVyc2lvbjogVGhlIHZlcnNpb24gb2YgdGhlIENSTC4KICAgICAgICA6cmV0dXJuOiBgYE5vbmVgYAogICAgICAgIHIBAAAATikEclUAAABySwAAAFoUWDUwOV9DUkxfc2V0X3ZlcnNpb25yLQEAACkCcm4AAABy6gAAAHJEAAAAckQAAAByRQAAAHLhAAAAqggAAHMCAAAAAAl6D0NSTC5zZXRfdmVyc2lvbmMDAAAAAAAAAAMAAAADAAAAQwAAAHMQAAAAdAB8AXwAagGDAXwCgwJTACkBTikCcmQAAAByLQEAACkDcm4AAAByGQEAAHJiAAAAckQAAAByRAAAAHJFAAAAchwBAAC1CAAAcwIAAAAAAXoWQ1JMLl9zZXRfYm91bmRhcnlfdGltZWMCAAAAAAAAAAIAAAADAAAAQwAAAHMOAAAAfABqAHQBagJ8AYMCUwApAXr0CiAgICAgICAgU2V0IHdoZW4gdGhlIENSTCB3YXMgbGFzdCB1cGRhdGVkLgoKICAgICAgICBUaGUgdGltZXN0YW1wIGlzIGZvcm1hdHRlZCBhcyBhbiBBU04uMSBUSU1FOjoKCiAgICAgICAgICAgIFlZWVlNTUREaGhtbXNzWgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxNi4xLjAKCiAgICAgICAgOnBhcmFtIGJ5dGVzIHdoZW46IEEgdGltZXN0YW1wIHN0cmluZy4KICAgICAgICA6cmV0dXJuOiBgYE5vbmVgYAogICAgICAgICkDchwBAABySwAAAFoXWDUwOV9DUkxfZ2V0X2xhc3RVcGRhdGUpAnJuAAAAcmIAAAByRAAAAHJEAAAAckUAAADaDnNldF9sYXN0VXBkYXRluAgAAHMCAAAAAA16EkNSTC5zZXRfbGFzdFVwZGF0ZWMCAAAAAAAAAAIAAAADAAAAQwAAAHMOAAAAfABqAHQBagJ8AYMCUwApAXr4CiAgICAgICAgU2V0IHdoZW4gdGhlIENSTCB3aWxsIG5leHQgYmUgdWRwYXRlZC4KCiAgICAgICAgVGhlIHRpbWVzdGFtcCBpcyBmb3JtYXR0ZWQgYXMgYW4gQVNOLjEgVElNRTo6CgogICAgICAgICAgICBZWVlZTU1ERGhobW1zc1oKCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMTYuMS4wCgogICAgICAgIDpwYXJhbSBieXRlcyB3aGVuOiBBIHRpbWVzdGFtcCBzdHJpbmcuCiAgICAgICAgOnJldHVybjogYGBOb25lYGAKICAgICAgICApA3IcAQAAcksAAABaF1g1MDlfQ1JMX2dldF9uZXh0VXBkYXRlKQJybgAAAHJiAAAAckQAAAByRAAAAHJFAAAA2g5zZXRfbmV4dFVwZGF0ZccIAABzAgAAAAANehJDUkwuc2V0X25leHRVcGRhdGVjBAAAAAAAAAAGAAAABAAAAEMAAABzXAAAAHQAagF8A4MBfQR0AnwEdANqBGsDgwEBAHQAagV8AGoGdABqB3wBagiDAYMCAQB0AGoJfABqBoMBAQB0AGoKfABqBnwCagt8BIMDfQV0AnwFZAFrA4MBAQBkAlMAKQNhOwIAAAogICAgICAgIFNpZ24gdGhlIENSTC4KCiAgICAgICAgU2lnbmluZyBhIENSTCBlbmFibGVzIGNsaWVudHMgdG8gYXNzb2NpYXRlIHRoZSBDUkwgaXRzZWxmIHdpdGggYW4KICAgICAgICBpc3N1ZXIuIEJlZm9yZSBhIENSTCBpcyBtZWFuaW5nZnVsIHRvIG90aGVyIE9wZW5TU0wgZnVuY3Rpb25zLCBpdCBtdXN0CiAgICAgICAgYmUgc2lnbmVkIGJ5IGFuIGlzc3Vlci4KCiAgICAgICAgVGhpcyBtZXRob2QgaW1wbGljaXRseSBzZXRzIHRoZSBpc3N1ZXIncyBuYW1lIGJhc2VkIG9uIHRoZSBpc3N1ZXIKICAgICAgICBjZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgdXNlZCB0byBzaWduIHRoZSBDUkwuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDE2LjEuMAoKICAgICAgICA6cGFyYW0gWDUwOSBpc3N1ZXJfY2VydDogVGhlIGlzc3VlcidzIGNlcnRpZmljYXRlLgogICAgICAgIDpwYXJhbSBQS2V5IGlzc3Vlcl9rZXk6IFRoZSBpc3N1ZXIncyBwcml2YXRlIGtleS4KICAgICAgICA6cGFyYW0gYnl0ZXMgZGlnZXN0OiBUaGUgZGlnZXN0IG1ldGhvZCB0byBzaWduIHRoZSBDUkwgd2l0aC4KICAgICAgICByAQAAAE4pDHJLAAAAcvMAAAByVQAAAHJSAAAAclYAAADaGFg1MDlfQ1JMX3NldF9pc3N1ZXJfbmFtZXItAQAAciMBAAByxAAAAFoNWDUwOV9DUkxfc29ydNoNWDUwOV9DUkxfc2lnbnJ2AAAAKQZybgAAAHLFAAAAWgppc3N1ZXJfa2V5cvQAAABy9QAAAHKCAAAAckQAAAByRAAAAHJFAAAAcjcAAADWCAAAcw4AAAAAEQoBDgEEARIBDAESAXoIQ1JMLnNpZ27pZAAAAGMGAAAAAAAAAAoAAAAEAAAAQwAAAHMSAQAAdAB8AXQBgwJzEnQCZAGDAYIBdAB8AnQDgwJzJHQCZAKDAYIBdAB8A3QEgwJzNnQCZAODAYIBfAV0BWsIckZ0AmQEgwGCAXQGagd8BYMBfQZ8BnQIaglrAnJidApkBYMBggF0BmoLdAZqDIMAgwF9B3QNfAd0CGoJawODAQEAdAZqDoMAfQh0DXwIdAhqCWsDgwEBAHQGag98CGQGgwIBAHQGahB8AGoRfAiDAgEAdAZqD3wIfARkBxQAZAgUAGQIFACDAgEAdAZqEnwAahF8CIMCAQB0BmoTfABqEXQGahR8AWoVgwGDAgEAdAZqFnwAahF8AmoXfAaDA30JfAmQAXMIdBiDAAEAdBl8A3wAgwJTACkJYfQBAAAKICAgICAgICBFeHBvcnQgdGhlIENSTCBhcyBhIHN0cmluZy4KCiAgICAgICAgOnBhcmFtIFg1MDkgY2VydDogVGhlIGNlcnRpZmljYXRlIHVzZWQgdG8gc2lnbiB0aGUgQ1JMLgogICAgICAgIDpwYXJhbSBQS2V5IGtleTogVGhlIGtleSB1c2VkIHRvIHNpZ24gdGhlIENSTC4KICAgICAgICA6cGFyYW0gaW50IHR5cGU6IFRoZSBleHBvcnQgZm9ybWF0LCBlaXRoZXIgOmRhdGE6YEZJTEVUWVBFX1BFTWAsCiAgICAgICAgICAgIDpkYXRhOmBGSUxFVFlQRV9BU04xYCwgb3IgOmRhdGE6YEZJTEVUWVBFX1RFWFRgLgogICAgICAgIDpwYXJhbSBpbnQgZGF5czogVGhlIG51bWJlciBvZiBkYXlzIHVudGlsIHRoZSBuZXh0IHVwZGF0ZSBvZiB0aGlzIENSTC4KICAgICAgICA6cGFyYW0gYnl0ZXMgZGlnZXN0OiBUaGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBkaWdlc3QgdG8gdXNlIChlZwogICAgICAgICAgICBgYGIic2hhMjU2NiJgYCkuCiAgICAgICAgOnJ0eXBlOiBieXRlcwogICAgICAgIHodY2VydCBtdXN0IGJlIGFuIFg1MDkgaW5zdGFuY2V6G2tleSBtdXN0IGJlIGEgUEtleSBpbnN0YW5jZXoXdHlwZSBtdXN0IGJlIGFuIGludGVnZXJ6F2RpZ2VzdCBtdXN0IGJlIHByb3ZpZGVkehVObyBzdWNoIGRpZ2VzdCBtZXRob2RyAQAAAOkYAAAA6TwAAAApGnJdAAAAciUAAAByXwAAAHIfAAAAcn0AAADaDF9VTlNQRUNJRklFRHJLAAAAcvMAAAByUgAAAHJWAAAAcmAAAAByUAAAAHJRAAAAclUAAABaDUFTTjFfVElNRV9uZXdyEQEAAFoXWDUwOV9DUkxfc2V0X2xhc3RVcGRhdGVyLQEAAFoXWDUwOV9DUkxfc2V0X25leHRVcGRhdGVyaAEAAHIjAQAAcsQAAAByaQEAAHJ2AAAAcogAAAByOQAAACkKcm4AAABy+gAAAHKfAAAAcoAAAABaBGRheXNy9AAAAHL1AAAAck0AAABaCHNvbWV0aW1lcvYAAAByRAAAAHJEAAAAckUAAADaBmV4cG9ydO8IAABzMgAAAAAPCgEIAQoBCAEKAQgCCAEIAgoBCgEIAg4BDgQIAQ4CDAEOAhgBDgIEARIDEgEGAQYCegpDUkwuZXhwb3J0TikTckAAAAByQQAAAHJCAAAAckMAAABybwAAAHLlAAAAcosAAABy5gAAAHJjAQAAcmUBAAByIQEAAHLhAAAAchwBAAByZgEAAHJnAQAAcjcAAAByGQAAAHJtAQAAcm4BAAByRAAAAHJEAAAAckQAAAByRQAAAHIvAAAASwgAAHMcAAAACAMEAggECA4MEwgVCBEIDwgLCAMIDwgPCBkEAXosQ1JMVHlwZSBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UgQ1JMIGluc3RlYWRjAAAAAAAAAAAAAAAAAgAAAEAAAABzNAAAAGUAWgFkAFoCZAFkAoQAWgNkA2QEhABaBGQFZAaEAFoFZAdkCIQAWgZkCWQKhABaB2QLUwApDHIwAAAAYwEAAAAAAAAAAQAAAAMAAABDAAAAcxAAAAB0AHQBagJ8AGoDgwGDAVMAKQF6bQogICAgICAgIENoZWNrIGlmIHRoaXMgTklEX3BrY3M3X3NpZ25lZCBvYmplY3QKCiAgICAgICAgOnJldHVybjogVHJ1ZSBpZiB0aGUgUEtDUzcgaXMgb2YgdHlwZSBzaWduZWQKICAgICAgICApBNoEYm9vbHJLAAAAWhRQS0NTN190eXBlX2lzX3NpZ25lZNoGX3BrY3M3KQFybgAAAHJEAAAAckQAAAByRQAAANoOdHlwZV9pc19zaWduZWQtCQAAcwIAAAAABnoUUEtDUzcudHlwZV9pc19zaWduZWRjAQAAAAAAAAABAAAAAwAAAEMAAABzEAAAAHQAdAFqAnwAagODAYMBUwApAXp0CiAgICAgICAgQ2hlY2sgaWYgdGhpcyBOSURfcGtjczdfZW52ZWxvcGVkIG9iamVjdAoKICAgICAgICA6cmV0dXJuczogVHJ1ZSBpZiB0aGUgUEtDUzcgaXMgb2YgdHlwZSBlbnZlbG9wZWQKICAgICAgICApBHJvAQAAcksAAABaF1BLQ1M3X3R5cGVfaXNfZW52ZWxvcGVkcnABAAApAXJuAAAAckQAAAByRAAAAHJFAAAA2hF0eXBlX2lzX2VudmVsb3BlZDUJAABzAgAAAAAGehdQS0NTNy50eXBlX2lzX2VudmVsb3BlZGMBAAAAAAAAAAEAAAADAAAAQwAAAHMQAAAAdAB0AWoCfABqA4MBgwFTACkBeoYKICAgICAgICBDaGVjayBpZiB0aGlzIE5JRF9wa2NzN19zaWduZWRBbmRFbnZlbG9wZWQgb2JqZWN0CgogICAgICAgIDpyZXR1cm5zOiBUcnVlIGlmIHRoZSBQS0NTNyBpcyBvZiB0eXBlIHNpZ25lZEFuZEVudmVsb3BlZAogICAgICAgICkEcm8BAABySwAAAFogUEtDUzdfdHlwZV9pc19zaWduZWRBbmRFbnZlbG9wZWRycAEAACkBcm4AAAByRAAAAHJEAAAAckUAAADaGnR5cGVfaXNfc2lnbmVkQW5kRW52ZWxvcGVkPQkAAHMCAAAAAAZ6IFBLQ1M3LnR5cGVfaXNfc2lnbmVkQW5kRW52ZWxvcGVkYwEAAAAAAAAAAQAAAAMAAABDAAAAcxAAAAB0AHQBagJ8AGoDgwGDAVMAKQF6aQogICAgICAgIENoZWNrIGlmIHRoaXMgTklEX3BrY3M3X2RhdGEgb2JqZWN0CgogICAgICAgIDpyZXR1cm46IFRydWUgaWYgdGhlIFBLQ1M3IGlzIG9mIHR5cGUgZGF0YQogICAgICAgICkEcm8BAABySwAAAFoSUEtDUzdfdHlwZV9pc19kYXRhcnABAAApAXJuAAAAckQAAAByRAAAAHJFAAAA2gx0eXBlX2lzX2RhdGFFCQAAcwIAAAAABnoSUEtDUzcudHlwZV9pc19kYXRhYwEAAAAAAAAAAwAAAAIAAABDAAAAcyIAAAB0AGoBfABqAmoDgwF9AXQAagR8AYMBfQJ0BWoGfAKDAVMAKQF6awogICAgICAgIFJldHVybnMgdGhlIHR5cGUgbmFtZSBvZiB0aGUgUEtDUzcgc3RydWN0dXJlCgogICAgICAgIDpyZXR1cm46IEEgc3RyaW5nIHdpdGggdGhlIHR5cGVuYW1lCiAgICAgICAgKQdySwAAAHKyAAAAcnABAABygAAAAHKbAAAAclIAAAByaAAAACkDcm4AAABykgAAAFoLc3RyaW5nX3R5cGVyRAAAAHJEAAAAckUAAADaDWdldF90eXBlX25hbWVNCQAAcwYAAAAABg4BCgF6E1BLQ1M3LmdldF90eXBlX25hbWVOKQhyQAAAAHJBAAAAckIAAABycQEAAHJyAQAAcnMBAABydAEAAHJ1AQAAckQAAAByRAAAAHJEAAAAckUAAAByMAAAACwJAABzCgAAAAgBCAgICAgICAh6MFBLQ1M3VHlwZSBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UgUEtDUzcgaW5zdGVhZGMAAAAAAAAAAAAAAAADAAAAQAAAAHNiAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBGQFhABaBWQGZAeEAFoGZAhkCYQAWgdkCmQLhABaCGQMZA2EAFoJZA5kD4QAWgpkEGQRhABaC2QSZBOEAFoMZBlkF2QYhAFaDWQUUwApGnIxAAAAeh0KICAgIEEgUEtDUyAjMTIgYXJjaGl2ZS4KICAgIGMBAAAAAAAAAAEAAAACAAAAQwAAAHMcAAAAZAB8AF8AZAB8AF8BZAB8AF8CZAB8AF8DZABTACkBTikEcnYAAAByNgEAANoIX2NhY2VydHPaDV9mcmllbmRseW5hbWUpAXJuAAAAckQAAAByRAAAAHJFAAAAcm8AAABkCQAAcwgAAAAAAQYBBgEGAXoPUEtDUzEyLl9faW5pdF9fYwEAAAAAAAAAAQAAAAEAAABDAAAAcwYAAAB8AGoAUwApAXq+CiAgICAgICAgR2V0IHRoZSBjZXJ0aWZpY2F0ZSBpbiB0aGUgUEtDUyAjMTIgc3RydWN0dXJlLgoKICAgICAgICA6cmV0dXJuOiBUaGUgY2VydGlmaWNhdGUsIG9yIDpweTpjb25zdDpgTm9uZWAgaWYgdGhlcmUgaXMgbm9uZS4KICAgICAgICA6cnR5cGU6IDpweTpjbGFzczpgWDUwOWAgb3IgOnB5OmNvbnN0OmBOb25lYAogICAgICAgICkBcjYBAAApAXJuAAAAckQAAAByRAAAAHJFAAAA2g9nZXRfY2VydGlmaWNhdGVqCQAAcwIAAAAAB3oWUEtDUzEyLmdldF9jZXJ0aWZpY2F0ZWMCAAAAAAAAAAIAAAADAAAAQwAAAHMcAAAAdAB8AXQBgwJzEnQCZAGDAYIBfAF8AF8DZAJTACkDeuAKICAgICAgICBTZXQgdGhlIGNlcnRpZmljYXRlIGluIHRoZSBQS0NTICMxMiBzdHJ1Y3R1cmUuCgogICAgICAgIDpwYXJhbSBjZXJ0OiBUaGUgbmV3IGNlcnRpZmljYXRlLCBvciA6cHk6Y29uc3Q6YE5vbmVgIHRvIHVuc2V0IGl0LgogICAgICAgIDp0eXBlIGNlcnQ6IDpweTpjbGFzczpgWDUwOWAgb3IgOnB5OmNvbnN0OmBOb25lYAoKICAgICAgICA6cmV0dXJuOiBgYE5vbmVgYAogICAgICAgIHodY2VydCBtdXN0IGJlIGFuIFg1MDkgaW5zdGFuY2VOKQRyXQAAAHIlAAAAcl8AAAByNgEAACkCcm4AAABy+gAAAHJEAAAAckQAAAByRQAAANoPc2V0X2NlcnRpZmljYXRlcwkAAHMGAAAAAAkKAQgBehZQS0NTMTIuc2V0X2NlcnRpZmljYXRlYwEAAAAAAAAAAQAAAAEAAABDAAAAcwYAAAB8AGoAUwApAXqqCiAgICAgICAgR2V0IHRoZSBwcml2YXRlIGtleSBpbiB0aGUgUEtDUyAjMTIgc3RydWN0dXJlLgoKICAgICAgICA6cmV0dXJuOiBUaGUgcHJpdmF0ZSBrZXksIG9yIDpweTpjb25zdDpgTm9uZWAgaWYgdGhlcmUgaXMgbm9uZS4KICAgICAgICA6cnR5cGU6IDpweTpjbGFzczpgUEtleWAKICAgICAgICApAXJ2AAAAKQFybgAAAHJEAAAAckQAAAByRQAAANoOZ2V0X3ByaXZhdGVrZXmACQAAcwIAAAAAB3oVUEtDUzEyLmdldF9wcml2YXRla2V5YwIAAAAAAAAAAgAAAAMAAABDAAAAcxwAAAB0AHwBdAGDAnMSdAJkAYMBggF8AXwAXwNkAlMAKQN66AogICAgICAgIFNldCB0aGUgY2VydGlmaWNhdGUgcG9ydGlvbiBvZiB0aGUgUEtDUyAjMTIgc3RydWN0dXJlLgoKICAgICAgICA6cGFyYW0gcGtleTogVGhlIG5ldyBwcml2YXRlIGtleSwgb3IgOnB5OmNvbnN0OmBOb25lYCB0byB1bnNldCBpdC4KICAgICAgICA6dHlwZSBwa2V5OiA6cHk6Y2xhc3M6YFBLZXlgIG9yIDpweTpjb25zdDpgTm9uZWAKCiAgICAgICAgOnJldHVybjogYGBOb25lYGAKICAgICAgICB6HHBrZXkgbXVzdCBiZSBhIFBLZXkgaW5zdGFuY2VOKQRyXQAAAHIfAAAAcl8AAABydgAAACkCcm4AAAByeAAAAHJEAAAAckQAAAByRQAAANoOc2V0X3ByaXZhdGVrZXmJCQAAcwYAAAAACQoBCAF6FVBLQ1MxMi5zZXRfcHJpdmF0ZWtleWMBAAAAAAAAAAEAAAACAAAAQwAAAHMYAAAAfABqAGQBawlyFHQBfABqAIMBUwBkAVMAKQJhAgEAAAogICAgICAgIEdldCB0aGUgQ0EgY2VydGlmaWNhdGVzIGluIHRoZSBQS0NTICMxMiBzdHJ1Y3R1cmUuCgogICAgICAgIDpyZXR1cm46IEEgdHVwbGUgd2l0aCB0aGUgQ0EgY2VydGlmaWNhdGVzIGluIHRoZSBjaGFpbiwgb3IKICAgICAgICAgICAgOnB5OmNvbnN0OmBOb25lYCBpZiB0aGVyZSBhcmUgbm9uZS4KICAgICAgICA6cnR5cGU6IDpweTpjbGFzczpgdHVwbGVgIG9mIDpweTpjbGFzczpgWDUwOWAgb3IgOnB5OmNvbnN0OmBOb25lYAogICAgICAgIE4pAnJ2AQAAcmEBAAApAXJuAAAAckQAAAByRAAAAHJFAAAA2hNnZXRfY2FfY2VydGlmaWNhdGVzlgkAAHMEAAAAAAgKAXoaUEtDUzEyLmdldF9jYV9jZXJ0aWZpY2F0ZXNjAgAAAAAAAAADAAAABAAAAEMAAABzQgAAAHwBZAFrCHIQZAF8AF8Abi50AXwBgwF9AXgefAFEAF0WfQJ0AnwCdAODAnMedARkAoMBggFxHlcAfAF8AF8AZAFTACkDYRUBAAAKICAgICAgICBSZXBsYWNlIG9yIHNldCB0aGUgQ0EgY2VydGlmaWNhdGVzIHdpdGhpbiB0aGUgUEtDUzEyIG9iamVjdC4KCiAgICAgICAgOnBhcmFtIGNhY2VydHM6IFRoZSBuZXcgQ0EgY2VydGlmaWNhdGVzLCBvciA6cHk6Y29uc3Q6YE5vbmVgIHRvIHVuc2V0CiAgICAgICAgICAgIHRoZW0uCiAgICAgICAgOnR5cGUgY2FjZXJ0czogQW4gaXRlcmFibGUgb2YgOnB5OmNsYXNzOmBYNTA5YCBvciA6cHk6Y29uc3Q6YE5vbmVgCgogICAgICAgIDpyZXR1cm46IGBgTm9uZWBgCiAgICAgICAgTnopaXRlcmFibGUgbXVzdCBvbmx5IGNvbnRhaW4gWDUwOSBpbnN0YW5jZXMpBXJ2AQAA2gRsaXN0cl0AAAByJQAAAHJfAAAAKQNybgAAANoHY2FjZXJ0c3L6AAAAckQAAAByRAAAAHJFAAAA2hNzZXRfY2FfY2VydGlmaWNhdGVzoQkAAHMQAAAAAAoIAQgCCAEKAQoBAgEKAnoaUEtDUzEyLnNldF9jYV9jZXJ0aWZpY2F0ZXNjAgAAAAAAAAACAAAAAwAAAEMAAABzMgAAAHwBZAFrCHIQZAF8AF8Abhh0AXwBdAKDAnModANkAnwBZgEWAIMBggF8AXwAXwBkAVMAKQN64gogICAgICAgIFNldCB0aGUgZnJpZW5kbHkgbmFtZSBpbiB0aGUgUEtDUyAjMTIgc3RydWN0dXJlLgoKICAgICAgICA6cGFyYW0gbmFtZTogVGhlIG5ldyBmcmllbmRseSBuYW1lLCBvciA6cHk6Y29uc3Q6YE5vbmVgIHRvIHVuc2V0LgogICAgICAgIDp0eXBlIG5hbWU6IDpweTpjbGFzczpgYnl0ZXNgIG9yIDpweTpjb25zdDpgTm9uZWAKCiAgICAgICAgOnJldHVybjogYGBOb25lYGAKICAgICAgICBOeituYW1lIG11c3QgYmUgYSBieXRlIHN0cmluZyBvciBOb25lIChub3QgJXIpKQRydwEAAHJdAAAAcl4AAAByXwAAACkCcm4AAABycQAAAHJEAAAAckQAAAByRQAAANoQc2V0X2ZyaWVuZGx5bmFtZbYJAABzDAAAAAAJCAEIAQoBAgEMAnoXUEtDUzEyLnNldF9mcmllbmRseW5hbWVjAQAAAAAAAAABAAAAAQAAAEMAAABzBgAAAHwAagBTACkBesUKICAgICAgICBHZXQgdGhlIGZyaWVuZGx5IG5hbWUgaW4gdGhlIFBLQ1MjIDEyIHN0cnVjdHVyZS4KCiAgICAgICAgOnJldHVybnM6IFRoZSBmcmllbmRseSBuYW1lLCAgb3IgOnB5OmNvbnN0OmBOb25lYCBpZiB0aGVyZSBpcyBub25lLgogICAgICAgIDpydHlwZTogOnB5OmNsYXNzOmBieXRlc2Agb3IgOnB5OmNvbnN0OmBOb25lYAogICAgICAgICkBcncBAAApAXJuAAAAckQAAAByRAAAAHJFAAAA2hBnZXRfZnJpZW5kbHluYW1lxwkAAHMCAAAAAAd6F1BLQ1MxMi5nZXRfZnJpZW5kbHluYW1lTukACAAAcj8AAABjBAAAAAAAAAAKAAAACwAAAEMAAABz/gAAAHQAZAF8AYMCfQF8AGoBZAJrCHIcdAJqA30EbjR0BGoFgwB9BHQCagZ8BHQEageDAn0EeBx8AGoBRABdEn0FdARqCHwEfAVqCYMCAQBxOlcAfAFkAmsIcl50AmoDfQF8AGoKfQZ8BmQCawhycnQCagN9BnwAagtkAmsIcoR0AmoDfQduCHwAagtqC30HfABqDGQCawhynnQCagN9BW4IfABqDGoJfQV0BGoNfAF8BnwHfAV8BHQEag50BGoOfAJ8A2QDgwp9CHwIdAJqA2sCctZ0D4MAAQB0AmoGfAh0BGoQgwJ9CHQRgwB9CXQEahJ8CXwIgwIBAHQTfAmDAVMAKQRhgAIAAAogICAgICAgIER1bXAgYSBQS0NTMTIgb2JqZWN0IGFzIGEgc3RyaW5nLgoKICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSA6YzpmdW5jOmBQS0NTMTJfY3JlYXRlYCBtYW4gcGFnZS4KCiAgICAgICAgOnBhcmFtIHBhc3NwaHJhc2U6IFRoZSBwYXNzcGhyYXNlIHVzZWQgdG8gZW5jcnlwdCB0aGUgc3RydWN0dXJlLiBVbmxpa2UKICAgICAgICAgICAgc29tZSBvdGhlciBwYXNzcGhyYXNlIGFyZ3VtZW50cywgdGhpcyAqbXVzdCogYmUgYSBzdHJpbmcsIG5vdCBhCiAgICAgICAgICAgIGNhbGxiYWNrLgogICAgICAgIDp0eXBlIHBhc3NwaHJhc2U6IDpweTpkYXRhOmBieXRlc2AKCiAgICAgICAgOnBhcmFtIGl0ZXI6IE51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIGVuY3J5cHRpb24gc3RlcC4KICAgICAgICA6dHlwZSBpdGVyOiA6cHk6ZGF0YTpgaW50YAoKICAgICAgICA6cGFyYW0gbWFjaXRlcjogTnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgTUFDIHN0ZXAuCiAgICAgICAgOnR5cGUgbWFjaXRlcjogOnB5OmRhdGE6YGludGAKCiAgICAgICAgOnJldHVybjogVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgUEtDUyAjMTIgc3RydWN0dXJlLgogICAgICAgIDpydHlwZToKICAgICAgICByRQEAAE5yAQAAACkU2hdfdGV4dF90b19ieXRlc19hbmRfd2FybnJ2AQAAclIAAAByVgAAAHJLAAAAWhBza19YNTA5X25ld19udWxsclcAAADaDHNrX1g1MDlfZnJlZVoMc2tfWDUwOV9wdXNocsQAAABydwEAAHJ2AAAAcjYBAABaDVBLQ1MxMl9jcmVhdGVaJk5JRF9wYmVfV2l0aFNIQTFBbmQzX0tleV9UcmlwbGVERVNfQ0JDcogAAADaC1BLQ1MxMl9mcmVlcloAAABaDmkyZF9QS0NTMTJfYmlvclwAAAApCnJuAAAAckUBAADaBGl0ZXJaB21hY2l0ZXJyfgEAAHL6AAAA2gxmcmllbmRseW5hbWVyeAAAANoGcGtjczEyck0AAAByRAAAAHJEAAAAckUAAABybgEAANAJAABzOgAAAAAUCgIKAQgC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AAwAAABDAAAAc9IBAAB0AGQBfAGDAn0BdAF8AHQCgwJyHnwAagNkAoMBfQB0BHwAgwF9AnwBczB0BWoGfQF0B2oIfAJ0BWoGgwJ9A3wDdAVqBmsCck50CYMAAQB0BWoKfAN0B2oLgwJ9A3QFagxkA4MBfQR0BWoMZASDAX0FdAVqDGQFgwF9BnQHag18A3wBfAR8BXwGgwV9B3wHc5Z0CYMAAQB0BWoKfAZkBhkAdAdqDoMCfQZ5CnQJgwABAFcAbhQEAHQPawpyxgEAAQABAFkAbgJYAHwEZAYZAHQFagZrAnLcZAd9CG4edBBqEXQQgwF9CHQFagp8BGQGGQB0B2oSgwJ8CF8TfAVkBhkAdAVqBmsCkAFyFGQHfQlkB30KblB0FGoVfAVkBhkAgwF9CXQFagxkCIMBfQt0B2oWfAVkBhkAfAuDAn0MdAVqF3wMfAtkBhkAgwJkB2QHhQIZAH0KfAx0BWoGawKQAXJkZAd9CmcAfQ14OHQYdAdqGXwGgwGDAUQAXSZ9DnQHahp8BnwOgwJ9D3QUahV8D4MBfRB8DWobfBCDAQEAkAFxeFcAfA2QAXOsZAd9DXQcahF0HIMBfRF8CHwRXxN8CXwRXx18DXwRXx58CnwRXx98EVMAKQlhngEAAAogICAgTG9hZCBwa2NzMTIgZGF0YSBmcm9tIHRoZSBzdHJpbmcgKmJ1ZmZlciouIElmIHRoZSBwa2NzMTIgc3RydWN0dXJlIGlzCiAgICBlbmNyeXB0ZWQsIGEgKnBhc3NwaHJhc2UqIG11c3QgYmUgaW5jbHVkZWQuICBUaGUgTUFDIGlzIGFsd2F5cwogICAgY2hlY2tlZCBhbmQgdGh1cyByZXF1aXJlZC4KCiAgICBTZWUgYWxzbyB0aGUgbWFuIHBhZ2UgZm9yIHRoZSBDIGZ1bmN0aW9uIDpweTpmdW5jOmBQS0NTMTJfcGFyc2VgLgoKICAgIDpwYXJhbSBidWZmZXI6IFRoZSBidWZmZXIgdGhlIGNlcnRpZmljYXRlIGlzIHN0b3JlZCBpbgogICAgOnBhcmFtIHBhc3NwaHJhc2U6IChPcHRpb25hbCkgVGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgdGhlIFBLQ1MxMiBsdW1wCiAgICA6cmV0dXJuczogVGhlIFBLQ1MxMiBvYmplY3QKICAg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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 16
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
crypto.cpython-36.opt-1.pyc
87.87 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
crypto.cpython-36.pyc
87.93 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
debug.cpython-36.opt-1.pyc
1.08 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
debug.cpython-36.pyc
1.08 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
rand.cpython-36.opt-1.pyc
1.21 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
rand.cpython-36.pyc
1.21 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
SSL.cpython-36.opt-1.pyc
75.75 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
SSL.cpython-36.pyc
75.82 KB
lrw-r--r--
2021-04-09 04:52:24
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
tsafe.cpython-36.opt-1.pyc
1.42 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
tsafe.cpython-36.pyc
1.42 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
version.cpython-36.opt-1.pyc
615 B
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
version.cpython-36.pyc
615 B
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_util.cpython-36.opt-1.pyc
4.05 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_util.cpython-36.pyc
4.05 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-1.pyc
526 B
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.pyc
526 B
lrw-r--r--
2021-04-09 04:52:25
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).