REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 21.90 KB
Close
//opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/__pycache__/pysqlite.cpython-311.pyc
Text
Base64
pw0NCgAAAAC7fG9p91EAAOMAAAAAAAAAAAAAAAAFAAAAAAAAAPO+AAAAlwBkAFoAZAFkAmwBWgFkA2QEbAJtA1oDAQBkA2QFbAJtBFoEAQBkA2QGbAJtBVoFAQBkB2QIbAZtB1oHAQBkB2QJbAZtCFoIAQBkB2QKbAZtCVoKAQBkB2QLbAZtC1oLAQACAEcAZAyEAGQNZQSmAwAAqwMAAAAAAAAAAFoMAgBHAGQOhABkD2UDpgMAAKsDAAAAAAAAAABaDQIARwBkEIQAZBFlBaYDAACrAwAAAAAAAAAAWg5lDloPZAJTACkSYag7AAAKLi4gZGlhbGVjdDo6IHNxbGl0ZStweXNxbGl0ZQogICAgOm5hbWU6IHB5c3FsaXRlCiAgICA6ZGJhcGk6IHNxbGl0ZTMKICAgIDpjb25uZWN0c3RyaW5nOiBzcWxpdGUrcHlzcWxpdGU6Ly8vZmlsZV9wYXRoCiAgICA6dXJsOiBodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvc3FsaXRlMy5odG1sCgogICAgTm90ZSB0aGF0IGBgcHlzcWxpdGVgYCBpcyB0aGUgc2FtZSBkcml2ZXIgYXMgdGhlIGBgc3FsaXRlM2BgCiAgICBtb2R1bGUgaW5jbHVkZWQgd2l0aCB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KCkRyaXZlcgotLS0tLS0KClRoZSBgYHNxbGl0ZTNgYCBQeXRob24gREJBUEkgaXMgc3RhbmRhcmQgb24gYWxsIG1vZGVybiBQeXRob24gdmVyc2lvbnM7CmZvciBjUHl0aG9uIGFuZCBQeXB5LCBubyBhZGRpdGlvbmFsIGluc3RhbGxhdGlvbiBpcyBuZWNlc3NhcnkuCgoKQ29ubmVjdCBTdHJpbmdzCi0tLS0tLS0tLS0tLS0tLQoKVGhlIGZpbGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIFNRTGl0ZSBkYXRhYmFzZSBpcyB0YWtlbiBhcyB0aGUgImRhdGFiYXNlIgpwb3J0aW9uIG9mIHRoZSBVUkwuICBOb3RlIHRoYXQgdGhlIGZvcm1hdCBvZiBhIFNRTEFsY2hlbXkgdXJsIGlzOjoKCiAgICBkcml2ZXI6Ly91c2VyOnBhc3NAaG9zdC9kYXRhYmFzZQoKVGhpcyBtZWFucyB0aGF0IHRoZSBhY3R1YWwgZmlsZW5hbWUgdG8gYmUgdXNlZCBzdGFydHMgd2l0aCB0aGUgY2hhcmFjdGVycyB0bwp0aGUgKipyaWdodCoqIG9mIHRoZSB0aGlyZCBzbGFzaC4gICBTbyBjb25uZWN0aW5nIHRvIGEgcmVsYXRpdmUgZmlsZXBhdGgKbG9va3MgbGlrZTo6CgogICAgIyByZWxhdGl2ZSBwYXRoCiAgICBlID0gY3JlYXRlX2VuZ2luZSgnc3FsaXRlOi8vL3BhdGgvdG8vZGF0YWJhc2UuZGInKQoKQW4gYWJzb2x1dGUgcGF0aCwgd2hpY2ggaXMgZGVub3RlZCBieSBzdGFydGluZyB3aXRoIGEgc2xhc2gsIG1lYW5zIHlvdQpuZWVkICoqZm91cioqIHNsYXNoZXM6OgoKICAgICMgYWJzb2x1dGUgcGF0aAogICAgZSA9IGNyZWF0ZV9lbmdpbmUoJ3NxbGl0ZTovLy8vcGF0aC90by9kYXRhYmFzZS5kYicpCgpUbyB1c2UgYSBXaW5kb3dzIHBhdGgsIHJlZ3VsYXIgZHJpdmUgc3BlY2lmaWNhdGlvbnMgYW5kIGJhY2tzbGFzaGVzIGNhbiBiZQp1c2VkLiBEb3VibGUgYmFja3NsYXNoZXMgYXJlIHByb2JhYmx5IG5lZWRlZDo6CgogICAgIyBhYnNvbHV0ZSBwYXRoIG9uIFdpbmRvd3MKICAgIGUgPSBjcmVhdGVfZW5naW5lKCdzcWxpdGU6Ly8vQzpcXHBhdGhcXHRvXFxkYXRhYmFzZS5kYicpCgpUaGUgc3FsaXRlIGBgOm1lbW9yeTpgYCBpZGVudGlmaWVyIGlzIHRoZSBkZWZhdWx0IGlmIG5vIGZpbGVwYXRoIGlzCnByZXNlbnQuICBTcGVjaWZ5IGBgc3FsaXRlOi8vYGAgYW5kIG5vdGhpbmcgZWxzZTo6CgogICAgIyBpbi1tZW1vcnkgZGF0YWJhc2UKICAgIGUgPSBjcmVhdGVfZW5naW5lKCdzcWxpdGU6Ly8nKQoKLi4gX3B5c3FsaXRlX3VyaV9jb25uZWN0aW9uczoKClVSSSBDb25uZWN0aW9ucwpeXl5eXl5eXl5eXl5eXl4KCk1vZGVybiB2ZXJzaW9ucyBvZiBTUUxpdGUgc3VwcG9ydCBhbiBhbHRlcm5hdGl2ZSBzeXN0ZW0gb2YgY29ubmVjdGluZyB1c2luZyBhCmBkcml2ZXIgbGV2ZWwgVVJJIDxodHRwczovL3d3dy5zcWxpdGUub3JnL3VyaS5odG1sPmBfLCB3aGljaCBoYXMgdGhlICBhZHZhbnRhZ2UKdGhhdCBhZGRpdGlvbmFsIGRyaXZlci1sZXZlbCBhcmd1bWVudHMgY2FuIGJlIHBhc3NlZCBpbmNsdWRpbmcgb3B0aW9ucyBzdWNoIGFzCiJyZWFkIG9ubHkiLiAgIFRoZSBQeXRob24gc3FsaXRlMyBkcml2ZXIgc3VwcG9ydHMgdGhpcyBtb2RlIHVuZGVyIG1vZGVybiBQeXRob24KMyB2ZXJzaW9ucy4gICBUaGUgU1FMQWxjaGVteSBweXNxbGl0ZSBkcml2ZXIgc3VwcG9ydHMgdGhpcyBtb2RlIG9mIHVzZSBieQpzcGVjaWZpbmcgInVyaT10cnVlIiBpbiB0aGUgVVJMIHF1ZXJ5IHN0cmluZy4gIFRoZSBTUUxpdGUtbGV2ZWwgIlVSSSIgaXMga2VwdAphcyB0aGUgImRhdGFiYXNlIiBwb3J0aW9uIG9mIHRoZSBTUUxBbGNoZW15IHVybCAodGhhdCBpcywgZm9sbG93aW5nIGEgc2xhc2gpOjoKCiAgICBlID0gY3JlYXRlX2VuZ2luZSgic3FsaXRlOi8vL2ZpbGU6cGF0aC90by9kYXRhYmFzZT9tb2RlPXJvJnVyaT10cnVlIikKCi4uIG5vdGU6OiAgVGhlICJ1cmk9dHJ1ZSIgcGFyYW1ldGVyIG11c3QgYXBwZWFyIGluIHRoZSAqKnF1ZXJ5IHN0cmluZyoqCiAgIG9mIHRoZSBVUkwuICBJdCB3aWxsIG5vdCBjdXJyZW50bHkgd29yayBhcyBleHBlY3RlZCBpZiBpdCBpcyBvbmx5CiAgIHByZXNlbnQgaW4gdGhlIDpwYXJhbXJlZjpgX3NhLmNyZWF0ZV9lbmdpbmUuY29ubmVjdF9hcmdzYAogICBwYXJhbWV0ZXIgZGljdGlvbmFyeS4KClRoZSBsb2dpYyByZWNvbmNpbGVzIHRoZSBzaW11bHRhbmVvdXMgcHJlc2VuY2Ugb2YgU1FMQWxjaGVteSdzIHF1ZXJ5IHN0cmluZyBhbmQKU1FMaXRlJ3MgcXVlcnkgc3RyaW5nIGJ5IHNlcGFyYXRpbmcgb3V0IHRoZSBwYXJhbWV0ZXJzIHRoYXQgYmVsb25nIHRvIHRoZQpQeXRob24gc3FsaXRlMyBkcml2ZXIgdnMuIHRob3NlIHRoYXQgYmVsb25nIHRvIHRoZSBTUUxpdGUgVVJJLiAgVGhpcyBpcwphY2hpZXZlZCB0aHJvdWdoIHRoZSB1c2Ugb2YgYSBmaXhlZCBsaXN0IG9mIHBhcmFtZXRlcnMga25vd24gdG8gYmUgYWNjZXB0ZWQgYnkKdGhlIFB5dGhvbiBzaWRlIG9mIHRoZSBkcml2ZXIuICBGb3IgZXhhbXBsZSwgdG8gaW5jbHVkZSBhIFVSTCB0aGF0IGluZGljYXRlcwp0aGUgUHl0aG9uIHNxbGl0ZTMgInRpbWVvdXQiIGFuZCAiY2hlY2tfc2FtZV90aHJlYWQiIHBhcmFtZXRlcnMsIGFsb25nIHdpdGggdGhlClNRTGl0ZSAibW9kZSIgYW5kICJub2xvY2siIHBhcmFtZXRlcnMsIHRoZXkgY2FuIGFsbCBiZSBwYXNzZWQgdG9nZXRoZXIgb24gdGhlCnF1ZXJ5IHN0cmluZzo6CgogICAgZSA9IGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgInNxbGl0ZTovLy9maWxlOnBhdGgvdG8vZGF0YWJhc2U/IgogICAgICAgICJjaGVja19zYW1lX3RocmVhZD10cnVlJnRpbWVvdXQ9MTAmbW9kZT1ybyZub2xvY2s9MSZ1cmk9dHJ1ZSIKICAgICkKCkFib3ZlLCB0aGUgcHlzcWxpdGUgLyBzcWxpdGUzIERCQVBJIHdvdWxkIGJlIHBhc3NlZCBhcmd1bWVudHMgYXM6OgoKICAgIHNxbGl0ZTMuY29ubmVjdCgKICAgICAgICAiZmlsZTpwYXRoL3RvL2RhdGFiYXNlP21vZGU9cm8mbm9sb2NrPTEiLAogICAgICAgIGNoZWNrX3NhbWVfdGhyZWFkPVRydWUsIHRpbWVvdXQ9MTAsIHVyaT1UcnVlCiAgICApCgpSZWdhcmRpbmcgZnV0dXJlIHBhcmFtZXRlcnMgYWRkZWQgdG8gZWl0aGVyIHRoZSBQeXRob24gb3IgbmF0aXZlIGRyaXZlcnMuIG5ldwpwYXJhbWV0ZXIgbmFtZXMgYWRkZWQgdG8gdGhlIFNRTGl0ZSBVUkkgc2NoZW1lIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5CmFjY29tbW9kYXRlZCBieSB0aGlzIHNjaGVtZS4gIE5ldyBwYXJhbWV0ZXIgbmFtZXMgYWRkZWQgdG8gdGhlIFB5dGhvbiBkcml2ZXIKc2lkZSBjYW4gYmUgYWNjb21tb2RhdGVkIGJ5IHNwZWNpZnlpbmcgdGhlbSBpbiB0aGUKOnBhcmFtcmVmOmBfc2EuY3JlYXRlX2VuZ2luZS5jb25uZWN0X2FyZ3NgIGRpY3Rpb25hcnksCnVudGlsIGRpYWxlY3Qgc3VwcG9ydCBpcwphZGRlZCBieSBTUUxBbGNoZW15LiAgIEZvciB0aGUgbGVzcyBsaWtlbHkgY2FzZSB0aGF0IHRoZSBuYXRpdmUgU1FMaXRlIGRyaXZlcgphZGRzIGEgbmV3IHBhcmFtZXRlciBuYW1lIHRoYXQgb3ZlcmxhcHMgd2l0aCBvbmUgb2YgdGhlIGV4aXN0aW5nLCBrbm93biBQeXRob24KZHJpdmVyIHBhcmFtZXRlcnMgKHN1Y2ggYXMgInRpbWVvdXQiIHBlcmhhcHMpLCBTUUxBbGNoZW15J3MgZGlhbGVjdCB3b3VsZApyZXF1aXJlIGFkanVzdG1lbnQgZm9yIHRoZSBVUkwgc2NoZW1lIHRvIGNvbnRpbnVlIHRvIHN1cHBvcnQgdGhpcy4KCkFzIGlzIGFsd2F5cyB0aGUgY2FzZSBmb3IgYWxsIFNRTEFsY2hlbXkgZGlhbGVjdHMsIHRoZSBlbnRpcmUgIlVSTCIgcHJvY2VzcwpjYW4gYmUgYnlwYXNzZWQgaW4gOmZ1bmM6YF9zYS5jcmVhdGVfZW5naW5lYCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlCjpwYXJhbXJlZjpgX3NhLmNyZWF0ZV9lbmdpbmUuY3JlYXRvcmAKcGFyYW1ldGVyIHdoaWNoIGFsbG93cyBmb3IgYSBjdXN0b20gY2FsbGFibGUKdGhhdCBjcmVhdGVzIGEgUHl0aG9uIHNxbGl0ZTMgZHJpdmVyIGxldmVsIGNvbm5lY3Rpb24gZGlyZWN0bHkuCgouLiB2ZXJzaW9uYWRkZWQ6OiAxLjMuOQoKLi4gc2VlYWxzbzo6CgogICAgYFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcnMgPGh0dHBzOi8vd3d3LnNxbGl0ZS5vcmcvdXJpLmh0bWw+YF8gLSBpbgogICAgdGhlIFNRTGl0ZSBkb2N1bWVudGF0aW9uCgpDb21wYXRpYmlsaXR5IHdpdGggc3FsaXRlMyAibmF0aXZlIiBkYXRlIGFuZCBkYXRldGltZSB0eXBlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlIHB5c3FsaXRlIGRyaXZlciBpbmNsdWRlcyB0aGUgc3FsaXRlMy5QQVJTRV9ERUNMVFlQRVMgYW5kCnNxbGl0ZTMuUEFSU0VfQ09MTkFNRVMgb3B0aW9ucywgd2hpY2ggaGF2ZSB0aGUgZWZmZWN0IG9mIGFueSBjb2x1bW4Kb3IgZXhwcmVzc2lvbiBleHBsaWNpdGx5IGNhc3QgYXMgImRhdGUiIG9yICJ0aW1lc3RhbXAiIHdpbGwgYmUgY29udmVydGVkCnRvIGEgUHl0aG9uIGRhdGUgb3IgZGF0ZXRpbWUgb2JqZWN0LiAgVGhlIGRhdGUgYW5kIGRhdGV0aW1lIHR5cGVzIHByb3ZpZGVkCndpdGggdGhlIHB5c3FsaXRlIGRpYWxlY3QgYXJlIG5vdCBjdXJyZW50bHkgY29tcGF0aWJsZSB3aXRoIHRoZXNlIG9wdGlvbnMsCnNpbmNlIHRoZXkgcmVuZGVyIHRoZSBJU08gZGF0ZS9kYXRldGltZSBpbmNsdWRpbmcgbWljcm9zZWNvbmRzLCB3aGljaApweXNxbGl0ZSdzIGRyaXZlciBkb2VzIG5vdC4gICBBZGRpdGlvbmFsbHksIFNRTEFsY2hlbXkgZG9lcyBub3QgYXQKdGhpcyB0aW1lIGF1dG9tYXRpY2FsbHkgcmVuZGVyIHRoZSAiY2FzdCIgc3ludGF4IHJlcXVpcmVkIGZvciB0aGUKZnJlZXN0YW5kaW5nIGZ1bmN0aW9ucyAiY3VycmVudF90aW1lc3RhbXAiIGFuZCAiY3VycmVudF9kYXRlIiB0byByZXR1cm4KZGF0ZXRpbWUvZGF0ZSB0eXBlcyBuYXRpdmVseS4gICBVbmZvcnR1bmF0ZWx5LCBweXNxbGl0ZQpkb2VzIG5vdCBwcm92aWRlIHRoZSBzdGFuZGFyZCBEQkFQSSB0eXBlcyBpbiBgYGN1cnNvci5kZXNjcmlwdGlvbmBgLApsZWF2aW5nIFNRTEFsY2hlbXkgd2l0aCBubyB3YXkgdG8gZGV0ZWN0IHRoZXNlIHR5cGVzIG9uIHRoZSBmbHkKd2l0aG91dCBleHBlbnNpdmUgcGVyLXJvdyB0eXBlIGNoZWNrcy4KCktlZXBpbmcgaW4gbWluZCB0aGF0IHB5c3FsaXRlJ3MgcGFyc2luZyBvcHRpb24gaXMgbm90IHJlY29tbWVuZGVkLApub3Igc2hvdWxkIGJlIG5lY2Vzc2FyeSwgZm9yIHVzZSB3aXRoIFNRTEFsY2hlbXksIHVzYWdlIG9mIFBBUlNFX0RFQ0xUWVBFUwpjYW4gYmUgZm9yY2VkIGlmIG9uZSBjb25maWd1cmVzICJuYXRpdmVfZGF0ZXRpbWU9VHJ1ZSIgb24gY3JlYXRlX2VuZ2luZSgpOjoKCiAgICBlbmdpbmUgPSBjcmVhdGVfZW5naW5lKCdzcWxpdGU6Ly8nLAogICAgICAgIGNvbm5lY3RfYXJncz17J2RldGVjdF90eXBlcyc6CiAgICAgICAgICAgIHNxbGl0ZTMuUEFSU0VfREVDTFRZUEVTfHNxbGl0ZTMuUEFSU0VfQ09MTkFNRVN9LAogICAgICAgIG5hdGl2ZV9kYXRldGltZT1UcnVlCiAgICApCgpXaXRoIHRoaXMgZmxhZyBlbmFibGVkLCB0aGUgREFURSBhbmQgVElNRVNUQU1QIHR5cGVzIChidXQgbm90ZSAtIG5vdCB0aGUKREFURVRJTUUgb3IgVElNRSB0eXBlcy4uLmNvbmZ1c2VkIHlldCA/KSB3aWxsIG5vdCBwZXJmb3JtIGFueSBiaW5kIHBhcmFtZXRlcgpvciByZXN1bHQgcHJvY2Vzc2luZy4gRXhlY3V0aW9uIG9mICJmdW5jLmN1cnJlbnRfZGF0ZSgpIiB3aWxsIHJldHVybiBhIHN0cmluZy4KImZ1bmMuY3VycmVudF90aW1lc3RhbXAoKSIgaXMgcmVnaXN0ZXJlZCBhcyByZXR1cm5pbmcgYSBEQVRFVElNRSB0eXBlIGluClNRTEFsY2hlbXksIHNvIHRoaXMgZnVuY3Rpb24gc3RpbGwgcmVjZWl2ZXMgU1FMQWxjaGVteS1sZXZlbCByZXN1bHQKcHJvY2Vzc2luZy4KCi4uIF9weXNxbGl0ZV90aHJlYWRpbmdfcG9vbGluZzoKClRocmVhZGluZy9Qb29saW5nIEJlaGF2aW9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHlzcWxpdGUncyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHByb2hpYml0IHRoZSB1c2FnZSBvZiBhIHNpbmdsZSBjb25uZWN0aW9uCmluIG1vcmUgdGhhbiBvbmUgdGhyZWFkLiAgIFRoaXMgaXMgb3JpZ2luYWxseSBpbnRlbmRlZCB0byB3b3JrIHdpdGggb2xkZXIKdmVyc2lvbnMgb2YgU1FMaXRlIHRoYXQgZGlkIG5vdCBzdXBwb3J0IG11bHRpdGhyZWFkZWQgb3BlcmF0aW9uIHVuZGVyCnZhcmlvdXMgY2lyY3Vtc3RhbmNlcy4gIEluIHBhcnRpY3VsYXIsIG9sZGVyIFNRTGl0ZSB2ZXJzaW9ucwpkaWQgbm90IGFsbG93IGEgYGA6bWVtb3J5OmBgIGRhdGFiYXNlIHRvIGJlIHVzZWQgaW4gbXVsdGlwbGUgdGhyZWFkcwp1bmRlciBhbnkgY2lyY3Vtc3RhbmNlcy4KClB5c3FsaXRlIGRvZXMgaW5jbHVkZSBhIG5vdy11bmRvY3VtZW50ZWQgZmxhZyBrbm93biBhcwpgYGNoZWNrX3NhbWVfdGhyZWFkYGAgd2hpY2ggd2lsbCBkaXNhYmxlIHRoaXMgY2hlY2ssIGhvd2V2ZXIgbm90ZSB0aGF0CnB5c3FsaXRlIGNvbm5lY3Rpb25zIGFyZSBzdGlsbCBub3Qgc2FmZSB0byB1c2UgaW4gY29uY3VycmVudGx5IGluIG11bHRpcGxlCnRocmVhZHMuICBJbiBwYXJ0aWN1bGFyLCBhbnkgc3RhdGVtZW50IGV4ZWN1dGlvbiBjYWxscyB3b3VsZCBuZWVkIHRvIGJlCmV4dGVybmFsbHkgbXV0ZXhlZCwgYXMgUHlzcWxpdGUgZG9lcyBub3QgcHJvdmlkZSBmb3IgdGhyZWFkLXNhZmUgcHJvcGFnYXRpb24Kb2YgZXJyb3IgbWVzc2FnZXMgYW1vbmcgb3RoZXIgdGhpbmdzLiAgIFNvIHdoaWxlIGV2ZW4gYGA6bWVtb3J5OmBgIGRhdGFiYXNlcwpjYW4gYmUgc2hhcmVkIGFtb25nIHRocmVhZHMgaW4gbW9kZXJuIFNRTGl0ZSwgUHlzcWxpdGUgZG9lc24ndCBwcm92aWRlIGVub3VnaAp0aHJlYWQtc2FmZXR5IHRvIG1ha2UgdGhpcyB1c2FnZSB3b3J0aCBpdC4KClNRTEFsY2hlbXkgc2V0cyB1cCBwb29saW5nIHRvIHdvcmsgd2l0aCBQeXNxbGl0ZSdzIGRlZmF1bHQgYmVoYXZpb3I6CgoqIFdoZW4gYSBgYDptZW1vcnk6YGAgU1FMaXRlIGRhdGFiYXNlIGlzIHNwZWNpZmllZCwgdGhlIGRpYWxlY3QgYnkgZGVmYXVsdAogIHdpbGwgdXNlIDpjbGFzczpgLlNpbmdsZXRvblRocmVhZFBvb2xgLiBUaGlzIHBvb2wgbWFpbnRhaW5zIGEgc2luZ2xlCiAgY29ubmVjdGlvbiBwZXIgdGhyZWFkLCBzbyB0aGF0IGFsbCBhY2Nlc3MgdG8gdGhlIGVuZ2luZSB3aXRoaW4gdGhlIGN1cnJlbnQKICB0aHJlYWQgdXNlIHRoZSBzYW1lIGBgOm1lbW9yeTpgYCBkYXRhYmFzZSAtIG90aGVyIHRocmVhZHMgd291bGQgYWNjZXNzIGEKICBkaWZmZXJlbnQgYGA6bWVtb3J5OmBgIGRhdGFiYXNlLgoqIFdoZW4gYSBmaWxlLWJhc2VkIGRhdGFiYXNlIGlzIHNwZWNpZmllZCwgdGhlIGRpYWxlY3Qgd2lsbCB1c2UKICA6Y2xhc3M6YC5OdWxsUG9vbGAgYXMgdGhlIHNvdXJjZSBvZiBjb25uZWN0aW9ucy4gVGhpcyBwb29sIGNsb3NlcyBhbmQKICBkaXNjYXJkcyBjb25uZWN0aW9ucyB3aGljaCBhcmUgcmV0dXJuZWQgdG8gdGhlIHBvb2wgaW1tZWRpYXRlbHkuIFNRTGl0ZQogIGZpbGUtYmFzZWQgY29ubmVjdGlvbnMgaGF2ZSBleHRyZW1lbHkgbG93IG92ZXJoZWFkLCBzbyBwb29saW5nIGlzIG5vdAogIG5lY2Vzc2FyeS4gVGhlIHNjaGVtZSBhbHNvIHByZXZlbnRzIGEgY29ubmVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgYWdhaW4gaW4KICBhIGRpZmZlcmVudCB0aHJlYWQgYW5kIHdvcmtzIGJlc3Qgd2l0aCBTUUxpdGUncyBjb2Fyc2UtZ3JhaW5lZCBmaWxlIGxvY2tpbmcuCgpVc2luZyBhIE1lbW9yeSBEYXRhYmFzZSBpbiBNdWx0aXBsZSBUaHJlYWRzCl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCgpUbyB1c2UgYSBgYDptZW1vcnk6YGAgZGF0YWJhc2UgaW4gYSBtdWx0aXRocmVhZGVkIHNjZW5hcmlvLCB0aGUgc2FtZQpjb25uZWN0aW9uIG9iamVjdCBtdXN0IGJlIHNoYXJlZCBhbW9uZyB0aHJlYWRzLCBzaW5jZSB0aGUgZGF0YWJhc2UgZXhpc3RzCm9ubHkgd2l0aGluIHRoZSBzY29wZSBvZiB0aGF0IGNvbm5lY3Rpb24uICAgVGhlCjpjbGFzczpgLlN0YXRpY1Bvb2xgIGltcGxlbWVudGF0aW9uIHdpbGwgbWFpbnRhaW4gYSBzaW5nbGUgY29ubmVjdGlvbgpnbG9iYWxseSwgYW5kIHRoZSBgYGNoZWNrX3NhbWVfdGhyZWFkYGAgZmxhZyBjYW4gYmUgcGFzc2VkIHRvIFB5c3FsaXRlCmFzIGBgRmFsc2VgYDo6CgogICAgZnJvbSBzcWxhbGNoZW15LnBvb2wgaW1wb3J0IFN0YXRpY1Bvb2wKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoJ3NxbGl0ZTovLycsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RfYXJncz17J2NoZWNrX3NhbWVfdGhyZWFkJzpGYWxzZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIHBvb2xjbGFzcz1TdGF0aWNQb29sKQoKTm90ZSB0aGF0IHVzaW5nIGEgYGA6bWVtb3J5OmBgIGRhdGFiYXNlIGluIG11bHRpcGxlIHRocmVhZHMgcmVxdWlyZXMgYSByZWNlbnQKdmVyc2lvbiBvZiBTUUxpdGUuCgpVc2luZyBUZW1wb3JhcnkgVGFibGVzIHdpdGggU1FMaXRlCl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCgpEdWUgdG8gdGhlIHdheSBTUUxpdGUgZGVhbHMgd2l0aCB0ZW1wb3JhcnkgdGFibGVzLCBpZiB5b3Ugd2lzaCB0byB1c2UgYQp0ZW1wb3JhcnkgdGFibGUgaW4gYSBmaWxlLWJhc2VkIFNRTGl0ZSBkYXRhYmFzZSBhY3Jvc3MgbXVsdGlwbGUgY2hlY2tvdXRzCmZyb20gdGhlIGNvbm5lY3Rpb24gcG9vbCwgc3VjaCBhcyB3aGVuIHVzaW5nIGFuIE9STSA6Y2xhc3M6YC5TZXNzaW9uYCB3aGVyZQp0aGUgdGVtcG9yYXJ5IHRhYmxlIHNob3VsZCBjb250aW51ZSB0byByZW1haW4gYWZ0ZXIgOm1ldGg6YC5TZXNzaW9uLmNvbW1pdGAgb3IKOm1ldGg6YC5TZXNzaW9uLnJvbGxiYWNrYCBpcyBjYWxsZWQsIGEgcG9vbCB3aGljaCBtYWludGFpbnMgYSBzaW5nbGUKY29ubmVjdGlvbiBtdXN0IGJlIHVzZWQuICAgVXNlIDpjbGFzczpgLlNpbmdsZXRvblRocmVhZFBvb2xgIGlmIHRoZSBzY29wZSBpcwpvbmx5IG5lZWRlZCB3aXRoaW4gdGhlIGN1cnJlbnQgdGhyZWFkLCBvciA6Y2xhc3M6YC5TdGF0aWNQb29sYCBpcyBzY29wZSBpcwpuZWVkZWQgd2l0aGluIG11bHRpcGxlIHRocmVhZHMgZm9yIHRoaXMgY2FzZTo6CgogICAgIyBtYWludGFpbiB0aGUgc2FtZSBjb25uZWN0aW9uIHBlciB0aHJlYWQKICAgIGZyb20gc3FsYWxjaGVteS5wb29sIGltcG9ydCBTaW5nbGV0b25UaHJlYWRQb29sCiAgICBlbmdpbmUgPSBjcmVhdGVfZW5naW5lKCdzcWxpdGU6Ly8vbXlkYi5kYicsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvb2xjbGFzcz1TaW5nbGV0b25UaHJlYWRQb29sKQoKCiAgICAjIG1haW50YWluIHRoZSBzYW1lIGNvbm5lY3Rpb24gYWNyb3NzIGFsbCB0aHJlYWRzCiAgICBmcm9tIHNxbGFsY2hlbXkucG9vbCBpbXBvcnQgU3RhdGljUG9vbAogICAgZW5naW5lID0gY3JlYXRlX2VuZ2luZSgnc3FsaXRlOi8vL215ZGIuZGInLAogICAgICAgICAgICAgICAgICAgICAgICBwb29sY2xhc3M9U3RhdGljUG9vbCkKCk5vdGUgdGhhdCA6Y2xhc3M6YC5TaW5nbGV0b25UaHJlYWRQb29sYCBzaG91bGQgYmUgY29uZmlndXJlZCBmb3IgdGhlIG51bWJlcgpvZiB0aHJlYWRzIHRoYXQgYXJlIHRvIGJlIHVzZWQ7IGJleW9uZCB0aGF0IG51bWJlciwgY29ubmVjdGlvbnMgd2lsbCBiZQpjbG9zZWQgb3V0IGluIGEgbm9uIGRldGVybWluaXN0aWMgd2F5LgoKVW5pY29kZQotLS0tLS0tCgpUaGUgcHlzcWxpdGUgZHJpdmVyIG9ubHkgcmV0dXJucyBQeXRob24gYGB1bmljb2RlYGAgb2JqZWN0cyBpbiByZXN1bHQgc2V0cywKbmV2ZXIgcGxhaW4gc3RyaW5ncywgYW5kIGFjY29tbW9kYXRlcyBgYHVuaWNvZGVgYCBvYmplY3RzIHdpdGhpbiBib3VuZApwYXJhbWV0ZXIgdmFsdWVzIGluIGFsbCBjYXNlcy4gICBSZWdhcmRsZXNzIG9mIHRoZSBTUUxBbGNoZW15IHN0cmluZyB0eXBlIGluCnVzZSwgc3RyaW5nLWJhc2VkIHJlc3VsdCB2YWx1ZXMgd2lsbCBieSBQeXRob24gYGB1bmljb2RlYGAgaW4gUHl0aG9uIDIuClRoZSA6Y2xhc3M6YC5Vbmljb2RlYCB0eXBlIHNob3VsZCBzdGlsbCBiZSB1c2VkIHRvIGluZGljYXRlIHRob3NlIGNvbHVtbnMgdGhhdApyZXF1aXJlIHVuaWNvZGUsIGhvd2V2ZXIsIHNvIHRoYXQgbm9uLWBgdW5pY29kZWBgIHZhbHVlcyBwYXNzZWQgaW5hZHZlcnRlbnRseQp3aWxsIGVtaXQgYSB3YXJuaW5nLiAgUHlzcWxpdGUgd2lsbCBlbWl0IGFuIGVycm9yIGlmIGEgbm9uLWBgdW5pY29kZWBgIHN0cmluZwppcyBwYXNzZWQgY29udGFpbmluZyBub24tQVNDSUkgY2hhcmFjdGVycy4KCkRlYWxpbmcgd2l0aCBNaXhlZCBTdHJpbmcgLyBCaW5hcnkgQ29sdW1ucyBpbiBQeXRob24gMwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSBTUUxpdGUgZGF0YWJhc2UgaXMgd2Vha2x5IHR5cGVkLCBhbmQgYXMgc3VjaCBpdCBpcyBwb3NzaWJsZSB3aGVuIHVzaW5nCmJpbmFyeSB2YWx1ZXMsIHdoaWNoIGluIFB5dGhvbiAzIGFyZSByZXByZXNlbnRlZCBhcyBgYGInc29tZSBzdHJpbmcnYGAsIHRoYXQgYQpwYXJ0aWN1bGFyIFNRTGl0ZSBkYXRhYmFzZSBjYW4gaGF2ZSBkYXRhIHZhbHVlcyB3aXRoaW4gZGlmZmVyZW50IHJvd3Mgd2hlcmUKc29tZSBvZiB0aGVtIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBgYGInJ2BgIHZhbHVlIGJ5IHRoZSBQeXNxbGl0ZSBkcml2ZXIsIGFuZApvdGhlcnMgd2lsbCBiZSByZXR1cm5lZCBhcyBQeXRob24gc3RyaW5ncywgZS5nLiBgYCcnYGAgdmFsdWVzLiAgIFRoaXMgc2l0dWF0aW9uCmlzIG5vdCBrbm93biB0byBvY2N1ciBpZiB0aGUgU1FMQWxjaGVteSA6Y2xhc3M6YC5MYXJnZUJpbmFyeWAgZGF0YXR5cGUgaXMgdXNlZApjb25zaXN0ZW50bHksIGhvd2V2ZXIgaWYgYSBwYXJ0aWN1bGFyIFNRTGl0ZSBkYXRhYmFzZSBoYXMgZGF0YSB0aGF0IHdhcwppbnNlcnRlZCB1c2luZyB0aGUgUHlzcWxpdGUgZHJpdmVyIGRpcmVjdGx5LCBvciB3aGVuIHVzaW5nIHRoZSBTUUxBbGNoZW15CjpjbGFzczpgLlN0cmluZ2AgdHlwZSB3aGljaCB3YXMgbGF0ZXIgY2hhbmdlZCB0byA6Y2xhc3M6YC5MYXJnZUJpbmFyeWAsIHRoZQp0YWJsZSB3aWxsIG5vdCBiZSBjb25zaXN0ZW50bHkgcmVhZGFibGUgYmVjYXVzZSBTUUxBbGNoZW15J3MKOmNsYXNzOmAuTGFyZ2VCaW5hcnlgIGRhdGF0eXBlIGRvZXMgbm90IGhhbmRsZSBzdHJpbmdzIHNvIGl0IGhhcyBubyB3YXkgb2YKImVuY29kaW5nIiBhIHZhbHVlIHRoYXQgaXMgaW4gc3RyaW5nIGZvcm1hdC4KClRvIGRlYWwgd2l0aCBhIFNRTGl0ZSB0YWJsZSB0aGF0IGhhcyBtaXhlZCBzdHJpbmcgLyBiaW5hcnkgZGF0YSBpbiB0aGUKc2FtZSBjb2x1bW4sIHVzZSBhIGN1c3RvbSB0eXBlIHRoYXQgd2lsbCBjaGVjayBlYWNoIHJvdyBpbmRpdmlkdWFsbHk6OgoKICAgICMgbm90ZSB0aGlzIGlzIFB5dGhvbiAzIG9ubHkKCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IFN0cmluZwogICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCBUeXBlRGVjb3JhdG9yCgogICAgY2xhc3MgTWl4ZWRCaW5hcnkoVHlwZURlY29yYXRvcik6CiAgICAgICAgaW1wbCA9IFN0cmluZwoKICAgICAgICBkZWYgcHJvY2Vzc19yZXN1bHRfdmFsdWUoc2VsZiwgdmFsdWUsIGRpYWxlY3QpOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICAgICAgdmFsdWUgPSBieXRlcyh2YWx1ZSwgJ3V0Zi04JykKICAgICAgICAgICAgZWxpZiB2YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHZhbHVlID0gYnl0ZXModmFsdWUpCgogICAgICAgICAgICByZXR1cm4gdmFsdWUKClRoZW4gdXNlIHRoZSBhYm92ZSBgYE1peGVkQmluYXJ5YGAgZGF0YXR5cGUgaW4gdGhlIHBsYWNlIHdoZXJlCjpjbGFzczpgLkxhcmdlQmluYXJ5YCB3b3VsZCBub3JtYWxseSBiZSB1c2VkLgoKLi4gX3B5c3FsaXRlX3NlcmlhbGl6YWJsZToKClNlcmlhbGl6YWJsZSBpc29sYXRpb24gLyBTYXZlcG9pbnRzIC8gVHJhbnNhY3Rpb25hbCBEREwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKSW4gdGhlIHNlY3Rpb24gOnJlZjpgc3FsaXRlX2NvbmN1cnJlbmN5YCwgd2UgcmVmZXIgdG8gdGhlIHB5c3FsaXRlCmRyaXZlcidzIGFzc29ydG1lbnQgb2YgaXNzdWVzIHRoYXQgcHJldmVudCBzZXZlcmFsIGZlYXR1cmVzIG9mIFNRTGl0ZQpmcm9tIHdvcmtpbmcgY29ycmVjdGx5LiAgVGhlIHB5c3FsaXRlIERCQVBJIGRyaXZlciBoYXMgc2V2ZXJhbApsb25nLXN0YW5kaW5nIGJ1Z3Mgd2hpY2ggaW1wYWN0IHRoZSBjb3JyZWN0bmVzcyBvZiBpdHMgdHJhbnNhY3Rpb25hbApiZWhhdmlvci4gICBJbiBpdHMgZGVmYXVsdCBtb2RlIG9mIG9wZXJhdGlvbiwgU1FMaXRlIGZlYXR1cmVzIHN1Y2ggYXMKU0VSSUFMSVpBQkxFIGlzb2xhdGlvbiwgdHJhbnNhY3Rpb25hbCBEREwsIGFuZCBTQVZFUE9JTlQgc3VwcG9ydCBhcmUKbm9uLWZ1bmN0aW9uYWwsIGFuZCBpbiBvcmRlciB0byB1c2UgdGhlc2UgZmVhdHVyZXMsIHdvcmthcm91bmRzIG11c3QKYmUgdGFrZW4uCgpUaGUgaXNzdWUgaXMgZXNzZW50aWFsbHkgdGhhdCB0aGUgZHJpdmVyIGF0dGVtcHRzIHRvIHNlY29uZC1ndWVzcyB0aGUgdXNlcidzCmludGVudCwgZmFpbGluZyB0byBzdGFydCB0cmFuc2FjdGlvbnMgYW5kIHNvbWV0aW1lcyBlbmRpbmcgdGhlbSBwcmVtYXR1cmVseSwgaW4KYW4gZWZmb3J0IHRvIG1pbmltaXplIHRoZSBTUUxpdGUgZGF0YWJhc2VzJ3MgZmlsZSBsb2NraW5nIGJlaGF2aW9yLCBldmVuCnRob3VnaCBTUUxpdGUgaXRzZWxmIHVzZXMgInNoYXJlZCIgbG9ja3MgZm9yIHJlYWQtb25seSBhY3Rpdml0aWVzLgoKU1FMQWxjaGVteSBjaG9vc2VzIHRvIG5vdCBhbHRlciB0aGlzIGJlaGF2aW9yIGJ5IGRlZmF1bHQsIGFzIGl0IGlzIHRoZQpsb25nLWV4cGVjdGVkIGJlaGF2aW9yIG9mIHRoZSBweXNxbGl0ZSBkcml2ZXI7IGlmIGFuZCB3aGVuIHRoZSBweXNxbGl0ZQpkcml2ZXIgYXR0ZW1wdHMgdG8gcmVwYWlyIHRoZXNlIGlzc3VlcywgdGhhdCB3aWxsIGJlIG1vcmUgb2YgYSBkcml2ZXIgdG93YXJkcwpkZWZhdWx0cyBmb3IgU1FMQWxjaGVteS4KClRoZSBnb29kIG5ld3MgaXMgdGhhdCB3aXRoIGEgZmV3IGV2ZW50cywgd2UgY2FuIGltcGxlbWVudCB0cmFuc2FjdGlvbmFsCnN1cHBvcnQgZnVsbHksIGJ5IGRpc2FibGluZyBweXNxbGl0ZSdzIGZlYXR1cmUgZW50aXJlbHkgYW5kIGVtaXR0aW5nIEJFR0lOCm91cnNlbHZlcy4gVGhpcyBpcyBhY2hpZXZlZCB1c2luZyB0d28gZXZlbnQgbGlzdGVuZXJzOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGNyZWF0ZV9lbmdpbmUsIGV2ZW50CgogICAgZW5naW5lID0gY3JlYXRlX2VuZ2luZSgic3FsaXRlOi8vL215ZmlsZS5kYiIpCgogICAgQGV2ZW50Lmxpc3RlbnNfZm9yKGVuZ2luZSwgImNvbm5lY3QiKQogICAgZGVmIGRvX2Nvbm5lY3QoZGJhcGlfY29ubmVjdGlvbiwgY29ubmVjdGlvbl9yZWNvcmQpOgogICAgICAgICMgZGlzYWJsZSBweXNxbGl0ZSdzIGVtaXR0aW5nIG9mIHRoZSBCRUdJTiBzdGF0ZW1lbnQgZW50aXJlbHkuCiAgICAgICAgIyBhbHNvIHN0b3BzIGl0IGZyb20gZW1pdHRpbmcgQ09NTUlUIGJlZm9yZSBhbnkgRERMLgogICAgICAgIGRiYXBpX2Nvbm5lY3Rpb24uaXNvbGF0aW9uX2xldmVsID0gTm9uZQoKICAgIEBldmVudC5saXN0ZW5zX2ZvcihlbmdpbmUsICJiZWdpbiIpCiAgICBkZWYgZG9fYmVnaW4oY29ubik6CiAgICAgICAgIyBlbWl0IG91ciBvd24gQkVHSU4KICAgICAgICBjb25uLmV4ZWN1dGUoIkJFR0lOIikKCi4uIHdhcm5pbmc6OiBXaGVuIHVzaW5nIHRoZSBhYm92ZSByZWNpcGUsIGl0IGlzIGFkdmlzZWQgdG8gbm90IHVzZSB0aGUKICAgOnBhcmFtcmVmOmAuQ29ubmVjdGlvbi5leGVjdXRpb25fb3B0aW9ucy5pc29sYXRpb25fbGV2ZWxgIHNldHRpbmcgb24KICAgOmNsYXNzOmBfZW5naW5lLkNvbm5lY3Rpb25gIGFuZCA6ZnVuYzpgX3NhLmNyZWF0ZV9lbmdpbmVgCiAgIHdpdGggdGhlIFNRTGl0ZSBkcml2ZXIsCiAgIGFzIHRoaXMgZnVuY3Rpb24gbmVjZXNzYXJpbHkgd2lsbCBhbHNvIGFsdGVyIHRoZSAiLmlzb2xhdGlvbl9sZXZlbCIgc2V0dGluZy4KCgpBYm92ZSwgd2UgaW50ZXJjZXB0IGEgbmV3IHB5c3FsaXRlIGNvbm5lY3Rpb24gYW5kIGRpc2FibGUgYW55IHRyYW5zYWN0aW9uYWwKaW50ZWdyYXRpb24uICAgVGhlbiwgYXQgdGhlIHBvaW50IGF0IHdoaWNoIFNRTEFsY2hlbXkga25vd3MgdGhhdCB0cmFuc2FjdGlvbgpzY29wZSBpcyB0byBiZWdpbiwgd2UgZW1pdCBgYCJCRUdJTiJgYCBvdXJzZWx2ZXMuCgpXaGVuIHdlIHRha2UgY29udHJvbCBvZiBgYCJCRUdJTiJgYCwgd2UgY2FuIGFsc28gY29udHJvbCBkaXJlY3RseSBTUUxpdGUncwpsb2NraW5nIG1vZGVzLCBpbnRyb2R1Y2VkIGF0CmBCRUdJTiBUUkFOU0FDVElPTiA8aHR0cDovL3NxbGl0ZS5vcmcvbGFuZ190cmFuc2FjdGlvbi5odG1sPmBfLApieSBhZGRpbmcgdGhlIGRlc2lyZWQgbG9ja2luZyBtb2RlIHRvIG91ciBgYCJCRUdJTiJgYDo6CgogICAgQGV2ZW50Lmxpc3RlbnNfZm9yKGVuZ2luZSwgImJlZ2luIikKICAgIGRlZiBkb19iZWdpbihjb25uKToKICAgICAgICBjb25uLmV4ZWN1dGUoIkJFR0lOIEVYQ0xVU0lWRSIpCgouLiBzZWVhbHNvOjoKCiAgICBgQkVHSU4gVFJBTlNBQ1RJT04gPGh0dHA6Ly9zcWxpdGUub3JnL2xhbmdfdHJhbnNhY3Rpb24uaHRtbD5gXyAtCiAgICBvbiB0aGUgU1FMaXRlIHNpdGUKCiAgICBgc3FsaXRlMyBTRUxFQ1QgZG9lcyBub3QgQkVHSU4gYSB0cmFuc2FjdGlvbiA8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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 6
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
base.cpython-311.pyc
80.30 KB
lrw-r--r--
2026-02-06 08:07:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
json.cpython-311.pyc
4.00 KB
lrw-r--r--
2026-02-06 08:07:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
provision.cpython-311.pyc
3.84 KB
lrw-r--r--
2026-01-20 13:01:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pysqlcipher.cpython-311.pyc
6.07 KB
lrw-r--r--
2026-02-06 08:07:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pysqlite.cpython-311.pyc
21.90 KB
lrw-r--r--
2026-02-06 08:07:29
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-311.pyc
1.19 KB
lrw-r--r--
2026-02-06 08:07: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).