REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 60.01 KB
Close
/proc/self/root/opt/alt/python35/lib64/python3.5/logging/__pycache__/__init__.cpython-35.pyc
Text
Base64
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UtoFRkFUQUzaC0ZpbGVIYW5kbGVy2gZGaWx0ZXLaCUZvcm1hdHRlctoHSGFuZGxlctoESU5GT9oJTG9nUmVjb3Jk2gZMb2dnZXLaDUxvZ2dlckFkYXB0ZXLaBk5PVFNFVNoLTnVsbEhhbmRsZXLaDVN0cmVhbUhhbmRsZXLaBFdBUk7aB1dBUk5JTkfaDGFkZExldmVsTmFtZdoLYmFzaWNDb25maWfaD2NhcHR1cmVXYXJuaW5nc9oIY3JpdGljYWzaBWRlYnVn2gdkaXNhYmxl2gVlcnJvctoJZXhjZXB0aW9u2gVmYXRhbNoMZ2V0TGV2ZWxOYW1l2glnZXRMb2dnZXLaDmdldExvZ2dlckNsYXNz2gRpbmZv2gNsb2faDW1ha2VMb2dSZWNvcmTaDnNldExvZ2dlckNsYXNz2gR3YXJu2gd3YXJuaW5n2hNnZXRMb2dSZWNvcmRGYWN0b3J52hNzZXRMb2dSZWNvcmRGYWN0b3J52gpsYXN0UmVzb3J0eiZWaW5heSBTYWppcCA8dmluYXlfc2FqaXBAcmVkLWRvdmUuY29tPloKcHJvZHVjdGlvbnoHMC41LjEuMnoQMDcgRmVicnVhcnkgMjAxMFTpMgAAAOkoAAAA6R4AAADpFAAAAOkKAAAAYwEAAAAAAAAAAgAAAAIAAABDAAAAc0YAAAB0AABqAQB8AACDAQB9AQB8AQBkAQBrCQByHwB8AQBTdAIAagEAfAAAgwEAfQEAfAEAZAEAawkAcj4AfAEAU2QCAHwAABZTKQNhDwIAAAogICAgUmV0dXJuIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIGxvZ2dpbmcgbGV2ZWwgJ2xldmVsJy4KCiAgICBJZiB0aGUgbGV2ZWwgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGxldmVscyAoQ1JJVElDQUwsIEVSUk9SLCBXQVJOSU5HLAogICAgSU5GTywgREVCVUcpIHRoZW4geW91IGdldCB0aGUgY29ycmVzcG9uZGluZyBzdHJpbmcuIElmIHlvdSBoYXZlCiAgICBhc3NvY2lhdGVkIGxldmVscyB3aXRoIG5hbWVzIHVzaW5nIGFkZExldmVsTmFtZSB0aGVuIHRoZSBuYW1lIHlvdSBoYXZlCiAgICBhc3NvY2lhdGVkIHdpdGgg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AGQCAGQIAGQJAIQBAFoKAGQKAGQLAIQAAFoLAGQMAGQNAIQAAFoMAGQOAGQPAIQAAFoNAGQQAGQRAIQAAFoOAGQSAGQTAIQAAFoPAGQCAFMpFHILAAAAYacIAAAKICAgIEZvcm1hdHRlciBpbnN0YW5jZXMgYXJlIHVzZWQgdG8gY29udmVydCBhIExvZ1JlY29yZCB0byB0ZXh0LgoKICAgIEZvcm1hdHRlcnMgbmVlZCB0byBrbm93IGhvdyBhIExvZ1JlY29yZCBpcyBjb25zdHJ1Y3RlZC4gVGhleSBhcmUKICAgIHJlc3BvbnNpYmxlIGZvciBjb252ZXJ0aW5nIGEgTG9nUmVjb3JkIHRvICh1c3VhbGx5KSBhIHN0cmluZyB3aGljaCBjYW4KICAgIGJlIGludGVycHJldGVkIGJ5IGVpdGhlciBhIGh1bWFuIG9yIGFuIGV4dGVybmFsIHN5c3RlbS4gVGhlIGJhc2UgRm9ybWF0dGVyCiAgICBhbGxvd3MgYSBmb3JtYXR0aW5nIHN0cmluZyB0byBiZSBzcGVjaWZpZWQuIElmIG5vbmUgaXMgc3VwcGxpZWQsIHRoZQogICAgZGVmYXVsdCB2YWx1ZSBvZiAiJXMobWVzc2FnZSkiIGlzIHVzZWQuCgogICAgVGhlIEZvcm1hdHRlciBjYW4gYmUgaW5pdGlhbGl6ZWQgd2l0aCBhIGZvcm1hdCBzdHJpbmcgd2hpY2ggbWFrZXMgdXNlIG9mCiAgICBrbm93bGVkZ2Ugb2YgdGhlIExvZ1JlY29yZCBhdHRyaWJ1dGVzIC0gZS5nLiB0aGUgZGVmYXVsdCB2YWx1ZSBtZW50aW9uZWQKICAgIGFib3ZlIG1ha2VzIHVzZSBvZiB0aGUgZmFjdCB0aGF0IHRoZSB1c2VyJ3MgbWVzc2FnZSBhbmQgYXJndW1lbnRzIGFyZSBwcmUtCiAgICBmb3JtYXR0ZWQgaW50byBhIExvZ1JlY29yZCdzIG1lc3NhZ2UgYXR0cmlidXRlLiBDdXJyZW50bHksIHRoZSB1c2VmdWwKICAgIGF0dHJpYnV0ZXMgaW4gYSBMb2dSZWNvcmQgYXJlIGRlc2NyaWJlZCBieToKCiAgICAlKG5hbWUpcyAgICAgICAgICAgIE5hbWUgb2YgdGhlIGxvZ2dlciAobG9nZ2luZyBjaGFubmVsKQogICAgJShsZXZlbG5vKXMgICAgICAgICBOdW1lcmljIGxvZ2dpbmcgbGV2ZWwgZm9yIHRoZSBtZXNzYWdlIChERUJVRywgSU5GTywKICAgICAgICAgICAgICAgICAgICAgICAgV0FSTklORywgRVJST1IsIENSSVRJQ0FMKQogICAgJShsZXZlbG5hbWUpcyAgICAgICBUZXh0IGxvZ2dpbmcgbGV2ZWwgZm9yIHRoZSBtZXNzYWdlICgiREVCVUciLCAiSU5GTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJXQVJOSU5HIiwgIkVSUk9SIiwgIkNSSVRJQ0FMIikKICAgICUocGF0aG5hbWUpcyAgICAgICAgRnVsbCBwYXRobmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIGxvZ2dpbmcKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB3YXMgaXNzdWVkIChpZiBhdmFpbGFibGUpCiAgICAlKGZpbGVuYW1lKXMgICAgICAgIEZpbGVuYW1lIHBvcnRpb24gb2YgcGF0aG5hbWUKICAgICUobW9kdWxlKXMgICAgICAgICAgTW9kdWxlIChuYW1lIHBvcnRpb24gb2YgZmlsZW5hbWUpCiAgICAlKGxpbmVubylkICAgICAgICAgIFNvdXJjZSBsaW5lIG51bWJlciB3aGVyZSB0aGUgbG9nZ2luZyBjYWxsIHdhcyBpc3N1ZWQKICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGF2YWlsYWJsZSkKICAgICUoZnVuY05hbWUpcyAgICAgICAgRnVuY3Rpb24gbmFtZQogICAgJShjcmVhdGVkKWYgICAgICAgICBUaW1lIHdoZW4gdGhlIExvZ1JlY29yZCB3YXMgY3JlYXRlZCAodGltZS50aW1lKCkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKQogICAgJShhc2N0aW1lKXMgICAgICAgICBUZXh0dWFsIHRpbWUgd2hlbiB0aGUgTG9nUmVjb3JkIHdhcyBjcmVhdGVkCiAgICAlKG1zZWNzKWQgICAgICAgICAgIE1pbGxpc2Vjb25kIHBvcnRpb24gb2YgdGhl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ICAgICAgICBpbiBmb3JtYXR0ZXJzIHRvIHByb3ZpZGUgZm9yIGFueSBzcGVjaWZpYyByZXF1aXJlbWVudCwgYnV0IHRoZQogICAgICAgIGJhc2ljIGJlaGF2aW91ciBpcyBhcyBmb2xsb3dzOiBpZiBkYXRlZm10IChhIHN0cmluZykgaXMgc3BlY2lmaWVkLAogICAgICAgIGl0IGlzIHVzZWQgd2l0aCB0aW1lLnN0cmZ0aW1lKCkgdG8gZm9ybWF0IHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZQogICAgICAgIHJlY29yZC4gT3RoZXJ3aXNlLCB0aGUgSVNPODYwMSBmb3JtYXQgaXMgdXNlZC4gVGhlIHJlc3VsdGluZwogICAgICAgIHN0cmluZyBpcyByZXR1cm5lZC4gVGhpcyBmdW5jdGlvbiB1c2VzIGEgdXNlci1jb25maWd1cmFibGUgZnVuY3Rpb24KICAgICAgICB0byBjb252ZXJ0IHRoZSBjcmVhdGlvbiB0aW1lIHRvIGEgdHVwbGUuIEJ5IGRlZmF1bHQsIHRpbWUubG9jYWx0aW1lKCkKICAgICAgICBpcyB1c2VkOyB0byBjaGFuZ2UgdGhpcyBmb3IgYSBwYXJ0aWN1bGFyIGZvcm1hdHRlciBpbnN0YW5jZSwgc2V0IHRoZQogICAgICAgICdjb252ZXJ0ZXInIGF0dHJpYnV0ZSB0byBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlIGFzCiAgICAgICAgdGltZS5sb2NhbHRpbWUoKSBvciB0aW1lLmdtdGltZSgpLiBUbyBjaGFuZ2UgaXQgZm9yIGFsbCBmb3JtYXR0ZXJzLAogICAgICAgIGZvciBleGFtcGxlIGlmIHlvdSB3YW50IGFsbCBsb2dnaW5nIHRpbWVzIHRvIGJlIHNob3duIGluIEdNVCwKICAgICAgICBzZXQgdGhlICdjb252ZXJ0ZXInIGF0dHJpYnV0ZSBpbiB0aGUgRm9ybWF0dGVyIGNsYXNzLgogICAgICAgICkH2gljb252ZXJ0ZXJyYgAAAHJPAAAAWghzdHJmdGltZdoTZGVmYXVsdF90aW1lX2Zvcm1hdNoTZGVmYXVsdF9tc2VjX2Zvcm1hdHJjAAAAKQZybQAAAHKHAAAA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fAIAfAMAfAQAZAIAdAEAagIAgwUAAXQBAGoCAGoEAGQDAIMBAAF8BABqBwB9BQB4NQB8BQBypgB0CABqCQBqCgB8BQBqCwBqDACDAQB0DQBkBAAZawIAcqYAfAUAag4AfQUAcXIAV3wFAHLGAHQFAGoPAHwFAGQFAHQBAGoCAIMBAQFuIAB0AQBqAgBqBABkBgB8AQBqEAB8AQBqEQBmAgAWgwEAAXkkAHQBAGoCAGoEAGQHAHwBAGoSAHwBAGoTAGYCABaDAQABV24iAAR0FABrCgByLgEBAQF0AQBqAgBqBABkCACDAQABWW4BAFhXbhIABHQVAGsKAHJEAQEBAVluAQBYV2QCAH4CAH4DAH4EAFhkAgBTKQlhRAIAAAogICAgICAgIEhhbmRsZSBlcnJvcnMgd2hpY2ggb2NjdXIgZHVyaW5nIGFuIGVtaXQoKSBjYWxsLgoKICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGZyb20gaGFuZGxlcnMgd2hlbiBhbiBleGNlcHRpb24gaXMKICAgICAgICBlbmNvdW50ZXJlZCBkdXJpbmcgYW4gZW1pdCgpIGNhbGwuIElmIHJhaXNlRXhjZXB0aW9ucyBpcyBmYWxzZSwKICAgICAgICBleGNlcHRpb25zIGdldCBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIHdoYXQgaXMgbW9zdGx5IHdhbnRlZAogICAgICAgIGZvciBhIGxvZ2dpbmcgc3lzdGVtIC0gbW9zdCB1c2VycyB3aWxsIG5vdCBjYXJlIGFib3V0IGVycm9ycyBpbgogICAgICAgIHRoZSBsb2dnaW5nIHN5c3RlbSwgdGhleSBhcmUgbW9yZSBpbnRlcmVzdGVkIGluIGFwcGxpY2F0aW9uIGVycm9ycy4KICAgICAgICBZb3UgY291bGQsIGhvd2V2ZXIsIHJlcGxhY2UgdGhpcyB3aXRoIGEgY3VzdG9tIGhhbmRsZXIgaWYgeW91IHdpc2guCiAgICAgICAgVGhlIHJlY29yZCB3aGljaCB3YXMgYmVpbmcgcHJvY2Vzc2VkIGlzIHBhc3NlZCBpbiB0byB0aGlzIG1ldGhvZC4KICAgICAgICB6Fi0tLSBMb2dnaW5nIGVycm9yIC0tLQpOegxDYWxsIHN0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byBvbmUtc2hvdCBjb25maWd1cmF0aW9uIG9mIHRoZSBsb2dnaW5nIHBhY2thZ2UuCgogICAgVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGNyZWF0ZSBhIFN0cmVhbUhhbmRsZXIgd2hpY2ggd3JpdGVzIHRvCiAgICBzeXMuc3RkZXJyLCBzZXQgYSBmb3JtYXR0ZXIgdXNpbmcgdGhlIEJBU0lDX0ZPUk1BVCBmb3JtYXQgc3RyaW5nLCBhbmQKICAgIGFkZCB0aGUgaGFuZGxlciB0byB0aGUgcm9vdCBsb2dnZXIuCgogICAgQSBudW1iZXIgb2Ygb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgbWF5IGJlIHNwZWNpZmllZCwgd2hpY2ggY2FuIGFsdGVyCiAgICB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuCgogICAgZmlsZW5hbWUgIFNwZWNpZmllcyB0aGF0IGEgRmlsZUhhbmRsZXIgYmUgY3JlYXRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAogICAgICAgICAgICAgIGZpbGVuYW1lLCByYXRoZXIgdGhhbiBhIFN0cmVhbUhhbmRsZXIuCiAgICBmaWxlbW9kZSAgU3BlY2lmaWVzIHRoZSBtb2RlIHRvIG9wZW4gdGhlIGZpbGUsIGlmIGZpbGVuYW1lIGlzIHNwZWNpZmllZAogICAgICAgICAgICAgIChpZiBmaWxlbW9kZSBpcyB1bnNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG8gJ2EnKS4KICAgIGZvcm1hdCAgICBVc2UgdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nIGZvciB0aGUgaGFuZGxlci4KICAgIGRhdGVmbXQgICBVc2UgdGhlIHNwZWNpZmllZCBkYXRlL3RpbWUgZm9ybWF0LgogICAgc3R5bGUgICAgIElmIGEgZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQsIHVzZSB0aGlzIHRvIHNwZWNpZnkgdGhlCiAgICAgICAgICAgICAgdHlwZSBvZiBmb3JtYXQgc3RyaW5nIChwb3NzaWJsZSB2YWx1ZXMgJyUnLCAneycsICckJywgZm9yCiAgICAgICAgICAgICAgJS1mb3JtYXR0aW5nLCA6bWV0aDpgc3RyLmZvcm1hdGAgYW5kIDpjbGFzczpgc3RyaW5nLlRlbXBsYXRlYAogICAgICAgICAgICAgIC0gZGVmYXVsdHMgdG8gJyUnKS4KICAgIGxldmVsICAgICBTZXQgdGhlIHJvb3QgbG9nZ2VyIGxldmVsIHRvIHRoZSBzcGVjaWZpZWQgbGV2ZWwuCiAgICBzdHJlYW0gICAgVXNlIHRoZSBzcGVjaWZpZWQgc3RyZWFtIHRvIGluaXRpYWxpemUgdGhlIFN0cmVhbUhhbmRsZXIuIE5vdGUKICAgICAgICAgICAgICB0aGF0IHRoaXMgYXJndW1lbnQgaXMgaW5jb21wYXRpYmxlIHdpdGggJ2ZpbGVuYW1lJyAtIGlmIGJvdGgKICAgICAgICAgICAgICBhcmUgcHJlc2VudCwgJ3N0cmVhbScgaXMgaWdub3JlZC4KICAgIGhhbmRsZXJzICBJZiBzcGVjaWZpZWQsIHRoaXMgc2hvdWxkIGJlIGFuIGl0ZXJhYmxlIG9mIGFscmVhZHkgY3JlYXRlZAogICAgICAgICAgICAgIGhhbmRsZXJzLCB3aGljaCB3aWxsIGJlIGFkZGVkIHRvIHRoZSByb290IGhhbmRsZXIuIEFueSBoYW5kbGVyCiAgICAgICAgICAgICAgaW4gdGhlIGxpc3Qgd2hpY2ggZG9lcyBub3QgaGF2ZSBhIGZvcm1hdHRlciBhc3NpZ25lZCB3aWxsIGJlCiAgICAgICAgICAgICAgYXNzaWduZWQgdGhlIGZvcm1hdHRlciBjcmVhdGVkIGluIHRoaXMgZnVuY3Rpb24uCgogICAgTm90ZSB0aGF0IHlvdSBjb3VsZCBzcGVjaWZ5IGEgc3RyZWFtIGNyZWF0ZWQgdXNpbmcgb3BlbihmaWxlbmFtZSwgbW9kZSkKICAgIHJhdGhlciB0aGFuIHBhc3NpbmcgdGhlIGZpbGVuYW1lIGFuZCBtb2RlIGluLiBIb3dldmVyLCBpdCBzaG91bGQgYmUKICAgIHJlbWVtYmVyZWQgdGhhdCBTdHJlYW1IYW5kbGVyIGRvZXMgbm90IGNsb3NlIGl0cyBzdHJlYW0gKHNpbmNlIGl0IG1heSBiZQogICAgdXNpbmcgc3lzLnN0ZG91dCBvciBzeXMuc3RkZXJyKSwgd2hlcmVhcyBG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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-35.opt-1.pyc
24.77 KB
lrw-r--r--
2024-05-31 13:51:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-35.opt-2.pyc
20.75 KB
lrw-r--r--
2024-05-31 13:51:30
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-35.pyc
24.82 KB
lrw-r--r--
2024-05-31 13:51:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-35.opt-1.pyc
44.16 KB
lrw-r--r--
2024-05-31 13:51:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-35.opt-2.pyc
26.07 KB
lrw-r--r--
2024-05-31 13:51:30
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-35.pyc
44.16 KB
lrw-r--r--
2024-05-31 13:51:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-35.opt-1.pyc
59.97 KB
lrw-r--r--
2024-05-31 13:51:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-35.opt-2.pyc
32.94 KB
lrw-r--r--
2024-05-31 13:51:30
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-35.pyc
60.01 KB
lrw-r--r--
2024-05-31 13:51: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).