REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 58.95 KB
Close
/proc/thread-self/root/lib64/python3.6/logging/__pycache__/__init__.cpython-36.opt-1.pyc
Text
Base64
Mw0NCgoAIFxlFgEA4wAAAAAAAAAAAAAAACoAAABAAAAAcwIEAABkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQCbAVaBWQBZAJsBloGZAFkAmwHWgdkAWQCbAhaCGQBZANsCW0KWgoBAGQEZAVkBmQHZAhkCWQKZAtkDGQNZA5kD2QQZBFkEmQTZBRkFWQWZBdkGGQZZBpkG2QcZB1kHmQfZCBkIWQiZCNkJGQlZCZkJ2QoZClkKmQrZCxkLWcqWgt5DGQBZAJsDFoMVwBuGAQAZQ1rCnLMAQABAAEAZAJaDFkAbgJYAGQuWg5kL1oPZDBaEGQxWhFlA2oDgwBaEmQyWhNkMloUZDJaFWQyWhZkM1oXZRdaGGQ0WhlkNVoaZRpaG2Q2WhxkN1odZAFaHmUXZAZlGWQIZRpkFmUcZA5lHWQHZR5kEmkGWh9lF2UYZRllGmUaZRxlHWUeZDicCFogZDlkIIQAWiFkOmQXhABaImUjZQFkO4MCkAFybmQ8ZD2EAFokbghkPmQ/hABaJGUCaiVqJmUiaidqKIMBWilkQGRBhABaKmUMkAFynmUMaiuDAFosbgRkAlosZEJkQ4QAWi1kRGRFhABaLkcAZEZkD4QAZA9lL4MDWjBlMGExZEdkK4QAWjJkSGQqhABaM2RJZCWEAFo0RwBkSmRLhABkS2UvgwNaNUcAZExkTYQAZE1lNYMDWjZHAGROZE+EAGRPZTWDA1o3ZFBaOGU1ZThmAmU2ZFFmAmU3ZFJmAmRTnANaOUcAZFRkDIQAZAxlL4MDWjplOoMAWjtHAGRVZAWEAGQFZS+DA1o8RwBkVmQLhABkC2UvgwNaPUcAZFdkWIQAZFhlL4MDWj5lB2o/gwBaQGcAWkFkWWRahABaQmRbZFyEAFpDRwBkXWQNhABkDWU+gwNaREcAZF5kFIQAZBRlRIMDWkVHAGRfZAqEAGQKZUWDA1pGRwBkYGRhhABkYWVFgwNaR2VHZRqDAVpIZUhaSUcAZGJkY4QAZGNlL4MDWkpkZGQmhABaS2RlZCKEAFpMRwBkZmRnhABkZ2UvgwNaTUcAZGhkEIQAZBBlPoMDWk5HAGRpZGqEAGRqZU6DA1pPZU5hUEcAZGtkEYQAZBFlL4MDWlFlT2UagwFaUmVSZU5fUmVNZU5qUoMBZU5fU2RsZBiEAFpUZH1kbWQhhAFaVWRuZBqEAFpWZVZaV2RvZB2EAFpYZDJkcJwBZHFkHoQCWllkcmQphABaWmRzZCiEAFpbZHRkI4QAWlxkdWQbhABaXWR2ZCSEAFpeZHdkHIQAWl9lQWYBZHhkJ4QBWmBkAWQCbGFaYWVhamJlYIMBAQBHAGR5ZBOEAGQTZUSDA1pjZAJhZGR+ZHpke4QBWmVkfGQZhABaZmQCUwApf3rCCkxvZ2dpbmcgcGFja2FnZSBmb3IgUHl0aG9uLiBCYXNlZCBvbiBQRVAgMjgyIGFuZCBjb21tZW50cyB0aGVyZXRvIGluCmNvbXAubGFuZy5weXRob24uCgpDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KClRvIHVzZSwgc2ltcGx5ICdpbXBvcnQgbG9nZ2luZycgYW5kIGxvZyBhd2F5IQrpAAAAAE4pAdoIVGVtcGxhdGXaDEJBU0lDX0ZPUk1BVNoSQnVmZmVyaW5nRm9ybWF0dGVy2ghDUklUSUNBTNoFREVCVUfaBUVSUk9S2gVGQVRBTNoLRmlsZUhhbmRsZXLaBkZpbHRlctoJRm9ybWF0dGVy2gdIYW5kbGVy2gRJTkZP2glMb2dSZWNvcmTaBkxvZ2dlctoNTG9nZ2VyQWRhcHRlctoGTk9UU0VU2gtOdWxsSGFuZGxlctoNU3RyZWFtSGFuZGxlctoEV0FSTtoHV0FSTklOR9oMYWRkTGV2ZWxOYW1l2gtiYXNpY0NvbmZpZ9oPY2FwdHVyZVdhcm5pbmdz2ghjcml0aWNhbNoFZGVidWfaB2Rpc2FibGXaBWVycm9y2glleGNlcHRpb27aBWZhdGFs2gxnZXRMZXZlbE5hbWXaCWdldExvZ2dlctoOZ2V0TG9nZ2VyQ2xhc3PaBGluZm/aA2xvZ9oNbWFrZUxvZ1JlY29yZNoOc2V0TG9nZ2VyQ2xhc3PaCHNodXRkb3du2gR3YXJu2gd3YXJuaW5n2hNnZXRMb2dSZWNvcmRGYWN0b3J52hNzZXRMb2dSZWNvcmRGYWN0b3J52gpsYXN0UmVzb3J02g9yYWlzZUV4Y2VwdGlvbnN6JlZpbmF5IFNhamlwIDx2aW5heV9zYWppcEByZWQtZG92ZS5jb20+Wgpwcm9kdWN0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ICAgdGhlIHNvdXJjZSBsaW5lIHdoZXJlIHRoZSBsb2dnaW5nIGNhbGwgd2FzIG1hZGUsIGFuZCBhbnkgZXhjZXB0aW9uCiAgICBpbmZvcm1hdGlvbiB0byBiZSBsb2dnZWQuCiAgICBOYwoAAAAAAAAADQAAABMAAABLAAAAc5wBAAB0AGoAgwB9C3wBfABfAXwFfABfAnwGckR0A3wGgwFkAWsCckR0BHwGZAIZAHQFagaDAnJEfAZkAhkAckR8BmQCGQB9BnwGfABfB3QIfAKDAXwAXwl8AnwAXwp8A3wAXwt5JnQMag1qDnwDgwF8AF8PdAxqDWoQfABqD4MBZAIZAHwAXxFXAG4mBAB0EnQTdBRmA2sKcqwBAAEAAQB8A3wAXw9kA3wAXxFZAG4CWAB8B3wAXxVkBHwAXxZ8CXwAXxd8BHwAXxh8CHwAXxl8C3wAXxp8C3QbfAuDARgAZAUUAHwAXxx8AGoadB0YAGQFFAB8AF8edB9v+nQgkAFyFnQgaiGDAHwAXyJ0IGojgwBqAXwAXyRuDGQEfABfImQEfABfJHQlkAFzMGQEfABfJm5EZAZ8AF8mdCdqKGopZAeDAX0MfAxkBGsJkAFydHkQfAxqKoMAagF8AF8mVwBuFgQAdCtrCpABcnIBAAEAAQBZAG4CWAB0LJABcpJ0LXQMZAiDApABcpJ0DGougwB8AF8vbgZkBHwAXy9kBFMAKQl6SwogICAgICAgIEluaXRpYWxpemUgYSBsb2dnaW5nIHJlY29yZCB3aXRoIGludGVyZXN0aW5nIGluZm9ybWF0aW9uLgogICAgICAgIOkBAAAAcgEAAAB6DlVua25vd24gbW9kdWxlTmnoAwAAWgtNYWluUHJvY2Vzc1oPbXVsdGlwcm9jZXNzaW5n2gZnZXRwaWQpMNoEdGltZdoEbmFtZdoDbXNn2gNsZW5yRQAAANoLY29sbGVjdGlvbnPaB01hcHBpbmfaBGFyZ3NyHwAAAFoJbGV2ZWxuYW1l2gdsZXZlbG5v2ghwYXRobmFtZdoCb3PaBHBhdGjaCGJhc2VuYW1l2ghmaWxlbmFtZdoIc3BsaXRleHTaBm1vZHVsZXJJAAAAckgAAADaDkF0dHJpYnV0ZUVycm9yckEAAADaCGV4Y190ZXh02gpzdGFja19pbmZv2gZsaW5lbm9aCGZ1bmNO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OiR7bmFtZX06JHttZXNzYWdlfSkD+gEl+gF7+gEkYwAAAAAAAAAAAAAAAAMAAABAAAAAc1oAAABlAFoBZABaAmQBWgNlBGoFWgZkFGQEZAWEAVoHZAZaCGQHWglkFWQIZAmEAVoKZApkC4QAWgtkDGQNhABaDGQOZA+EAFoNZBBkEYQAWg5kEmQThABaD2QCUwApFnILAAAAYdwIAAAKICAgIEZvcm1hdHRlciBpbnN0YW5jZXMgYXJlIHVzZWQgdG8gY29udmVydCBhIExvZ1JlY29yZCB0byB0ZXh0LgoKICAgIEZvcm1hdHRlcnMgbmVlZCB0byBrbm93IGhvdyBhIExvZ1JlY29yZCBpcyBjb25zdHJ1Y3RlZC4gVGhleSBhcmUKICAgIHJlc3BvbnNpYmxlIGZvciBjb252ZXJ0aW5nIGEgTG9nUmVjb3JkIHRvICh1c3VhbGx5KSBhIHN0cmluZyB3aGljaCBjYW4KICAgIGJlIGludGVycHJldGVkIGJ5IGVpdGhlciBhIGh1bWFuIG9yIGFuIGV4dGVybmFsIHN5c3RlbS4gVGhlIGJhc2UgRm9ybWF0dGVyCiAgICBhbGxvd3MgYSBmb3JtYXR0aW5nIHN0cmluZyB0byBiZSBzcGVjaWZpZWQuIElmIG5vbmUgaXMgc3VwcGxpZWQsIHRoZQogICAgdGhlIHN0eWxlLWRlcGVuZGVudCBkZWZhdWx0IHZhbHVlLCAiJShtZXNzYWdlKXMiLCAie21lc3NhZ2V9Iiwgb3IKICAgICIke21lc3NhZ2V9IiwgaXMgdXNlZC4KCiAgICBUaGUgRm9ybWF0dGVyIGNhbiBiZSBpbml0aWFsaXplZCB3aXRoIGEgZm9ybWF0IHN0cmluZyB3aGljaCBtYWtlcyB1c2Ugb2YKICAgIGtub3dsZWRnZSBvZiB0aGUgTG9nUmVjb3JkIGF0dHJpYnV0ZXMgLSBlLmcuIHRoZSBkZWZhdWx0IHZhbHVlIG1lbnRpb25lZAogICAgYWJvdmUgbWFrZXMgdXNlIG9mIHRoZSBmYWN0IHRoYXQgdGhlIHVzZXIncyBtZXNzYWdlIGFuZCBhcmd1bWVudHMgYXJlIHByZS0KICAgIGZvcm1hdHRlZCBpbnRvIGEgTG9nUmVjb3JkJ3MgbWVzc2FnZSBhdHRyaWJ1dGUuIEN1cnJlbnRseSwgdGhlIHVzZWZ1bAogICAgYXR0cmlidXRlcyBpbiBhIExvZ1JlY29yZCBhcmUgZGVzY3JpYmVkIGJ5OgoKICAgICUobmFtZSlzICAgICAgICAgICAgTmFtZSBvZiB0aGUgbG9nZ2VyIChsb2dnaW5nIGNoYW5uZWwpCiAgICAlKGxldmVsbm8pcyAgICAgICAgIE51bWVyaWMgbG9nZ2luZyBsZXZlbCBmb3IgdGhlIG1lc3NhZ2UgKERFQlVHLCBJTkZPLAogICAgICAgICAgICAgICAgICAgICAgICBXQVJOSU5HLCBFUlJPUiwgQ1JJVElDQUwpCiAgICAlKGxldmVsbmFtZSlzICAgICAgIFRleHQgbG9nZ2luZyBsZXZlbCBmb3IgdGhlIG1lc3NhZ2UgKCJERUJVRyIsICJJTkZPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIldBUk5JTkciLCAiRVJST1IiLCAiQ1JJVElDQUwiKQogICAgJShwYXRobmFtZSlzICAgICAgICBGdWxsIHBhdGhuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0aGUgbG9nZ2luZwogICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHdhcyBpc3N1ZWQgKGlmIGF2YWlsYWJsZSkKICAgICUoZmlsZW5hbWUpcyAgICAgICAgRmlsZW5hbWUgcG9ydGlvbiBvZiBwYXRobmFtZQogICAgJShtb2R1bGUpcyAgICAgICAgICBNb2R1bGUgKG5hbWUgcG9ydGlvbiBvZiBmaWxlbmFtZSkKICAgICUobGluZW5vKWQgICAgICAgICAgU291cmNlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBsb2dnaW5nIGNhbGwgd2FzIGlzc3VlZAogICAgICAgICAgICAgICAgICAgICAgICAoaWYgYXZhaWxhYmxlKQogICAgJShmdW5jTmFtZSlzICAgICAgICBGdW5jdGlvbiBuYW1lCiAgICAlKGNyZWF0ZWQpZiAgICAgICAgIFRpbWUgd2hlbiB0aGUgTG9nUmVjb3JkIHdhcyBjcmVhdGVkICh0aW1lLnRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUp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b3JtYXQoKSBieSBhIGZvcm1hdHRlciB3aGljaAogICAgICAgIHdhbnRzIHRvIG1ha2UgdXNlIG9mIGEgZm9ybWF0dGVkIHRpbWUuIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuCiAgICAgICAgaW4gZm9ybWF0dGVycyB0byBwcm92aWRlIGZvciBhbnkgc3BlY2lmaWMgcmVxdWlyZW1lbnQsIGJ1dCB0aGUKICAgICAgICBiYXNpYyBiZWhhdmlvdXIgaXMgYXMgZm9sbG93czogaWYgZGF0ZWZtdCAoYSBzdHJpbmcpIGlzIHNwZWNpZmllZCwKICAgICAgICBpdCBpcyB1c2VkIHdpdGggdGltZS5zdHJmdGltZSgpIHRvIGZvcm1hdCB0aGUgY3JlYXRpb24gdGltZSBvZiB0aGUKICAgICAgICByZWNvcmQuIE90aGVyd2lzZSwgYW4gSVNPODYwMS1saWtlIChvciBSRkMgMzMzOS1saWtlKSBmb3JtYXQgaXMgdXNlZC4KICAgICAgICBUaGUgcmVzdWx0aW5nIHN0cmluZyBpcyByZXR1cm5lZC4gVGhpcyBmdW5jdGlvbiB1c2VzIGEgdXNlci1jb25maWd1cmFibGUKICAgICAgICBmdW5jdGlvbiB0byBjb252ZXJ0IHRoZSBjcmVhdGlvbiB0aW1lIHRvIGEgdHVwbGUuIEJ5IGRlZmF1bHQsCiAgICAgICAgdGltZS5sb2NhbHRpbWUoKSBpcyB1c2VkOyB0byBjaGFuZ2UgdGhpcyBmb3IgYSBwYXJ0aWN1bGFyIGZvcm1hdHRlcgogICAgICAgIGluc3RhbmNlLCBzZXQgdGhlICdjb252ZXJ0ZXInIGF0dHJpYnV0ZSB0byBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUKICAgICAgICBzaWduYXR1cmUgYXMgdGltZS5sb2NhbHRpbWUoKSBvciB0aW1lLmdtdGltZSgpLiBUbyBjaGFuZ2UgaXQgZm9yIGFsbAogICAgICAgIGZvcm1hdHRlcnMsIGZvciBleGFtcGxlIGlmIHlvdSB3YW50IGFsbCBsb2dnaW5nIHRpbWVzIHRvIGJlIHNob3duIGluIEdNVCwKICAgICAgICBzZXQgdGhlICdjb252ZXJ0ZXInIGF0dHJp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d2hlbiBhbiBleGNlcHRpb24gaXMKICAgICAgICBlbmNvdW50ZXJlZCBkdXJpbmcgYW4gZW1pdCgpIGNhbGwuIElmIHJhaXNlRXhjZXB0aW9ucyBpcyBmYWxzZSwKICAgICAgICBleGNlcHRpb25zIGdldCBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIHdoYXQgaXMgbW9zdGx5IHdhbnRlZAogICAgICAgIGZvciBhIGxvZ2dpbmcgc3lzdGVtIC0gbW9zdCB1c2VycyB3aWxsIG5vdCBjYXJlIGFib3V0IGVycm9ycyBpbgogICAgICAgIHRoZSBsb2dnaW5nIHN5c3RlbSwgdGhleSBhcmUgbW9yZSBpbnRlcmVzdGVkIGluIGFwcGxpY2F0aW9uIGVycm9ycy4KICAgICAgICBZb3UgY291bGQsIGhvd2V2ZXIsIHJlcGxhY2UgdGhpcyB3aXRoIGEgY3VzdG9tIGhhbmRsZXIgaWYgeW91IHdpc2guCiAgICAgICAgVGhlIHJlY29yZCB3aGljaCB3YXMgYmVpbmcgcHJvY2Vzc2VkIGlzIHBhc3NlZCBpbiB0byB0aGlzIG1ldGhvZC4KICAgICAgICB6Fi0tLSBMb2dnaW5nIGVycm9yIC0tLQpOegxDYWxsIHN0YWNrOgpyAQAAACkB2gRmaWxleh1Mb2dnZWQgZnJvbSBmaWxlICVzLCBsaW5lICVzCnoaTWVzc2FnZTogJXIKQXJndW1lbnRzOiAlcwp6d1VuYWJsZSB0byBwcmludCB0aGUgbWVzc2FnZSBhbmQgYXJndW1lbnRzIC0gcG9zc2libGUgZm9ybWF0dGluZyBlcnJvci4KVXNlIHRoZSB0cmFjZWJhY2sgYWJvdmUgdG8gaGVscCBmaW5kIHRoZSBlcnJvci4KKRZyLAAAAHI9AAAA2gZzdGRlcnJyQQAAANoFd3JpdGVyowAAAHKkAAAAckIAAAByWgAAAHJbAAAA2gdkaXJuYW1l2gZmX2NvZGXaC2NvX2ZpbGVuYW1l2ghfX3BhdGhfX3JDAAAA2gtwcmludF9zdGFja3JdAAAAcmMAAAByUwAAAHJXAAAAckAAAADaB09TRXJyb3IpBnJvAAAAcokAAABynQAAANoBdnKoAAAA2gVmcmFtZXI3AAAAcjcAAAByOAAAANoL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AVoSZCBkIYQAWhNkImQjhABaFGQkZCWEAFoVZCZkJ4QAWhZkKGQphABaF2QqZCuEAFoYZCxkLYQAWhlkLmQvhABaGmQwZDGEAFobZBtTACk1cg8AAABhcgMAAAogICAgSW5zdGFuY2VzIG9mIHRoZSBMb2dnZXIgY2xhc3MgcmVwcmVzZW50IGEgc2luZ2xlIGxvZ2dpbmcgY2hhbm5lbC4gQQogICAgImxvZ2dpbmcgY2hhbm5lbCIgaW5kaWNhdGVzIGFuIGFyZWEgb2YgYW4gYXBwbGljYXRpb24uIEV4YWN0bHkgaG93IGFuCiAgICAiYXJlYSIgaXMgZGVmaW5lZCBpcyB1cCB0byB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyLiBTaW5jZSBhbgogICAgYXBwbGljYXRpb24gY2FuIGhhdmUgYW55IG51bWJlciBvZiBhcmVhcywgbG9nZ2luZyBjaGFubmVscyBhcmUgaWRlbnRpZmllZAogICAgYnkgYSB1bmlxdWUgc3RyaW5nLiBBcHBsaWNhdGlvbiBhcmVhcyBjYW4gYmUgbmVzdGVkIChlLmcuIGFuIGFyZWEKICAgIG9mICJpbnB1dCBwcm9jZXNzaW5nIiBtaWdodCBpbmNsdWRlIHN1Yi1hcmVhcyAicmVhZCBDU1YgZmlsZXMiLCAicmVhZAogICAgWExTIGZpbGVzIiBhbmQgInJlYWQgR251bWVyaWMgZmlsZXMiKS4gVG8gY2F0ZXIgZm9yIHRoaXMgbmF0dXJhbCBuZXN0aW5nLAogICAgY2hhbm5lbCBuYW1lcyBhcmUgb3JnYW5pemVkIGludG8gYSBuYW1lc3BhY2UgaGllcmFyY2h5IHdoZXJlIGxldmVscyBhcmUKICAgIHNlcGFyYXRlZCBieSBwZXJpb2RzLCBtdWNoIGxpa2UgdGhlIEphdmEgb3IgUHl0aG9uIHBhY2thZ2UgbmFtZXNwYWNlLiBTbwogICAgaW4gdGhlIGluc3RhbmNlIGdpdmVuIGFib3ZlLCBjaGFubmVsIG5hbWVzIG1pZ2h0IGJlICJpbnB1dCIgZm9yIHRoZSB1cHBlcgogICAgbGV2ZWwsIGFuZCAiaW5wdXQuY3N2IiwgImlucHV0LnhscyIgYW5kICJpbnB1dC5nbnUiIGZvciB0aGUg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b3IgbG9nZ2VycyB3aGljaCBtYWtlcyBpdCBlYXNpZXIgdG8gc3BlY2lmeSBjb250ZXh0dWFsCiAgICBpbmZvcm1hdGlvbiBpbiBsb2dnaW5nIG91dHB1dC4KICAgIGMDAAAAAAAAAAMAAAACAAAAQwAAAHMQAAAAfAF8AF8AfAJ8AF8BZAFTACkCYXgBAAAKICAgICAgICBJbml0aWFsaXplIHRoZSBhZGFwdGVyIHdpdGggYSBsb2dnZXIgYW5kIGEgZGljdC1saWtlIG9iamVjdCB3aGljaAogICAgICAgIHByb3ZpZGVzIGNvbnRleHR1YWwgaW5mb3JtYXRpb24uIFRoaXMgY29uc3RydWN0b3Igc2lnbmF0dXJlIGFsbG93cwogICAgICAgIGVhc3kgc3RhY2tpbmcgb2YgTG9nZ2VyQWRhcHRlcnMsIGlmIHNvIGRlc2lyZWQuCgogICAgICAgIFlvdSBjYW4gZWZmZWN0aXZlbHkgcGFzcyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBzaG93biBpbiB0aGUKICAgICAgICBmb2xsb3dpbmcgZXhhbXBsZToKCiAgICAgICAgYWRhcHRlciA9IExvZ2dlckFkYXB0ZXIoc29tZUxvZ2dlciwgZGljdChwMT12MSwgcDI9InYyIikpCiAgICAgICAgTikCciMBAAByFAEAACkDcm8AAAByIwEAAHIUAQAAcjcAAAByNwAAAHI4AAAAcnQAAAA8BgAAcwQAAAAACwYBehZMb2dnZXJBZGFwdGVyLl9faW5pdF9fYwMAAAAAAAAAAwAAAAMAAABDAAAAcxIAAAB8AGoAfAJkATwAfAF8AmYCUwApAmGiAQAACiAgICAgICAgUHJvY2VzcyB0aGUgbG9nZ2luZyBtZXNzYWdlIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW4gdG8KICAgICAgICBhIGxvZ2dpbmcgY2FsbCB0byBpbnNlcnQgY29udGV4dHVhbCBpbmZvcm1hdGlvbi4gWW91IGNhbiBlaXRoZXIKICAgICAgICBtYW5pcHVsYXRlIHRoZSBtZXNzYWdlIGl0c2VsZiwgdGhlIGtleXdvcmQgYXJncyBvciBib3RoLiBSZXR1cm4KICAgICAgICB0aGUgbWVzc2FnZSBhbmQga3dh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biBvZiB0aGUgbG9nZ2luZyBwYWNrYWdlLgoKICAgIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyB0byBjcmVhdGUgYSBTdHJlYW1IYW5kbGVyIHdoaWNoIHdyaXRlcyB0bwogICAgc3lzLnN0ZGVyciwgc2V0IGEgZm9ybWF0dGVyIHVzaW5nIHRoZSBCQVNJQ19GT1JNQVQgZm9ybWF0IHN0cmluZywgYW5kCiAgICBhZGQgdGhlIGhhbmRsZXIgdG8gdGhlIHJvb3QgbG9nZ2VyLgoKICAgIEEgbnVtYmVyIG9mIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIG1heSBiZSBzcGVjaWZpZWQsIHdoaWNoIGNhbiBhbHRlcgogICAgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgoKICAgIGZpbGVuYW1lICBTcGVjaWZpZXMgdGhhdCBhIEZpbGVIYW5kbGVyIGJlIGNyZWF0ZWQsIHVzaW5nIHRoZSBzcGVjaWZpZWQKICAgICAgICAgICAgICBmaWxlbmFtZSwgcmF0aGVyIHRoYW4gYSBTdHJlYW1IYW5kbGVyLgogICAgZmlsZW1vZGUgIFNwZWNpZmllcyB0aGUgbW9kZSB0byBvcGVuIHRoZSBmaWxlLCBpZiBmaWxlbmFtZSBpcyBzcGVjaWZpZWQKICAgICAgICAgICAgICAoaWYgZmlsZW1vZGUgaXMgdW5zcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvICdhJykuCiAgICBmb3JtYXQgICAgVXNlIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZyBmb3IgdGhlIGhhbmRsZXIuCiAgICBkYXRlZm10ICAgVXNlIHRoZSBzcGVjaWZpZWQgZGF0ZS90aW1lIGZvcm1hdC4KICAgIHN0eWxlICAgICBJZiBhIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkLCB1c2UgdGhpcyB0byBzcGVjaWZ5IHRoZQogICAgICAgICAgICAgIHR5cGUgb2YgZm9ybWF0IHN0cmluZyAocG9zc2libGUgdmFsdWVzICclJywgJ3snLCAnJCcsIGZvcgogICAgICAgICAgICAgICUtZm9ybWF0dGluZywgOm1ldGg6YHN0ci5mb3JtYXRgIGFuZCA6Y2xhc3M6YHN0cmluZy5UZW1wbGF0ZWAKICAgICAgICAgICAgICAtIGRlZmF1bHRzIHRvICclJykuCiAgICBsZXZlbCAgICAgU2V0IHRoZSByb290IGxvZ2dlciBsZXZlbCB0byB0aGUgc3BlY2lmaWVkIGxldmVsLgogICAgc3RyZWFtICAgIFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSBTdHJlYW1IYW5kbGVyLiBOb3RlCiAgICAgICAgICAgICAgdGhhdCB0aGlzIGFyZ3VtZW50IGlzIGluY29tcGF0aWJsZSB3aXRoICdmaWxlbmFtZScgLSBpZiBib3RoCiAgICAgICAgICAgICAgYXJlIHByZXNlbnQsICdzdHJlYW0nIGlzIGlnbm9yZWQuCiAgICBoYW5kbGVycyAgSWYgc3BlY2lmaWVkLCB0aGlzIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBhbHJlYWR5IGNyZWF0ZWQKICAgICAgICAgICAgICBoYW5kbGVycywgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgcm9vdCBoYW5kbGVyLiBBbnkgaGFuZGxlcgogICAgICAgICAgICAgIGluIHRoZSBsaXN0IHdoaWNoIGRvZXMgbm90IGhhdmUgYSBmb3JtYXR0ZXIgYXNzaWduZWQgd2lsbCBiZQogICAgICAgICAgICAgIGFzc2lnbmVkIHRoZSBmb3JtYXR0ZXIgY3JlYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLgoKICAgIE5vdGUgdGhhdCB5b3UgY291bGQgc3BlY2lmeSBhIHN0cmVhbSBjcmVhdGVkIHVzaW5nIG9wZW4oZmlsZW5hbWUsIG1vZGUpCiAgICByYXRoZXIgdGhhbiBwYXNzaW5nIHRoZSBmaWxlbmFtZSBhbmQgbW9kZSBpbi4gSG93ZXZlciwgaXQgc2hvdWxkIGJlCiAgICByZW1lbWJlcmVkIHRoYXQgU3RyZWFtSGFuZGxlciBkb2VzIG5vdCBjbG9zZSBpdHMgc3RyZWFtIChzaW5jZSBpdCBtYXkgYmUKICAgIHVzaW5nIHN5cy5zdGRvdXQgb3Igc3lzLnN0ZGVyciksIHdoZXJlYXMgRmlsZUhhbmRsZXIgY2xvc2VzIGl0cyBz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BXQGgwCDAQEAfAdqB2QDfAaDAgEAZAFTACkEYYgBAAAKICAgIEltcGxlbWVudGF0aW9uIG9mIHNob3d3YXJuaW5ncyB3aGljaCByZWRpcmVjdHMgdG8gbG9nZ2luZywgd2hpY2ggd2lsbCBmaXJzdAogICAgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaWxlIHBhcmFtZXRlciBpcyBOb25lLiBJZiBhIGZpbGUgaXMgc3BlY2lmaWVkLCBpdCB3aWxsCiAgICBkZWxlZ2F0ZSB0byB0aGUgb3JpZ2luYWwgd2FybmluZ3MgaW1wbGVtZW50YXRpb24gb2Ygc2hvd3dhcm5pbmcuIE90aGVyd2lzZSwKICAgIGl0IHdpbGwgY2FsbCB3YXJuaW5ncy5mb3JtYXR3YXJuaW5nIGFuZCB3aWxsIGxvZyB0aGUgcmVzdWx0aW5nIHN0cmluZyB0byBhCiAgICB3YXJuaW5ncyBsb2dnZXIgbmFtZWQgInB5Lndhcm5pbmdzIiB3aXRoIGxldmVsIGxvZ2dpbmcuV0FSTklORy4KICAgIE56C3B5Lndhcm5pbmdzegIlcykI2hVfd2FybmluZ3Nfc2hvd3dhcm5pbmdyBwEAANoNZm9ybWF0d2FybmluZ3IgAAAAcr8AAAByHwEAAHISAAAAcigAAAApCHKsAAAA2ghjYXRlZ29yeXJdAAAAcmMAAABy0gAAANoEbGluZXKcAAAAciMBAAByNwAAAHI3AAAAcjgAAADaDF9zaG93d2FybmluZ8UHAABzEAAAAAAICAEIARQCEgEIAQYBDAFyMgEAAGMBAAAAAAAAAAEAAAACAAAAQwAAAHMwAAAAfAByGnQAZAFrCHIsdAFqAmEAdAN0AV8CbhJ0AGQBawlyLHQAdAFfAmQBYQBkAVMAKQJ6vwogICAgSWYgY2FwdHVyZSBpcyB0cnVlLCByZWRpcmVjdCBhbGwgd2FybmluZ3MgdG8gdGhlIGxvZ2dpbmcgcGFja2FnZS4KICAgIElmIGNhcHR1cmUgaXMgRmFsc2UsIGVuc3VyZSB0aGF0IHdhcm5pbmdzIGFyZSBub3QgcmVkaXJlY3RlZCB0byBsb2dnaW5nCiAgICBidXQgdG8gdGhlaXIgb3JpZ2luYWwgZGVzdGluYXRpb25zLgogICAgTikEci4BAAByBwEAANoLc2hvd3dhcm5pbmdyMgEAACkBWgdjYXB0dXJlcjcAAAByNwAAAHI4AAAAchgAAADXBwAAcw4AAAAABwQBCAEGAQgCCAEGASkBTikCTk4pZ3J6AAAAcj0AAAByWgAAAHJRAAAAcqEAAAByowAAAHIHAQAAcsEAAAByVQAAANoGc3RyaW5ncgIAAADaB19fYWxsX19yaAAAANoLSW1wb3J0RXJyb3LaCl9fYXV0aG9yX19aCl9fc3RhdHVzX1/aC19fdmVyc2lvbl9fWghfX2RhdGVfX3JmAAAAciwAAAByZwAAAHJqAAAAcmwAAAByBQAAAHIIAAAAcgcAAAByFQAAAHIUAAAAcg0AAAByBgAAAHIRAAAAcjIAAAByNAAAAHIfAAAAchYAAABybQAAAHJEAAAAclsAAAByCwEAANoIX19jb2RlX19y1wAAAHIMAQAAcksAAAByygAAAHJMAAAAcjkAAAByOgAAANoGb2JqZWN0cg4AAAByfAAAAHIqAAAAcikAAAByJAAAAHKCAAAAcowAAAByjQAAAHIDAAAAcpMAAAByCwAAAHKvAAAAcgQAAAByCgAAAHK2AAAA2hNXZWFrVmFsdWVEaWN0aW9uYXJ5csgAAAByvQAAAHLAAAAAcsMAAAByDAAAAHITAAAAcgkAAABy7QAAAFoSX2RlZmF1bHRMYXN0UmVzb3J0cisAAABy7gAAAHIlAAAAciEAAABy9AAAAHIPAAAAcicBAABy8gAAAHIQAAAAcvUAAABy+gAAAHIXAAAAciAAAAByGQAAAHIeAAAAchwAAAByHQAAAHIoAAAAcicAAAByIgAAAHIaAAAAciMAAAByGwAAAHImAAAA2gZhdGV4aXTaCHJlZ2lzdGVychIAAAByLgEAAHIyAQAAchgAAAByNwAAAHI3AAAAcjcAAAByOAAAANoIPG1vZHVsZT4YAAAAc/AAAAAEAkACDAIKAQwBCgEKAQoBCgEKAQgBCAICAQwBDgEKAgQBBAIEAQQJCAYEBQQFBAUEDQQBBAEEAQQBBAEEAQQBBAMEAQQBBAEEAQQBCAMCAQIBAgECAQIBAgECAQgDCBcIDQwBCgIIExAMCBcGAQoCBAMICQgLEGkEAggKCAcIDxAPEAkQEAQDBgEGAQwDEH8ALgYCECoQJRA0CAEEAggRCAoQfwA+EDsQRRARCAEEBhAXCA0IBhBsEH8AfwBFEAwEAhB/AA8IAQYBDAYIYgoLCAoEAggKDggICggFCAoICggKCAYMHwgBCgQQFQQCChI=
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-36.opt-1.pyc
22.79 KB
lrw-r--r--
2026-07-14 16:22:24
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-36.opt-2.pyc
18.77 KB
lrw-r--r--
2026-07-14 16:22:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-36.pyc
22.84 KB
lrw-r--r--
2026-07-14 16:22:23
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-36.opt-1.pyc
42.36 KB
lrw-r--r--
2026-07-14 16:22:23
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-36.opt-2.pyc
23.82 KB
lrw-r--r--
2026-07-14 16:22:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-36.pyc
42.36 KB
lrw-r--r--
2026-07-14 16:22:23
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-1.pyc
58.95 KB
lrw-r--r--
2026-07-14 16:22:24
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-2.pyc
31.76 KB
lrw-r--r--
2026-07-14 16:22:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.pyc
58.98 KB
lrw-r--r--
2026-07-14 16:22:23
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).