REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 77.01 KB
Close
//opt/alt/python36/lib64/python3.6/test/support/__pycache__/__init__.cpython-36.pyc
Text
Base64
Mw0NCqoEIGZ/iAEA4wAAAAAAAAAAAAAAAJMAAABAAAAAc84MAABkAFoAZQFkAWsDchRlAmQCgwGCAWQDZARsA1oEZANkBGwFWgVkA2QEbAZaBmQDZARsB1oHZANkBGwIWghkA2QEbAlaCWQDZARsCloKZANkBGwLWgtkA2QEbAxaDGQDZARsDVoMZANkBGwOWg5kA2QEbA9aEGQDZARsEVoRZANkBGwSWhJkA2QEbBNaE2QDZARsFFoUZANkBGwVWhVkA2QEbBZaFmQDZARsF1oXZANkBGwYWhhkA2QEbBlaGWQDZARsGloaZANkBGwbWhtkA2QEbBxaHGQDZARsHVodZANkBGweWh5kA2QEbB9aH2QDZARsIFohZANkBGwiWiJkBWQGbCNtJFokAQB5FGQDZARsJVolZANkBGwmWiZXAG4eBABlAmsKkAFyOgEAAQABAGQEWiVkBFomWQBuAlgAeQxkA2QEbCdaKFcAbhoEAGUCawqQAXJiAQABAAEAZARaKFkAbgJYAHkMZANkBGwpWilXAG4aBABlAmsKkAFyigEAAQABAGQEWilZAG4CWAB5DGQDZARsKloqVwBuGgQAZQJrCpABcrIBAAEAAQBkBFoqWQBuAlgAeQxkA2QEbCtaK1cAbhoEAGUCawqQAXLaAQABAAEAZARaK1kAbgJYAHkMZANkBGwsWixXAG4aBABlAmsKkAJyAgEAAQABAGQEWixZAG4CWAB5DGQDZARsLVotVwBuGgQAZQJrCpACcioBAAEAAQBkBFotWQBuAlgAZAdkCGQJZApkC2QMZA1kDmQPZBBkEWQSZBNkFGQVZBZkF2QYZBlkGmQbZBxkHWQeZB9kIGQhZCJkI2QkZCVkJmQnZChkKWQqZCtkLGQtZC5kL2QwZDFkMmQzZDRkNWQ2ZDdkOGQ5ZDpkO2Q8ZD1kPmQ/ZEBkQWRCZENkRGRFZEZkR2RIZElkSmRLZExkTWROZE9kUGRRZFJkU2RUZFVkVmRXZFhkWWRaZFtkXGRdZF5kX2RgZGFnW1ouRwBkYmQMhABkDGUvgwNaMEcAZGNkDYQAZA1lMIMDWjFHAGRkZA6EAGQOZTCDA1oyRwBkZWQPhABkD2UfajODA1o0ZQVqNZABZF1kZ2RohAGDAVo2kAFkXmYAZGqcAWRrZBCEA1o3ZGxkbYQAWjhkbmRvhABaOWRwZDyEAFo6ZHFkPYQAWjtmAGYAZGlmA2RyZBGEAVo8ZHNkOIQAWj1kBVo+ZARaP2QDYUBkA2FBZARaQmRpWkNkBGFEZHRkFYQAWkVkdWQWhABaRmR2ZBOEAFpHZHdkeIQAWkhlGmoTaklkeYMBkANy/JABZF9kemR7hAFaSmR8ZH2EAFpLZH5kf4QAWkxkgGSBhABaTWSCZIOEAFpObhxlEmpPWktlEmpQWkxkhGSBhABaTWSFZIOEAFpOZIZkHIQAWk9kh2SIhABaUGSJZB2EAFpRZIpki4QAWlJkjGQUhABaU2SNZI6EAFpUZI9kI4QAWlWQAWRgZJBkJIQBWlZkkWSShABaV2STZCWEAFpYZJRkJoQAWllklWQnhABaWmSWWltkl1pcZRZqXWUWal5mAmSYZEmEAVpfZVtmAWSZZEqEAVpgZJpkTIQAWmFkm2SchABaYmVigwBaY2SdZJ6EAFpkkAFkY1plkAFkZlpmZR9qZ2VoamlkooMBaklko4MBZKSDAlpqZR9qZ2UpZKWDAlprZR9qZ2UqZKaDAlpsZR9qZ2UrZKeDAlptZR9qZ2UsZKiDAlpuZRpqE2pJZKmDAVpvZRtqcGSqgwFacWVxZARrCZAFbzplcWQDawRacmUaahNkq2sDkAVyWGVykAVyUmSsbgJkrVpzbgRkBFpzZRJqdGSpawKQBXJuZK5adW4EZK9adWSwanZldWUSaneDAIMCWnVkBFp4eEyQAWRnRABdQlp5eR5lEmp6ZRJqe2V5gwGDAWV5awOQBXKuZXyCAVcAbhYEAGV8awqQBXLGAQABAAEAWQBuCFgAZXlaeFAAkAVxjlcAZXVkvBcAWn1lGmoTZL1rApAFcvxkA2QEbH5afmV+an9kvmV9gwJafWUaaoCDAFqBZARagmUSanRkv2sCkAZyaGUaaoODAGoTZMBrBZAGcqpldWTBFwBagnkOZYJqhGWBgwEBAFcAbhYEAGWFawqQBnJQAQABAAEAWQBuFlgAZYZkwmWCZYFmAhYAgwEBAGQEWoJuQmUaahNkvWsDkAZyqnkOZMNqh2WBgwEBAFcAbiYEAGWIawqQBnKoAQABAAEAZXVkxGqHZYFkxYMCFwBaglkAbgJYAGQEWol4RpABZGhEAF08WnR5DmV0aodlgYMBAQBXAG4mBABliGsKkAZy7gEAAQABAGUSantldYMBZXQXAFqJUABZAG4CWACQBnG2VwBleJAHcgpldWTKFwBleBcAWopuBGQEWoplEmqLgwBajGRpWo1lBWo1kAFkaWTLZMyEAYMBWo5lBWo1kAFkamTNZM6EAYMBWo9lBWo1kAFka2TQZB6EAYMBWpBlkWUSZNGDApAHcmplBWo1ZNJkTYQAgwFakmUSapNqlGUSapNqlWWWgwGDAVqXZRJqk2qUZZeDAVqYZRJqk2qZZZhk04MCWpqQAWRsZNRkH4QBWptk1WQghABanGTWZF2EAFqdZNdk2IQAWp5kBGQEZNmcAmTaZCiEAlqfZNtkS4QAWqBHAGTcZN2EAGTdZaGDA1qikAFkbWTeZN+EAVqjZQVqNWTgZFSEAIMBWqRlBWo1ZOFkVYQAgwFapUcAZOJkEoQAZBJloYMDWqZHAGTjZFaEAGRWZQRqp2qogwNaqUcAZORk5YQAZOVloYMDWqpHAGTmZCmEAGQpZaGDA1qrZatlrGUHaq1k540CWq5lq2WsZQdqr2TnjQJasGWrZaxlB2qvZOeNAlqxZQVqNWToZgBk6ZwCZOpkLYQCgwFasmUFajVk62TshACDAVqzZO1kF4QAWrRk7mQZhABatWTvZBiEAFq2ZPBk8YQAWrdlBWo1ZPJk84QAgwFauGT0ZPWEAFq5ZPZaumT3WrtlkWUaZPiDApAIcvRk+WW6FwBaumT6WrtlumT7FwBavGT8ZP2EAFq9ZP5k/4QAWr6QAWRuWr+QAWRvWsCQAWQCkAFkA4QAWsGQAWQEZFeEAFrCkAFkBWRehABaw5ABZHBaxGSgZcQUAFrFZMBlxRQAWsZkn2XFFABax2UaashayZABZAZkW4QAWspHAJABZAeQAWQIhACQAWQIgwJay5ABZHGQAWQJZDWEAVrMkAFkCmQ2hABazUcAkAFkC2QuhABkLoMCWs6QAWQMkAFkDYQAWs+QAWQOkAFkD4QAWtCQAWQQZECEAFrRkAFkEWQ3hABa0pABZHKQAWQSkAFkE4QBWtNkBGHUkAFkFGRBhABa1ZABZBWQAWQWhABa1pABZBdkRIQAWteQAWQYkAFkGYQAWtiQAWQakAFkG4QAWtmQAWQckAFkHYQAWtqQAWQekAFkH4QAWttkBGHcZARh3ZABZCCQAWQhhABa3pABZCKQAWQjhABa35ABZCSQAWQlhABa4JABZCZkL4QAWuGQAWQnkAFkKIQAWuJl14MAkApvlGUaahNkq2sDkApvlGUbanCQAWQpgwEMAFrjZeJqAGQEawmQCm+mZeMMAFrkZR9qZ2XkkAFkKoMCWuWQAWRzkAFkK2QwhAFa5pABZCyQAWQthABa55ABZC6QAWQvhABa6GRpWumQAWQwZFCEAFrqkAFkMWRRhABa65ABZDJkUoQAWuxlBWo1kAFkdJABZDSQAWQ1hAGDAVrtkAFkNmROhABa7mUFajWQAWR1kAFkN2RThAGDAVrvZQVqNZABZDhkWYQAgwFa8GUFajWQAWQ5ZFiEAIMBWvGQAWQ6kAFkO4QAWvJlH2rzZZFlGpABZDyDApABZD2DAlr0kAFkPpABZD+EAFr1kAFkQJABZEGEAFr2RwCQAWRCZE+EAGRPZRBq92r4gwNa+UcAkAFkQ2RahABkWmWhgwNa+mQEYfuQAWREZCGEAFr8kAFkRWQxhABa/WQEYf6QAWRGkAFkR4QAWv+QAWRIZDqEAJABWgCQAWRJZCKEAJABWgFmAJABZEqcAZABZEtkPoQCkAFaAmQEZgBmAGYDkAFkTGQ/hAGQAVoDRwCQAWRNZFyEAGRcgwKQAVoEkAFkTpABZE+EAJABWgWQAWRQkAFkUYQAkAFaBmYAZgGQAWRSkAFkU4QBkAFaB2cAZgGQAWRUZGCEAZABWghkBJABYQmQAWRVZEaEAJABWgplBWo1kAFkVpABZFeEAIMBkAFaC5ABZFhkYYQAkAFaDEcAkAFkWZABZFqEAJABZFqDApABWg1HAJABZFuQAWRchACQAWRcgwKQAVoOZARTACh2AQAAejdTdXBwb3J0aW5nIGRlZmluaXRpb25zIGZvciB0aGUgUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMuegx0ZXN0LnN1cHBvcnR6LnN1cHBvcnQgbXVzdCBiZSBpbXBvcnRlZCBmcm9tIHRoZSB0ZXN0IHBhY2thZ2XpAAAAAE7pAQAAACkB2g9nZXRfdGVzdF9ydW5uZXLaDVBJUEVfTUFYX1NJWkXaB3ZlcmJvc2XaCm1heF9tZW11c2XaDXVzZV9yZXNvdXJjZXPaCGZhaWxmYXN02gVFcnJvctoKVGVzdEZhaWxlZNoNVGVzdERpZE5vdFJ1btoOUmVzb3VyY2VEZW5pZWTaDWltcG9ydF9tb2R1bGXaE2ltcG9ydF9mcmVzaF9tb2R1bGXaC0NsZWFuSW1wb3J02gZ1bmxvYWTaBmZvcmdldNoWcmVjb3JkX29yaWdpbmFsX3N0ZG91dNoTZ2V0X29yaWdpbmFsX3N0ZG91dNoPY2FwdHVyZWRfc3Rkb3V02g5jYXB0dXJlZF9zdGRpbtoPY2FwdHVyZWRfc3RkZXJy2gZURVNURk7aCFNBVkVEQ1dE2gZ1bmxpbmvaBnJtdHJlZdoIdGVtcF9jd2TaCGZpbmRmaWxl2hFjcmVhdGVfZW1wdHlfZmlsZdoLY2FuX3N5bWxpbmvaFmZzX2lzX2Nhc2VfaW5zZW5zaXRpdmXaE2lzX3Jlc291cmNlX2VuYWJsZWTaCHJlcXVpcmVz2hhyZXF1aXJlc19mcmVlYnNkX3ZlcnNpb27aFnJlcXVpcmVzX2xpbnV4X3ZlcnNpb27aEHJlcXVpcmVzX21hY192ZXLaEmNoZWNrX3N5bnRheF9lcnJvctoRVHJhbnNpZW50UmVzb3VyY2XaCHRpbWVfb3V02hFzb2NrZXRfcGVlcl9yZXNldNoSaW9lcnJvcl9wZWVyX3Jlc2V02hJ0cmFuc2llbnRfaW50ZXJuZXTaD0Jhc2ljVGVzdFJ1bm5lctoMcnVuX3VuaXR0ZXN02gtydW5fZG9jdGVzdNoTc2tpcF91bmxlc3Nfc3ltbGlua9oNcmVxdWlyZXNfZ3ppcNoMcmVxdWlyZXNfYnoy2g1yZXF1aXJlc19sem1h2gpiaWdtZW10ZXN02hBiaWdhZGRyc3BhY2V0ZXN02gxjcHl0aG9uX29ubHnaDWdldF9hdHRyaWJ1dGXaEXJlcXVpcmVzX0lFRUVfNzU02hFza2lwX3VubGVzc194YXR0ctoNcmVxdWlyZXNfemxpYtoSYW50aWNpcGF0ZV9mYWlsdXJl2hJsb2FkX3BhY2thZ2VfdGVzdHPaE2RldGVjdF9hcGlfbWlzbWF0Y2jaDGNoZWNrX19hbGxfX9oWcmVxdWlyZXNfYW5kcm9pZF9sZXZlbNoecmVxdWlyZXNfbXVsdGlwcm9jZXNzaW5nX3F1ZXVl2glpc19qeXRob27aCmlzX2FuZHJvaWTaEWNoZWNrX2ltcGxfZGV0YWls2gp1bml4X3NoZWxs2hFzZXRzd2l0Y2hpbnRlcnZhbNoESE9TVNoMSVBWNl9FTkFCTEVE2hBmaW5kX3VudXNlZF9wb3J02gliaW5kX3BvcnTaEG9wZW5fdXJscmVzb3VyY2XaEGJpbmRfdW5peF9zb2NrZXTaCnRlbXBfdW1hc2vaDXJlYXBfY2hpbGRyZW7aC1Rlc3RIYW5kbGVy2g90aHJlYWRpbmdfc2V0dXDaEXRocmVhZGluZ19jbGVhbnVw2gxyZWFwX3RocmVhZHPaDXN0YXJ0X3RocmVhZHPaDmNoZWNrX3dhcm5pbmdz2hljaGVja19ub19yZXNvdXJjZV93YXJuaW5n2hNFbnZpcm9ubWVudFZhckd1YXJk2g9ydW5fd2l0aF9sb2NhbGXaCXN3YXBfaXRlbdoJc3dhcF9hdHRy2gdNYXRjaGVy2gxzZXRfbWVtbGltaXTaE1N1cHByZXNzQ3Jhc2hSZXBvcnTaCHNvcnRkaWN02gtydW5fd2l0aF90etoDUEdP2httaXNzaW5nX2NvbXBpbGVyX2V4ZWN1dGFibGXaCGZkX2NvdW50YwAAAAAAAAAAAAAAAAEAAABAAAAAcxAAAABlAFoBZABaAmQBWgNkAlMAKQNyCQAAAHoqQmFzZSBjbGFzcyBmb3IgcmVncmVzc2lvbiB0ZXN0IGV4Y2VwdGlvbnMuTikE2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fqQByYwAAAHJjAAAA+jovb3B0L2FsdC9weXRob24zNi9saWI2NC9weXRob24zLjYvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5cgkAAAB1AAAAcwIAAAAIAWMAAAAAAAAAAAAAAAABAAAAQAAAAHMQAAAAZQBaAWQAWgJkAVoDZAJTACkDcgoAAAB6DFRlc3QgZmFpbGVkLk4pBHJfAAAAcmAAAAByYQAAAHJiAAAAcmMAAAByYwAAAHJjAAAAcmQAAAByCgAAAHgAAABzAgAAAAgBYwAAAAAAAAAAAAAAAAEAAABAAAAAcxAAAABlAFoBZABaAmQBWgNkAlMAKQNyCwAAAHoeVGVzdCBkaWQgbm90IHJ1biBhbnkgc3VidGVzdHMuTikEcl8AAAByYAAAAHJhAAAAcmIAAAByYwAAAHJjAAAAcmMAAAByZAAAAHILAAAAewAAAHMCAAAACAFjAAAAAAAAAAAAAAAAAQAAAEAAAABz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YnkKICAgIHRoaXMgb3BlcmF0aW9uLgoKICAgICpmcmVzaCogaXMgYW4gaXRlcmFibGUgb2YgYWRkaXRpb25hbCBtb2R1bGUgbmFtZXMgdGhhdCBhcmUgYWxzbyByZW1vdmVkCiAgICBmcm9tIHRoZSBzeXMubW9kdWxlcyBjYWNoZSBiZWZvcmUgZG9pbmcgdGhlIGltcG9ydC4KCiAgICAqYmxvY2tlZCogaXMgYW4gaXRlcmFibGUgb2YgbW9kdWxlIG5hbWVzIHRoYXQgYXJlIHJlcGxhY2VkIHdpdGggTm9uZQogICAgaW4gdGhlIG1vZHVsZSBjYWNoZSBkdXJpbmcgdGhlIGltcG9ydCB0byBlbnN1cmUgdGhhdCBhdHRlbXB0cyB0byBpbXBvcnQKICAgIHRoZW0gcmFpc2UgSW1wb3J0RXJyb3IuCgogICAgVGhlIG5hbWVkIG1vZHVsZSBhbmQgYW55IG1vZHVsZXMgbmFtZWQgaW4gdGhlICpmcmVzaCogYW5kICpibG9ja2VkKgogICAgcGFyYW1ldGVycyBhcmUgc2F2ZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSBpbXBvcnQgYW5kIHRoZW4gcmVpbnNlcnRlZCBpbnRvCiAgICBzeXMubW9kdWxlcyB3aGVuIHRoZSBmcmVzaCBpbXBvcnQgaXMgY29tcGxldGUuCgogICAgTW9kdWxlIGFuZCBwYWNrYWdlIGRlcHJlY2F0aW9uIG1lc3NhZ2VzIGFyZSBzdXBwcmVzc2VkIGR1cmluZyB0aGlzIGltcG9ydAogICAgaWYgKmRlcHJlY2F0ZWQqIGlzIFRydWUuCgogICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJhaXNlIEltcG9ydEVycm9yIGlmIHRoZSBuYW1lZCBtb2R1bGUgY2Fubm90IGJlCiAgICBpbXBvcnRlZC4KICAgIE4pCnJqAAAAcn4AAABygAAAANoGYXBwZW5kcmwAAAByDQAAAHJtAAAA2gVpdGVtc3JuAAAAcnkAAAApDHJ1AAAAWgVmcmVzaFoHYmxvY2tlZHJ2AAAAcnwAAABaD25hbWVzX3RvX3JlbW92ZVoKZnJlc2hfbmFtZVoMYmxvY2tlZF9uYW1lWgxmcmVzaF9tb2R1bGVaCW9yaWdfbmFtZdoGbW9kdWxl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ZHdGbGFnc04pB3JfAAAAcmAAAAByYQAAANoId2ludHlwZXNaBEJPT0zaBURXT1JE2ghfZmllbGRzX3JjAAAAKQFyugAAAHJjAAAAcmQAAADaD1VTRVJPQkpFQ1RGTEFHU94BAABzBgAAAAgBCgEKAXLSAAAAeixndWkgbm90IGF2YWlsYWJsZSAoV1NGX1ZJU0lCTEUgZmxhZyBub3Qgc2V0KdoGZGFyd2luKQTaBGNkbGzaBWNfaW502gdwb2ludGVy2glTdHJ1Y3R1cmUpAdoMZmluZF9saWJyYXJ5WhNBcHBsaWNhdGlvblNlcnZpY2VzejBndWkgdGVzdHMgY2Fubm90IHJ1biB3aXRob3V0IE9TIFggd2luZG93IG1hbmFnZXJjAAAAAAAAAAAAAAAAAwAAAAAAAABzHAAAAGUAWgFkAFoCZAGUAGYCZAKUAGYCZwJaA2QDUwApBHouX2lzX2d1aV9hdmFpbGFibGUuPGxvY2Fscz4uUHJvY2Vzc1NlcmlhbE51bWJlcloNaGlnaExvbmdPZlBTTloMbG93TG9uZ09mUFNOTikEcl8AAAByYAAAAHJhAAAActEAAAByYwAAACkBctUAAAByYwAAAHJkAAAA2hNQcm9jZXNzU2VyaWFsTnVtYmVyAAIAAHMEAAAACAEGAXLZAAAAeiNjYW5ub3QgcnVuIHdpdGhvdXQgT1MgWCBndWkgcHJvY2VzcykB2gJUa+kyAAAAegYgWy4uLl16HFRrIHVuYXZhaWxhYmxlIGR1ZSB0byB7fToge30pKdoHaGFzYXR0ctoRX2lzX2d1aV9hdmFpbGFibGVyzQAAAHJuAAAAcm8AAABycAAAAHK6AAAAWg9jdHlwZXMud2ludHlwZXNy1wAAAHK8AAAAWgZ1c2VyMzJaF0dldFByb2Nlc3NXaW5kb3dTdGF0aW9uWghXaW5FcnJvcnLPAAAActAAAABaGUdldFVzZXJPYmplY3RJbmZvcm1hdGlvbldaBWJ5cmVmWgZzaXplb2baBGJvb2xyzgAAAHLUAAAActUAAABy1gAAAFoLY3R5cGVzLnV0aWxy2AAAAFoLTG9hZExpYnJhcnlaD0NHTWFpbkRpc3BsYXlJRFoRR2V0Q3VycmVudFByb2Nlc3NaD1NldEZyb250UHJvY2Vzc1oHdGtpbnRlcnLaAAAAWgh3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ciBiaW5kaW5nLiAgVGhpcyBpcwogICAgYWNoaWV2ZWQgYnkgY3JlYXRpbmcgYSB0ZW1wb3Jhcnkgc29ja2V0IHdpdGggdGhlIHNhbWUgZmFtaWx5IGFuZCB0eXBlIGFzCiAgICB0aGUgJ3NvY2snIHBhcmFtZXRlciAoZGVmYXVsdCBpcyBBRl9JTkVULCBTT0NLX1NUUkVBTSksIGFuZCBiaW5kaW5nIGl0IHRvCiAgICB0aGUgc3BlY2lmaWVkIGhvc3QgYWRkcmVzcyAoZGVmYXVsdHMgdG8gMC4wLjAuMCkgd2l0aCB0aGUgcG9ydCBzZXQgdG8gMCwKICAgIGVsaWNpdGluZyBhbiB1bnVzZWQgZXBoZW1lcmFsIHBvcnQgZnJvbSB0aGUgT1MuICBUaGUgdGVtcG9yYXJ5IHNvY2tldCBpcwogICAgdGhlbiBjbG9zZWQgYW5kIGRlbGV0ZWQsIGFuZCB0aGUgZXBoZW1lcmFsIHBvcnQgaXMgcmV0dXJuZWQuCgogICAgRWl0aGVyIHRoaXMgbWV0aG9kIG9yIGJpbmRfcG9ydCgpIHNob3VsZCBiZSB1c2VkIGZvciBhbnkgdGVzdHMgd2hlcmUgYQogICAgc2VydmVyIHNvY2tldCBuZWVkcyB0byBiZSBib3VuZCB0byBhIHBhcnRpY3VsYXIgcG9ydCBmb3IgdGhlIGR1cmF0aW9uIG9mCiAgICB0aGUgdGVzdC4gIFdoaWNoIG9uZSB0byB1c2UgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBjYWxsaW5nIGNvZGUgaXMgY3JlYXRpbmcKICAgIGEgcHl0aG9uIHNvY2tldCwgb3IgaWYgYW4gdW51c2VkIHBvcnQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gYSBjb25zdHJ1Y3RvcgogICAgb3IgcGFzc2VkIHRvIGFuIGV4dGVybmFsIHByb2dyYW0gKGkuZS4gdGhlIC1hY2NlcHQgYXJndW1lbnQgdG8gb3BlbnNzbCdzCiAgICBzX3NlcnZlciBtb2RlKS4gIEFsd2F5cyBwcmVmZXIgYmluZF9wb3J0KCkgb3ZlciBmaW5kX3VudXNlZF9wb3J0KCkgd2hlcmUKICAgIHBvc3NpYmxlLiAgSGFyZCBjb2RlZCBwb3J0cyBzaG91bGQgKk5FVkVSKiBiZSB1c2VkLiAgQXMgc29vbiBhcyBhIHNlcnZlcgogICAgc29ja2V0IGlzIGJvdW5kIHRvIGEgaGFyZCBjb2RlZCBwb3J0LCB0aGUgYWJpbGl0eSB0byBydW4gbXVsdGlwbGUgaW5zdGFuY2VzCiAgICBvZiB0aGUgdGVzdCBzaW11bHRhbmVvdXNseSBvbiB0aGUgc2FtZSBob3N0IGlzIGNvbXByb21pc2VkLCB3aGljaCBtYWtlcyB0aGUKICAgIHRlc3QgYSB0aWNraW5nIHRpbWUgYm9tYiBpbiBhIGJ1aWxkYm90IGVudmlyb25tZW50LiBPbiBVbml4IGJ1aWxkYm90cywgdGhpcwogICAgbWF5IHNpbXBseSBtYW5pZmVzdCBhcyBhIGZhaWxlZCB0ZXN0LCB3aGljaCBjYW4gYmUgcmVjb3ZlcmVkIGZyb20gd2l0aG91dAogICAgaW50ZXJ2ZW50aW9uIGluIG1vc3QgY2FzZXMsIGJ1dCBvbiBXaW5kb3dzLCB0aGUgZW50aXJlIHB5dGhvbiBwcm9jZXNzIGNhbgogICAgY29tcGxldGVseSBhbmQgdXR0ZXJseSB3ZWRnZSwgcmVxdWlyaW5nIHNvbWVvbmUgdG8gbG9nIGluIHRvIHRoZSBidWlsZGJvdAogICAgYW5kIG1hbnVhbGx5IGtpbGwgdGhlIGFmZmVjdGVkIHByb2Nlc3MuCgogICAgKFRoaXMgaXMgZWFzeSB0byByZXByb2R1Y2Ugb24gV2luZG93cywgdW5mb3J0dW5hdGVseSwgYW5kIGNhbiBiZSB0cmFjZWQgdG8KICAgIHRoZSBTT19SRVVTRUFERFIgc29ja2V0IG9wdGlvbiBoYXZpbmcgZGlmZmVyZW50IHNlbWFudGljcyBvbiBXaW5kb3dzIHZlcnN1cwogICAgVW5peC9MaW51eC4gIE9uIFVuaXgsIHlvdSBjYW4ndCBoYXZlIHR3byBBRl9JTkVUIFNPQ0tfU1RSRUFNIHNvY2tldHMgYmluZCwKICAgIGxpc3RlbiBhbmQgdGhlbiBhY2NlcHQgY29ubmVjdGlvbnMgb24gaWRlbnRpY2FsIGhvc3QvcG9ydHMuICBBbiBFQUREUklOVVNFCiAgICBPU0Vycm9yIHdpbGwgYmUgcmFpc2VkIGF0IHNvbWUgcG9pbnQgKGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0gYW5kCiAgICB0aGUgb3JkZXIgYmluZCBhbmQgbGlzdGVuIHdlcmUgY2FsbGVkIG9uIGVhY2ggc29ja2V0KS4KCiAgICBIb3dldmVyLCBvbiBXaW5kb3dzLCBpZiBTT19SRVVTRUFERFIgaXMgc2V0IG9uIHRoZSBzb2NrZXRzLCBubyBFQUREUklOVVNFCiAgICB3aWxsIGV2ZXIgYmUgcmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0byBiaW5kIHR3byBpZGVudGljYWwgaG9zdC9wb3J0cy4gV2hlbgogICAgYWNjZXB0KCkgaXMgY2FsbGVkIG9uIGVhY2ggc29ja2V0LCB0aGUgc2Vjb25kIGNhbGxlcidzIHByb2Nlc3Mgd2lsbCBzdGVhbAogICAgdGhlIHBvcnQgZnJvbSB0aGUgZmlyc3QgY2FsbGVyLCBsZWF2aW5nIHRoZW0gYm90aCBpbiBhbiBhd2t3YXJkbHkgd2VkZ2VkCiAgICBzdGF0ZSB3aGVyZSB0aGV5J2xsIG5vIGxvbmdlciByZXNwb25kIHRvIGFueSBzaWduYWxzIG9yIGdyYWNlZnVsIGtpbGxzLCBhbmQKICAgIG11c3QgYmUgZm9yY2libHkga2lsbGVkIHZpYSBPcGVuUHJvY2VzcygpL1Rlcm1pbmF0ZVByb2Nlc3MoKS4KCiAgICBUaGUgc29sdXRpb24gb24gV2luZG93cyBpcyB0byB1c2UgdGhlIFNPX0VYQ0xVU0lWRUFERFJVU0Ugc29ja2V0IG9wdGlvbgogICAgaW5zdGVhZCBvZiBTT19SRVVTRUFERFIsIHdoaWNoIGVmZmVjdGl2ZWx5IGFmZm9yZHMgdGhlIHNhbWUgc2VtYW50aWNzIGFzCiAgICBTT19SRVVTRUFERFIgb24gVW5peC4gIEdpdmVuIHRoZSBwcm9wZW5zaXR5IG9mIFVuaXggZGV2ZWxvcGVycyBpbiB0aGUgT3BlbgogICAgU291cmNlIHdvcmxkIGNvbXBhcmVkIHRvIFdpbmRvd3Mgb25lcywgdGhpcyBpcyBhIGNvbW1vbiBtaXN0YWtlLiAgQSBxdWljawogICAgbG9vayBvdmVyIE9wZW5TU0wncyAwLjkuOGcgc291cmNlIHNob3dzIHRoYXQgdGhleSB1c2UgU09fUkVVU0VBRERSIHdoZW4KICAgIG9wZW5zc2wuZXhlIGlzIGNhbGxlZCB3aXRoIHRoZSAnc19zZXJ2ZXInIG9wdGlvbiwgZm9yIGV4YW1wbGUuIFNlZQogICAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI1NTAgZm9yIG1vcmUgaW5mby4gIFRoZSBmb2xsb3dpbmcgc2l0ZSBhbHNvCiAgICBoYXMgYSB2ZXJ5IHRob3JvdWdoIGRlc2NyaXB0aW9uIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgYm90aCBSRVVTRUFERFIKICAgIGFuZCBFWENMVVNJVkVBRERSVVNFIG9uIFdpbmRvd3M6CiAgICBodHRwOi8vbXNkbjIubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzQwNjIxKFZTLjg1KS5hc3B4KQoKICAgIFhYWDogYWx0aG91Z2ggdGhpcyBhcHByb2FjaCBpcyBhIHZhc3QgaW1wcm92ZW1lbnQgb24gcHJldmlvdXMgYXR0ZW1wdHMgdG8KICAgIGVsaWNpdCB1bnVzZWQgcG9ydHMsIGl0IHJlc3RzIGhlYXZpbHkgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgZXBoZW1lcmFsCiAgICBwb3J0IHJldHVybmVkIHRvIHVzIGJ5IHRoZSBPUyB3b24ndCBpbW1lZGlhdGVseSBiZSBkaXNoZWQgYmFjayBvdXQgdG8gc29tZQogICAgb3RoZXIgcHJvY2VzcyB3aGVuIHdlIGNsb3NlIGFuZCBkZWxldGUgb3VyIHRlbXBvcmFyeSBzb2NrZXQgYnV0IGJlZm9yZSBvdXIKICAgIGNhbGxpbmcgY29kZSBoYXMgYSBjaGFuY2UgdG8gYmluZCB0aGUgcmV0dXJuZWQgcG9ydC4gIFdlIGNhbiBkZWFsIHdpdGggdGhpcwogICAgaXNzdWUgaWYvd2hlbiB3ZSBjb21lIGFjcm9zcyBpdC4KICAgICkD2gZzb2NrZXRyRwAAANoFY2xvc2UpBNoGZmFtaWx5Wghzb2NrdHlwZVoIdGVtcHNvY2vaBHBvcnRyYwAAAHJjAAAAcmQAAAByRgAAAH0CAABzCgAAAAA4DAEIAQgBAgFjAgAAAAAAAAADAAAADAAAAEMAAABzwgAAAHwAagB0AWoCawJypHwAagN0AWoEawJypHQFdAFkAYMCcj58AGoGdAFqB3QBagiDAmQCawJyPnQJZAODAYIBdAV0AWQEgwJyiGQFdApqC2sHcoh5IHwAagZ0AWoHdAFqDIMCZAJrAnJwdAlkBoMBggFXAG4UBAB0DWsKcoYBAAEAAQBZAG4CWAB0BXQBZAeDAnKkfABqDnQBagd0AWoPZAKDAwEAfABqEHwBZAhmAoMBAQB8AGoRgwBkAhkAfQJ8AlMAKQlhJQMAAEJpbmQgdGhlIHNvY2tldCB0byBhIGZyZWUgcG9ydCBhbmQgcmV0dXJuIHRoZSBwb3J0IG51bWJlci4gIFJlbGllcyBvbgogICAgZXBoZW1lcmFsIHBvcnRzIGluIG9yZGVyIHRvIGVuc3VyZSB3ZSBhcmUgdXNpbmcgYW4gdW5ib3VuZCBwb3J0LiAgVGhpcyBpcwogICAgaW1wb3J0YW50IGFzIG1hbnkgdGVzdHMgbWF5IGJlIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHksIGVzcGVjaWFsbHkgaW4gYQogICAgYnVpbGRib3QgZW52aXJvbm1lbnQuICBUaGlzIG1ldGhvZCByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHRoZSBzb2NrLmZhbWlseQogICAgaXMgQUZfSU5FVCBhbmQgc29jay50eXBlIGlzIFNPQ0tfU1RSRUFNLCAqYW5kKiB0aGUgc29ja2V0IGhhcyBTT19SRVVTRUFERFIKICAgIG9yIFNPX1JFVVNFUE9SVCBzZXQgb24gaXQuICBUZXN0cyBzaG91bGQgKm5ldmVyKiBzZXQgdGhlc2Ugc29ja2V0IG9wdGlvbnMKICAgIGZvciBUQ1AvSVAgc29ja2V0cy4gIFRoZSBvbmx5IGNhc2UgZm9yIHNldHRpbmcgdGhlc2Ugb3B0aW9ucyBpcyB0ZXN0aW5nCiAgICBtdWx0aWNhc3RpbmcgdmlhIG11bHRpcGxlIFVEUCBzb2NrZXRzLgoKICAgIEFkZGl0aW9uYWxseSwgaWYgdGhlIFNPX0VYQ0xVU0lWRUFERFJVU0Ugc29ja2V0IG9wdGlvbiBpcyBhdmFpbGFibGUgKGkuZS4KICAgIG9uIFdpbmRvd3MpLCBpdCB3aWxsIGJlIHNldCBvbiB0aGUgc29ja2V0LiAgVGhpcyB3aWxsIHByZXZlbnQgYW55b25lIGVsc2UKICAgIGZyb20gYmluZCgpJ2luZyB0byBvdXIgaG9zdC9wb3J0IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QuCiAgICDaDFNPX1JFVVNFQUREUnICAAAAekh0ZXN0cyBzaG91bGQgbmV2ZXIgc2V0IHRoZSBTT19SRVVTRUFERFIgc29ja2V0IG9wdGlvbiBvbiBUQ1AvSVAgc29ja2V0cyHaDFNPX1JFVVNFUE9SVFoXV0lUSElOX1BZVEhPTl9SUE1fQlVJTER6SHRlc3RzIHNob3VsZCBuZXZlciBzZXQgdGhlIFNPX1JFVVNFUE9SVCBzb2NrZXQgb3B0aW9uIG9uIFRDUC9JUCBzb2NrZXRzIdoTU09fRVhDTFVTSVZFQUREUlVTRXIBAAAAKRJy/QAAAHL7AAAA2gdBRl9JTkVUcuIAAADaC1NPQ0tfU1RSRUFNctwAAABaCmdldHNvY2tvcHRaClNPTF9TT0NLRVRy/wAAAHIKAAAAcoQAAADaB2Vudmlyb25yAAEAAHKSAAAAWgpzZXRzb2Nrb3B0cgEBAADaBGJpbmRaC2dldHNvY2tuYW1lKQPaBHNvY2vaBGhvc3Ry/gAAAHJjAAAAcmMAAAByZAAAAHJHAAAAuwIAAHMgAAAAAA8YAQoBFAEIAgoBCgECARQBDAIOBAYBCgESAg4BDAFjAgAAAAAAAAACAAAACwAAAEMAAABzSgAAAHwAagB0AWoCawJzEHQDggF5DnwAagR8AYMBAQBXAG4mBAB0BWsKckQBAAEAAQB8AGoGgwABAHQHaghkAYMBggFZAG4CWABkAlMAKQN6QkJpbmQgYSB1bml4IHNvY2tldCwgcmFpc2luZyBTa2lwVGVzdCBpZiBQZXJtaXNzaW9uRXJyb3IgaXMgcmFpc2VkLnobY2Fubm90IGJpbmQgQUZfVU5JWCBzb2NrZXRzTikJcv0AAABy+wAAAFoHQUZfVU5JWNoOQXNzZXJ0aW9uRXJyb3JyBQEAANoPUGVybWlzc2lvbkVycm9ycvwAAABycgAAAHJzAAAAKQJyBgEAAFoEYWRkcnJjAAAAcmMAAAByZAAAAHJJ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aGUgd2l0aAogICAgc3RhdGVtZW50IGV4aXQuCgogICAgVXNlIF90aHJlYWQuY291bnQoKSB0byBjaGVjayBpZiB0aHJlYWRzIGV4aXRlZC4gSW5kaXJlY3RseSwgd2FpdCB1bnRpbAogICAgdGhyZWFkcyBleGl0IHRoZSBpbnRlcm5hbCB0X2Jvb3RzdHJhcCgpIEMgZnVuY3Rpb24gb2YgdGhlIF90aHJlYWQgbW9kdWxlLgoKICAgIHRocmVhZGluZ19zZXR1cCgpIGFuZCB0aHJlYWRpbmdfY2xlYW51cCgpIGFyZSBkZXNpZ25lZCB0byBlbWl0IGEgd2FybmluZwogICAgaWYgYSB0ZXN0IGxlYXZlcyBydW5uaW5nIHRocmVhZHMgaW4gdGhlIGJhY2tncm91bmQuIFRoaXMgY29udGV4dCBtYW5hZ2VyCiAgICBpcyBkZXNpZ25lZCB0byBjbGVhbnVwIHRocmVhZHMgc3RhcnRlZCBieSB0aGUgX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkKCkKICAgIHdoaWNoIGRvZXNuJ3QgYWxsb3cgdG8gd2FpdCBmb3IgdGhyZWFkIGV4aXQsIHdoZXJlYXMgdGhyZWFkLlRocmVhZCBoYXMgYQogICAgam9pbigpIG1ldGhvZC4KICAgIE56IXdhaXRfdGhyZWFkcygpIGZhaWxlZCB0byBjbGVhbnVwIHoPIHRocmVhZHMgYWZ0ZXIgegMuMWZ6ESBzZWNvbmRzIChjb3VudDogeg0sIG9sZCBjb3VudDog+gEpZ3sUrkfheoQ/KQdyQgIAAHJDAgAAcqEAAABaCW1vbm90b25pY3IIAQAAcqIAAABygQEAACkHcqcAAABaCW9sZF9jb3VudFoKc3RhcnRfdGltZVoIZGVhZGxpbmVySAIAAFoCZHRydwAAAHJjAAAAcmMAAAByZAAAANoRd2FpdF90aHJlYWRzX2V4aXRgCAAAcx4AAAAADwgBAgEKAggBCAECAQgBCAECAQwBDAEkAwgBCgFyTAIAAGMAAAAAAAAAAAMAAAAKAAAAQwAAAHNaAAAAdAB0AWQBgwJyVmQHfQB4RnkydAFqAnwAdAFqA4MCXAJ9AX0CfAFkA2sCci5QAHQEZAR8ARYAdAVqBmQFjQIBAFcAcRABAAEAAQBQAFkAcRBY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agVkAoMBczR8BnwEawZyTHE0dAZ8AXwGgwJ9B3QGfAdkA2QBgwN8AmsGc4B0B3wHZAODAgwAcjR0AXwHdAhqCYMCDAByNHwFagp8BoMBAQBxNFcAfABqC3wBagx8BYMCAQBkAVMAKQRhHQYAAEFzc2VydCB0aGF0IHRoZSBfX2FsbF9fIHZhcmlhYmxlIG9mICdtb2R1bGUnIGNvbnRhaW5zIGFsbCBwdWJsaWMgbmFtZXMuCgogICAgVGhlIG1vZHVsZSdzIHB1YmxpYyBuYW1lcyAoaXRzIEFQSSkgYXJlIGRldGVjdGVkIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24KICAgIHdoZXRoZXIgdGhleSBtYXRjaCB0aGUgcHVibGljIG5hbWUgY29udmVudGlvbiBhbmQgd2VyZSBkZWZpbmVkIGluCiAgICAnbW9kdWxlJy4KCiAgICBUaGUgJ25hbWVfb2ZfbW9kdWxlJyBhcmd1bWVudCBjYW4gc3BlY2lmeSAoYXMgYSBzdHJpbmcgb3IgdHVwbGUgdGhlcmVvZikKICAgIHdoYXQgbW9kdWxlKHMpIGFuIEFQSSBjb3VsZCBiZSBkZWZpbmVkIGluIGluIG9yZGVyIHRvIGJlIGRldGVjdGVkIGFzIGEKICAgIHB1YmxpYyBBUEkuIE9uZSBjYXNlIGZvciB0aGlzIGlzIHdoZW4gJ21vZHVsZScgaW1wb3J0cyBwYXJ0IG9mIGl0cyBwdWJsaWMKICAgIEFQSSBmcm9tIG90aGVyIG1vZHVsZXMsIHBvc3NpYmx5IGEgQyBiYWNrZW5kIChsaWtlICdjc3YnIGFuZCBpdHMgJ19jc3YnKS4KCiAgICBUaGUgJ2V4dHJhJyBhcmd1bWVudCBjYW4gYmUgYSBzZXQgb2YgbmFtZXMgdGhhdCB3b3VsZG4ndCBvdGhlcndpc2UgYmUKICAgIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgYXMgInB1YmxpYyIsIGxpa2Ugb2JqZWN0cyB3aXRob3V0IGEgcHJvcGVyCiAgICAnX19tb2R1bGVfXycgYXR0cmlidXRlLiBJZiBwcm92aWRlZCwgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUKICAgIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgb25lcy4KCiAgICBUaGUgJ2JsYWNrbGlzdCcgYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgbXVzdCBub3QgYmUgdHJlYXRlZAogICAgYXMgcGFydCBvZiB0aGUgcHVibGljIEFQSSBldmVuIHRob3VnaCB0aGVpciBuYW1lcyBpbmRpY2F0ZSBvdGhlcndpc2UuCgogICAgVXNhZ2U6CiAgICAgICAgaW1wb3J0IGJhcgogICAgICAgIGltcG9ydCBmb28KICAgICAgICBpbXBvcnQgdW5pdHRlc3QKICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKCiAgICAgICAgY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgogICAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZm9vKQoKICAgICAgICBjbGFzcyBPdGhlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgogICAgICAgICAgICAgICAgZXh0cmEgPSB7J0JBUl9DT05TVCcsICdGT09fQ09OU1QnfQogICAgICAgICAgICAgICAgYmxhY2tsaXN0ID0geydiYXonfSAgIyBVbmRvY3VtZW50ZWQgbmFtZS4KICAgICAgICAgICAgICAgICMgYmFyIGltcG9ydHMgcGFydCBvZiBpdHMgQVBJIGZyb20gX2Jhci4KICAgICAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGJhciwgKCdiYXInLCAnX2JhcicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsIGJsYWNrbGlzdD1ibGFja2xpc3QpCgogICAgTnJ5AgAAcmAAAAApDXJfAAAAcrcBAABydAAAAHKSAQAAcnACAABycAAAAHKMAAAActwAAADaBXR5cGVz2gpNb2R1bGVUeXBl2gNhZGRaEGFzc2VydENvdW50RXF1YWzaB19fYWxsX18pCFoJdGVzdF9jYXNlcosAAABaDm5h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AQgBCAEIAQgBBgEGAQYCCAECAgoBAgIEAgICCAIGAQQBCgEMAxADEAMQAxIIBAEODxISCA4IDggKCBQQMggJBAEEAQQCBAEEAQQFBAEIBAgDCAYICg4BDCEIAwgDCBIKDgYBBgIIFggDCAYIBggGCA0IEAhKCAgMCQgbCAkICQgeBAEEAxI+DCYICQgPBgIIEgYHBgMEAQ4BBgIMAgwCDAIMAgwCCgESAgwBEAIEAwwCBgIEBBAEBAECBgACAAIAAgACAAIAAgACAAIABwACCgICBBYBCAEQAQYCBAEIAwgBDAQIAQwBCAUEAQwCEAMIAQIBDgEQAQYCBAIMAQYCDAECAg4BEAICARQMBAECBQACAAMAAgADCgICAQ4BEAEOAQ4CBgEOAgQDCAQEAgQBDiUEAQ4aBAEOEgwBDgsUAQwDDgIMEggFCAcIDBALCDIQFwwnDhgOFRAgFDUQGRAcDgEOAQ4DBAESTQ4MCAkICQgNCBAOCwgKBAEEAQwBCAEEAQgCCAMIBAYBBgIMDwokCiMGAQgBCAEIAgYCChUUHg4wChIQBgwDDAgKBwoGEA0EAQoPDAoKCwwQDAsMDAwZBAEEAwwIDAoMKAoXDAMIAQwBDgIMAQYCBgEIBg4bDAMMGQQKCgYKDAoSBAESIgoVBAEQIxAfEB8MCg4BCAIMBQwJFhwSIgQBCg8KBgQBDB4MBwwNFA8EARA6El8OIg4UEhMQGQYBDA4UEAw7Fic=
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 3
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
__init__.cpython-36.opt-1.pyc
76.86 KB
lrw-r--r--
2024-04-17 17:19:43
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-2.pyc
54.65 KB
lrw-r--r--
2024-04-17 17:19:28
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.pyc
77.01 KB
lrw-r--r--
2024-04-17 17:19:47
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).