REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 52.50 KB
Close
//opt/hc_python/lib64/python3.12/site-packages/distro/__pycache__/distro.cpython-312.pyc
Text
Base64
yw0NCgAAAAD4ke9nFsEAAOMAAAAAAAAAAAAAAAAJAAAAAAAAAPO6AwAAlwBkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQCbAVaBWQBZAJsBloGZAFkAmwHWgdkAWQCbAhaCGQBZAJsCVoJZAFkA2wKbQtaC20MWgxtDVoNbQ5aDm0PWg9tEFoQbRFaEW0SWhJtE1oTAQAJAGQBZARsCm0UWhQBAGQFWhcCAEcAZAaEAGQHZRSrAwAAAAAAAFoYAgBHAGQIhABkCWUUqwMAAAAAAABaGWUEajQAAAAAAAAAAAAAAAAAAAAAAABqNwAAAAAAAAAAAAAAAAAAAAAAAGQKZAurAgAAAAAAAFocZQRqNAAAAAAAAAAAAAAAAAAAAAAAAGo3AAAAAAAAAAAAAAAAAAAAAAAAZAxkDasCAAAAAAAAWh1kDloeZA9kEGQRnAJaH2QPZA9kEmQSZBJkE5wFWiBkFGQSaQFaIQIAZQVqRAAAAAAAAAAAAAAAAAAAAAAAAGQVqwEAAAAAAABaIwIAZQVqRAAAAAAAAAAAAAAAAAAAAAAAAGQWqwEAAAAAAABaJGcAZBeiAVolZBhkGWQaZR5kG2QcZB1kHmQfZglaJmQ/ZCBlJ2QhZRJlKGUoZShmAxkAAABmBGQihAVaKWQhZShmAmQjhARaKmRAZCRlJ2QhZShmBGQlhAVaK2RBZCRlJ2QmZSdkIWUoZgZkJ4QFWixkQGQmZSdkIWUSZShlKGUoZgMZAAAAZgRkKIQFWi1kQGQmZSdkIWUoZgRkKYQFWi5kQGQmZSdkIWUoZgRkKoQFWi9kQGQmZSdkIWUoZgRkK4QFWjBkIWUoZgJkLIQEWjFkIWUoZgJkLYQEWjJkQWQkZSdkJmUnZCFlGWYGZC6EBVozZCFlDWUoZShmAhkAAABmAmQvhARaNGQhZQ1lKGUoZgIZAAAAZgJkMIQEWjVkIWUNZShlKGYCGQAAAGYCZDGEBFo2ZCFlDWUoZShmAhkAAABmAmQyhARaN2QzZShkIWUoZgRkNIQEWjhkM2UoZCFlKGYEZDWEBFo5ZDNlKGQhZShmBGQ2hARaOmQzZShkIWUoZgRkN4QEWjsJAGQBZDhsPG09Wj0BAAIARwBkO4QAZDyrAgAAAAAAAFo+AgBlPqsAAAAAAAAAWj9kQmQ9hARaQGVBZD5rKAAAcggCAGVAqwAAAAAAAAABAHkCeQIjAGUVJAByBgEAZRZaFFkAkAGMgHcAeANZAHcBIwBlFSQAcg0BAAIARwBkOYQAZDqrAgAAAAAAAFo9WQCMQncAeANZAHcBKUNh+wIAAApUaGUgYGBkaXN0cm9gYCBwYWNrYWdlIChgYGRpc3Ryb2BgIHN0YW5kcyBmb3IgTGludXggRGlzdHJpYnV0aW9uKSBwcm92aWRlcwppbmZvcm1hdGlvbiBhYm91dCB0aGUgTGludXggZGlzdHJpYnV0aW9uIGl0IHJ1bnMgb24sIHN1Y2ggYXMgYSByZWxpYWJsZQptYWNoaW5lLXJlYWRhYmxlIGRpc3RybyBJRCwgb3IgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCkl0IGlzIHRoZSByZWNvbW1lbmRlZCByZXBsYWNlbWVudCBmb3IgUHl0aG9uJ3Mgb3JpZ2luYWwKOnB5OmZ1bmM6YHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbmAgZnVuY3Rpb24sIGJ1dCBpdCBwcm92aWRlcyBtdWNoIG1vcmUKZnVuY3Rpb25hbGl0eS4gQW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gYmVjYW1lIG5lY2Vzc2FyeSBiZWNhdXNlIFB5dGhvbgozLjUgZGVwcmVjYXRlZCB0aGlzIGZ1bmN0aW9uLCBhbmQgUHl0aG9uIDMuOCByZW1vdmVkIGl0IGFsdG9nZXRoZXIuIEl0cwpwcmVkZWNlc3NvciBmdW5jdGlvbiA6cHk6ZnVuYzpgcGxhdGZvcm0uZGlzdGAgd2FzIGFscmVhZHkgZGVwcmVjYXRlZCBzaW5jZQpQeXRob24gMi42IGFuZCByZW1vdmVkIGluIFB5dGhvbiAzLjguIFN0aWxsLCB0aGVyZSBhcmUgbWFueSBjYXNlcyBpbiB3aGljaAphY2Nlc3MgdG8gT1MgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uIGlzIG5lZWRlZC4gU2VlIGBQeXRob24gaXNzdWUgMTMyMgo8aHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMzIyPmBfIGZvciBtb3JlIGluZm9ybWF0aW9uLgrpAAAAAE4pCdoDQW552ghDYWxsYWJsZdoERGljdNoISXRlcmFibGXaCE9wdGlvbmFs2ghTZXF1ZW5jZdoGVGV4dElP2gVUdXBsZdoEVHlwZSkB2glUeXBlZERpY3R6BTEuOS4wYwAAAAAAAAAAAAAAAAMAAAAAAAAA8ywAAACXAGUAWgFkAFoCVQBlA2UEZAE8AAAAZQNlBGQCPAAAAGUDZQRkAzwAAAB5BCkF2gtWZXJzaW9uRGljdNoFbWFqb3LaBW1pbm9y2gxidWlsZF9udW1iZXJOKQXaCF9fbmFtZV9f2gpfX21vZHVsZV9f2gxfX3F1YWxuYW1lX1/aA3N0ctoPX19hbm5vdGF0aW9uc19fqQDzAAAAAPo8L29wdC9oY19weXRob24vbGliL3B5dGhvbjMuMTIvc2l0ZS1wYWNrYWdlcy9kaXN0cm8vZGlzdHJvLnB5cg4AAAByDgAAAD0AAABzEgAAAIUA2AsOg0rYCw6DStgSFdQEFXIYAAAAcg4AAABjAAAAAAAAAAAAAAAAAwAAAAAAAADzQAAAAJcAZQBaAWQAWgJVAGUDZQRkATwAAABlA2UEZAI8AAAAZQVlBGQDPAAAAGUDZQRkBDwAAABlA2UEZAU8AAAAeQYpB9oISW5mb0RpY3TaAmlk2gd2ZXJzaW9u2g12ZXJzaW9uX3BhcnRz2gRsaWtl2ghjb2RlbmFtZU4pBnISAAAAchMAAAByFAAAAHIVAAAAchYAAAByDgAAAHIXAAAAchgAAAByGQAAAHIbAAAAchsAAABDAAAAcxwAAACFANgIC4NH2A0Qg0zYEx7TBB7YCg2DSdgOEYRNchgAAAByGwAAANoLVU5JWENPTkZESVJ6BC9ldGPaDVVOSVhVU1JMSUJESVJ6CC91c3IvbGliegpvcy1yZWxlYXNl2gZvcmFjbGXaCG9wZW5zdXNlKQLaAm9seg1vcGVuc3VzZS1sZWFw2gRyaGVsKQXaFmVudGVycHJpc2VlbnRlcnByaXNlYXPaGmVudGVycHJpc2VlbnRlcnByaXNlc2VydmVy2htyZWRoYXRlbnRlcnByaXNld29ya3N0YXRpb27aFnJlZGhhdGVudGVycHJpc2VzZXJ2ZXLaG3JlZGhhdGVudGVycHJpc2Vjb21wdXRlbm9kZdoGcmVkaGF0ekEoPzpbXildKlwpKC4qKVwoKT8gKig/OlNUTCApPyhbXGQuK1wtYS16XSpcZCkgKig/OmVzYWVsZXIgKik/KC4rKXobKFx3KylbLV9dKHJlbGVhc2V8dmVyc2lvbikkKRF6DFN1U0UtcmVsZWFzZXoQYWx0bGludXgtcmVsZWFzZXoMYXJjaC1yZWxlYXNlegxiYXNlLXJlbGVhc2V6DmNlbnRvcy1yZWxlYXNleg5mZWRvcmEtcmVsZWFzZXoOZ2VudG9vLXJlbGVhc2V6Dm1hZ2VpYS1yZWxlYXNlehBtYW5kcmFrZS1yZWxlYXNlehBtYW5kcml2YS1yZWxlYXNlehVtYW5kcml2YWxpbnV4LXJlbGVhc2V6D21hbmphcm8tcmVsZWFzZXoOb3JhY2xlLXJlbGVhc2V6DnJlZGhhdC1yZWxlYXNleg1yb2NreS1yZWxlYXNlegpzbC1yZWxlYXNlehFzbGFja3dhcmUtdmVyc2lvbtoOZGViaWFuX3ZlcnNpb256C2xzYi1yZWxlYXNlegtvZW0tcmVsZWFzZXoOc3lzdGVtLXJlbGVhc2V6DXBsZXNrLXJlbGVhc2V6EGlyZWRtYWlsLXJlbGVhc2V6DWJvYXJkLXJlbGVhc2XaC2VjMl92ZXJzaW9u2hZmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1l2gZyZXR1cm5jAQAAAAAAAAAAAAAABQAAAAMAAADzZAAAAJcAdAEAAAAAAAAAAGoCAAAAAAAAAAAAAAAAAAAAAAAAZAF0BAAAAAAAAAAAZAKsA6sDAAAAAAAAAQB0BgAAAAAAAAAAagkAAAAAAAAAAAAAAAAAAAAAAAB8AKsBAAAAAAAAUwApBGGdBQAACiAgICAuLiBkZXByZWNhdGVkOjogMS42LjAKCiAgICAgICAgOmZ1bmM6YGRpc3Ryby5saW51eF9kaXN0cmlidXRpb24oKWAgaXMgZGVwcmVjYXRlZC4gSXQgc2hvdWxkIG9ubHkgYmUKICAgICAgICB1c2VkIGFzIGEgY29tcGF0aWJpbGl0eSBzaGltIHdpdGggUHl0aG9uJ3MKICAgICAgICA6cHk6ZnVuYzpgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKClgLiBQbGVhc2UgdXNlIDpmdW5jOmBkaXN0cm8uaWRgLAogICAgICAgIDpmdW5jOmBkaXN0cm8udmVyc2lvbmAgYW5kIDpmdW5jOmBkaXN0cm8ubmFtZWAgaW5zdGVhZC4KCiAgICBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgT1MgZGlzdHJpYnV0aW9uIGFzIGEgdHVwbGUKICAgIGBgKGlkX25hbWUsIHZlcnNpb24sIGNvZGVuYW1lKWBgIHdpdGggaXRlbXMgYXMgZm9sbG93czoKCiAgICAqIGBgaWRfbmFtZWBgOiAgSWYgKmZ1bGxfZGlzdHJpYnV0aW9uX25hbWUqIGlzIGZhbHNlLCB0aGUgcmVzdWx0IG9mCiAgICAgIDpmdW5jOmBkaXN0cm8uaWRgLiBPdGhlcndpc2UsIHRoZSByZXN1bHQgb2YgOmZ1bmM6YGRpc3Ryby5uYW1lYC4KCiAgICAqIGBgdmVyc2lvbmBgOiAgVGhlIHJlc3VsdCBvZiA6ZnVuYzpgZGlzdHJvLnZlcnNpb25gLgoKICAgICogYGBjb2RlbmFtZWBgOiAgVGhlIGV4dHJhIGl0ZW0gKHVzdWFsbHkgaW4gcGFyZW50aGVzZXMpIGFmdGVyIHRoZQogICAgICBvcy1yZWxlYXNlIHZlcnNpb24gbnVtYmVyLCBvciB0aGUgcmVzdWx0IG9mIDpmdW5jOmBkaXN0cm8uY29kZW5hbWVgLgoKICAgIFRoZSBpbnRlcmZhY2Ugb2YgdGhpcyBmdW5jdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIG9yaWdpbmFsCiAgICA6cHk6ZnVuYzpgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uYCBmdW5jdGlvbiwgc3VwcG9ydGluZyBhIHN1YnNldCBvZgogICAgaXRzIHBhcmFtZXRlcnMuCgogICAgVGhlIGRhdGEgaXQgcmV0dXJucyBtYXkgbm90IGV4YWN0bHkgYmUgdGhlIHNhbWUsIGJlY2F1c2UgaXQgdXNlcyBtb3JlIGRhdGEKICAgIHNvdXJjZXMgdGhhbiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24sIGFuZCB0aGF0IG1heSBsZWFkIHRvIGRpZmZlcmVudCBkYXRhIGlmCiAgICB0aGUgT1MgZGlzdHJpYnV0aW9uIGlzIG5vdCBjb25zaXN0ZW50IGFjcm9zcyBtdWx0aXBsZSBkYXRhIHNvdXJjZXMgaXQKICAgIHByb3ZpZGVzICh0aGVyZSBhcmUgaW5kZWVkIHN1Y2ggZGlzdHJpYnV0aW9ucyAuLi4pLgoKICAgIEFub3RoZXIgcmVhc29uIGZvciBkaWZmZXJlbmNlcyBpcyB0aGUgZmFjdCB0aGF0IHRoZSA6ZnVuYzpgZGlzdHJvLmlkYAogICAgbWV0aG9kIG5vcm1hbGl6ZXMgdGhlIGRpc3RybyBJRCBzdHJpbmcgdG8gYSByZWxpYWJsZSBtYWNoaW5lLXJlYWRhYmxlIHZhbHVlCiAgICBmb3IgYSBudW1iZXIgb2YgcG9wdWxhciBPUyBkaXN0cmlidXRpb25zLgogICAgespkaXN0cm8ubGludXhfZGlzdHJpYnV0aW9uKCkgaXMgZGVwcmVjYXRlZC4gSXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBhcyBhIGNvbXBhdGliaWxpdHkgc2hpbSB3aXRoIFB5dGhvbidzIHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpLiBQbGVhc2UgdXNlIGRpc3Ryby5pZCgpLCBkaXN0cm8udmVyc2lvbigpIGFuZCBkaXN0cm8ubmFtZSgpIGluc3RlYWQu6QIAAAApAdoKc3RhY2tsZXZlbCkF2gh3YXJuaW5nc9oEd2FybtoSRGVwcmVjYXRpb25XYXJuaW5n2gdfZGlzdHJv2hJsaW51eF9kaXN0cmlidXRpb24pAXIvAAAAcwEAAAAgchkAAAByOAAAAHI4AAAAoAAAAHMzAAAAgAD0QgEABQ2HTYFN8AICCUMB9AYACRvYExT1CwYFBvQOAAwT1wsl0Qsl0CY80ws90AQ9chgAAABjAAAAAAAAAAAAAAAAAgAAAAMAAADzKgAAAJcAdAAAAAAAAAAAAGoDAAAAAAAAAAAAAAAAAAAAAAAAqwAAAAAAAABTACkBYdgLAAAKICAgIFJldHVybiB0aGUgZGlzdHJvIElEIG9mIHRoZSBjdXJyZW50IGRpc3RyaWJ1dGlvbiwgYXMgYQogICAgbWFjaGluZS1yZWFkYWJsZSBzdHJpbmcuCgogICAgRm9yIGEgbnVtYmVyIG9mIE9TIGRpc3RyaWJ1dGlvbnMsIHRoZSByZXR1cm5lZCBkaXN0cm8gSUQgdmFsdWUgaXMKICAgICpyZWxpYWJsZSosIGluIHRoZSBzZW5zZSB0aGF0IGl0IGlzIGRvY3VtZW50ZWQgYW5kIHRoYXQgaXQgZG9lcyBub3QgY2hhbmdlCiAgICBhY3Jvc3MgcmVsZWFzZXMgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KCiAgICBUaGlzIHBhY2thZ2UgbWFpbnRhaW5zIHRoZSBmb2xsb3dpbmcgcmVsaWFibGUgZGlzdHJvIElEIHZhbHVlczoKCiAgICA9PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIERpc3RybyBJRCAgICAgICBEaXN0cmlidXRpb24KICAgID09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgInVidW50dSIgICAgICAgIFVidW50dQogICAgImRlYmlhbiIgICAgICAgIERlYmlhbgogICAgInJoZWwiICAgICAgICAgIFJlZEhhdCBFbnRlcnByaXNlIExpbnV4CiAgICAiY2VudG9zIiAgICAgICAgQ2VudE9TCiAgICAiZmVkb3JhIiAgICAgICAgRmVkb3JhCiAgICAic2xlcyIgICAgICAgICAgU1VTRSBMaW51eCBFbnRlcnByaXNlIFNlcnZlcgogICAgIm9wZW5zdXNlIiAgICAgIG9wZW5TVVNFCiAgICAiYW16biIgICAgICAgICAgQW1hem9uIExpbnV4CiAgICAiYXJjaCIgICAgICAgICAgQXJjaCBMaW51eAogICAgImJ1aWxkcm9vdCIgICAgIEJ1aWxkcm9vdAogICAgImNsb3VkbGludXgiICAgIENsb3VkTGludXggT1MKICAgICJleGhlcmJvIiAgICAgICBFeGhlcmJvIExpbnV4CiAgICAiZ2VudG9vIiAgICAgICAgR2VuVG9vIExpbnV4CiAgICAiaWJtX3Bvd2Vya3ZtIiAgSUJNIFBvd2VyS1ZNCiAgICAia3ZtaWJtIiAgICAgICAgS1ZNIGZvciBJQk0geiBTeXN0ZW1zCiAgICAibGludXhtaW50IiAgICAgTGludXggTWludAogICAgIm1hZ2VpYSIgICAgICAgIE1hZ2VpYQogICAgIm1hbmRyaXZhIiAgICAgIE1hbmRyaXZhIExpbnV4CiAgICAicGFyYWxsZWxzIiAgICAgUGFyYWxsZWxzCiAgICAicGlkb3JhIiAgICAgICAgUGlkb3JhCiAgICAicmFzcGJpYW4iICAgICAgUmFzcGJpYW4KICAgICJvcmFjbGUiICAgICAgICBPcmFjbGUgTGludXggKGFuZCBPcmFjbGUgRW50ZXJwcmlzZSBMaW51eCkKICAgICJzY2llbnRpZmljIiAgICBTY2llbnRpZmljIExpbnV4CiAgICAic2xhY2t3YXJlIiAgICAgU2xhY2t3YXJlCiAgICAieGVuc2VydmVyIiAgICAgWGVuU2VydmVyCiAgICAib3BlbmJzZCIgICAgICAgT3BlbkJTRAogICAgIm5ldGJzZCIgICAgICAgIE5ldEJTRAogICAgImZyZWVic2QiICAgICAgIEZyZWVCU0QKICAgICJtaWRuaWdodGJzZCIgICBNaWRuaWdodEJTRAogICAgInJvY2t5IiAgICAgICAgIFJvY2t5IExpbnV4CiAgICAiYWl4IiAgICAgICAgICAgQUlYCiAgICAiZ3VpeCIgICAgICAgICAgR3VpeCBTeXN0ZW0KICAgICJhbHRsaW51eCIgICAgICBBTFQgTGludXgKICAgID09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgIElmIHlvdSBoYXZlIGEgbmVlZCB0byBnZXQgZGlzdHJvcyBmb3IgcmVsaWFibGUgSURzIGFkZGVkIGludG8gdGhpcyBzZXQsCiAgICBvciBpZiB5b3UgZmluZCB0aGF0IHRoZSA6ZnVuYzpgZGlzdHJvLmlkYCBmdW5jdGlvbiByZXR1cm5zIGEgZGlmZmVyZW50CiAgICBkaXN0cm8gSUQgZm9yIG9uZSBvZiB0aGUgbGlzdGVkIGRpc3Ryb3MsIHBsZWFzZSBjcmVhdGUgYW4gaXNzdWUgaW4gdGhlCiAgICBgZGlzdHJvIGlzc3VlIHRyYWNrZXJgXy4KCiAgICAqKkxvb2t1cCBoaWVyYXJjaHkgYW5kIHRyYW5zZm9ybWF0aW9uczoqKgoKICAgIEZpcnN0LCB0aGUgSUQgaXMgb2J0YWluZWQgZnJvbSB0aGUgZm9sbG93aW5nIHNvdXJjZXMsIGluIHRoZSBzcGVjaWZpZWQKICAgIG9yZGVyLiBUaGUgZmlyc3QgYXZhaWxhYmxlIGFuZCBub24tZW1wdHkgdmFsdWUgaXMgdXNlZDoKCiAgICAqIHRoZSB2YWx1ZSBvZiB0aGUgIklEIiBhdHRyaWJ1dGUgb2YgdGhlIG9zLXJlbGVhc2UgZmlsZSwKCiAgICAqIHRoZSB2YWx1ZSBvZiB0aGUgIkRpc3RyaWJ1dG9yIElEIiBhdHRyaWJ1dGUgcmV0dXJuZWQgYnkgdGhlIGxzYl9yZWxlYXNlCiAgICAgIGNvbW1hbmQsCgogICAgKiB0aGUgZmlyc3QgcGFydCBvZiB0aGUgZmlsZSBuYW1lIG9mIHRoZSBkaXN0cm8gcmVsZWFzZSBmaWxlLAoKICAgIFRoZSBzbyBkZXRlcm1pbmVkIElEIHZhbHVlIHRoZW4gcGFzc2VzIHRoZSBmb2xsb3dpbmcgdHJhbnNmb3JtYXRpb25zLAogICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kOgoKICAgICogaXQgaXMgdHJhbnNsYXRlZCB0byBsb3dlciBjYXNlLAoKICAgICogYmxhbmtzICh3aGljaCBzaG91bGQgbm90IGJlIHRoZXJlIGFueXdheSkgYXJlIHRyYW5zbGF0ZWQgdG8gdW5kZXJzY29yZXMsCgogICAgKiBhIG5vcm1hbGl6YXRpb24gb2YgdGhlIElEIGlzIHBlcmZvcm1lZCwgYmFzZWQgdXBvbgogICAgICBgbm9ybWFsaXphdGlvbiB0YWJsZXNgXy4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBub3JtYWxpemF0aW9uIGlzIHRvIGVuc3VyZQogICAgICB0aGF0IHRoZSBJRCBpcyBhcyByZWxpYWJsZSBhcyBwb3NzaWJsZSwgZXZlbiBhY3Jvc3MgaW5jb21wYXRpYmxlIGNoYW5nZXMKICAgICAgaW4gdGhlIE9TIGRpc3RyaWJ1dGlvbnMuIEEgY29tbW9uIHJlYXNvbiBmb3IgYW4gaW5jb21wYXRpYmxlIGNoYW5nZSBpcwogICAgICB0aGUgYWRkaXRpb24gb2YgYW4gb3MtcmVsZWFzZSBmaWxlLCBvciB0aGUgYWRkaXRpb24gb2YgdGhlIGxzYl9yZWxlYXNlCiAgICAgIGNvbW1hbmQsIHdpdGggSUQgdmFsdWVzIHRoYXQgZGlmZmVyIGZyb20gd2hhdCB3YXMgcHJldmlvdXNseSBkZXRlcm1pbmVkCiAgICAgIGZyb20gdGhlIGRpc3RybyByZWxlYXNlIGZpbGUgbmFtZS4KICAgICkCcjcAAAByHAAAAHIXAAAAchgAAAByGQAAAHIcAAAAchwAAADLAAAAcxEAAACAAPRiAgAME486iTqLPNAEF3IYAAAA2gZwcmV0dHljAQAAAAAAAAAAAAAAAwAAAAMAAADzLAAAAJcAdAAAAAAAAAAAAGoDAAAAAAAAAAAAAAAAAAAAAAAAfACrAQAAAAAAAFMAKQFhawQAAAogICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IE9TIGRpc3RyaWJ1dGlvbiwgYXMgYSBodW1hbi1yZWFkYWJsZQogICAgc3RyaW5nLgoKICAgIElmICpwcmV0dHkqIGlzIGZhbHNlLCB0aGUgbmFtZSBpcyByZXR1cm5lZCB3aXRob3V0IHZlcnNpb24gb3IgY29kZW5hbWUuCiAgICAoZS5nLiAiQ2VudE9TIExpbnV4IikKCiAgICBJZiAqcHJldHR5KiBpcyB0cnVlLCB0aGUgdmVyc2lvbiBhbmQgY29kZW5hbWUgYXJlIGFwcGVuZGVkLgogICAgKGUuZy4gIkNlbnRPUyBMaW51eCA3LjEuMTUwMyAoQ29yZSkiKQoKICAgICoqTG9va3VwIGhpZXJhcmNoeToqKgoKICAgIFRoZSBuYW1lIGlzIG9idGFpbmVkIGZyb20gdGhlIGZvbGxvd2luZyBzb3VyY2VzLCBpbiB0aGUgc3BlY2lmaWVkIG9yZGVyLgogICAgVGhlIGZpcnN0IGF2YWlsYWJsZSBhbmQgbm9uLWVtcHR5IHZhbHVlIGlzIHVzZWQ6CgogICAgKiBJZiAqcHJldHR5KiBpcyBmYWxzZToKCiAgICAgIC0gdGhlIHZhbHVlIG9mIHRoZSAiTkFNRSIgYXR0cmlidXRlIG9mIHRoZSBvcy1yZWxlYXNlIGZpbGUsCgogICAgICAtIHRoZSB2YWx1ZSBvZiB0aGUgIkRpc3RyaWJ1dG9yIElEIiBhdHRyaWJ1dGUgcmV0dXJuZWQgYnkgdGhlIGxzYl9yZWxlYXNlCiAgICAgICAgY29tbWFuZCwKCiAgICAgIC0gdGhlIHZhbHVlIG9mIHRoZSAiPG5hbWU+IiBmaWVsZCBvZiB0aGUgZGlzdHJvIHJlbGVhc2UgZmlsZS4KCiAgICAqIElmICpwcmV0dHkqIGlzIHRydWU6CgogICAgICAtIHRoZSB2YWx1ZSBvZiB0aGUgIlBSRVRUWV9OQU1FIiBhdHRyaWJ1dGUgb2YgdGhlIG9zLXJlbGVhc2UgZmlsZSwKCiAgICAgIC0gdGhlIHZhbHVlIG9mIHRoZSAiRGVzY3JpcHRpb24iIGF0dHJpYnV0ZSByZXR1cm5lZCBieSB0aGUgbHNiX3JlbGVhc2UKICAgICAgICBjb21tYW5kLAoKICAgICAgLSB0aGUgdmFsdWUgb2YgdGhlICI8bmFtZT4iIGZpZWxkIG9mIHRoZSBkaXN0cm8gcmVsZWFzZSBmaWxlLCBhcHBlbmRlZAogICAgICAgIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBwcmV0dHkgdmVyc2lvbiAoIjx2ZXJzaW9uX2lkPiIgYW5kICI8Y29kZW5hbWU+IgogICAgICAgIGZpZWxkcykgb2YgdGhlIGRpc3RybyByZWxlYXNlIGZpbGUsIGlmIGF2YWlsYWJsZS4KICAgICkCcjcAAADaBG5hbWWpAXI6AAAAcwEAAAAgchkAAAByPAAAAHI8AAAAHwEAAHMUAAAAgAD0SAEADBOPPIk8mAbTCx/QBB9yGAAAANoEYmVzdGMCAAAAAAAAAAAAAAAEAAAAAwAAAPMuAAAAlwB0AAAAAAAAAAAAagMAAAAAAAAAAAAAAAAAAAAAAAB8AHwBqwIAAAAAAABTACkBYU4HAAAKICAgIFJldHVybiB0aGUgdmVyc2lvbiBvZiB0aGUgY3VycmVudCBPUyBkaXN0cmlidXRpb24sIGFzIGEgaHVtYW4tcmVhZGFibGUKICAgIHN0cmluZy4KCiAgICBJZiAqcHJldHR5KiBpcyBmYWxzZSwgdGhlIHZlcnNpb24gaXMgcmV0dXJuZWQgd2l0aG91dCBjb2RlbmFtZSAoZS5nLgogICAgIjcuMCIpLgoKICAgIElmICpwcmV0dHkqIGlzIHRydWUsIHRoZSBjb2RlbmFtZSBpbiBwYXJlbnRoZXNpcyBpcyBhcHBlbmRlZCwgaWYgdGhlCiAgICBjb2RlbmFtZSBpcyBub24tZW1wdHkgKGUuZy4gIjcuMCAoTWFpcG8pIikuCgogICAgU29tZSBkaXN0cmlidXRpb25zIHByb3ZpZGUgdmVyc2lvbiBudW1iZXJzIHdpdGggZGlmZmVyZW50IHByZWNpc2lvbnMgaW4KICAgIHRoZSBkaWZmZXJlbnQgc291cmNlcyBvZiBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uIEV4YW1pbmluZyB0aGUgZGlmZmVyZW50CiAgICBzb3VyY2VzIGluIGEgZml4ZWQgcHJpb3JpdHkgb3JkZXIgZG9lcyBub3QgYWx3YXlzIHlpZWxkIHRoZSBtb3N0IHByZWNpc2UKICAgIHZlcnNpb24gKGUuZy4gZm9yIERlYmlhbiA4LjIsIG9yIENlbnRPUyA3LjEpLgoKICAgIFNvbWUgb3RoZXIgZGlzdHJpYnV0aW9ucyBtYXkgbm90IHByb3ZpZGUgdGhpcyBraW5kIG9mIGluZm9ybWF0aW9uLiBJbiB0aGVzZQogICAgY2FzZXMsIGFuIGVtcHR5IHN0cmluZyB3b3VsZCBiZSByZXR1cm5lZC4gVGhpcyBiZWhhdmlvciBjYW4gYmUgb2JzZXJ2ZWQKICAgIHdpdGggcm9sbGluZyByZWxlYXNlcyBkaXN0cmlidXRpb25zIChlLmcuIEFyY2ggTGludXgpLgoKICAgIFRoZSAqYmVzdCogcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlIGFwcHJvYWNoIGZvciB0aGUgcmV0dXJuZWQKICAgIHZlcnNpb246CgogICAgSWYgKmJlc3QqIGlzIGZhbHNlLCB0aGUgZmlyc3Qgbm9uLWVtcHR5IHZlcnNpb24gbnVtYmVyIGluIHByaW9yaXR5IG9yZGVyIG9mCiAgICB0aGUgZXhhbWluZWQgc291cmNlcyBpcyByZXR1cm5lZC4KCiAgICBJZiAqYmVzdCogaXMgdHJ1ZSwgdGhlIG1vc3QgcHJlY2lzZSB2ZXJzaW9uIG51bWJlciBvdXQgb2YgYWxsIGV4YW1pbmVkCiAgICBzb3VyY2VzIGlzIHJldHVybmVkLgoKICAgICoqTG9v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LiBzb3VyY2Vjb2RlOjogcHl0aG9uCgogICAgICAgIHsKICAgICAgICAgICAgJ2lkJzogJ3JoZWwnLAogICAgICAgICAgICAndmVyc2lvbic6ICc3LjAnLAogICAgICAgICAgICAndmVyc2lvbl9wYXJ0cyc6IHsKICAgICAgICAgICAgICAgICdtYWpvcic6ICc3JywKICAgICAgICAgICAgICAgICdtaW5vcic6ICcwJywKICAgICAgICAgICAgICAgICdidWlsZF9udW1iZXInOiAnJwogICAgICAgICAgICB9LAogICAgICAgICAgICAnbGlrZSc6ICdmZWRvcmEnLAogICAgICAgICAgICAnY29kZW5hbWUnOiAnTWFpcG8nCiAgICAgICAgfQoKICAgIFRoZSBkaWN0aW9uYXJ5IHN0cnVjdHVyZSBhbmQga2V5cyBhcmUgYWx3YXlzIHRoZSBzYW1lLCByZWdhcmRsZXNzIG9mIHdoaWNoCiAgICBpbmZvcm1hdGlvbiBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nIGRhdGEgc291cmNlcy4gVGhlIHZhbHVlcwogICAgZm9yIHRoZSB2YXJpb3VzIGtleXMgYXJlIGFzIGZvbGxvd3M6CgogICAgKiBgYGlkYGA6ICBUaGUgcmVzdWx0IG9mIDpmdW5jOmBkaXN0cm8uaWRgLgoKICAgICogYGB2ZXJzaW9uYGA6ICBUaGUgcmVzdWx0IG9mIDpmdW5jOmBkaXN0cm8udmVyc2lvbmAuCgogICAgKiBgYHZlcnNpb25fcGFydHMgLT4gbWFqb3JgYDogIFRoZSByZXN1bHQgb2YgOmZ1bmM6YGRpc3Ryby5tYWpvcl92ZXJzaW9uYC4KCiAgICAqIGBgdmVyc2lvbl9wYXJ0cyAtPiBtaW5vcmBgOiAgVGhlIHJlc3VsdCBvZiA6ZnVuYzpgZGlzdHJvLm1pbm9yX3ZlcnNpb25gLgoKICAgICogYGB2ZXJzaW9uX3BhcnRzIC0+IGJ1aWxkX251bWJlcmBgOiAgVGhlIHJlc3VsdCBvZgogICAgICA6ZnVuYzpgZGlzdHJvLmJ1aWxkX251bWJlcmAuCgogICAgKiBgYGxpa2VgYDogIFRoZSByZXN1bHQgb2YgOmZ1bmM6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cmFtIGV4ZWN1dGlvbgogICAgICAgICAgcGF0aCwgdGhlIGRhdGEgc291cmNlIGZvciB0aGUgbHNiX3JlbGVhc2UgY29tbWFuZCB3aWxsIGJlIGVtcHR5LgoKICAgICAgICAqIGBgb3NfcmVsZWFzZV9maWxlYGAgKHN0cmluZyk6IFRoZSBwYXRoIG5hbWUgb2YgdGhlCiAgICAgICAgICBgb3MtcmVsZWFzZSBmaWxlYF8gdGhhdCBpcyB0byBiZSB1c2VkIGFzIGEgZGF0YSBzb3VyY2UuCgogICAgICAgICAgQW4gZW1wdHkgc3RyaW5nICh0aGUgZGVmYXVsdCkgd2lsbCBjYXVzZSB0aGUgZGVmYXVsdCBwYXRoIG5hbWUgdG8KICAgICAgICAgIGJlIHVzZWQgKHNlZSBgb3MtcmVsZWFzZSBmaWxlYF8gZm9yIGRldGFpbHMpLgoKICAgICAgICAgIElmIHRoZSBzcGVjaWZpZWQgb3IgZGVmYXVsdGVkIG9zLXJlbGVhc2UgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlCiAgICAgICAgICBkYXRhIHNvdXJjZSBmb3IgdGhlIG9zLXJlbGVhc2UgZmlsZSB3aWxsIGJlIGVtcHR5LgoKICAgICAgICAqIGBgZGlzdHJvX3JlbGVhc2VfZmlsZWBgIChzdHJpbmcpOiBUaGUgcGF0aCBuYW1lIG9mIHRoZQogICAgICAgICAgYGRpc3RybyByZWxlYXNlIGZpbGVgXyB0aGF0IGlzIHRvIGJlIHVzZWQgYXMgYSBkYXRhIHNvdXJjZS4KCiAgICAgICAgICBBbiBlbXB0eSBzdHJpbmcgKHRoZSBkZWZhdWx0KSB3aWxsIGNhdXNlIGEgZGVmYXVsdCBzZWFyY2ggYWxnb3JpdGhtCiAgICAgICAgICB0byBiZSB1c2VkIChzZWUgYGRpc3RybyByZWxlYXNlIGZpbGVgXyBmb3IgZGV0YWlscykuCgogICAgICAgICAgSWYgdGhlIHNwZWNpZmllZCBkaXN0cm8gcmVsZWFzZSBmaWxlIGRvZXMgbm90IGV4aXN0LCBvciBpZiBubyBkZWZhdWx0CiAgICAgICAgICBkaXN0cm8gcmVsZWFzZSBmaWxlIGNhbiBiZSBmb3VuZCwgdGhlIGRhdGEgc291cmNlIGZvciB0aGUgZGlzdHJvCiAgICAgICAgICByZWxlYXNlIGZpbGUgd2lsbCBiZSBlbXB0eS4KCiAgICAgICAgKiBgYGluY2x1ZGVfdW5hbWVgYCAoYm9vbCk6IENvbnRyb2xzIHdoZXRoZXIgdW5hbWUgY29tbWFuZCBvdXRwdXQgaXMKICAgICAgICAgIGluY2x1ZGVkIGFzIGEgZGF0YSBzb3VyY2UuIElmIHRoZSB1bmFtZSBjb21tYW5kIGlzIG5vdCBhdmFpbGFibGUgaW4KICAgICAgICAgIHRoZSBwcm9ncmFtIGV4ZWN1dGlvbiBwYXRoIHRoZSBkYXRhIHNvdXJjZSBmb3IgdGhlIHVuYW1lIGNvbW1hbmQgd2lsbAogICAgICAgICAgYmUgZW1wdHkuCgogICAgICAgICogYGByb290X2RpcmBgIChzdHJpbmcpOiBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gdXNlCiAgICAgICAgICB0byBmaW5kIGRpc3Ryby1yZWxhdGVkIGluZm9ybWF0aW9uIGZpbGVzLiBOb3RlIHRoYXQgYGBpbmNsdWRlXypgYAogICAgICAgICAgcGFyYW1ldGVycyBtdXN0IG5vdCBiZSBlbmFibGVkIGluIGNvbWJpbmF0aW9uIHdpdGggYGByb290X2RpcmBgLgoKICAgICAgICAqIGBgaW5jbHVkZV9vc2xldmVsYGAgKGJvb2wpOiBDb250cm9scyB3aGV0aGVyIChBSVgpIG9zbGV2ZWwgY29tbWFuZAogICAgICAgICAgb3V0cHV0IGlzIGluY2x1ZGVkIGFzIGEgZGF0YSBzb3VyY2UuIElmIHRoZSBvc2xldmVsIGNvbW1hbmQgaXMgbm90CiAgICAgICAgICBhdmFpbGFibGUgaW4gdGhlIHByb2dyYW0gZXhlY3V0aW9uIHBhdGggdGhlIGRhdGEgc291cmNlIHdpbGwgYmUKICAgICAgICAgIGVtcHR5LgoKICAgICAgICBQdWJsaWMgaW5zdGFuY2UgYXR0cmlidXRlczoKCiAgICAgICAgKiBgYG9zX3JlbGVhc2VfZmlsZWBgIChzdHJpbmcpOiBUaGUgcGF0aCBuYW1lIG9mIHRoZQogICAgICAgICAgYG9zLXJlbGVhc2UgZmlsZWBfIHRoYXQgaXMgYWN0dWFsbHkgdXNlZCBhcyBhIGRhdGEgc291cmNlLiBUaGUKICAgICAgICAgIGVtcHR5IHN0cmluZyBpZiBubyBkaXN0cm8gcmVsZWFzZSBmaWxlIGlzIHVzZWQgYXMgYSBkYXRhIHNvdXJjZS4KCiAgICAgICAgKiBgYGRpc3Ryb19yZWxlYXNlX2ZpbGVgYCAoc3RyaW5nKTogVGhlIHBhdGggbmFtZSBvZiB0aGUKICAgICAgICAgIGBkaXN0cm8gcmVsZWFzZSBmaWxlYF8gdGhhdCBpcyBhY3R1YWxseSB1c2VkIGFzIGEgZGF0YSBzb3VyY2UuIFRoZQogICAgICAgICAgZW1wdHkgc3RyaW5nIGlmIG5vIGRpc3RybyByZWxlYXNlIGZpbGUgaXMgdXNlZCBhcyBhIGRhdGEgc291cmNlLgoKICAgICAgICAqIGBgaW5jbHVkZV9sc2JgYCAoYm9vbCk6IFRoZSByZXN1bHQgb2YgdGhlIGBgaW5jbHVkZV9sc2JgYCBwYXJhbWV0ZXIuCiAgICAgICAgICBUaGlzIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGxzYiBpbmZvcm1hdGlvbiB3aWxsIGJlIGxvYWRlZC4KCiAgICAgICAgKiBgYGluY2x1ZGVfdW5hbWVgYCAoYm9vbCk6IFRoZSByZXN1bHQgb2YgdGhlIGBgaW5jbHVkZV91bmFtZWBgCiAgICAgICAgICBwYXJhbWV0ZXIuIFRoaXMgY29udHJvbHMgd2hldGhlciB0aGUgdW5hbWUgaW5mb3JtYXRpb24gd2lsbAogICAgICAgICAgYmUgbG9hZGVkLgoKICAgICAgICAqIGBgaW5jbHVkZV9vc2xldmVsYGAgKGJvb2wpOiBUaGUgcmVzdWx0IG9mIHRoZSBgYGluY2x1ZGVfb3NsZXZlbGBgCiAgICAgICAgICBwYXJhbWV0ZXIuIFRoaXMgY29udHJvbHMgd2hldGhlciAoQUlYKSBvc2xldmVsIGluZm9ybWF0aW9uIHdpbGwgYmUKICAgICAgICAgIGxvYWRlZC4KCiAgICAgICAgKiBgYHJvb3RfZGlyYGAgKHN0cmluZyk6IFRoZSByZXN1bHQgb2YgdGhlIGBgcm9vdF9kaXJgYCBwYXJhbWV0ZXIuCiAgICAgICAgICBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gdXNlIHRvIGZpbmQgZGlzdHJvLXJlbGF0ZWQKICAgICAgICAgIGluZm9ybWF0aW9uIGZpbGVzLgoKICAgICAgICBSYWlzZXM6CgogICAgICAgICogOnB5OmV4YzpgVmFsdWVFcnJvcmA6IEluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMgY29tYmluYXRpb24gaXMgbm90CiAgICAgICAgICAgc3VwcG9ydGVkLgoKICAgICAgICAqIDpweTpleGM6YE9TRXJyb3JgOiBTb21lIEkvTyBpc3N1ZSB3aXRoIGFuIG9zLXJlbGVhc2UgZmlsZSBvciBkaXN0cm8KICAgICAgICAgIHJlbGVhc2UgZmlsZS4KCiAgICAgICAgKiA6cHk6ZXhjOmBVbmljb2RlRXJyb3JgOiBBIGRhdGEgc291cmNlIGhhcyB1bmV4cGVjdGVkIGNoYXJhY3RlcnMgb3IKICAgICAgICAgIHVzZXMgYW4gdW5leHBlY3RlZCBlbmNvZGluZy4KICAgICAgICDaA2V0Y3oHdXNyL2xpYtoATnpjSW5jbHVkaW5nIHN1YnByb2Nlc3MgZGF0YSBzb3VyY2VzIGZyb20gc3BlY2lmaWMgcm9vdF9kaXIgaXMgZGlzYWxsb3dlZCB0byBwcmV2ZW50IGZhbHNlIGluZm9ybWF0aW9uKRBydQAAANoCb3PaBHBhdGjaBGpvaW7aDF9VTklYQ09ORkRJUtoHZXRjX2RpctoOX1VOSVhVU1JMSUJESVLaC3Vzcl9saWJfZGlycnIAAADaFF9PU19SRUxFQVNFX0JBU0VOQU1F2gZpc2ZpbGVycwAAANoKVmFsdWVFcnJvcnJxAAAAcnQAAABydgAAACkKcmYAAABycQAAAHJyAAAAcnMAAABydAAAAHJ1AAAAcnYAAADaF2V0Y19kaXJfb3NfcmVsZWFzZV9maWxl2hd1c3JfbGliX29zX3JlbGVhc2VfZmlsZdoTaXNfcm9vdF9kaXJfZGVmaW5lZHMKAAAAICAgICAgICAgIHIZAAAAcmcAAAB6GkxpbnV4RGlzdHJpYnV0aW9uLl9faW5pdF9fmwIAAHNE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
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
distro.cpython-312.pyc
52.50 KB
lrw-r--r--
2025-04-04 08:02:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-312.pyc
929 B
lrw-r--r--
2025-04-04 08:02:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__main__.cpython-312.pyc
261 B
lrw-r--r--
2025-04-04 08:02:00
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).