REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 64.79 KB
Close
//opt/alt/python39/lib64/python3.9/logging/__pycache__/__init__.cpython-39.pyc
Text
Base64
YQ0NCgAAAABYQz9oCDMBAOMAAAAAAAAAAAAAAAAAAAAADAAAAEAAAABz5gMAAGQAWgBkAWQCbAFaAWQBZAJsAloCZAFkAmwDWgNkAWQCbARaBGQBZAJsBVoFZAFkAmwGWgZkAWQCbAdaB2QBZAJsCFoIZAFkAmwJWgpkAWQDbAttDFoMAQBkAWQEbAttDVoOAQBnAGQFogFaD2QBZAJsEFoQZAZaEWQHWhJkCFoTZAlaFGUDoAOhAFoVZApaFmQKWhdkCloYZApaGWQLWhplGlobZAxaHGQNWh1lHVoeZA5aH2QPWiBkAVohZRpkEGUcZBFlHWQSZR9kE2UgZBRlIWQVaQZaImUaZRtlHGUdZR1lH2UgZSFkFpwIWiNkF2QYhABaJGQZZBqEAFolZSZlAWQbgwKQAXIUZBxkHYQAWiduCGQeZB+EAFonZQJqKKApZSVqKmoroQFaLGQgZCGEAFotZRCgLqEAWi9kImQjhABaMGQkZCWEAFoxZSZlAmQmgwKQAXNiZCdkKIQAWjJuKGUIoDOhAFo0ZClkKIQAWjJkKmQrhABaNWUCajZlMGU1ZTFkLI0DAQBHAGQtZC6EAGQuZTeDA1o4ZThhOWQvZDCEAFo6ZDFkMoQAWjtkM2Q0hABaPGUOgwBaPVsORwBkNWQ2hABkNmU3gwNaPkcAZDdkOIQAZDhlPoMDWj9HAGQ5ZDqEAGQ6ZT6DA1pAZDtaQWU+ZUFmAmU/ZDxmAmVAZD1mAmQ+nANaQkcAZD9kQIQAZEBlN4MDWg1lDYMAWkNHAGRBZEKEAGRCZTeDA1pERwBkQ2REhABkRGU3gwNaRUcAZEVkRoQAZEZlN4MDWkZlCKBHoQBaSGcAWklkR2RIhABaSmRJZEqEAFpLRwBkS2RMhABkTGVGgwNaTEcAZE1kToQAZE5lTIMDWk1HAGRPZFCEAGRQZU2DA1pORwBkUWRShABkUmVNgwNaT2VPZR2DAVpQZVBaUUcAZFNkVIQAZFRlN4MDWlJkVWRWhABaU2RXZFiEAFpURwBkWWRahABkWmU3gwNaVUcAZFtkXIQAZFxlRoMDWlZHAGRdZF6EAGReZVaDA1pXZVZhWEcAZF9kYIQAZGBlN4MDWlllV2UdgwFaWmVaZVZfWmVVZVZqWoMBZVZfW2RhZGKEAFpcZIBkY2RkhAFaXWRlZGaEAFpeZV5aX2RnZGiEAFpgZApkaZwBZGpka4QCWmFkbGRthABaYmRuZG+EAFpjZHBkcYQAWmRkcmRzhABaZWR0ZHWEAFpmZRpmAWR2ZHeEAVpnZUlmAWR4ZHmEAVpoZAFkAmxpWmllaaBqZWihAQEARwBkemR7hABke2VMgwNaa2QCYWxkgWR8ZH2EAVptZH5kf4QAWm5kAlMAKYJ6wgpMb2dnaW5nIHBhY2thZ2UgZm9yIFB5dGhvbi4gQmFzZWQgb24gUEVQIDI4MiBhbmQgY29tbWVudHMgdGhlcmV0byBpbgpjb21wLmxhbmcucHl0aG9uLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCgpUbyB1c2UsIHNpbXBseSAnaW1wb3J0IGxvZ2dpbmcnIGFuZCBsb2cgYXdheSEK6QAAAABOKQHaCFRlbXBsYXRlKQHaCUZvcm1hdHRlcikq2gxCQVNJQ19GT1JNQVTaEkJ1ZmZlcmluZ0Zvcm1hdHRlctoIQ1JJVElDQUzaBURFQlVH2gVFUlJPUtoFRkFUQUzaC0ZpbGVIYW5kbGVy2gZGaWx0ZXJyAwAAANoHSGFuZGxlctoESU5GT9oJTG9nUmVjb3Jk2gZMb2dnZXLaDUxvZ2dlckFkYXB0ZXLaBk5PVFNFVNoLTnVsbEhhbmRsZXLaDVN0cmVhbUhhbmRsZXLaBFdBUk7aB1dBUk5JTkfaDGFkZExldmVsTmFtZdoLYmFzaWNDb25maWfaD2NhcHR1cmVXYXJuaW5nc9oIY3JpdGljYWzaBWRlYnVn2gdkaXNhYmxl2gVlcnJvctoJZXhjZXB0aW9u2gVmYXRhbNoMZ2V0TGV2ZWxOYW1l2glnZXRMb2dnZXLaDmdldExvZ2dlckNsYXNz2gRpbmZv2gNsb2faDW1ha2VMb2dSZWNvcmTaDnNldExvZ2dlckNsYXNz2ghzaHV0ZG93btoEd2FybtoHd2FybmluZ9oTZ2V0TG9nUmVjb3JkRmFjdG9yedoTc2V0TG9nUmVjb3JkRmFjdG9yedoKbGFzdFJlc29ydNoPcmFpc2VFeGNlcHRpb25zeiZWaW5heSBTYWppcCA8dmluYXlfc2FqaXBAcmVkLWRvdmUuY29tPloKcHJvZHVjdGlvbnoHMC41LjEu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bG5hbWV9OiR7bmFtZX06JHttZXNzYWdlfSkD+gEl2gF7crMAAABjAAAAAAAAAAAAAAAAAAAAAAQAAABAAAAAc1oAAABlAFoBZABaAmQBWgNlBGoFWgZkFWQFZAaEAVoHZAdaCGQIWglkFmQJZAqEAVoKZAtkDIQAWgtkDWQOhABaDGQPZBCEAFoNZBFkEoQAWg5kE2QUhABaD2QCUwApF3IDAAAAYdgIAAAKICAgIEZvcm1hdHRlciBpbnN0YW5jZXMgYXJlIHVzZWQgdG8gY29udmVydCBhIExvZ1JlY29yZCB0byB0ZXh0LgoKICAgIEZvcm1hdHRlcnMgbmVlZCB0byBrbm93IGhvdyBhIExvZ1JlY29yZCBpcyBjb25zdHJ1Y3RlZC4gVGhleSBhcmUKICAgIHJlc3BvbnNpYmxlIGZvciBjb252ZXJ0aW5nIGEgTG9nUmVjb3JkIHRvICh1c3VhbGx5KSBhIHN0cmluZyB3aGljaCBjYW4KICAgIGJlIGludGVycHJldGVkIGJ5IGVpdGhlciBhIGh1bWFuIG9yIGFuIGV4dGVybmFsIHN5c3RlbS4gVGhlIGJhc2UgRm9ybWF0dGVyCiAgICBhbGxvd3MgYSBmb3JtYXR0aW5nIHN0cmluZyB0byBiZSBzcGVjaWZpZWQuIElmIG5vbmUgaXMgc3VwcGxpZWQsIHRoZQogICAgc3R5bGUtZGVwZW5kZW50IGRlZmF1bHQgdmFsdWUsICIlKG1lc3NhZ2UpcyIsICJ7bWVzc2FnZX0iLCBvcgogICAgIiR7bWVzc2FnZX0iLCBpcyB1c2VkLgoKICAgIFRoZSBGb3JtYXR0ZXIgY2FuIGJlIGluaXRpYWxpemVkIHdpdGggYSBmb3JtYXQgc3RyaW5nIHdoaWNoIG1ha2VzIHVzZSBvZgogICAga25vd2xlZGdlIG9mIHRoZSBMb2dSZWNvcmQgYXR0cmlidXRlcyAtIGUuZy4gdGhlIGRlZmF1bHQgdmFsdWUgbWVudGlvbmVkCiAgICBhYm92ZSBtYWtlcyB1c2Ugb2YgdGhlIGZhY3QgdGhhdCB0aGUgdXNlcidzIG1lc3NhZ2UgYW5kIGFyZ3VtZW50cyBhcmUgcHJlLQogICAgZm9ybWF0dGVkIGludG8gYSBMb2dSZWNvcmQncyBtZXNzYWdlIGF0dHJpYnV0ZS4gQ3VycmVudGx5LCB0aGUgdXNlZnVsCiAgICBhdHRyaWJ1dGVzIGluIGEgTG9nUmVjb3JkIGFyZSBkZXNjcmliZWQgYnk6CgogICAgJShuYW1lKXMgICAgICAgICAgICBOYW1lIG9mIHRoZSBsb2dnZXIgKGxvZ2dpbmcgY2hhbm5lbCkKICAgICUobGV2ZWxubylzICAgICAgICAgTnVtZXJpYyBsb2dnaW5nIGxldmVsIGZvciB0aGUgbWVzc2FnZSAoREVCVUcsIElORk8sCiAgICAgICAgICAgICAgICAgICAgICAgIFdBUk5JTkcsIEVSUk9SLCBDUklUSUNBTCkKICAgICUobGV2ZWxuYW1lKXMgICAgICAgVGV4dCBsb2dnaW5nIGxldmVsIGZvciB0aGUgbWVzc2FnZSAoIkRFQlVHIiwgIklORk8iLAogICAgICAgICAgICAgICAgICAgICAgICAiV0FSTklORyIsICJFUlJPUiIsICJDUklUSUNBTCIpCiAgICAlKHBhdGhuYW1lKXMgICAgICAgIEZ1bGwgcGF0aG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSBsb2dnaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgd2FzIGlzc3VlZCAoaWYgYXZhaWxhYmxlKQogICAgJShmaWxlbmFtZSlzICAgICAgICBGaWxlbmFtZSBwb3J0aW9uIG9mIHBhdGhuYW1lCiAgICAlKG1vZHVsZSlzICAgICAgICAgIE1vZHVsZSAobmFtZSBwb3J0aW9uIG9mIGZpbGVuYW1lKQogICAgJShsaW5lbm8pZCAgICAgICAgICBTb3VyY2UgbGluZSBudW1iZXIgd2hlcmUgdGhlIGxvZ2dpbmcgY2FsbCB3YXMgaXNzdWVkCiAgICAgICAgICAgICAgICAgICAgICAgIChpZiBhdmFpbGFibGUpCiAgICAlKGZ1bmNOYW1lKXMgICAgICAgIEZ1bmN0aW9uIG5hbWUKICAgICUoY3JlYXRlZClmICAgICAgICAgVGltZSB3aGVuIHRoZSBMb2dSZWNvcmQgd2FzIGNyZWF0ZWQgKHRpbWUudGltZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy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ZWQgdGV4dC4KCiAgICAgICAgVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBmcm9tIGZvcm1hdCgpIGJ5IGEgZm9ybWF0dGVyIHdoaWNoCiAgICAgICAgd2FudHMgdG8gbWFrZSB1c2Ugb2YgYSBmb3JtYXR0ZWQgdGltZS4gVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4KICAgICAgICBpbiBmb3JtYXR0ZXJzIHRvIHByb3ZpZGUgZm9yIGFueSBzcGVjaWZpYyByZXF1aXJlbWVudCwgYnV0IHRoZQogICAgICAgIGJhc2ljIGJlaGF2aW91ciBpcyBhcyBmb2xsb3dzOiBpZiBkYXRlZm10IChhIHN0cmluZykgaXMgc3BlY2lmaWVkLAogICAgICAgIGl0IGlzIHVzZWQgd2l0aCB0aW1lLnN0cmZ0aW1lKCkgdG8gZm9ybWF0IHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZQogICAgICAgIHJlY29yZC4gT3RoZXJ3aXNlLCBhbiBJU084NjAxLWxpa2UgKG9yIFJGQyAzMzM5LWxpa2UpIGZvcm1hdCBpcyB1c2VkLgogICAgICAgIFRoZSByZXN1bHRpbmcgc3RyaW5nIGlzIHJldHVybmVkLiBUaGlzIGZ1bmN0aW9uIHVzZXMgYSB1c2VyLWNvbmZpZ3VyYWJsZQogICAgICAgIGZ1bmN0aW9uIHRvIGNvbnZlcnQgdGhlIGNyZWF0aW9uIHRpbWUgdG8gYSB0dXBsZS4gQnkgZGVmYXVsdCwKICAgICAgICB0aW1lLmxvY2FsdGltZSgpIGlzIHVzZWQ7IHRvIGNoYW5nZSB0aGlzIGZvciBhIHBhcnRpY3VsYXIgZm9ybWF0dGVyCiAgICAgICAgaW5zdGFuY2UsIHNldCB0aGUgJ2NvbnZlcnRlcicgYXR0cmlidXRlIHRvIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZQogICAgICAgIHNpZ25hdHVyZSBhcyB0aW1lLmxvY2FsdGltZSgpIG9yIHRpbWUuZ210aW1lKCkuIFRvIGNoYW5nZSBpdCBmb3IgYWxsCiAgICAgICAgZm9ybWF0dGVycywgZm9yIGV4YW1wbGUgaWYgeW91IHdhbnQgYWxsIGxvZ2dpbmcgdGltZXMg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dGx5IGhvdyBhbgogICAgImFyZWEiIGlzIGRlZmluZWQgaXMgdXAgdG8gdGhlIGFwcGxpY2F0aW9uIGRldmVsb3Blci4gU2luY2UgYW4KICAgIGFwcGxpY2F0aW9uIGNhbiBoYXZlIGFueSBudW1iZXIgb2YgYXJlYXMsIGxvZ2dpbmcgY2hhbm5lbHMgYXJlIGlkZW50aWZpZWQKICAgIGJ5IGEgdW5pcXVlIHN0cmluZy4gQXBwbGljYXRpb24gYXJlYXMgY2FuIGJlIG5lc3RlZCAoZS5nLiBhbiBhcmVhCiAgICBvZiAiaW5wdXQgcHJvY2Vzc2luZyIgbWlnaHQgaW5jbHVkZSBzdWItYXJlYXMgInJlYWQgQ1NWIGZpbGVzIiwgInJlYWQKICAgIFhMUyBmaWxlcyIgYW5kICJyZWFkIEdudW1lcmljIGZpbGVzIikuIFRvIGNhdGVyIGZvciB0aGlzIG5hdHVyYWwgbmVzdGluZywKICAgIGNoYW5uZWwgbmFtZXMgYXJlIG9yZ2FuaXplZCBpbnRvIGEgbmFtZXNwYWNlIGhpZXJhcmNoeSB3aGVyZSBsZXZlbHMgYXJlCiAgICBzZXBhcmF0ZWQgYnkgcGVyaW9kcywgbXVjaCBsaWtlIHRoZSBKYXZhIG9yIFB5dGhvbiBwYWNrYWdlIG5hbWVzcGFjZS4gU28KICAgIGluIHRoZSBpbnN0YW5jZSBnaXZlbiBhYm92ZSwgY2hhbm5lbCBuYW1lcyBtaWdodCBiZSAiaW5wdXQiIGZvciB0aGUgdXBwZXIKICAgIGxldmVsLCBhbmQgImlucHV0LmNzdiIsICJpbnB1dC54bHMiIGFuZCAiaW5wdXQuZ251IiBmb3IgdGhlIHN1Yi1sZXZlbHMuCiAgICBUaGVyZSBpcyBubyBhcmJpdHJhcnkgbGltaXQgdG8gdGhlIGRlcHRoIG9mIG5lc3RpbmcuCiAgICBjAwAAAAAAAAAAAAAAAwAAAAMAAABDAAAAczwAAAB0AKABfAChAQEAfAF8AF8CdAN8AoMBfABfBGQBfABfBWQCfABfBmcAfABfB2QDfABfCGkAfABfCWQBUwApBHpKCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgbG9nZ2VyIHdpdGggYSBuYW1lIGFuZCBhbiBvcHRpb25hbCBs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ICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGlmIHRoZSByb290IGxvZ2dlciBhbHJlYWR5IGhhcyBoYW5kbGVycwogICAgY29uZmlndXJlZCwgdW5sZXNzIHRoZSBrZXl3b3JkIGFyZ3VtZW50ICpmb3JjZSogaXMgc2V0IHRvIGBgVHJ1ZWBgLgogICAgSXQgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgaW50ZW5kZWQgZm9yIHVzZSBieSBzaW1wbGUgc2NyaXB0cwogICAgdG8gZG8gb25lLXNob3QgY29uZmlndXJhdGlvbiBvZiB0aGUgbG9nZ2luZyBwYWNrYWdlLgoKICAgIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyB0byBjcmVhdGUgYSBTdHJlYW1IYW5kbGVyIHdoaWNoIHdyaXRlcyB0bwogICAgc3lzLnN0ZGVyciwgc2V0IGEgZm9ybWF0dGVyIHVzaW5nIHRoZSBCQVNJQ19GT1JNQVQgZm9ybWF0IHN0cmluZywgYW5kCiAgICBhZGQgdGhlIGhhbmRsZXIgdG8gdGhlIHJvb3QgbG9nZ2VyLgoKICAgIEEgbnVtYmVyIG9mIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIG1heSBiZSBzcGVjaWZpZWQsIHdoaWNoIGNhbiBhbHRlcgogICAgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgoKICAgIGZpbGVuYW1lICBTcGVjaWZpZXMgdGhhdCBhIEZpbGVIYW5kbGVyIGJlIGNyZWF0ZWQsIHVzaW5nIHRoZSBzcGVjaWZpZWQKICAgICAgICAgICAgICBmaWxlbmFtZSwgcmF0aGVyIHRoYW4gYSBTdHJlYW1IYW5kbGVyLgogICAgZmlsZW1vZGUgIFNwZWNpZmllcyB0aGUgbW9kZSB0byBvcGVuIHRoZSBmaWxlLCBpZiBmaWxlbmFtZSBpcyBzcGVjaWZpZWQKICAgICAgICAgICAgICAoaWYgZmlsZW1vZGUgaXMgdW5zcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvICdhJykuCiAgICBmb3JtYXQgICAgVXNlIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZyBmb3IgdGhlIGhhbmRsZXIuCiAgICBkYXRlZm10ICAgVXNlIHRoZSBzcGVjaWZpZWQgZGF0ZS90aW1lIGZvcm1hdC4KICAgIHN0eWxlICAgICBJZiBhIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkLCB1c2UgdGhpcyB0byBzcGVjaWZ5IHRoZQogICAgICAgICAgICAgIHR5cGUgb2YgZm9ybWF0IHN0cmluZyAocG9zc2libGUgdmFsdWVzICclJywgJ3snLCAnJCcsIGZvcgogICAgICAgICAgICAgICUtZm9ybWF0dGluZywgOm1ldGg6YHN0ci5mb3JtYXRgIGFuZCA6Y2xhc3M6YHN0cmluZy5UZW1wbGF0ZWAKICAgICAgICAgICAgICAtIGRlZmF1bHRzIHRvICclJykuCiAgICBsZXZlbCAgICAgU2V0IHRoZSByb290IGxvZ2dlciBsZXZlbCB0byB0aGUgc3BlY2lmaWVkIGxldmVsLgogICAgc3RyZWFtICAgIFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSBTdHJlYW1IYW5kbGVyLiBOb3RlCiAgICAgICAgICAgICAgdGhhdCB0aGlzIGFyZ3VtZW50IGlzIGluY29tcGF0aWJsZSB3aXRoICdmaWxlbmFtZScgLSBpZiBib3RoCiAgICAgICAgICAgICAgYXJlIHByZXNlbnQsICdzdHJlYW0nIGlzIGlnbm9yZWQuCiAgICBoYW5kbGVycyAgSWYgc3BlY2lmaWVkLCB0aGlzIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBhbHJlYWR5IGNyZWF0ZWQKICAgICAgICAgICAgICBoYW5kbGVycywgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgcm9vdCBoYW5kbGVyLiBBbnkgaGFuZGxlcgogICAgICAgICAgICAgIGluIHRoZSBsaXN0IHdoaWNoIGRvZXMgbm90IGhhdmUgYSBmb3JtYXR0ZXIgYXNzaWduZWQgd2lsbCBiZQogICAgICAgICAgICAgIGFzc2lnbmVkIHRoZSBmb3JtYXR0ZXIgY3JlYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLgogICAgZm9yY2UgICAgIElmIHRoaXMga2V5d29yZCAgaXMgc3BlY2lmaWVkIGFzIHRydWUsIGFueSBleGlzdGluZyBoYW5kbGVycwogICAgICAgICAgICAgIGF0dGFjaGVkIHRvIHRoZSByb290IGxvZ2dlciBhcmUgcmVtb3ZlZCBhbmQgY2xvc2VkLCBiZWZvcmUKICAgICAgICAgICAgICBjYXJyeWluZyBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gYXMgc3BlY2lmaWVkIGJ5IHRoZSBvdGhlcgogICAgICAgICAgICAgIGFyZ3VtZW50cy4KICAgIGVuY29kaW5nICBJZiBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBhIGZpbGVuYW1lLCB0aGlzIGVuY29kaW5nIGlzIHBhc3NlZCB0bwogICAgICAgICAgICAgIHRoZSBjcmVhdGVkIEZpbGVIYW5kbGVyLCBjYXVzaW5nIGl0IHRvIGJlIHVzZWQgd2hlbiB0aGUgZmlsZSBpcwogICAgICAgICAgICAgIG9wZW5lZC4KICAgIGVycm9ycyAgICBJZiBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBhIGZpbGVuYW1lLCB0aGlzIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUKICAgICAgICAgICAgICBjcmVhdGVkIEZpbGVIYW5kbGVyLCBjYXVzaW5nIGl0IHRvIGJlIHVzZWQgd2hlbiB0aGUgZmlsZSBpcwogICAgICAgICAgICAgIG9wZW5lZCBpbiB0ZXh0IG1vZGUuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGlzCiAgICAgICAgICAgICAgYGJhY2tzbGFzaHJlcGxhY2VgLgoKICAgIE5vdGUgdGhhdCB5b3UgY291bGQgc3BlY2lmeSBhIHN0cmVhbSBjcmVhdGVkIHVzaW5nIG9wZW4oZmlsZW5hbWUsIG1vZGUpCiAgICByYXRoZXIgdGhhbiBwYXNzaW5nIHRoZSBmaWxlbmFtZSBhbmQgbW9kZSBpbi4gSG93ZXZlciwgaXQgc2hvdWxkIGJlCiAgICByZW1lbWJlcmVkIHRoYXQgU3RyZWFtSGFuZGxlciBkb2VzIG5vdCBjbG9zZSBpdHMgc3RyZWFtIChzaW5jZSBpdCBtYXkgYmUKICAgIHVzaW5nIHN5cy5zdGRvdXQgb3Igc3lzLnN0ZGVyciksIHdoZXJlYXMgRmlsZUhhbmRsZXIgY2xvc2VzIGl0cyBzdHJlYW0KICAgIHdoZW4gdGhlIGhhbmRsZXIgaXMgY2xvc2VkLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCB0aGUgYGBzdHlsZWBgIHBhcmFtZXRlci4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlIGBgaGFuZGxlcnNgYCBwYXJhbWV0ZXIuIEEgYGBWYWx1ZUVycm9yYGAgaXMgbm93IHRocm93biBmb3IKICAgICAgIGluY29tcGF0aWJsZSBhcmd1bWVudHMgKGUuZy4gYGBoYW5kbGVyc2BgIHNwZWNpZmllZCB0b2dldGhlciB3aXRoCiAgICAgICBgYGZpbGVuYW1lYGAvYGBmaWxlbW9kZWBgLCBvciBgYGZpbGVuYW1lYGAvYGBmaWxlbW9kZWBgIHNwZWNpZmllZAogICAgICAgdG9nZXRoZXIgd2l0aCBgYHN0cmVhbWBgLCBvciBgYGhhbmRsZXJzYGAgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGgKICAgICAgIGBgc3RyZWFtYGAuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjgKICAgICAgIEFkZGVkIHRoZSBgYGZvcmNlYGAgcGFyYW1ldGVyLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy45CiAgICAgICBBZGRlZCB0aGUgYGBlbmNvZGluZ2BgIGFuZCBgYGVycm9yc2BgIHBhcmFtZXRlcnMuCiAgICDaBWZvcmNlRnIfAQAATnIgAQAA2hBiYWNrc2xhc2hyZXBsYWNlcgEAAABy7gAAAHIUAQAAcmkAAAB6OCdzdHJlYW0nIGFuZCAnZmlsZW5hbWUnIHNob3VsZCBub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyekcnc3RyZWFtJyBvciAnZmlsZW5hbWUnIHNob3VsZCBub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggJ2hhbmRsZXJzJ9oIZmlsZW1vZGVyGgEAANoBYnIjAQAAcsIAAABywwAAAHK6AAAAcrwAAAByvQAAAHKgAAAAcloAAAByNQAAAHoCLCB6HFVucmVjb2duaXNl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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 9
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
config.cpython-39.opt-1.pyc
22.70 KB
lrw-r--r--
2025-06-19 12:11:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-39.opt-2.pyc
18.69 KB
lrw-r--r--
2025-06-19 12:11:17
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-39.pyc
22.72 KB
lrw-r--r--
2025-06-19 12:11:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-39.opt-1.pyc
43.17 KB
lrw-r--r--
2025-06-19 12:11:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-39.opt-2.pyc
24.76 KB
lrw-r--r--
2025-06-19 12:11:17
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-39.pyc
43.17 KB
lrw-r--r--
2025-06-19 12:11:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-39.opt-1.pyc
64.77 KB
lrw-r--r--
2025-06-19 12:11:16
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-39.opt-2.pyc
36.27 KB
lrw-r--r--
2025-06-19 12:11:17
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-39.pyc
64.79 KB
lrw-r--r--
2025-06-19 12:11:16
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).