REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 85.81 KB
Close
//opt/alt/python37/lib/python3.7/site-packages/OpenSSL/__pycache__/crypto.cpython-37.pyc
Text
Base64
Qg0NCgAAAACA77lZJ30BAOMAAAAAAAAAAAAAAAAFAAAAQAAAAHNEAwAAZABkAWwAWgBkAGQCbAFtAloCAQBkAGQDbANtBFoEAQBkAGQEbAVtBloGbQdaB20IWghtCVoJbQpaCm0LWgsBAGQAZAVsDG0NWg5tD1oQbRFaEgEAZABkBmwTbRRaFAEAZABkB2wVbRZaFm0XWhcBAGQAZAhsGG0ZWhkBAGQAZAlsGm0bWhxtHVoebR9aIG0hWiJtI1okbSVaJm0nWihtKVoqAQBlHmorWixlHmotWi5kClovZR5qMFoxZR5qMlozRwBkC2QMhABkDGU0gwNaNWUEZSBlNYMCWjZlKmU1gwFaN2QNZA6EAFo4ZA9kEIQAWjlkZGQRZBKEAVo6ZBNkFIQAWjtkFWQWhABaPGQXZBiEAFo9RwBkGWQahABkGmU+gwNaP2UZZT9lQGQbZUGDBFpCRwBkHGQdhABkHWU+gwNaQ2QeZB+EAFpEZCBkIYQAWkVHAGQiZCOEAGQjZT6DA1pGZRllRmVAZCRlQYMEWkdHAGQlZCaEAGQmZT6DA1pIZRllSGVAZCdlQYMEWklHAGQoZCmEAGQpZT6DA1pKZRllSmVAZCplQYMEWktHAGQrZCyEAGQsZT6DA1pMZRllTGVAZC1lQYMEWk1HAGQuZC+EAGQvZT6DA1pORwBkMGQxhABkMWU+gwNaT2UZZU9lQGQyZUGDBFpQRwBkM2Q0hABkNGU0gwNaUUcAZDVkNoQAZDZlPoMDWlJkN2Q4hABaU2Q5ZDqEAFpUZDtkPIQAWlVkZWQ9ZD6EAVpWRwBkP2RAhABkQGU+gwNaV0cAZEFkQoQAZEJlPoMDWlhlGWVYZUBkQ2VBgwRaWUcAZERkRYQAZEVlPoMDWlplGWVaZUBkRmVBgwRaW0cAZEdkSIQAZEhlPoMDWlxlGWVcZUBkSWVBgwRaXUcAZEpkS4QAZEtlPoMDWl5lGWVeZUBkTGVBgwRaX0cAZE1kToQAZE5lPoMDWmBkT2RQhABaYWRmZFFkUoQBWmJkU2RUhABaY2RVZFaEAFpkZFdkWIQAWmVkWWRahABaZmRbZFyEAFpnZF1kXoQAWmhkX2RghABaaWRnZGFkYoQBWmplHqBroQABAGUeoGyhAAEAZR6gbWRjoQEBAGQBUwApaOkAAAAATikB2gliMTZlbmNvZGUpAdoHcGFydGlhbCkG2gZfX2VxX1/aBl9fbmVfX9oGX19sdF9f2gZfX2xlX1/aBl9fZ3RfX9oGX19nZV9fKQPaDWludGVnZXJfdHlwZXPaCXRleHRfdHlwZdoDUFkzKQHaBHg1MDkpAtoDZHNh2gNyc2EpAdoKZGVwcmVjYXRlZCkI2gNmZmnaA2xpYtoaZXhjZXB0aW9uX2Zyb21fZXJyb3JfcXVldWXaC2J5dGVfc3RyaW5n2gZuYXRpdmXaC1VOU1BFQ0lGSUVE2hZ0ZXh0X3RvX2J5dGVzX2FuZF93YXJu2gttYWtlX2Fzc2VydGn//wAAYwAAAAAAAAAAAAAAAAEAAABAAAAAcxAAAABlAFoBZABaAmQBWgNkAlMAKQPaBUVycm9yejcKICAgIEFuIGVycm9yIG9jY3VycmVkIGluIGFuIGBPcGVuU1NMLmNyeXB0b2AgQVBJLgogICAgTikE2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fqQByHgAAAHIeAAAA+j8vb3B0L2FsdC9weXRob24zNy9saWIvcHl0aG9uMy43L3NpdGUtcGFja2FnZXMvT3BlblNTTC9jcnlwdG8ucHlyGQAAACUAAABzAgAAAAgDchkAAABjAAAAAAAAAAABAAAAAgAAAEMAAABzEAAAAGQBZAJsAG0BfQABAHwAUwApA2FwAQAACiAgICBJbXBvcnRpbmcgdGhlIGJhY2tlbmQgZnJvbSBjcnlwdG9ncmFwaHkgaGFzIHRoZSBzaWRlIGVmZmVjdCBvZiBhY3RpdmF0aW5nCiAgICB0aGUgb3NyYW5kb20gZW5naW5lLiBUaGlzIG11dGF0ZXMgdGhlIGdsb2JhbCBzdGF0ZSBvZiBPcGVuU1NMIGluIHRoZQogICAgcHJvY2VzcyBhbmQgY2F1c2VzIGlzc3VlcyBmb3IgdmFyaW91cyBwcm9ncmFtcyB0aGF0IHVzZSBzdWJpbnRlcnByZXRlcnMgb3IKICAgIGVtYmVkIFB5dGhvbi4gQnkgcHV0dGluZyB0aGUgaW1wb3J0IGluIHRoaXMgZnVuY3Rpb24gd2UgY2FuIGF2b2lkCiAgICB0cmlnZ2VyaW5nIHRoaXMgc2lkZSBlZmZlY3QgdW5sZXNzIF9nZXRfYmFja2VuZCBp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AAQAWhJTACkS2ghYNTA5TmFtZWEFAwAACiAgICBBbiBYLjUwOSBEaXN0aW5ndWlzaGVkIE5hbWUuCgogICAgOml2YXIgY291bnRyeU5hbWU6IFRoZSBjb3VudHJ5IG9mIHRoZSBlbnRpdHkuCiAgICA6aXZhciBDOiBBbGlhcyBmb3IgIDpweTphdHRyOmBjb3VudHJ5TmFtZWAuCgogICAgOml2YXIgc3RhdGVPclByb3ZpbmNlTmFtZTogVGhlIHN0YXRlIG9yIHByb3ZpbmNlIG9mIHRoZSBlbnRpdHkuCiAgICA6aXZhciBTVDogQWxpYXMgZm9yIDpweTphdHRyOmBzdGF0ZU9yUHJvdmluY2VOYW1lYC4KCiAgICA6aXZhciBsb2NhbGl0eU5hbWU6IFRoZSBsb2NhbGl0eSBvZiB0aGUgZW50aXR5LgogICAgOml2YXIgTDogQWxpYXMgZm9yIDpweTphdHRyOmBsb2NhbGl0eU5hbWVgLgoKICAgIDppdmFyIG9yZ2FuaXphdGlvbk5hbWU6IFRoZSBvcmdhbml6YXRpb24gbmFtZSBvZiB0aGUgZW50aXR5LgogICAgOml2YXIgTzogQWxpYXMgZm9yIDpweTphdHRyOmBvcmdhbml6YXRpb25OYW1lYC4KCiAgICA6aXZhciBvcmdhbml6YXRpb25hbFVuaXROYW1lOiBUaGUgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiB0aGUgZW50aXR5LgogICAgOml2YXIgT1U6IEFsaWFzIGZvciA6cHk6YXR0cjpgb3JnYW5pemF0aW9uYWxVbml0TmFtZWAKCiAgICA6aXZhciBjb21tb25OYW1lOiBUaGUgY29tbW9uIG5hbWUgb2YgdGhlIGVudGl0eS4KICAgIDppdmFyIENOOiBBbGlhcyBmb3IgOnB5OmF0dHI6YGNvbW1vbk5hbWVgLgoKICAgIDppdmFyIGVtYWlsQWRkcmVzczogVGhlIGUtbWFpbCBhZGRyZXNzIG9mIHRoZSBlbnRpdHkuCiAgICBjAgAAAAAAAAACAAAABAAAAEMAAABzIAAAAHQAoAF8AWoCoQF9AXQDoAR8AXQAagWhAnwAXwJkAVMAKQJ6ngogICAgICAgIENyZWF0ZSBhIG5ldyBYNTA5TmFtZSwgY29weWluZyB0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U1NMIFZlcmlmaWNhdGlvbiBGbGFnczoKICAgICAgICBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL21hbm1hc3Rlci9tYW4zL1g1MDlfVkVSSUZZX1BBUkFNX3NldF9mbGFncy5odG1sCiAgICBOKRtyGgAAAHIbAAAAchwAAAByHQAAAHIlAAAAWhVYNTA5X1ZfRkxBR19DUkxfQ0hFQ0taCUNSTF9DSEVDS1oZWDUwOV9WX0ZMQUdfQ1JMX0NIRUNLX0FMTFoNQ1JMX0NIRUNLX0FMTFobWDUwOV9WX0ZMQUdfSUdOT1JFX0NSSVRJQ0FMWg9JR05PUkVfQ1JJVElDQUxaF1g1MDlfVl9GTEFHX1g1MDlfU1RSSUNUWgtYNTA5X1NUUklDVFodWDUwOV9WX0ZMQUdfQUxMT1dfUFJPWFlfQ0VSVFNaEUFMTE9XX1BST1hZX0NFUlRTWhhYNTA5X1ZfRkxBR19QT0xJQ1lfQ0hFQ0taDFBPTElDWV9DSEVDS1obWDUwOV9WX0ZMQUdfRVhQTElDSVRfUE9MSUNZWg9FWFBMSUNJVF9QT0xJQ1laF1g1MDlfVl9GTEFHX0lOSElCSVRfTUFQWgtJTkhJQklUX01BUFoZWDUwOV9WX0ZMQUdfTk9USUZZX1BPTElDWVoNTk9USUZZX1BPTElDWVoeWDUwOV9WX0ZMQUdfQ0hFQ0tfU1NfU0lHTkFUVVJFWhJDSEVDS19TU19TSUdOQVRVUkVaG1g1MDlfVl9GTEFHX0NCX0lTU1VFUl9DSEVDS1oPQ0JfSVNTVUVSX0NIRUNLch4AAAByHgAAAHIeAAAAch8AAAByFAEAAMkFAABzGAAAAAgJBAEGAQYBBgEGAQYBBgEGAQYBBgEGAXIUAQAAYwAAAAAAAAAAAAAAAAIAAABAAAAAczgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEZAWEAFoFZAZkB4QAWgZkCGQJhABaB2QKZAuEAFoIZAxTACkN2glYNTA5U3RvcmVhugEAAAogICAgQW4gWC41MDkgc3RvcmUuCgogICAgQW4gWC41MDkgc3RvcmUgaXMgdXNlZCB0byBkZXNjcmliZSBhIGNvbnRleHQgaW4gd2hpY2ggdG8gdmVyaWZ5IGEKICAgIGNlcnRpZmljYXRlLiBBIGRlc2NyaXB0aW9u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ZGRfY3JsYwIAAAAAAAAAAgAAAAUAAABDAAAAcxoAAAB0AHQBoAJ8AGoDfAGhAmQBawODAQEAZAJTACkDYdICAAAKICAgICAgICBTZXQgdmVyaWZpY2F0aW9uIGZsYWdzIHRvIHRoaXMgc3RvcmUuCgogICAgICAgIFZlcmlmaWNhdGlvbiBmbGFncyBjYW4gYmUgY29tYmluZWQgYnkgb3JpbmcgdGhlbSB0b2dldGhlci4KCiAgICAgICAgLi4gbm90ZTo6CgogICAgICAgICAgU2V0dGluZyBhIHZlcmlmaWNhdGlvbiBmbGFnIHNvbWV0aW1lcyByZXF1aXJlcyBjbGllbnRzIHRvIGFkZAogICAgICAgICAgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byB0aGUgc3RvcmUsIG90aGVyd2lzZSBhIHN1aXRhYmxlIGVycm9yIHdpbGwKICAgICAgICAgIGJlIHJhaXNlZC4KCiAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gc2V0dGluZyBmbGFncyB0byBlbmFibGUgQ1JMIGNoZWNraW5nIGEKICAgICAgICAgIHN1aXRhYmxlIENSTCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBzdG9yZSBvdGhlcndpc2UgYW4gZXJyb3Igd2lsbCBiZQogICAgICAgICAgcmFpc2VkLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxNi4xLjAKCiAgICAgICAgOnBhcmFtIGludCBmbGFnczogVGhlIHZlcmlmaWNhdGlvbiBmbGFncyB0byBzZXQgb24gdGhpcyBzdG9yZS4KICAgICAgICAgICAgU2VlIDpjbGFzczpgWDUwOVN0b3JlRmxhZ3NgIGZvciBhdmFpbGFibGUgY29uc3RhbnRzLgogICAgICAgIDpyZXR1cm46IGBgTm9uZWBgIGlmIHRoZSB2ZXJpZmljYXRpb24gZmxhZ3Mgd2VyZSBzdWNjZXNzZnVsbHkgc2V0LgogICAgICAgIHIBAAAATikEci8AAAByJQAAAFoUWDUwOV9TVE9SRV9zZXRfZmxhZ3NyFgEAACkCcksAAADaBWZsYWdzch4AAAByHgAAAHIfAAAA2glzZXRfZmxhZ3MXBgAAcwIAAAAAFnoTWDUwOVN0b3JlLnNldF9m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ICAgRHVtcCB0aGUgcHJpdmF0ZSBrZXkgKnBrZXkqIGludG8gYSBidWZmZXIgc3RyaW5nIGVuY29kZWQgd2l0aCB0aGUgdHlwZQogICAgKnR5cGUqLiAgT3B0aW9uYWxseSAoaWYgKnR5cGUqIGlzIDpjb25zdDpgRklMRVRZUEVfUEVNYCkgZW5jcnlwdGluZyBpdAogICAgdXNpbmcgKmNpcGhlciogYW5kICpwYXNzcGhyYXNlKi4KCiAgICA6cGFyYW0gdHlwZTogVGhlIGZpbGUgdHlwZSAob25lIG9mIDpjb25zdDpgRklMRVRZUEVfUEVNYCwKICAgICAgICA6Y29uc3Q6YEZJTEVUWVBFX0FTTjFgLCBvciA6Y29uc3Q6YEZJTEVUWVBFX1RFWFRgKQogICAgOnBhcmFtIFBLZXkgcGtleTogVGhlIFBLZXkgdG8gZHVtcAogICAgOnBhcmFtIGNpcGhlcjogKG9wdGlvbmFsKSBpZiBlbmNyeXB0ZWQgUEVNIGZvcm1hdCwgdGhlIGNpcGhlciB0byB1c2UKICAgIDpwYXJhbSBwYXNzcGhyYXNlOiAob3B0aW9uYWwpIGlmIGVuY3J5cHRlZCBQRU0gZm9ybWF0LCB0aGlzIGNhbiBiZSBlaXRoZXIKICAgICAgICB0aGUgcGFzc3BocmFzZSB0byB1c2UsIG9yIGEgY2FsbGJhY2sgZm9yIHByb3ZpZGluZyB0aGUgcGFzc3BocmFzZS4KCiAgICA6cmV0dXJuOiBUaGUgYnVmZmVyIHdpdGggdGhlIGR1bXBlZCBrZXkgaW4KICAgIDpydHlwZTogYnl0ZXMKICAgIHoTcGtleSBtdXN0IGJlIGEgUEtleU56RGlmIGEgdmFsdWUgaXMgZ2l2ZW4gZm9yIGNpcGhlciBvbmUgbXVzdCBhbHNvIGJlIGdpdmVuIGZvciBwYXNzcGhyYXNlehNJbnZhbGlkIGNpcGhlciBuYW1lcgEAAAB6LU9ubHkgUlNBIGtleXMgYXJlIHN1cHBvcnRlZCBmb3IgRklMRVRZUEVfVEVYVHpDdHlwZSBhcmd1bWVudCBtdXN0IGJlIEZJTEVUWVBFX1BFTSwgRklMRVRZUEVfQVNOMSwgb3IgRklMRVRZUEVfVEVYVCkccjQAAAByNwAAAHJHAAAAcjkAAABy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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 14
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
crypto.cpython-37.opt-1.pyc
85.81 KB
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
crypto.cpython-37.pyc
85.81 KB
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
debug.cpython-37.opt-1.pyc
1.12 KB
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
debug.cpython-37.pyc
1.12 KB
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
SSL.cpython-37.opt-1.pyc
67.29 KB
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
SSL.cpython-37.pyc
67.29 KB
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
tsafe.cpython-37.opt-1.pyc
1.28 KB
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
tsafe.cpython-37.pyc
1.28 KB
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
version.cpython-37.opt-1.pyc
654 B
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
version.cpython-37.pyc
654 B
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_util.cpython-37.opt-1.pyc
4.09 KB
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_util.cpython-37.pyc
4.09 KB
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.opt-1.pyc
565 B
lrw-r--r--
2021-07-08 08:11:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.pyc
565 B
lrw-r--r--
2021-07-08 08:11:29
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).