REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 68.08 KB
Close
/opt/alt/python37/lib/python3.7/site-packages/__pycache__/typing_extensions.cpython-37.pyc
Text
Base64
Qg0NCgAAAABF9wRfD0cBAOMAAAAAAAAAAAAAAAAQAAAAQAAAAHMCDQAAZABkAWwAWgBkAGQBbAFaAWQAZAFsAloCZABkAWwDWgNkAGQBbARaBGQAZAFsBW0AWgYBAGQAZAFsB1oHZABkAmwEbQhaCG0JWgltCloKbQtaCwEAZQNqDGQBZAOFAhkAZARrBVoNZQ1ydGUOBABaD1oQbhBkAGQFbARtD1oPbRBaEAEAZAZaEXkYZABkB2wEbRJaEm0TWhNtFFoUAQBXAG4YBABlFWsKcrgBAAEAAQBkCFoRWQBuAlgAeRRkAGQJbARtFloWAQBkCFoXVwBuGAQAZRVrCnLmAQABAAEAZAZaF1kAbgJYAHkQZABkCmwEbRhaGAEAVwBuHgQAZRVrCpABchYBAAEAAQBkC2QMhABaGFkAbgJYAHkUZABkDWwEbRlaGW0aWhoBAFcAbjIEAGUVawqQAXJeAQABAAEARwBkDmQPhABkD4MCWhlHAGQQZBGEAGQRgwJaGlkAbgJYAGQSZBOEAFobZBRkFYQAWhxlHWUEZBaDApABcoRlBGoeWh5uCGQXZBaEAFoeZR1lBGQYgwKQAXKqZABkGWwEbR9aHwEAZAhaIG4IZAFaH2QGWiBlA2oMZAFkGoUCGQBkG2sFkAFy1mQAZAFsIVohZSFqIlojbghkHGQdhABaI2QeZB9kIGQhZCJkI2QkZCVkJmQnZChkKWQqZCtkLGQtZxBaJGUNkAJwCmUXWiVlDZACciJlJKAmZC5kL2QwZwOhAQEAZSWQAnIyZSSgJ2QxoQEBAGUDagxkAWQDhQIZAGQyawNaKGUokAJyWmUkoCZkM2Q0ZDVnA6EBAQBlHWUEZDaDApACcm5lBGopWiluWGUdZQRkN4MCkAJynEcAZDhkOYQAZDllBGoqZAhkOo0EWitlK2QIZDqNAVopbipHAGQ7ZDyEAGQ8ZQRqEIMDWixHAGQ9ZDaEAGQ2ZQRqLWUsZAhkPo0FWillBKAKZD+hAVouZQSgCmRAoQFaL2UEoApkQaEBWjBlBGoKZEJkCGRDjQJaMWUEagpkRGQIZEONAloyZQRqCmRFZAhkQ40CWjNlBGoKZEZkCGRHjQJaNGUdZQRkHoMCkANyMGUEajVaNW5YZR1lBGQ3gwKQA3JeRwBkSGRJhABkSWUEaipkCGQ6jQRaNmU2ZAhkOo0BWjVuKkcAZEpkS4QAZEtlBGoQgwNaN0cAZExkHoQAZB5lBGotZTdkCGQ+jQVaNWUdZQRkH4MCkANysGUDagxkAWQahQIZAGRNawWQA3KwZQRqLVotbpBlA2oMZAFkGoUCGQBkTWsFkANy6EcAZE5kT4QAZE9lBGo4ZAhkOo0EWjllOWQfZFBkUY0CWi1uWGUdZQRkN4MCkARyFkcAZFJkU4QAZFNlBGoqZAhkOo0EWjplOmQIZDqNAVotbipHAGRUZFWEAGRVZQRqEIMDWjtHAGRWZB+EAGQfZQRqLWU7ZAhkPo0FWi1lHWUEZCeDApAEclRlBGo8WjxuCGRXZCeEAFo8ZFhkKIQAWj1lHWUEZCmDApAEcnhlBGo+Wj5ukGUDagxkAWQahQIZAGRNawWQBHKwRwBkWWRahABkWmUEajhkCGQ6jQRaP2U/ZClkW2RRjQJaPm5YZR1lBGQ3gwKQBHLeRwBkXGRdhABkXWUEaipkCGQ6jQRaQGVAZAhkOo0BWj5uKkcAZF5kX4QAZF9lBGoQgwNaQUcAZGBkKYQAZCllBGotZUFkCGQ+jQVaPmRhZGKEAFpCZGNkK4QAWkNlHWUEZCCDApAFcixlBGpEWkRuKmUEagpkZGQIZQ5kZY0DWkVHAGRmZCCEAGQgZQRqCGVFGQBlDmRnjQRaRGRoZGmEAFpGRwBkamRrhABka2UPgwNaR2VGZGyDAZAFcpZHAGRtZGyEAGRsZQRqCGUxGQBlR2UGakhkbo0FWkhlRmRvgwGQBXLKRwBkcGRvhABkb2VIZTIZAGUEaghlMWU0ZTJmAxkAZUdlBmpJZG6NBlpJZUZkcYMBkAVy8kcAZHJkcYQAZHFlBGoIZTEZAGVHZQZqSmRujQVaSmVGZHODAZAGchhHAGR0ZHOEAGRzZUplMRkAZUdlBmpLZG6NBVpLZR1lBGQjgwKQBnIsZQRqTFpMbkxlIJAGclZHAGR1ZCOEAGQjZQFqTWUEak5lLhkAZUdlAWpNZG6NBlpMbiJHAGR2ZCOEAGQjZQFqTWUEak5lLhkAZUdlAWpNZG6NBlpMZR1lBGQhgwKQBnKMZQRqT1pPbkJlHWUCZHeDApAGcrhHAGR4ZCGEAGQhZQRqCGUxGQBlR2UCalBkbo0FWk9uFkcAZHlkIYQAZCFlBGoIZTEZAIMDWk9lHWUEZHqDApAGcuxlBGpRWlFlJKAnZHqhAQEAblJlHWUCZHuDApAHciJHAGR8ZHqEAGR6ZQRqCGUxGQBlR2UCalJkbo0FWlFlJKAnZHqhAQEAbhxlA2oMZAFkGoUCGQBkfWsFkAdyPmVTZH6DAQEAZR1lBGQkgwKQB3JSZQRqVFpUblRlIJAHcoBHAGR/ZCSEAGQkZQFqVWUEalZlL2UwZgIZAGVHZQFqVWRujQZaVG4mRwBkgGQkhABkJGUBalVlBGpWZS9lMGYCGQBlR2UBalVkbo0GWlRlHWUEZCKDApAHcrplBGpXWlduyGQyZQNqDGQBZAOFAhkABAADAGsBkAdy3GSBawGQCHIubgQBAG5OZSCQB3PqdFiCAWUEoApkgqEBWllHAGSDZISEAGSEZQRqD4MDWlpHAGSFZCKEAGQiZQFqV2UEaltlLmVcZgIZAGVaZQFqV2RujQZaV25UZSCQCHJcRwBkhmQihABkImUBaldlBGpbZS5lXGYCGQBlR2UBaldkbo0GWlduJkcAZIdkIoQAZCJlAWpXZQRqW2UuZVxmAhkAZUdlAWpXZG6NBlpXZR1lBGSIgwKQCHKgZQRqXVpdZSSgJ2SIoQEBAG5qZR1lAWSIgwKQCXIKZSCQCHLaRwBkiWSIhABkiGUBal1lBGpWZS9lMGYCGQBlR2UBal1kbo0GWl1uJkcAZIpkiIQAZIhlAWpdZQRqVmUvZTBmAhkAZUdlAWpdZG6NBlpdZSSgJ2SIoQEBAGVGZIuDAZAJcjxHAGSMZIuEAGSLZUtlMRkAZQRqCGUxZTRmAhkAZUdlBmpeZG6NBlpeZR1lBGQqgwKQCXJQZQRqX1pfbghkjWQqhABaX2UdZQRkLIMCkAlybGUEamBaYG4EZWFaYGUdZQRkLYMCkAlyhGUEamJaYm4EZAZaYmSOZI+EAFpjZRGQCXKeZJBkkYQAWhNkkmRsZJNklGRxZHNklWSWZJdkmGSZZCFkemcNWmRkmmSbhABaZWScZJ2EAFpmZR1lBGQzgwKQCXLgZQRqZ1pnbpRlKJAKcjZlDZAKczZHAGSeZJ+EAGSfZQ+DA1poRwBkoGQzhABkM2VoZKGNA1pnZWdqaWQBawmQCnJ0ZWdqaWpqZRGQCnIqZKJuAmSjZKSNAWVnX2luPmUNkApydGQAZKVsBG0UWhRta1prbWxabAEARwBkpmSfhABkn2UAam2DA1po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OTAwMAogICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfU0laRSArPSAxICAjIEVycm9yIHJlcG9ydGVkIGJ5IHR5cGUgY2hlY2tlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgQ29ubmVjdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVPVVQ6IEZpbmFsW2ludF0gPSAxMAogICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBGYXN0Q29ubmVjdG9yKENvbm5lY3Rpb24pOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRU9VVCA9IDEgICMgRXJyb3IgcmVwb3J0ZWQgYnkgdHlwZSBjaGVja2VyCgogICAgICAgICAgICAgICAgICAgICAgIFRoZXJlIGlzIG5vIHJ1bnRpbWUgY2hlY2tpbmcgb2YgdGhlc2UgcHJvcGVydGllcy4pAdoDZG9jYwAAAAAAAAAAAAAAAAMAAAAAAAAAc04AAABlAFoBZABaAmQBWgNkAloEZBBkBGQFhAFaBWQGZAeEAFoGZAhkCYQAWgeHAGYBZApkC4QIWghkDGQNhABaCWQOZA+EAFoKhwAEAFoLUwApEdoGX0ZpbmFsYdkBAABBIHNwZWNpYWwgdHlwaW5nIGNvbnN0cnVjdCB0byBpbmRpY2F0ZSB0aGF0IGEgbmFtZQogICAgICAgIGNhbm5vdCBiZSByZS1hc3NpZ25lZCBvciBvdmVycmlkZGVuIGluIGEgc3ViY2xhc3MuCiAgICAgICAgRm9yIGV4YW1wbGU6CgogICAgICAgICAgICBNQVhfU0laRTogRmluYWwgPSA5MDAwCiAgICAgICAgICAgIE1BWF9TSVpFICs9IDEgICMgRXJyb3IgcmVwb3J0ZWQgYnkgdHlwZSBjaGVja2VyCgogICAgICAgICAgICBjbGFzcyBDb25uZWN0aW9uOgogICAgICAgICAgICAgICAgVElNRU9VVDogRmluYWxbaW50XSA9IDEwCiAgICAgICAgICAgIGNsYXNzIEZhc3RDb25uZWN0b3IoQ29ubmVjdGlvbik6CiAgICAgICAgICAgICAgICBUSU1FT1VUID0gMSAgIyBFcnJvciBy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dGVkIGJ5IHR5cGUgY2hlY2tlcgoKICAgICAgICBUaGVyZSBpcyBubyBydW50aW1lIGNoZWNraW5nIG9mIHRoZXNlIHByb3BlcnRpZXMuCiAgICAgICAgTikFchQAAAByFQAAAHIWAAAAclYAAAByagAAAHIPAAAAcg8AAAByDwAAAHIRAAAAcjgAAADuAQAAcwQAAAAIDgQCYwEAAAAAAAAAAQAAAAEAAABDAAAAcwQAAAB8AFMAKQFhdQIAAFRoaXMgZGVjb3JhdG9yIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIHRvIHR5cGUgY2hlY2tlcnMgdGhhdAogICAgICAgIHRoZSBkZWNvcmF0ZWQgbWV0aG9kIGNhbm5vdCBiZSBvdmVycmlkZGVuLCBhbmQgZGVjb3JhdGVkIGNsYXNzCiAgICAgICAgY2Fubm90IGJlIHN1YmNsYXNzZWQuIEZvciBleGFtcGxlOgoKICAgICAgICAgICAgY2xhc3MgQmFzZToKICAgICAgICAgICAgICAgIEBmaW5hbAogICAgICAgICAgICAgICAgZGVmIGRvbmUoc2VsZikgLT4gTm9uZToKICAgICAgICAgICAgICAgICAgICAuLi4KICAgICAgICAgICAgY2xhc3MgU3ViKEJhc2UpOgogICAgICAgICAgICAgICAgZGVmIGRvbmUoc2VsZikgLT4gTm9uZTogICMgRXJyb3IgcmVwb3J0ZWQgYnkgdHlwZSBjaGVja2VyCiAgICAgICAgICAgICAgICAgICAgLi4uCiAgICAgICAgICAgIEBmaW5hbAogICAgICAgICAgICBjbGFzcyBMZWFmOgogICAgICAgICAgICAgICAgLi4uCiAgICAgICAgICAgIGNsYXNzIE90aGVyKExlYWYpOiAgIyBFcnJvciByZXBvcnRlZCBieSB0eXBlIGNoZWNrZXIKICAgICAgICAgICAgICAgIC4uLgoKICAgICAgICBUaGVyZSBpcyBubyBydW50aW1lIGNoZWNraW5nIG9mIHRoZXNlIHByb3BlcnRpZXMuCiAgICAgICAgcg8AAAApAdoBZnIPAAAAcg8AAAByEQAAAHJAAAAABAIAAHMCAAAAABRjAQAAAAAAAAABAAAAAgAAAEMAAABzCAAAAHQAfACDAVMAKQFOKQFy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bmZvcmNlZCBieSB0eXBlIGNoZWNrZXJzLgogICAgICAgIFVzYWdlOjoKCiAgICAgICAgICAgIGNsYXNzIFBvaW50MkQoVHlwZWREaWN0KToKICAgICAgICAgICAgICAgIHg6IGludAogICAgICAgICAgICAgICAgeTogaW50CiAgICAgICAgICAgICAgICBsYWJlbDogc3RyCgogICAgICAgICAgICBhOiBQb2ludDJEID0geyd4JzogMSwgJ3knOiAyLCAnbGFiZWwnOiAnZ29vZCd9ICAjIE9LCiAgICAgICAgICAgIGI6IFBvaW50MkQgPSB7J3onOiAzLCAnbGFiZWwnOiAnYmFkJ30gICAgICAgICAgICMgRmFpbHMgdHlwZSBjaGVjawoKICAgICAgICAgICAgYXNzZXJ0IFBvaW50MkQoeD0xLCB5PTIsIGxhYmVsPSdmaXJzdCcpID09IGRpY3QoeD0xLCB5PTIsIGxhYmVsPSdmaXJzdCcpCgogICAgICAgIFRoZSB0eXBlIGluZm8gY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgUG9pbnQyRC5fX2Fubm90YXRpb25zX18gZGljdCwgYW5kCiAgICAgICAgdGhlIFBvaW50MkQuX19yZXF1aXJlZF9rZXlzX18gYW5kIFBvaW50MkQuX19vcHRpb25hbF9rZXlzX18gZnJvemVuc2V0cy4KICAgICAgICBUeXBlZERpY3Qgc3VwcG9ydHMgdHdvIGFkZGl0aW9uYWwgZXF1aXZhbGVudCBmb3Jtczo6CgogICAgICAgICAgICBQb2ludDJEID0gVHlwZWREaWN0KCdQb2ludDJEJywgeD1pbnQsIHk9aW50LCBsYWJlbD1zdHIpCiAgICAgICAgICAgIFBvaW50MkQgPSBUeXBlZERpY3QoJ1BvaW50MkQnLCB7J3gnOiBpbnQsICd5JzogaW50LCAnbGFiZWwnOiBzdHJ9KQoKICAgICAgICBUaGUgY2xhc3Mgc3ludGF4IGlzIG9ubHkgc3VwcG9ydGVkIGluIFB5dGhvbiAzLjYrLCB3aGlsZSB0d28gb3RoZXIKICAgICAgICBzeW50YXggZm9ybXMgd29yayBmb3IgUHl0aG9uIDIuNyBhbmQgMy4yKwogICAgICAgIGMAAAAAAAAAAAAA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A2QCWgRkA2QEhABaBWUGZAVkBoQAgwFaB2QHZAiEAFoIZAlTACkKckoAAABhoQQAAEFkZCBjb250ZXh0IHNwZWNpZmljIG1ldGFkYXRhIHRvIGEgdHlwZS4KCiAgICAgICAgRXhhbXBsZTogQW5ub3RhdGVkW2ludCwgcnVudGltZV9jaGVjay5VbnNpZ25lZF0gaW5kaWNhdGVzIHRvIHRoZQogICAgICAgIGh5cG90aGV0aWNhbCBydW50aW1lX2NoZWNrIG1vZHVsZSB0aGF0IHRoaXMgdHlwZSBpcyBhbiB1bnNpZ25lZCBpbnQuCiAgICAgICAgRXZlcnkgb3RoZXIgY29uc3VtZXIgb2YgdGhpcyB0eXBlIGNhbiBpZ25vcmUgdGhpcyBtZXRhZGF0YSBhbmQgdHJlYXQKICAgICAgICB0aGlzIHR5cGUgYXMgaW50LgoKICAgICAgICBUaGUgZmlyc3QgYXJndW1lbnQgdG8gQW5ub3RhdGVkIG11c3QgYmUgYSB2YWxpZCB0eXBlIChhbmQgd2lsbCBiZSBpbgogICAgICAgIHRoZSBfX29yaWdpbl9fIGZpZWxkKSwgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIGtlcHQgYXMgYSB0dXBsZSBpbgogICAgICAgIHRoZSBfX2V4dHJhX18gZmllbGQuCgogICAgICAgIERldGFpbHM6CgogICAgICAgIC0gSXQncyBhbiBlcnJvciB0byBjYWxsIGBBbm5vdGF0ZWRgIHdpdGggbGVzcyB0aGFuIHR3byBhcmd1bWVudHMuCiAgICAgICAgLSBOZXN0ZWQgQW5ub3RhdGVkIGFyZSBmbGF0dGVuZWQ6OgoKICAgICAgICAgICAgQW5ub3RhdGVkW0Fubm90YXRlZFtULCBBbm4xLCBBbm4yXSwgQW5uM10gPT0gQW5ub3RhdGVkW1QsIEFubjEsIEFubjIsIEFubjNdCgogICAgICAgIC0gSW5zdGFudGlhdGluZyBhbiBhbm5vdGF0ZWQgdHlwZSBpcyBlcXVpdmFsZW50IHRvIGluc3RhbnRpYXRpbmcgdGhlCiAgICAgICAgdW5kZXJseWluZyB0eXBlOjoKCiAgICAgICAgICAgIEFubm90YXRlZFtDLCBBbm4xXSg1KSA9PSBDKDUpCgogICAgICAgIC0gQW5ub3RhdGVkIGNhbiBiZSB1c2VkIGFzIGEgZ2VuZXJpYyB0eXBlIGFsaWFzOjoKCiAgICAgICAgICAgIE9wdGltaXplZCA9IEFubm90YXRlZFtULCBydW50aW1lLk9wdGltaXplKCldCiAgICAgICAgICAgIE9wdGltaXplZFtpbnRdID09IEFubm90YXRlZFtpbnQsIHJ1bnRpbWUuT3B0aW1pemUoKV0KCiAgICAgICAgICAgIE9wdGltaXplZExpc3QgPSBBbm5vdGF0ZWRbTGlzdFtUXSwgcnVudGltZS5PcHRpbWl6ZSgpXQogICAgICAgICAgICBPcHRpbWl6ZWRMaXN0W2ludF0gPT0gQW5ub3RhdGVkW0xpc3RbaW50XSwgcnVudGltZS5PcHRpbWl6ZSgpXQogICAgICAgIHIPAAAAYwEAAAAAAAAAAwAAAAIAAABPAAAAcwwAAAB0AGQBgwGCAWQAUwApAk56JlR5cGUgQW5ub3RhdGVkIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQuKQFyHwAAACkDciIAAAByKQAAAHIqAAAAcg8AAAByDwAAAHIRAAAAcigAAAAYBwAAcwIAAAAAAXoRQW5ub3RhdGVkLl9fbmV3X19jAgAAAAAAAAAFAAAABAAAAEMAAABzTAAAAHQAfAF0AYMCchZ0AnwBgwFkAWsAch50A2QCgwGCAWQDfQJ0BKAFfAFkBBkAfAKhAn0DdAF8AWQFZACFAhkAgwF9BHQGfAN8BIMCUwApBk5yLAAAAHpVQW5ub3RhdGVkWy4uLl0gc2hvdWxkIGJlIHVzZWQgd2l0aCBhdCBsZWFzdCB0d28gYXJndW1lbnRzIChhIHR5cGUgYW5kIGFuIGFubm90YXRpb24pLnokQW5ub3RhdGVkW3QsIC4uLl06IHQgbXVzdCBiZSBhIHR5cGUucgEAAABybgAAACkHcn0AAAByjgAAAHIhAAAAch8AAABycAAAAHIMAAAAcisBAAApBXIiAAAAcgcBAAByBgEAAHL7AAAAci0BAAByDwAAAHIPAAAAchEAAAByCwEAABsHAABzDAAAAAACFgEIAwQBEAEQAXobQW5ub3RhdGVkLl9fY2xhc3NfZ2V0aXRlbV9fYwEAAAAAAAAAAwAAAAQAAABPAAAAcxQAAAB0AGQBoAF8AGoCoQGDAYIBZABTACkCTnocQ2Fubm90IHN1YmNsYXNzIHt9LkFubm90YXRlZCkDch8AAABycQAAAHIVAAAAKQNyIgAAAHIpAAAAcioAAAByDwAAAHIPAAAAchEAAAByDwEAACYHAABzBAAAAAABAgF6G0Fubm90YXRlZC5fX2luaXRfc3ViY2xhc3NfX04pCXIUAAAAchUAAAByFgAAAHJWAAAAchcAAAByKAAAAHIOAAAAcgsBAAByDwEAAHIPAAAAcg8AAAByDwAAAHIRAAAAckoAAAD1BgAAcwoAAAAIHwQCBAIIAwwLYwEAAAAAAAAAAwAAAAMAAABDAAAAc1wAAAB0AHwAdAGDAnIUdAJ8AGoDgwFTAHQAfAB0BGoFgwJyWHQGZAFkAoQAfABqB0QAgwGDAX0BfAF8AGoHawJyQnwAUwB8AKAIfAGhAX0CfABqCXwCXwl8AlMAfABTACkDejJTdHJpcHMgdGhlIGFubm90YXRpb25zIGZyb20gYSBnaXZlbiB0eXBlLgogICAgICAgIGMBAAAAAAAAAAIAAAADAAAAcwAAAHMWAAAAfABdDn0BdAB8AYMBVgABAHECZABTACkBTikB2hJfc3RyaXBfYW5ub3RhdGlvbnMpAnK6AAAAcvQAAAByDwAAAHIPAAAAchEAAAByuwAAADEHAABzAgAAAAQAeiVfc3RyaXBfYW5ub3RhdGlvbnMuPGxvY2Fscz4uPGdlbmV4cHI+KQpyfQAAAHIrAQAAcjIBAABypAAAAHJwAAAAcoUAAAByjgAAAHLcAAAAci4BAADaCF9zcGVjaWFsKQNy7wAAAFoNc3RyaXBwZWRfYXJnc3KsAAAAcg8AAAByDwAAAHIRAAAAcjIBAAArBwAAcxQAAAAAAwoBCgEMARQBCgEEAQoBCAEEAXIyAQAAYwQAAAAAAAAABQAAAAUAAABDAAAAcyoAAAB0AGoBfAB8AXwCZAGNA30EfANyGHwEUwBkAmQDhAB8BKACoQBEAIMBUwApBGFdBQAAUmV0dXJuIHR5cGUgaGludHMgZm9yIGFuIG9iamVjdC4KCiAgICAgICAgVGhpcyBpcyBvZnRlbiB0aGUgc2FtZSBhcyBvYmouX19hbm5vdGF0aW9uc19fLCBidXQgaXQgaGFuZGxlcwogICAgICAgIGZvcndhcmQgcmVmZXJlbmNlcyBlbmNvZGVkIGFzIHN0cmluZyBsaXRlcmFscywgYWRkcyBPcHRpb25hbFt0XSBpZiBhCiAgICAgICAgZGVmYXVsdCB2YWx1ZSBlcXVhbCB0byBOb25lIGlzIHNldCBhbmQgcmVjdXJzaXZlbHkgcmVwbGFjZXMgYWxsCiAgICAgICAgJ0Fubm90YXRlZFtULCAuLi5dJyB3aXRoICdUJyAodW5sZXNzICdpbmNsdWRlX2V4dHJhcz1UcnVlJykuCgogICAgICAgIFRoZSBhcmd1bWVudCBtYXkgYmUgYSBtb2R1bGUsIGNsYXNzLCBtZXRob2QsIG9yIGZ1bmN0aW9uLiBUaGUgYW5ub3RhdGlvbnMKICAgICAgICBhcmUgcmV0dXJuZWQgYXMgYSBkaWN0aW9uYXJ5LiBGb3IgY2xhc3NlcywgYW5ub3RhdGlvbnMgaW5jbHVkZSBhbHNvCiAgICAgICAgaW5oZXJpdGVkIG1lbWJlcnMuCgogICAgICAgIFR5cGVFcnJvciBpcyByYWlzZWQgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCBvZiBhIHR5cGUgdGhhdCBjYW4gY29udGFpbgogICAgICAgIGFubm90YXRpb25zLCBhbmQgYW4gZW1wdHkgZGljdGlvbmFyeSBpcyByZXR1cm5lZCBpZiBubyBhbm5vdGF0aW9ucyBhcmUKICAgICAgICBwcmVzZW50LgoKICAgICAgICBCRVdBUkUgLS0gdGhlIGJlaGF2aW9yIG9mIGdsb2JhbG5zIGFuZCBsb2NhbG5zIGlzIGNvdW50ZXJpbnR1aXRpdmUKICAgICAgICAodW5sZXNzIHlvdSBhcmUgZmFtaWxpYXIgd2l0aCBob3cgZXZhbCgpIGFuZCBleGVjKCkgd29yaykuICBUaGUKICAgICAgICBzZWFyY2ggb3JkZXIgaXMgbG9jYWxzIGZpcnN0LCB0aGVuIGdsb2JhbHMuCgogICAgICAgIC0gSWYgbm8gZGljdCBhcmd1bWVudHMgYXJlIHBhc3NlZCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHVzZSB0aGUKICAgICAgICAgIGdsb2JhbHMgZnJvbSBvYmogKG9yIHRoZSByZXNwZWN0aXZlIG1vZHVsZSdzIGdsb2JhbHMg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biB1bnNpZ25lZCBpbnQuCiAgICAgICAgRXZlcnkgb3RoZXIgY29uc3VtZXIgb2YgdGhpcyB0eXBlIGNhbiBpZ25vcmUgdGhpcyBtZXRhZGF0YSBhbmQgdHJlYXQKICAgICAgICB0aGlzIHR5cGUgYXMgaW50LgoKICAgICAgICBUaGUgZmlyc3QgYXJndW1lbnQgdG8gQW5ub3RhdGVkIG11c3QgYmUgYSB2YWxpZCB0eXBlLCB0aGUgcmVtYWluaW5nCiAgICAgICAgYXJndW1lbnRzIGFyZSBrZXB0IGFzIGEgdHVwbGUgaW4gdGhlIF9fbWV0YWRhdGFfXyBmaWVsZC4KCiAgICAgICAgRGV0YWlsczoKCiAgICAgICAgLSBJdCdzIGFuIGVycm9yIHRvIGNhbGwgYEFubm90YXRlZGAgd2l0aCBsZXNzIHRoYW4gdHdvIGFyZ3VtZW50cy4KICAgICAgICAtIE5lc3RlZCBBbm5vdGF0ZWQgYXJlIGZsYXR0ZW5lZDo6CgogICAgICAgICAgICBBbm5vdGF0ZWRbQW5ub3RhdGVkW1QsIEFubjEsIEFubjJdLCBBbm4zXSA9PSBBbm5vdGF0ZWRbVCwgQW5uMSwgQW5uMiwgQW5uM10KCiAgICAgICAgLSBJbnN0YW50aWF0aW5nIGFuIGFubm90YXRlZCB0eXBlIGlzIGVxdWl2YWxlbnQgdG8gaW5zdGFudGlhdGluZyB0aGUKICAgICAgICB1bmRlcmx5aW5nIHR5cGU6OgoKICAgICAgICAgICAgQW5ub3RhdGVkW0MsIEFubjFdKDUpID09IEMoNSkKCiAgICAgICAgLSBBbm5vdGF0ZWQgY2FuIGJlIHVzZWQgYXMgYSBnZW5lcmljIHR5cGUgYWxpYXM6OgoKICAgICAgICAgICAgT3B0aW1pemVkID0gQW5ub3RhdGVkW1QsIHJ1bnRpbWUuT3B0aW1pemUoKV0KICAgICAgICAgICAgT3B0aW1pemVkW2ludF0gPT0gQW5ub3RhdGVkW2ludCwgcnVudGltZS5PcHRpbWl6ZSgpXQoKICAgICAgICAgICAgT3B0aW1pemVkTGlzdCA9IEFubm90YXRlZFtMaXN0W1RdLCBydW50aW1lLk9wdGltaXplKCldCiAgICAgICAgICAgIE9wdGltaXplZExpc3RbaW50XSA9PSBBbm5vdGF0ZWRbTGlzdFtpbnRdLCBydW50aW1lLk9wdGltaXplKCldCiAgICAgICAgTikEchQAAAByFQAAAHIWAAAAclYAAAByDwAAAHIPAAAAcg8AAAByEQAAAHJKAAAAyQcAAHMCAAAACB4pAXKFAAAAYwEAAAAAAAAAAQAAAAMAAABDAAAAcy4AAAB0AHwAdAGDAnIOdAJTAHQAfAB0A4MCch58AGoEUwB8AHQFawhyKnQFUwBkAVMAKQJhEgIAAEdldCB0aGUgdW5zdWJzY3JpcHRlZCB2ZXJzaW9uIG9mIGEgdHlwZS4KCiAgICAgICAgVGhpcyBzdXBwb3J0cyBnZW5lcmljIHR5cGVzLCBDYWxsYWJsZSwgVHVwbGUsIFVuaW9uLCBMaXRlcmFsLCBGaW5hbCwgQ2xhc3NWYXIKICAgICAgICBhbmQgQW5ub3RhdGVkLiBSZXR1cm4gTm9uZSBmb3IgdW5zdXBwb3J0ZWQgdHlwZXMuIEV4YW1wbGVzOjoKCiAgICAgICAgICAgIGdldF9vcmlnaW4oTGl0ZXJhbFs0Ml0pIGlzIExpdGVyYWwKICAgICAgICAgICAgZ2V0X29yaWdpbihpbnQpIGlzIE5vbmUKICAgICAgICAgICAgZ2V0X29yaWdpbihDbGFzc1ZhcltpbnRdKSBpcyBDbGFzc1ZhcgogICAgICAgICAgICBnZXRfb3JpZ2luKEdlbmVyaWMpIGlzIEdlbmVyaWMKICAgICAgICAgICAgZ2V0X29yaWdpbihHZW5lcmljW1RdKSBpcyBHZW5lcmljCiAgICAgICAgICAgIGdldF9vcmlnaW4oVW5pb25bVCwgaW50XSkgaXMgVW5pb24KICAgICAgICAgICAgZ2V0X29yaWdpbihMaXN0W1R1cGxlW1QsIFRdXVtpbnRdKSA9PSBsaXN0CiAgICAgICAgTikGcn0AAAByKwEAAHJKAAAAcoUAAABypAAAAHICAAAAKQFyawAAAHIPAAAAcg8AAAByEQAAAHJIAAAA8QcAAHMOAAAAAA4KAQQBCgEGAQgBBAFjAQAAAAAAAAACAAAABAAAAEMAAABzZAAAAHQAfAB0AYMCchh8AGoCZgF8AGoDFwBTAHQAfAB0BIMCcmB8AGoFfQF0BnwAgwF0B2oIaglrCHJcfAFkARkAdAprCXJcdAt8AWQCZAOFAhkAgwF8AWQDGQBmAn0BfAFTAGQEUwApBWHGAQAAR2V0IHR5cGUgYXJndW1lbnRzIHdpdGggYWxsIHN1YnN0aXR1dGlvbnMgcGVyZm9ybWVkLgoKICAgICAgICBGb3IgdW5pb25zLCBiYXNpYyBzaW1wbGlmaWNhdGlvbnMgdXNlZCBieSBVbmlvbiBjb25zdHJ1Y3RvciBhcmUgcGVyZm9ybWVkLgogICAgICAgIEV4YW1wbGVzOjoKICAgICAgICAgICAgZ2V0X2FyZ3MoRGljdFtzdHIsIGludF0pID09IChzdHIsIGludCkKICAgICAgICAgICAgZ2V0X2FyZ3MoaW50KSA9PSAoKQogICAgICAgICAgICBnZXRfYXJncyhVbmlvbltpbnQsIFVuaW9uW1QsIGludF0sIHN0cl1baW50XSkgPT0gKGludCwgc3RyKQogICAgICAgICAgICBnZXRfYXJncyhVbmlvbltpbnQsIFR1cGxlW1QsIGludF1dW3N0cl0pID09IChpbnQsIFR1cGxlW3N0ciwgaW50XSkKICAgICAgICAgICAgZ2V0X2FyZ3MoQ2FsbGFibGVbW10sIFRdW2ludF0pID09IChbXSwgaW50KQogICAgICAgIHIBAAAATnLKAAAAcg8AAAApDHJ9AAAAcisBAABypAAAAHIsAQAAcoUAAABy3AAAAHJIAAAAcrEAAAByoAAAAHIDAAAA2ghFbGxpcHNpc3LiAAAAKQJyawAAAHKsAAAAcg8AAAByDwAAAHIRAAAAckcAAAAHCAAAcxAAAAAACwoBDgEKAQYBHAEYAQQB2glUeXBlQWxpYXNjAAAAAAAAAAAAAAAAAgAAAEAAAABzFAAAAGUAWgFkAFoCZAFkAoQAWgNkA1MAKQTaDl9UeXBlQWxpYXNGb3JtYwEAAAAAAAAAAQAAAAIAAABDAAAAcwoAAABkAXwAagAXAFMAKQJOehJ0eXBpbmdfZXh0ZW5zaW9ucy4pAXKEAAAAKQFyUgAAAHIPAAAAcg8AAAByEQAAAHJ4AAAAIAgAAHMCAAAAAAF6F19UeXBlQWxpYXNGb3JtLl9fcmVwcl9fTikEchQAAAByFQAAAHIWAAAAcngAAAByDwAAAHIPAAAAcg8AAAByEQAAAHJIAQAAHwgAAHMCAAAACAFySAEAAGMCAAAAAAAAAAIAAAAEAAAAQwAAAHMSAAAAdABkAaABfAChAYMBggFkAlMAKQNhJgEAAFNwZWNpYWwgbWFya2VyIGluZGljYXRpbmcgdGhhdCBhbiBhc3NpZ25tZW50IHNob3VsZAogICAgICAgIGJlIHJlY29nbml6ZWQgYXMgYSBwcm9wZXIgdHlwZSBhbGlhcyBkZWZpbml0aW9uIGJ5IHR5cGUKICAgICAgICBjaGVja2Vycy4KCiAgICAgICAgRm9yIGV4YW1wbGU6OgoKICAgICAgICAgICAgUHJlZGljYXRlOiBUeXBlQWxpYXMgPSBDYWxsYWJsZVsuLi4sIGJvb2xdCgogICAgICAgIEl0J3MgaW52YWxpZCB3aGVuIHVzZWQgYW55d2hlcmUgZXhjZXB0IGFzIGluIHRoZSBleGFtcGxlIGFib3ZlLgogICAgICAgIHoXe30gaXMgbm90IHN1YnNjcmlwdGFibGVOKQJyHwAAAHJxAAAAKQJyUgAAAHIjAAAAcg8AAAByDwAAAHIRAAAAckcBAAAjCAAAcwIAAAAADGMAAAAAAAAAAAAAAAACAAAAQAAAAHMUAAAAZQBaAWQAWgJkAWQChABaA2QDUwApBHJIAQAAYwEAAAAAAAAAAQAAAAIAAABDAAAAcwoAAABkAXwAagAXAFMAKQJOehJ0eXBpbmdfZXh0ZW5zaW9ucy4pAXKEAAAAKQFyUgAAAHIPAAAAcg8AAAByEQAAAHJ4AAAAMwgAAHMCAAAAAAF6F19UeXBlQWxpYXNGb3JtLl9fcmVwcl9fTikEchQAAAByFQAAAHIWAAAAcngAAAByDwAAAHIPAAAAcg8AAAByEQAAAHJIAQAAMggAAHMCAAAACAFhrwEAAFNwZWNpYWwgbWFya2VyIGluZGljYXRpbmcgdGhhdCBhbiBhc3NpZ25tZW50IHNob3VsZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgcmVjb2duaXplZCBhcyBhIHByb3BlciB0eXBlIGFsaWFzIGRlZmluaXRpb24gYnkgdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlcnMuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGU6OgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGU6IFR5cGVBbGlhcyA9IENhbGxhYmxlWy4uLiwgYm9vbF0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCdzIGludmFsaWQgd2hlbiB1c2VkIGFueXdoZXJlIGV4Y2VwdCBhcyBpbiB0aGUgZXhhbXBsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmUuYwAAAAAAAAAAAAAAAAIAAABAAAAAcxgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBdoOX1R5cGVBbGlhc01ldGF6F01ldGFjbGFzcyBmb3IgVHlwZUFsaWFzYwEAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJOeht0eXBpbmdfZXh0ZW5zaW9ucy5UeXBlQWxpYXNyDwAAACkBclIAAAByDwAAAHIPAAAAchEAAAByeAAAAEYIAABzAgAAAAABehdfVHlwZUFsaWFzTWV0YS5fX3JlcHJfX04pBXIUAAAAchUAAAByFgAAAHJWAAAAcngAAAByDwAAAHIPAAAAcg8AAAByEQAAAHJJAQAAQwgAAHMEAAAACAEEAnJJAQAAYwAAAAAAAAAAAAAAAAIAAABAAAAAcywAAABlAFoBZABaAmQBWgNkAloEZANkBIQAWgVkBWQGhABaBmQHZAiEAFoHZAlTACkK2g5fVHlwZUFsaWFzQmFzZWEmAQAAU3BlY2lhbCBtYXJrZXIgaW5kaWNhdGluZyB0aGF0IGFuIGFzc2lnbm1lbnQgc2hvdWxkCiAgICAgICAgYmUgcmVjb2duaXplZCBhcyBhIHByb3BlciB0eXBlIGFsaWFzIGRlZmluaXRpb24gYnkgdHlwZQogICAgICAgIGNoZWNrZXJzLgoKICAgICAgICBGb3IgZXhhbXBsZTo6CgogICAgICAgICAgICBQcmVkaWNhdGU6IFR5cGVBbGlhcyA9IENhbGxhYmxlWy4uLiwgYm9vbF0KCiAgICAgICAgSXQncyBpbnZhbGlkIHdoZW4gdXNlZCBhbnl3aGVyZSBleGNlcHQgYXMgaW4gdGhlIGV4YW1wbGUgYWJvdmUuCiAgICAgICAgcg8AAABjAgAAAAAAAAACAAAAAgAAAEMAAABzDAAAAHQAZAGDAYIBZABTACkCTnorVHlwZUFsaWFzIGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpLikBch8AAAApAnJSAAAAclMAAAByDwAAAHIPAAAAchEAAAByVAAAAFYIAABzAgAAAAABeiBfVHlwZUFsaWFzQmFzZS5fX2luc3RhbmNlY2hlY2tfX2MCAAAAAAAAAAIAAAACAAAAQwAAAHMMAAAAdABkAYMBggFkAFMAKQJOeitUeXBlQWxpYXMgY2Fubm90IGJlIHVzZWQgd2l0aCBpc3N1YmNsYXNzKCkuKQFyHwAAACkCclIAAAByIgAAAHIPAAAAcg8AAAByEQAAAHJVAAAAWQgAAHMCAAAAAAF6IF9UeXBlQWxpYXNCYXNlLl9fc3ViY2xhc3NjaGVja19fYwEAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJOeht0eXBpbmdfZXh0ZW5zaW9ucy5UeXBlQWxpYXNyDwAAACkBclIAAAByDwAAAHIPAAAAchEAAAByeAAAAFwIAABzAgAAAAABehdfVHlwZUFsaWFzQmFzZS5fX3JlcHJfX04pCHIUAAAAchUAAAByFgAAAHJWAAAAchcAAAByVAAAAHJVAAAAcngAAAByDwAAAHIPAAAAcg8AAAByEQAAAHJKAQAASQgAAHMKAAAACAoEAQQCCAMIA3JKAQAAYwAAAAAAAAAAAAAAAAIAAABAAAAAcygAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEZAWEAFoFZAZkB4QAWgZkCFMAKQlySQEAAHoXTWV0YWNsYXNzIGZvciBUeXBlQWxpYXNjAgAAAAAAAAACAAAAAgAAAEMAAABzDAAAAHQAZAGDAYIBZABTACkCTnorVHlwZUFsaWFzIGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpLikBch8AAAApAnJSAAAAclMAAAByDwAAAHIPAAAAchEAAAByVAAAAGQIAABzAgAAAAABeiBfVHlwZUFsaWFzTWV0YS5fX2luc3RhbmNlY2hlY2tfX2MCAAAAAAAAAAIAAAACAAAAQwAAAHMMAAAAdABkAYMBggFkAFMAKQJOeitUeXBlQWxpYXMgY2Fubm90IGJlIHVzZWQgd2l0aCBpc3N1YmNsYXNzKCkuKQFyHwAAACkCclIAAAByIgAAAHIPAAAAcg8AAAByEQAAAHJVAAAAZwgAAHMCAAAAAAF6IF9UeXBlQWxpYXNNZXRhLl9fc3ViY2xhc3NjaGVja19fYwEAAAAAAAAAAwAAAAIAAABPAAAAcwwAAAB0AGQBgwGCAWQAUwApAk56HENhbm5vdCBpbnN0YW50aWF0ZSBUeXBlQWxpYXMpAXIfAAAAKQNyUgAAAHIpAAAAcioAAAByDwAAAHIPAAAAchEAAAByQQEAAGoIAABzAgAAAAABehdfVHlwZUFsaWFzTWV0YS5fX2NhbGxfX04pB3IUAAAAchUAAAByFgAAAHJWAAAAclQAAAByVQAAAHJBAQAAcg8AAAByDwAAAHIPAAAAchEAAABySQEAAGEIAABzCAAAAAgBBAIIAwgDYwAAAAAAAAAAAAAAAAEAAABAAAAAcxQAAABlAFoBZABaAmQBWgNkAloEZANTACkEckcBAABhJgEAAFNwZWNpYWwgbWFya2VyIGluZGljYXRpbmcgdGhhdCBhbiBhc3NpZ25tZW50IHNob3VsZAogICAgICAgIGJlIHJlY29nbml6ZWQgYXMgYSBwcm9wZXIgdHlwZSBhbGlhcyBkZWZpbml0aW9uIGJ5IHR5cGUKICAgICAgICBjaGVja2Vycy4KCiAgICAgICAgRm9yIGV4YW1wbGU6OgoKICAgICAgICAgICAgUHJlZGljYXRlOiBUeXBlQWxpYXMgPSBDYWxsYWJsZVsuLi4sIGJvb2xdCgogICAgICAgIEl0J3MgaW52YWxpZCB3aGVuIHVzZWQgYW55d2hlcmUgZXhjZXB0IGFzIGluIHRoZSBleGFtcGxlIGFib3ZlLgogICAgICAgIHIPAAAATikFchQAAAByFQAAAHIWAAAAclYAAAByFwAAAHIPAAAAcg8AAAByDwAAAHIRAAAAckcBAABtCAAAcwQAAAAICgQBKQNOTkYphnKgAAAAcrEAAADaCmNvbnRleHRsaWJyogAAAHJwAAAA2g9jb2xsZWN0aW9ucy5hYmNynQAAAHIvAQAAcgIAAAByAwAAAHIEAAAAcgUAAAByowAAAFoHUEVQXzU2MHJvAAAAcggAAAByCQAAAHIJAQAAcgoAAAByCwAAAHIMAAAA2gtJbXBvcnRFcnJvcnINAAAAWglTVUJTX1RSRUVyDgAAAHISAAAAchMAAAByGwAAAHImAAAAcpgAAAByJwAAAHIrAAAAWg1fZ2Vxdl9kZWZpbmVk2hBfY29sbGVjdGlvbnNfYWJj2g5fY2hlY2tfbWV0aG9kc3I2AAAAcpkAAABaDkhBVkVfQU5OT1RBVEVE2gZleHRlbmRymgAAAFoOSEFWRV9QUk9UT0NPTFNyTwAAAHJQAAAAclEAAAByWAAAAHI4AAAAcmAAAAByYQAAAHJiAAAAcmMAAAByZQAAAHJmAAAAcmcAAAByNwAAAHJpAAAAcoAAAADaDF9TcGVjaWFsRm9ybXKDAAAAcocAAAByiAAAAHJAAAAAckEAAAByQgAAAHKKAAAAcosAAABykQAAAHKTAAAAckQAAAByOQAAAHKVAAAAcp4AAABynwAAAHKtAAAAcq4AAAByrwAAAHKwAAAAcjwAAABysgAAANoPTXV0YWJsZVNlcXVlbmNlcjoAAABytAAAAHK/AAAAcsAAAADaBGV4ZWNyPQAAAHLBAAAA2g5NdXRhYmxlTWFwcGluZ3I7AAAAcskAAABywgAAAHLDAAAA2gREaWN0csQAAAByxQAAAHLGAAAAckMAAAByRQAAAHLwAAAAckYAAAByswAAAHIDAQAAcuoAAABy7QAAAHJMAAAAcu4AAAByVgAAAHJxAAAAcoUAAAByCgEAAHL1AAAAck4AAAByTQAAAHI/AAAAcj4AAAByFQEAAHIXAQAA2hJfX3RleHRfc2lnbmF0dXJlX19yJAEAAHIgAQAAchgAAAByFAAAAHIVAAAAckoAAABySQAAAHIrAQAAcjIBAAByOQEAAHI6AQAAckgAAAByRwAAAHJHAQAAckgBAABySQEAAHJKAQAAcg8AAAByDwAAAHIPAAAAchEAAADaCDxtb2R1bGU+AQAAAHNQAgAACAEIAQgBCAEIAQwBCAUYBRICBAEKAhABBAECARgBDgEKAQIBDAEIAQ4BCgECARABEAEOAgIBFAEQAQ4DFAgICAgKDAEIDwgEDAEMAQYCBAEEAhQBCAEIAggQAgECAQIOAgECAQIBAgECAwIDAgECAQIBAgECAQIBBgUKAgYBEAIGAQoDEgIGARAEDAEIAQwBFhQMAhILGBEKAQoBCgEOAQ4BDgEOAwwBCAEMARY1DAISMxgUIAEIARQBFgoEDQoBDAEWNAwCEjMYEwwBCAIIFwgEDAEIARQBFggEDAoBDAEWLwwCEi0YEQgJCB4MAQgDEAIaHQgTEBwKARQBCgQKAR4BAgEKBAoBEgECAQoECgEQAQIBCgQMAQgBBgEWAQIBDAgWAQIBCgkMAQgBDAESAQIBDAMWGAwBBgEMAQwBEgECAQoDDAEUAQISBgMMAQgBBgEaAQIBDAkaAQIBCgoMAQgBJgEKAQoCEgUOAQwBAgEMCQYBDgEMAQ4KDgEMAQwKDAEGAQwBDAIGARoBAgEMCRoBAgEKCQoDCgEcAQIBCgQMAQgCCBsMAQgCBAMMAQgDBAMICgYBCAkEAQgBCgEIAwgTCAQMAQgBDAEQfwBJEicMAQYBFgMGARQCEhISfwAmDAEIAQYBCA8GAgQDDAEIAQYBDAEICBQDCAIICwgGBgIOLAYDECkOAQYdBgQMAQYBBgMIAQYBFikONggODCQGAggIEmISIhQBBgEIAQYBDAIIFggVDAEIARQBFgQODhQBFgQECgoCDAESBhgWDAISDA==
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 14
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
cpanel.cpython-37.pyc
25.22 KB
lrw-r--r--
2022-11-11 03:18:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
docopt.cpython-37.pyc
20.44 KB
lrw-r--r--
2021-10-11 07:58:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
editor.cpython-37.pyc
2.56 KB
lrw-r--r--
2023-11-14 12:17:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
prettytable.cpython-37.opt-1.pyc
43.89 KB
lrw-r--r--
2023-11-14 13:41:54
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
prettytable.cpython-37.pyc
43.89 KB
lrw-r--r--
2023-11-14 13:41:54
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
schema.cpython-37.pyc
23.76 KB
lrw-r--r--
2021-10-11 07:57:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
six.cpython-37.opt-1.pyc
26.24 KB
lrw-r--r--
2023-11-14 14:29:44
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
six.cpython-37.pyc
26.24 KB
lrw-r--r--
2023-11-14 14:29:44
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
socks.cpython-37.pyc
20.95 KB
lrw-r--r--
2023-11-14 14:03:31
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
socks.cpython-311.pyc
34.91 KB
lrw-r--r--
2023-09-22 19:44:28
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
sockshandler.cpython-37.pyc
3.63 KB
lrw-r--r--
2023-11-14 14:03:31
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
typing_extensions.cpython-37.pyc
68.08 KB
lrw-r--r--
2023-11-14 14:38:12
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
zipp.cpython-37.opt-1.pyc
9.83 KB
lrw-r--r--
2023-11-14 14:48:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
zipp.cpython-37.pyc
9.83 KB
lrw-r--r--
2023-11-14 14:48:56
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).