REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 35.11 KB
Close
//opt/hc_python/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/psycopg2.cpython-312.pyc
Text
Base64
yw0NCgAAAAD5ke9nIH0AAOMAAAAAAAAAAAAAAAAFAAAAAAAAAfMcAgAAlwBkAFoAZAFkAmwBbQJaAgEAZAFkA2wDbQRaBQEAZAFkA2wGWgZkAWQDbAdaB2QBZARsCG0JWgkBAGQFZAZsCm0LWgsBAGQFZAdsDG0NWg0BAGQFZAhsDG0OWg4BAGQFZAlsD20QWhABAGQFZApsEW0SWhIBAGQFZAtsEW0TWhMBAGQMZA1sCm0UWhUBAGQMZA5sCm0WWhYBAGQMZA9sFm0XWhcBAGQMZBBsFm0YWhgBAAIAZQZqMgAAAAAAAAAAAAAAAAAAAAAAAGQRqwEAAAAAAABaGgIARwBkEoQAZBNlEqsDAAAAAAAAWhsCAEcAZBSEAGQVZROrAwAAAAAAAFocAgBHAGQWhABkF2ULajoAAAAAAAAAAAAAAAAAAAAAAACrAwAAAAAAAFoeAgBHAGQYhABkGWUeqwMAAAAAAABaHwIARwBkGoQAZBtlHqsDAAAAAAAAWiACAEcAZByEAGQdZR6rAwAAAAAAAFohAgBHAGQehABkH2UeqwMAAAAAAABaIgIARwBkIIQAZCFlDqsDAAAAAAAAWiMCAEcAZCKEAGQjZRCrAwAAAAAAAFokAgBHAGQkhABkJWUXqwMAAAAAAABaJWUlakwAAAAAAAAAAAAAAAAAAAAAAABqTwAAAAAAAAAAAAAAAAAAAAAAAKsAAAAAAAAAXAIAAFooWikCAEcAZCaEAGQnZQ2rAwAAAAAAAFoqZSpaK3kDKShhJUoAAAouLiBkaWFsZWN0OjogcG9zdGdyZXNxbCtwc3ljb3BnMgogICAgOm5hbWU6IHBzeWNvcGcyCiAgICA6ZGJhcGk6IHBzeWNvcGcyCiAgICA6Y29ubmVjdHN0cmluZzogcG9zdGdyZXNxbCtwc3ljb3BnMjovL3VzZXI6cGFzc3dvcmRAaG9zdDpwb3J0L2RibmFtZVs/a2V5PXZhbHVlJmtleT12YWx1ZS4uLl0KICAgIDp1cmw6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9wc3ljb3BnMi8KCi4uIF9wc3ljb3BnMl90b3BsZXZlbDoKCnBzeWNvcGcyIENvbm5lY3QgQXJndW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpLZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUgU1FMQWxjaGVteSBwc3ljb3BnMiBkaWFsZWN0Cm1heSBiZSBwYXNzZWQgdG8gOmZ1bmM6YF9zYS5jcmVhdGVfZW5naW5lKClgLCBhbmQgaW5jbHVkZSB0aGUgZm9sbG93aW5nOgoKCiogYGBpc29sYXRpb25fbGV2ZWxgYDogVGhpcyBvcHRpb24sIGF2YWlsYWJsZSBmb3IgYWxsIFBvc3RncmVTUUwgZGlhbGVjdHMsCiAgaW5jbHVkZXMgdGhlIGBgQVVUT0NPTU1JVGBgIGlzb2xhdGlvbiBsZXZlbCB3aGVuIHVzaW5nIHRoZSBwc3ljb3BnMgogIGRpYWxlY3QuICAgVGhpcyBvcHRpb24gc2V0cyB0aGUgKipkZWZhdWx0KiogaXNvbGF0aW9uIGxldmVsIGZvciB0aGUKICBjb25uZWN0aW9uIHRoYXQgaXMgc2V0IGltbWVkaWF0ZWx5IHVwb24gY29ubmVjdGlvbiB0byB0aGUgZGF0YWJhc2UgYmVmb3JlCiAgdGhlIGNvbm5lY3Rpb24gaXMgcG9vbGVkLiAgVGhpcyBvcHRpb24gaXMgZ2VuZXJhbGx5IHN1cGVyc2VkZWQgYnkgdGhlIG1vcmUKICBtb2Rlcm4gOnBhcmFtcmVmOmBfZW5naW5lLkNvbm5lY3Rpb24uZXhlY3V0aW9uX29wdGlvbnMuaXNvbGF0aW9uX2xldmVsYAogIGV4ZWN1dGlvbiBvcHRpb24sIGRldGFpbGVkIGF0IDpyZWY6YGRiYXBpX2F1dG9jb21taXRgLgoKICAuLiBzZWVhbHNvOjoKCiAgICA6cmVmOmBwc3ljb3BnMl9pc29sYXRpb25fbGV2ZWxgCgogICAgOnJlZjpgZGJhcGlfYXV0b2NvbW1pdGAKCgoqIGBgY2xpZW50X2VuY29kaW5nYGA6IHNldHMgdGhlIGNsaWVudCBlbmNvZGluZyBpbiBhIGxpYnBxLWFnbm9zdGljIHdheSwKICB1c2luZyBwc3ljb3BnMidzIGBgc2V0X2NsaWVudF9lbmNvZGluZygpYGAgbWV0aG9kLgoKICAuLiBzZWVhbHNvOjoKCiAgICA6cmVmOmBwc3ljb3BnMl91bmljb2RlYAoKCiogYGBleGVjdXRlbWFueV9tb2RlYGAsIGBgZXhlY3V0ZW1hbnlfYmF0Y2hfcGFnZV9zaXplYGAsCiAgYGBleGVjdXRlbWFueV92YWx1ZXNfcGFnZV9zaXplYGA6IEFsbG93cyB1c2Ugb2YgcHN5Y29wZzIKICBleHRlbnNpb25zIGZvciBvcHRpbWl6aW5nICJleGVjdXRlbWFueSItc3R5bGUgcXVlcmllcy4gIFNlZSB0aGUgcmVmZXJlbmNlZAogIHNlY3Rpb24gYmVsb3cgZm9yIGRldGFpbHMuCgogIC4uIHNlZWFsc286OgoKICAgIDpyZWY6YHBzeWNvcGcyX2V4ZWN1dGVtYW55X21vZGVgCgouLiB0aXA6OgoKICAgIFRoZSBhYm92ZSBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgKipkaWFsZWN0Kioga2V5d29yZCBhcmd1bWVudHMsIG1lYW5pbmcKICAgIHRoYXQgdGhleSBhcmUgcGFzc2VkIGFzIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnRzIHRvIDpmdW5jOmBfc2EuY3JlYXRlX2VuZ2luZSgpYDo6CgogICAgICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgICAgICJwb3N0Z3Jlc3FsK3BzeWNvcGcyOi8vc2NvdHQ6dGlnZXJAbG9jYWxob3N0L3Rlc3QiLAogICAgICAgICAgICBpc29sYXRpb25fbGV2ZWw9IlNFUklBTElaQUJMRSIsCiAgICAgICAgKQoKICAgIFRoZXNlIHNob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCAqKkRCQVBJKiogY29ubmVjdCBhcmd1bWVudHMsIHdoaWNoCiAgICBhcmUgcGFzc2VkIGFzIHBhcnQgb2YgdGhlIDpwYXJhbXJlZjpgX3NhLmNyZWF0ZV9lbmdpbmUuY29ubmVjdF9hcmdzYAogICAgZGljdGlvbmFyeSBhbmQvb3IgYXJlIHBhc3NlZCBpbiB0aGUgVVJMIHF1ZXJ5IHN0cmluZywgYXMgZGV0YWlsZWQgaW4KICAgIHRoZSBzZWN0aW9uIDpyZWY6YGN1c3RvbV9kYmFwaV9hcmdzYC4KCi4uIF9wc3ljb3BnMl9zc2w6CgpTU0wgQ29ubmVjdGlvbnMKLS0tLS0tLS0tLS0tLS0tCgpUaGUgcHN5Y29wZzIgbW9kdWxlIGhhcyBhIGNvbm5lY3Rpb24gYXJndW1lbnQgbmFtZWQgYGBzc2xtb2RlYGAgZm9yCmNvbnRyb2xsaW5nIGl0cyBiZWhhdmlvciByZWdhcmRpbmcgc2VjdXJlIChTU0wpIGNvbm5lY3Rpb25zLiBUaGUgZGVmYXVsdCBpcwpgYHNzbG1vZGU9cHJlZmVyYGA7IGl0IHdpbGwgYXR0ZW1wdCBhbiBTU0wgY29ubmVjdGlvbiBhbmQgaWYgdGhhdCBmYWlscyBpdAp3aWxsIGZhbGwgYmFjayB0byBhbiB1bmVuY3J5cHRlZCBjb25uZWN0aW9uLiBgYHNzbG1vZGU9cmVxdWlyZWBgIG1heSBiZSB1c2VkCnRvIGVuc3VyZSB0aGF0IG9ubHkgc2VjdXJlIGNvbm5lY3Rpb25zIGFyZSBlc3RhYmxpc2hlZC4gIENvbnN1bHQgdGhlCnBzeWNvcGcyIC8gbGlicHEgZG9jdW1lbnRhdGlvbiBmb3IgZnVydGhlciBvcHRpb25zIHRoYXQgYXJlIGF2YWlsYWJsZS4KCk5vdGUgdGhhdCBgYHNzbG1vZGVgYCBpcyBzcGVjaWZpYyB0byBwc3ljb3BnMiBzbyBpdCBpcyBpbmNsdWRlZCBpbiB0aGUKY29ubmVjdGlvbiBVUkk6OgoKICAgIGVuZ2luZSA9IHNhLmNyZWF0ZV9lbmdpbmUoCiAgICAgICAgInBvc3RncmVzcWwrcHN5Y29wZzI6Ly9zY290dDp0aWdlckAxOTIuMTY4LjAuMTk5OjU0MzIvdGVzdD9zc2xtb2RlPXJlcXVpcmUiCiAgICApCgpVbml4IERvbWFpbiBDb25uZWN0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnBzeWNvcGcyIHN1cHBvcnRzIGNvbm5lY3RpbmcgdmlhIFVuaXggZG9tYWluIGNvbm5lY3Rpb25zLiAgIFdoZW4gdGhlIGBgaG9zdGBgCnBvcnRpb24gb2YgdGhlIFVSTCBpcyBvbWl0dGVkLCBTUUxBbGNoZW15IHBhc3NlcyBgYE5vbmVgYCB0byBwc3ljb3BnMiwKd2hpY2ggc3BlY2lmaWVzIFVuaXgtZG9tYWluIGNvbW11bmljYXRpb24gcmF0aGVyIHRoYW4gVENQL0lQIGNvbW11bmljYXRpb246OgoKICAgIGNyZWF0ZV9lbmdpbmUoInBvc3RncmVzcWwrcHN5Y29wZzI6Ly91c2VyOnBhc3N3b3JkQC9kYm5hbWUiKQoKQnkgZGVmYXVsdCwgdGhlIHNvY2tldCBmaWxlIHVzZWQgaXMgdG8gY29ubmVjdCB0byBhIFVuaXgtZG9tYWluIHNvY2tldAppbiBgYC90bXBgYCwgb3Igd2hhdGV2ZXIgc29ja2V0IGRpcmVjdG9yeSB3YXMgc3BlY2lmaWVkIHdoZW4gUG9zdGdyZVNRTAp3YXMgYnVpbHQuICBUaGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBhc3NpbmcgYSBwYXRobmFtZSB0byBwc3ljb3BnMiwKdXNpbmcgYGBob3N0YGAgYXMgYW4gYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50OjoKCiAgICBjcmVhdGVfZW5naW5lKAogICAgICAgICJwb3N0Z3Jlc3FsK3BzeWNvcGcyOi8vdXNlcjpwYXNzd29yZEAvZGJuYW1lP2hvc3Q9L3Zhci9saWIvcG9zdGdyZXNxbCIKICAgICkKCi4uIHdhcm5pbmc6OiAgVGhlIGZvcm1hdCBhY2NlcHRlZCBoZXJlIGFsbG93cyBmb3IgYSBob3N0bmFtZSBpbiB0aGUgbWFpbiBVUkwKICAgaW4gYWRkaXRpb24gdG8gdGhlICJob3N0IiBxdWVyeSBzdHJpbmcgYXJndW1lbnQuICAqKldoZW4gdXNpbmcgdGhpcyBVUkwKICAgZm9ybWF0LCB0aGUgaW5pdGlhbCBob3N0IGlzIHNpbGVudGx5IGlnbm9yZWQqKi4gIFRoYXQgaXMsIHRoaXMgVVJMOjoKCiAgICAgICAgZW5naW5lID0gY3JlYXRlX2VuZ2luZSgKICAgICAgICAgICAgInBvc3RncmVzcWwrcHN5Y29wZzI6Ly91c2VyOnBhc3N3b3JkQG15aG9zdDEvZGJuYW1lP2hvc3Q9bXlob3N0MiIKICAgICAgICApCgogICBBYm92ZSwgdGhlIGhvc3RuYW1lIGBgbXlob3N0MWBgIGlzICoqc2lsZW50bHkgaWdub3JlZCBhbmQgZGlzY2FyZGVkLioqICBUaGUKICAgaG9zdCB3aGljaCBpcyBjb25uZWN0ZWQgaXMgdGhlIGBgbXlob3N0MmBgIGhvc3QuCgogICBUaGlzIGlzIHRvIG1haW50YWluIHNvbWUgZGVncmVlIG9mIGNvbXBhdGliaWxpdHkgd2l0aCBQb3N0Z3JlU1FMJ3Mgb3duIFVSTAogICBmb3JtYXQgd2hpY2ggaGFzIGJlZW4gdGVzdGVkIHRvIGJlaGF2ZSB0aGUgc2FtZSB3YXkgYW5kIGZvciB3aGljaCB0b29scyBsaWtlCiAgIFBpZlBhZiBoYXJkY29kZSB0d28gaG9zdG5hbWVzLgoKLi4gc2VlYWxzbzo6CgogICAgYFBRY29ubmVjdGRiUGFyYW1zIFwKICAgIDxodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzL2N1cnJlbnQvc3RhdGljL2xpYnBxLWNvbm5lY3QuaHRtbCNMSUJQUS1QUUNPTk5FQ1REQlBBUkFNUz5gXwoKLi4gX3BzeWNvcGcyX211bHRpX2hvc3Q6CgpTcGVjaWZ5aW5nIG11bHRpcGxlIGZhbGxiYWNrIGhvc3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpwc3ljb3BnMiBzdXBwb3J0cyBtdWx0aXBsZSBjb25uZWN0aW9uIHBvaW50cyBpbiB0aGUgY29ubmVjdGlvbiBzdHJpbmcuCldoZW4gdGhlIGBgaG9zdGBgIHBhcmFtZXRlciBpcyB1c2VkIG11bHRpcGxlIHRpbWVzIGluIHRoZSBxdWVyeSBzZWN0aW9uIG9mCnRoZSBVUkwsIFNRTEFsY2hlbXkgd2lsbCBjcmVhdGUgYSBzaW5nbGUgc3RyaW5nIG9mIHRoZSBob3N0IGFuZCBwb3J0CmluZm9ybWF0aW9uIHByb3ZpZGVkIHRvIG1ha2UgdGhlIGNvbm5lY3Rpb25zLiAgVG9rZW5zIG1heSBjb25zaXN0IG9mCmBgaG9zdDo6cG9ydGBgIG9yIGp1c3QgYGBob3N0YGA7IGluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIGRlZmF1bHQgcG9ydAppcyBzZWxlY3RlZCBieSBsaWJwcS4gIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aHJlZSBob3N0IGNvbm5lY3Rpb25zCmFyZSBzcGVjaWZpZWQsIGZvciBgYEhvc3RBOjpQb3J0QWBgLCBgYEhvc3RCYGAgY29ubmVjdGluZyB0byB0aGUgZGVmYXVsdCBwb3J0LAphbmQgYGBIb3N0Qzo6UG9ydENgYDo6CgogICAgY3JlYXRlX2VuZ2luZSgKICAgICAgICAicG9zdGdyZXNxbCtwc3ljb3BnMjovL3VzZXI6cGFzc3dvcmRAL2RibmFtZT9ob3N0PUhvc3RBOlBvcnRBJmhvc3Q9SG9zdEImaG9zdD1Ib3N0QzpQb3J0QyIKICAgICkKCkFzIGFuIGFsdGVybmF0aXZlLCBsaWJwcSBxdWVyeSBzdHJpbmcgZm9ybWF0IGFsc28gbWF5IGJlIHVzZWQ7IHRoaXMgc3BlY2lmaWVzCmBgaG9zdGBgIGFuZCBgYHBvcnRgYCBhcyBzaW5nbGUgcXVlcnkgc3RyaW5nIGFyZ3VtZW50cyB3aXRoIGNvbW1hLXNlcGFyYXRlZApsaXN0cyAtIHRoZSBkZWZhdWx0IHBvcnQgY2FuIGJlIGNob3NlbiBieSBpbmRpY2F0aW5nIGFuIGVtcHR5IHZhbHVlCmluIHRoZSBjb21tYSBzZXBhcmF0ZWQgbGlzdDo6CgogICAgY3JlYXRlX2VuZ2luZSgKICAgICAgICAicG9zdGdyZXNxbCtwc3ljb3BnMjovL3VzZXI6cGFzc3dvcmRAL2RibmFtZT9ob3N0PUhvc3RBLEhvc3RCLEhvc3RDJnBvcnQ9UG9ydEEsLFBvcnRDIgogICAgKQoKV2l0aCBlaXRoZXIgVVJMIHN0eWxlLCBjb25uZWN0aW9ucyB0byBlYWNoIGhvc3QgaXMgYXR0ZW1wdGVkIGJhc2VkIG9uIGEKY29uZmlndXJhYmxlIHN0cmF0ZWd5LCB3aGljaCBtYXkgYmUgY29uZmlndXJlZCB1c2luZyB0aGUgbGlicHEKYGB0YXJnZXRfc2Vzc2lvbl9hdHRyc2BgIHBhcmFtZXRlci4gIFBlciBsaWJwcSB0aGlzIGRlZmF1bHRzIHRvIGBgYW55YGAKd2hpY2ggaW5kaWNhdGVzIGEgY29ubmVjdGlvbiB0byBlYWNoIGhvc3QgaXMgdGhlbiBhdHRlbXB0ZWQgdW50aWwgYSBjb25uZWN0aW9uIGlzIHN1Y2Nlc3NmdWwuCk90aGVyIHN0cmF0ZWdpZXMgaW5jbHVkZSBgYHByaW1hcnlgYCwgYGBwcmVmZXItc3RhbmRieWBgLCBldGMuICBUaGUgY29tcGxldGUKbGlzdCBpcyBkb2N1bWVudGVkIGJ5IFBvc3RncmVTUUwgYXQKYGxpYnBxIGNvbm5lY3Rpb24gc3RyaW5ncyA8aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy9jdXJyZW50L2xpYnBxLWNvbm5lY3QuaHRtbCNMSUJQUS1DT05OU1RSSU5HPmBfLgoKRm9yIGV4YW1wbGUsIHRvIGluZGljYXRlIHR3byBob3N0cyB1c2luZyB0aGUgYGBwcmltYXJ5YGAgc3RyYXRlZ3k6OgoKICAgIGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgInBvc3RncmVzcWwrcHN5Y29wZzI6Ly91c2VyOnBhc3N3b3JkQC9kYm5hbWU/aG9zdD1Ib3N0QTpQb3J0QSZob3N0PUhvc3RCJmhvc3Q9SG9zdEM6UG9ydEMmdGFyZ2V0X3Nlc3Npb25fYXR0cnM9cHJpbWFyeSIKICAgICkKCi4uIHZlcnNpb25jaGFuZ2VkOjogMS40LjQwIFBvcnQgc3BlY2lmaWNhdGlvbiBpbiBwc3ljb3BnMiBtdWx0aXBsZSBob3N0IGZvcm1hdAogICBpcyByZXBhaXJlZCwgcHJldmlvdXNseSBwb3J0cyB3ZXJlIG5vdCBjb3JyZWN0bHkgaW50ZXJwcmV0ZWQgaW4gdGhpcyBjb250ZXh0LgogICBsaWJwcSBjb21tYS1zZXBhcmF0ZWQgZm9ybWF0IGlzIGFsc28gbm93IHN1cHBvcnRlZC4KCi4uIHZlcnNpb25hZGRlZDo6IDEuMy4yMCBTdXBwb3J0IGZvciBtdWx0aXBsZSBob3N0cyBpbiBQb3N0Z3JlU1FMIGNvbm5lY3Rpb24KICAgc3RyaW5nLgoKLi4gc2VlYWxzbzo6CgogICAgYGxpYnBxIGNvbm5lY3Rpb24gc3RyaW5ncyA8aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy9jdXJyZW50L2xpYnBxLWNvbm5lY3QuaHRtbCNMSUJQUS1DT05OU1RSSU5HPmBfIC0gcGxlYXNlIHJlZmVyCiAgICB0byB0aGlzIHNlY3Rpb24gaW4gdGhlIGxpYnBxIGRvY3VtZW50YXRpb24gZm9yIGNvbXBsZXRlIGJhY2tncm91bmQgb24gbXVsdGlwbGUgaG9zdCBzdXBwb3J0LgoKCkVtcHR5IERTTiBDb25uZWN0aW9ucyAvIEVudmlyb25tZW50IFZhcmlhYmxlIENvbm5lY3Rpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlIHBzeWNvcGcyIERCQVBJIGNhbiBjb25uZWN0IHRvIFBvc3RncmVTUUwgYnkgcGFzc2luZyBhbiBlbXB0eSBEU04gdG8gdGhlCmxpYnBxIGNsaWVudCBsaWJyYXJ5LCB3aGljaCBieSBkZWZhdWx0IGluZGljYXRlcyB0byBjb25uZWN0IHRvIGEgbG9jYWxob3N0ClBvc3RncmVTUUwgZGF0YWJhc2UgdGhhdCBpcyBvcGVuIGZvciAidHJ1c3QiIGNvbm5lY3Rpb25zLiAgVGhpcyBiZWhhdmlvciBjYW4gYmUKZnVydGhlciB0YWlsb3JlZCB1c2luZyBhIHBhcnRpY3VsYXIgc2V0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCBhcmUKcHJlZml4ZWQgd2l0aCBgYFBHXy4uLmBgLCB3aGljaCBhcmUgIGNvbnN1bWVkIGJ5IGBgbGlicHFgYCB0byB0YWtlIHRoZSBwbGFjZSBvZgphbnkgb3IgYWxsIGVsZW1lbnRzIG9mIHRoZSBjb25uZWN0aW9uIHN0cmluZy4KCkZvciB0aGlzIGZvcm0sIHRoZSBVUkwgY2FuIGJlIHBhc3NlZCB3aXRob3V0IGFueSBlbGVtZW50cyBvdGhlciB0aGFuIHRoZQppbml0aWFsIHNjaGVtZTo6CgogICAgZW5naW5lID0gY3JlYXRlX2VuZ2luZSgicG9zdGdyZXNxbCtwc3ljb3BnMjovLyIpCgpJbiB0aGUgYWJvdmUgZm9ybSwgYSBibGFuayAiZHNuIiBzdHJpbmcgaXMgcGFzc2VkIHRvIHRoZSBgYHBzeWNvcGcyLmNvbm5lY3QoKWBgCmZ1bmN0aW9uIHdoaWNoIGluIHR1cm4gcmVwcmVzZW50cyBhbiBlbXB0eSBEU04gcGFzc2VkIHRvIGxpYnBxLgoKLi4gdmVyc2lvbmFkZGVkOjogMS4zLjIgc3VwcG9ydCBmb3IgcGFyYW1ldGVyLWxlc3MgY29ubmVjdGlvbnMgd2l0aCBwc3ljb3BnMi4KCi4uIHNlZWFsc286OgoKICAgIGBFbnZpcm9ubWVudCBWYXJpYWJsZXNcCiAgICA8aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy9jdXJyZW50L2xpYnBxLWVudmFycy5odG1sPmBfIC0KICAgIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gdXNlIGBgUEdfLi4uYGAKICAgIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgY29ubmVjdGlvbnMuCgouLiBfcHN5Y29wZzJfZXhlY3V0aW9uX29wdGlvbnM6CgpQZXItU3RhdGVtZW50L0Nvbm5lY3Rpb24gRXhlY3V0aW9uIE9wdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlIGZvbGxvd2luZyBEQkFQSS1zcGVjaWZpYyBvcHRpb25zIGFyZSByZXNwZWN0ZWQgd2hlbiB1c2VkIHdpdGgKOm1ldGg6YF9lbmdpbmUuQ29ubmVjdGlvbi5leGVjdXRpb25fb3B0aW9uc2AsCjptZXRoOmAuRXhlY3V0YWJsZS5leGVjdXRpb25fb3B0aW9uc2AsCjptZXRoOmBfcXVlcnkuUXVlcnkuZXhlY3V0aW9uX29wdGlvbnNgLAppbiBhZGRpdGlvbiB0byB0aG9zZSBub3Qgc3BlY2lmaWMgdG8gREJBUElzOgoKKiBgYGlzb2xhdGlvbl9sZXZlbGBgIC0gU2V0IHRoZSB0cmFuc2FjdGlvbiBpc29sYXRpb24gbGV2ZWwgZm9yIHRoZSBsaWZlc3BhbgogIG9mIGEgOmNsYXNzOmBfZW5naW5lLkNvbm5lY3Rpb25gIChjYW4gb25seSBiZSBzZXQgb24gYSBjb25uZWN0aW9uLAogIG5vdCBhIHN0YXRlbWVudAogIG9yIHF1ZXJ5KS4gICBTZWUgOnJlZjpgcHN5Y29wZzJfaXNvbGF0aW9uX2xldmVsYC4KCiogYGBzdHJlYW1fcmVzdWx0c2BgIC0gRW5hYmxlIG9yIGRpc2FibGUgdXNhZ2Ugb2YgcHN5Y29wZzIgc2VydmVyIHNpZGUKICBjdXJzb3JzIC0gdGhpcyBmZWF0dXJlIG1ha2VzIHVzZSBvZiAibmFtZWQiIGN1cnNvcnMgaW4gY29tYmluYXRpb24gd2l0aAogIHNwZWNpYWwgcmVzdWx0IGhhbmRsaW5nIG1ldGhvZHMgc28gdGhhdCByZXN1bHQgcm93cyBhcmUgbm90IGZ1bGx5IGJ1ZmZlcmVkLgogIERlZmF1bHRzIHRvIEZhbHNlLCBtZWFuaW5nIGN1cnNvcnMgYXJlIGJ1ZmZlcmVkIGJ5IGRlZmF1bHQuCgoqIGBgbWF4X3Jvd19idWZmZXJgYCAtIHdoZW4gdXNpbmcgYGBzdHJlYW1fcmVzdWx0c2BgLCBhbiBpbnRlZ2VyIHZhbHVlIHRoYXQKICBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJvd3MgdG8gYnVmZmVyIGF0IGEgdGltZS4gIFRoaXMgaXMKICBpbnRlcnByZXRlZCBieSB0aGUgOmNsYXNzOmAuQnVmZmVyZWRSb3dDdXJzb3JSZXN1bHRgLCBhbmQgaWYgb21pdHRlZCB0aGUKICBidWZmZXIgd2lsbCBncm93IHRvIHVsdGltYXRlbHkgc3RvcmUgMTAwMCByb3dzIGF0IGEgdGltZS4KCiAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAxLjQgIFRoZSBgYG1heF9yb3dfYnVmZmVyYGAgc2l6ZSBjYW4gbm93IGJlIGdyZWF0ZXIgdGhhbgogICAgIDEwMDAsIGFuZCB0aGUgYnVmZmVyIHdpbGwgZ3JvdyB0byB0aGF0IHNpemUuCgouLiBfcHN5Y29wZzJfYmF0Y2hfbW9kZToKCi4uIF9wc3ljb3BnMl9leGVjdXRlbWFueV9tb2RlOgoKUHN5Y29wZzIgRmFzdCBFeGVjdXRpb24gSGVscGVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpNb2Rlcm4gdmVyc2lvbnMgb2YgcHN5Y29wZzIgaW5jbHVkZSBhIGZlYXR1cmUga25vd24gYXMKYEZhc3QgRXhlY3V0aW9uIEhlbHBlcnMgXAo8aHR0cHM6Ly93d3cucHN5Y29wZy5vcmcvZG9jcy9leHRyYXMuaHRtbCNmYXN0LWV4ZWN1dGlvbi1oZWxwZXJzPmBfLCB3aGljaApoYXZlIGJlZW4gc2hvd24gaW4gYmVuY2htYXJraW5nIHRvIGltcHJvdmUgcHN5Y29wZzIncyBleGVjdXRlbWFueSgpCnBlcmZvcm1hbmNlLCBwcmltYXJpbHkgd2l0aCBJTlNFUlQgc3RhdGVtZW50cywgYnkgYXQgbGVhc3QKYW4gb3JkZXIgb2YgbWFnbml0dWRlLgoKU1FMQWxjaGVteSBpbXBsZW1lbnRzIGEgbmF0aXZlIGZvcm0gb2YgdGhlICJpbnNlcnQgbWFueSB2YWx1ZXMiCmhhbmRsZXIgdGhhdCB3aWxsIHJld3JpdGUgYSBzaW5nbGUtcm93IElOU0VSVCBzdGF0ZW1lbnQgdG8gYWNjb21tb2RhdGUgZm9yCm1hbnkgdmFsdWVzIGF0IG9uY2Ugd2l0aGluIGFuIGV4dGVuZGVkIFZBTFVFUyBjbGF1c2U7IHRoaXMgaGFuZGxlciBpcwplcXVpdmFsZW50IHRvIHBzeWNvcGcyJ3MgYGBleGVjdXRlX3ZhbHVlcygpYGAgaGFuZGxlcjsgYW4gb3ZlcnZpZXcgb2YgdGhpcwpmZWF0dXJlIGFuZCBpdHMgY29uZmlndXJhdGlvbiBhcmUgYXQgOnJlZjpgZW5naW5lX2luc2VydG1hbnl2YWx1ZXNgLgoKLi4gdmVyc2lvbmFkZGVkOjogMi4wIFJlcGxhY2VkIHBzeWNvcGcyJ3MgYGBleGVjdXRlX3ZhbHVlcygpYGAgZmFzdCBleGVjdXRpb24KICAgaGVscGVyIHdpdGggYSBuYXRpdmUgU1FMQWxjaGVteSBtZWNoYW5pc20ga25vd24gYXMKICAgOnJlZjpgaW5zZXJ0bWFueXZhbHVlcyA8ZW5naW5lX2luc2VydG1hbnl2YWx1ZXM+YC4KClRoZSBwc3ljb3BnMiBkaWFsZWN0IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gdXNlIHRoZSBwc3ljb3BnMi1zcGVjaWZpYwpgYGV4ZWN1dGVfYmF0Y2goKWBgIGZlYXR1cmUsIGFsdGhvdWdoIGl0IGlzIG5vdCBleHBlY3RlZCB0aGF0IHRoaXMgaXMgYSB3aWRlbHkKdXNlZCBmZWF0dXJlLiAgVGhlIHVzZSBvZiB0aGlzIGV4dGVuc2lvbiBtYXkgYmUgZW5hYmxlZCB1c2luZyB0aGUKYGBleGVjdXRlbWFueV9tb2RlYGAgZmxhZyB3aGljaCBtYXkgYmUgcGFzc2VkIHRvIDpmdW5jOmBfc2EuY3JlYXRlX2VuZ2luZWA6OgoKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgInBvc3RncmVzcWwrcHN5Y29wZzI6Ly9zY290dDp0aWdlckBob3N0L2RibmFtZSIsCiAgICAgICAgZXhlY3V0ZW1hbnlfbW9kZT0idmFsdWVzX3BsdXNfYmF0Y2giLAogICAgKQoKUG9zc2libGUgb3B0aW9ucyBmb3IgYGBleGVjdXRlbWFueV9tb2RlYGAgaW5jbHVkZToKCiogYGB2YWx1ZXNfb25seWBgIC0gdGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZS4gIFNRTEFsY2hlbXkncyBuYXRpdmUKICA6cmVmOmBpbnNlcnRtYW55dmFsdWVzIDxlbmdpbmVfaW5zZXJ0bWFueXZhbHVlcz5gIGhhbmRsZXIgaXMgdXNlZCBmb3IgcXVhbGlmeWluZwogIElOU0VSVCBzdGF0ZW1lbnRzLCBhc3N1bWluZwogIDpwYXJhbXJlZjpgX3NhLmNyZWF0ZV9lbmdpbmUudXNlX2luc2VydG1hbnl2YWx1ZXNgIGlzIGxlZnQgYXQKICBpdHMgZGVmYXVsdCB2YWx1ZSBvZiBgYFRydWVgYC4gIFRoaXMgaGFuZGxlciByZXdyaXRlcyBzaW1wbGUKICBJTlNFUlQgc3RhdGVtZW50cyB0byBpbmNsdWRlIG11bHRpcGxlIFZBTFVFUyBjbGF1c2VzIHNvIHRoYXQgbWFueQogIHBhcmFtZXRlciBzZXRzIGNhbiBiZSBpbnNlcnRlZCB3aXRoIG9uZSBzdGF0ZW1lbnQuCgoqIGBgJ3ZhbHVlc19wbHVzX2JhdGNoJ2BgLSBTUUxBbGNoZW15J3MgbmF0aXZlCiAgOnJlZjpgaW5zZXJ0bWFueXZhbHVlcyA8ZW5naW5lX2luc2VydG1hbnl2YWx1ZXM+YCBoYW5kbGVyIGlzIHVzZWQgZm9yIHF1YWxpZnlpbmcKICBJTlNFUlQgc3RhdGVtZW50cywgYXNzdW1pbmcKICA6cGFyYW1yZWY6YF9zYS5jcmVhdGVfZW5naW5lLnVzZV9pbnNlcnRtYW55dmFsdWVzYCBpcyBsZWZ0IGF0IGl0cyBkZWZhdWx0CiAgdmFsdWUgb2YgYGBUcnVlYGAuIFRoZW4sIHBzeWNvcGcyJ3MgYGBleGVjdXRlX2JhdGNoKClgYCBoYW5kbGVyIGlzIHVzZWQgZm9yCiAgcXVhbGlmeWluZyBVUERBVEUgYW5kIERFTEVURSBzdGF0ZW1lbnRzIHdoZW4gZXhlY3V0ZWQgd2l0aCBtdWx0aXBsZSBwYXJhbWV0ZXIKICBzZXRzLiBXaGVuIHVzaW5nIHRoaXMgbW9kZSwgdGhlIDphdHRyOmBfZW5naW5lLkN1cnNvclJlc3VsdC5yb3djb3VudGAKICBhdHRyaWJ1dGUgd2lsbCBub3QgY29udGFpbiBhIHZhbHVlIGZvciBleGVjdXRlbWFueS1zdHlsZSBleGVjdXRpb25zIGFnYWluc3QKICBVUERBVEUgYW5kIERFTEVURSBzdGF0ZW1lbnRzLgoKLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjAgUmVtb3ZlZCB0aGUgYGAnYmF0Y2gnYGAgYW5kIGBgJ05vbmUnYGAgb3B0aW9ucwogICBmcm9tIHBzeWNvcGcyIGBgZXhlY3V0ZW1hbnlfbW9kZWBgLiAgQ29udHJvbCBvdmVyIGJhdGNoaW5nIGZvciBJTlNFUlQKICAgc3RhdGVtZW50cyBpcyBub3cgY29uZmlndXJlZCB2aWEgdGhlCiAgIDpwYXJhbXJlZjpgX3NhLmNyZWF0ZV9lbmdpbmUudXNlX2luc2VydG1hbnl2YWx1ZXNgIGVuZ2luZS1sZXZlbCBwYXJhbWV0ZXIuCgpUaGUgdGVybSAicXVhbGlmeWluZyBzdGF0ZW1lbnRzIiByZWZlcnMgdG8gdGhlIHN0YXRlbWVudCBiZWluZyBleGVjdXRlZApiZWluZyBhIENvcmUgOmZ1bmM6YF9leHByZXNzaW9uLmluc2VydGAsIDpmdW5jOmBfZXhwcmVzc2lvbi51cGRhdGVgCm9yIDpmdW5jOmBfZXhwcmVzc2lvbi5kZWxldGVgIGNvbnN0cnVjdCwgYW5kICoqbm90KiogYSBwbGFpbiB0ZXh0dWFsIFNRTApzdHJpbmcgb3Igb25lIGNvbnN0cnVjdGVkIHVzaW5nIDpmdW5jOmBfZXhwcmVzc2lvbi50ZXh0YC4gIEl0IGFsc28gbWF5ICoqbm90KiogYmUKYSBzcGVjaWFsICJleHRlbnNpb24iIHN0YXRlbWVudCBzdWNoIGFzIGFuICJPTiBDT05GTElDVCIgInVwc2VydCIgc3RhdGVtZW50LgpXaGVuIHVzaW5nIHRoZSBPUk0sIGFsbCBpbnNlcnQvdXBkYXRlL2RlbGV0ZSBzdGF0ZW1lbnRzIHVzZWQgYnkgdGhlIE9STSBmbHVzaCBwcm9jZXNzCmFyZSBxdWFsaWZ5aW5nLgoKVGhlICJwYWdlIHNpemUiIGZvciB0aGUgcHN5Y29wZzIgImJhdGNoIiBzdHJhdGVneSBjYW4gYmUgYWZmZWN0ZWQKYnkgdXNpbmcgdGhlIGBgZXhlY3V0ZW1hbnlfYmF0Y2hfcGFnZV9zaXplYGAgcGFyYW1ldGVyLCB3aGljaCBkZWZhdWx0cyB0bwoxMDAuCgpGb3IgdGhlICJpbnNlcnRtYW55dmFsdWVzIiBmZWF0dXJlLCB0aGUgcGFnZSBzaXplIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIHRoZQo6cGFyYW1yZWY6YF9zYS5jcmVhdGVfZW5naW5lLmluc2VydG1hbnl2YWx1ZXNfcGFnZV9zaXplYCBwYXJhbWV0ZXIsCndoaWNoIGRlZmF1bHRzIHRvIDEwMDAuICBBbiBleGFtcGxlIG9mIG1vZGlmeWluZyBib3RoIHBhcmFtZXRlcnMKaXMgYmVsb3c6OgoKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgInBvc3RncmVzcWwrcHN5Y29wZzI6Ly9zY290dDp0aWdlckBob3N0L2RibmFtZSIsCiAgICAgICAgZXhlY3V0ZW1hbnlfbW9kZT0idmFsdWVzX3BsdXNfYmF0Y2giLAogICAgICAgIGluc2VydG1hbnl2YWx1ZXNfcGFnZV9zaXplPTUwMDAsCiAgICAgICAgZXhlY3V0ZW1hbnlfYmF0Y2hfcGFnZV9zaXplPTUwMCwKICAgICkKCi4uIHNlZWFsc286OgoKICAgIDpyZWY6YGVuZ2luZV9pbnNlcnRtYW55dmFsdWVzYCAtIGJhY2tncm91bmQgb24gImluc2VydG1hbnl2YWx1ZXMiCgogICAgOnJlZjpgdHV0b3JpYWxfbXVsdGlwbGVfcGFyYW1ldGVyc2AgLSBHZW5lcmFsIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZQogICAgOmNsYXNzOmBfZW5naW5lLkNvbm5lY3Rpb25gCiAgICBvYmplY3QgdG8gZXhlY3V0ZSBzdGF0ZW1lbnRzIGluIHN1Y2ggYSB3YXkgYXMgdG8gbWFrZQogICAgdXNlIG9mIHRoZSBEQkFQSSBgYC5leGVjdXRlbWFueSgpYGAgbWV0aG9kLgoKCi4uIF9wc3ljb3BnMl91bmljb2RlOgoKVW5pY29kZSB3aXRoIFBzeWNvcGcyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSBwc3ljb3BnMiBEQkFQSSBkcml2ZXIgc3VwcG9ydHMgVW5pY29kZSBkYXRhIHRyYW5zcGFyZW50bHkuCgpUaGUgY2xpZW50IGNoYXJhY3RlciBlbmNvZGluZyBjYW4gYmUgY29udHJvbGxlZCBmb3IgdGhlIHBzeWNvcGcyIGRpYWxlY3QKaW4gdGhlIGZvbGxvd2luZyB3YXlzOgoKKiBGb3IgUG9zdGdyZVNRTCA5LjEgYW5kIGFib3ZlLCB0aGUgYGBjbGllbnRfZW5jb2RpbmdgYCBwYXJhbWV0ZXIgbWF5IGJlCiAgcGFzc2VkIGluIHRoZSBkYXRhYmFzZSBVUkw7IHRoaXMgcGFyYW1ldGVyIGlzIGNvbnN1bWVkIGJ5IHRoZSB1bmRlcmx5aW5nCiAgYGBsaWJwcWBgIFBvc3RncmVTUUwgY2xpZW50IGxpYnJhcnk6OgoKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgInBvc3RncmVzcWwrcHN5Y29wZzI6Ly91c2VyOnBhc3NAaG9zdC9kYm5hbWU/Y2xpZW50X2VuY29kaW5nPXV0ZjgiCiAgICApCgogIEFsdGVybmF0aXZlbHksIHRoZSBhYm92ZSBgYGNsaWVudF9lbmNvZGluZ2BgIHZhbHVlIG1heSBiZSBwYXNzZWQgdXNpbmcKICA6cGFyYW1yZWY6YF9zYS5jcmVhdGVfZW5naW5lLmNvbm5lY3RfYXJnc2AgZm9yIHByb2dyYW1tYXRpYyBlc3RhYmxpc2htZW50IHdpdGgKICBgYGxpYnBxYGA6OgoKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgInBvc3RncmVzcWwrcHN5Y29wZzI6Ly91c2VyOnBhc3NAaG9zdC9kYm5hbWUiLAogICAgICAgIGNvbm5lY3RfYXJncz17ImNsaWVudF9lbmNvZGluZyI6ICJ1dGY4In0sCiAgICApCgoqIEZvciBhbGwgUG9zdGdyZVNRTCB2ZXJzaW9ucywgcHN5Y29wZzIgc3VwcG9ydHMgYSBjbGllbnQtc2lkZSBlbmNvZGluZwogIHZhbHVlIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gZGF0YWJhc2UgY29ubmVjdGlvbnMgd2hlbiB0aGV5IGFyZSBmaXJzdAogIGVzdGFibGlzaGVkLiAgVGhlIFNRTEFsY2hlbXkgcHN5Y29wZzIgZGlhbGVjdCBzdXBwb3J0cyB0aGlzIHVzaW5nIHRoZQogIGBgY2xpZW50X2VuY29kaW5nYGAgcGFyYW1ldGVyIHBhc3NlZCB0byA6ZnVuYzpgX3NhLmNyZWF0ZV9lbmdpbmVgOjoKCiAgICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgICAicG9zdGdyZXNxbCtwc3ljb3BnMjovL3VzZXI6cGFzc0Bob3N0L2RibmFtZSIsIGNsaWVudF9lbmNvZGluZz0idXRmOCIKICAgICAgKQoKICAuLiB0aXA6OiBUaGUgYWJvdmUgYGBjbGllbnRfZW5jb2RpbmdgYCBwYXJhbWV0ZXIgYWRtaXR0ZWRseSBpcyB2ZXJ5IHNpbWlsYXIKICAgICAgaW4gYXBwZWFyYW5jZSB0byB1c2FnZSBvZiB0aGUgcGFyYW1ldGVyIHdpdGhpbiB0aGUKICAgICAgOnBhcmFtcmVmOmBfc2EuY3JlYXRlX2VuZ2luZS5jb25uZWN0X2FyZ3NgIGRpY3Rpb25hcnk7IHRoZSBkaWZmZXJlbmNlCiAgICAgIGFib3ZlIGlzIHRoYXQgdGhlIHBhcmFtZXRlciBpcyBjb25zdW1lZCBieSBwc3ljb3BnMiBhbmQgaXMKICAgICAgcGFzc2VkIHRvIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIHVzaW5nIGBgU0VUIGNsaWVudF9lbmNvZGluZyBUTwogICAgICAndXRmOCdgYDsgaW4gdGhlIHByZXZpb3VzbHkgbWVudGlvbmVkIHN0eWxlLCB0aGUgcGFyYW1ldGVyIGlzIGluc3RlYWQKICAgICAgcGFzc2VkIHRocm91Z2ggcHN5Y29wZzIgYW5kIGNvbnN1bWVkIGJ5IHRoZSBgYGxpYnBxYGAgbGlicmFyeS4KCiogQSBjb21tb24gd2F5IHRvIHNldCB1cCBjbGllbnQgZW5jb2Rpbmcgd2l0aCBQb3N0Z3JlU1FMIGRhdGFiYXNlcyBpcyB0bwogIGVuc3VyZSBpdCBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUgc2VydmVyLXNpZGUgcG9zdGdyZXNxbC5jb25mIGZpbGU7CiAgdGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIHNldCBlbmNvZGluZyBmb3IgYSBzZXJ2ZXIgdGhhdCBpcwogIGNvbnNpc3RlbnRseSBvZiBvbmUgZW5jb2RpbmcgaW4gYWxsIGRhdGFiYXNlczo6CgogICAgIyBwb3N0Z3Jlc3FsLmNvbmYgZmlsZQoKICAgICMgY2xpZW50X2VuY29kaW5nID0gc3FsX2FzY2lpICMgYWN0dWFsbHksIGRlZmF1bHRzIHRvIGRhdGFiYXNlCiAgICAjIGVuY29kaW5nCiAgICBjbGllbnRfZW5jb2RpbmcgPSB1dGY4CgpUcmFuc2FjdGlvbnMKLS0tLS0tLS0tLS0tCgpUaGUgcHN5Y29wZzIgZGlhbGVjdCBmdWxseSBzdXBwb3J0cyBTQVZFUE9JTlQgYW5kIHR3by1waGFzZSBjb21taXQgb3BlcmF0aW9ucy4KCi4uIF9wc3ljb3BnMl9pc29sYXRpb25fbGV2ZWw6CgpQc3ljb3BnMiBUcmFuc2FjdGlvbiBJc29sYXRpb24gTGV2ZWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQXMgZGlzY3Vzc2VkIGluIDpyZWY6YHBvc3RncmVzcWxfaXNvbGF0aW9uX2xldmVsYCwKYWxsIFBvc3RncmVTUUwgZGlhbGVjdHMgc3VwcG9ydCBzZXR0aW5nIG9mIHRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbApib3RoIHZpYSB0aGUgYGBpc29sYXRpb25fbGV2ZWxgYCBwYXJhbWV0ZXIgcGFzc2VkIHRvIDpmdW5jOmBfc2EuY3JlYXRlX2VuZ2luZWAKLAphcyB3ZWxsIGFzIHRoZSBgYGlzb2xhdGlvbl9sZXZlbGBgIGFyZ3VtZW50IHVzZWQgYnkKOm1ldGg6YF9lbmdpbmUuQ29ubmVjdGlvbi5leGVjdXRpb25fb3B0aW9uc2AuICBXaGVuIHVzaW5nIHRoZSBwc3ljb3BnMiBkaWFsZWN0CiwgdGhlc2UKb3B0aW9ucyBtYWtlIHVzZSBvZiBwc3ljb3BnMidzIGBgc2V0X2lzb2xhdGlvbl9sZXZlbCgpYGAgY29ubmVjdGlvbiBtZXRob2QsCnJhdGhlciB0aGFuIGVtaXR0aW5nIGEgUG9zdGdyZVNRTCBkaXJlY3RpdmU7IHRoaXMgaXMgYmVjYXVzZSBwc3ljb3BnMidzCkFQSS1sZXZlbCBzZXR0aW5nIGlzIGFsd2F5cyBlbWl0dGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHRyYW5zYWN0aW9uIGluIGFueQpjYXNlLgoKVGhlIHBzeWNvcGcyIGRpYWxlY3Qgc3VwcG9ydHMgdGhlc2UgY29uc3RhbnRzIGZvciBpc29sYXRpb24gbGV2ZWw6CgoqIGBgUkVBRCBDT01NSVRURURgYAoqIGBgUkVBRCBVTkNPTU1JVFRFRGBgCiogYGBSRVBFQVRBQkxFIFJFQURgYAoqIGBgU0VSSUFMSVpBQkxFYGAKKiBgYEFVVE9DT01NSVRgYAoKLi4gc2VlYWxzbzo6CgogICAgOnJlZjpgcG9zdGdyZXNxbF9pc29sYXRpb25fbGV2ZWxgCgogICAgOnJlZjpgcGc4MDAwX2lzb2xhdGlvbl9sZXZlbGAKCgpOT1RJQ0UgbG9nZ2luZwotLS0tLS0tLS0tLS0tLS0KClRoZSBwc3ljb3BnMiBkaWFsZWN0IHdpbGwgbG9nIFBvc3RncmVTUUwgTk9USUNFIG1lc3NhZ2VzCnZpYSB0aGUgYGBzcWxhbGNoZW15LmRpYWxlY3RzLnBvc3RncmVzcWxgYCBsb2dnZXIuICBXaGVuIHRoaXMgbG9nZ2VyCmlzIHNldCB0byB0aGUgYGBsb2dnaW5nLklORk9gYCBsZXZlbCwgbm90aWNlIG1lc3NhZ2VzIHdpbGwgYmUgbG9nZ2VkOjoKCiAgICBpbXBvcnQgbG9nZ2luZwoKICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCJzcWxhbGNoZW15LmRpYWxlY3RzLnBvc3RncmVzcWwiKS5zZXRMZXZlbChsb2dnaW5nLklORk8pCgpBYm92ZSwgaXQgaXMgYXNzdW1lZCB0aGF0IGxvZ2dpbmcgaXMgY29uZmlndXJlZCBleHRlcm5hbGx5LiAgSWYgdGhpcyBpcyBub3QKdGhlIGNhc2UsIGNvbmZpZ3VyYXRpb24gc3VjaCBhcyBgYGxvZ2dpbmcuYmFzaWNDb25maWcoKWBgIG11c3QgYmUgdXRpbGl6ZWQ6OgoKICAgIGltcG9ydCBsb2dnaW5nCgogICAgbG9nZ2luZy5iYXNpY0NvbmZpZygpICAjIGxvZyBtZXNzYWdlcyB0byBzdGRvdXQKICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCJzcWxhbGNoZW15LmRpYWxlY3RzLnBvc3RncmVzcWwiKS5zZXRMZXZlbChsb2dnaW5nLklORk8pCgouLiBzZWVhbHNvOjoKCiAgICBgTG9nZ2luZyBIT1dUTyA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9ob3d0by9sb2dnaW5nLmh0bWw+YF8gLSBvbiB0aGUgcHl0aG9uLm9yZyB3ZWJzaXRlCgouLiBfcHN5Y29wZzJfaHN0b3JlOgoKSFNUT1JFIHR5cGUKLS0tLS0tLS0tLS0tCgpUaGUgYGBwc3ljb3BnMmBgIERCQVBJIGluY2x1ZGVzIGFuIGV4dGVuc2lvbiB0byBuYXRpdmVseSBoYW5kbGUgbWFyc2hhbGxpbmcgb2YKdGhlIEhTVE9SRSB0eXBlLiAgIFRoZSBTUUxBbGNoZW15IHBzeWNvcGcyIGRpYWxlY3Qgd2lsbCBlbmFibGUgdGhpcyBleHRlbnNpb24KYnkgZGVmYXVsdCB3aGVuIHBzeWNvcGcyIHZlcnNpb24gMi40IG9yIGdyZWF0ZXIgaXMgdXNlZCwgYW5kCml0IGlzIGRldGVjdGVkIHRoYXQgdGhlIHRhcmdldCBkYXRhYmFzZSBoYXMgdGhlIEhTVE9SRSB0eXBlIHNldCB1cCBmb3IgdXNlLgpJbiBvdGhlciB3b3Jkcywgd2hlbiB0aGUgZGlhbGVjdCBtYWtlcyB0aGUgZmlyc3QKY29ubmVjdGlvbiwgYSBzZXF1ZW5jZSBsaWtlIHRoZSBmb2xsb3dpbmcgaXMgcGVyZm9ybWVkOgoKMS4gUmVxdWVzdCB0aGUgYXZhaWxhYmxlIEhTVE9SRSBvaWRzIHVzaW5nCiAgIGBgcHN5Y29wZzIuZXh0cmFzLkhzdG9yZUFkYXB0ZXIuZ2V0X29pZHMoKWBgLgogICBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIEhTVE9SRSBpZGVudGlmaWVycywgd2UgdGhlbiBkZXRlcm1pbmUKICAgdGhhdCB0aGUgYGBIU1RPUkVgYCBleHRlbnNpb24gaXMgcHJlc2VudC4KICAgVGhpcyBmdW5jdGlvbiBpcyAqKnNraXBwZWQqKiBpZiB0aGUgdmVyc2lvbiBvZiBwc3ljb3BnMiBpbnN0YWxsZWQgaXMKICAgbGVzcyB0aGFuIHZlcnNpb24gMi40LgoKMi4gSWYgdGhlIGBgdXNlX25hdGl2ZV9oc3RvcmVgYCBmbGFnIGlzIGF0IGl0cyBkZWZhdWx0IG9mIGBgVHJ1ZWBgLCBhbmQKICAgd2UndmUgZGV0ZWN0ZWQgdGhhdCBgYEhTVE9SRWBgIG9pZHMgYXJlIGF2YWlsYWJsZSwgdGhlCiAgIGBgcHN5Y29wZzIuZXh0ZW5zaW9ucy5yZWdpc3Rlcl9oc3RvcmUoKWBgIGV4dGVuc2lvbiBpcyBpbnZva2VkIGZvciBhbGwKICAgY29ubmVjdGlvbnMuCgpUaGUgYGByZWdpc3Rlcl9oc3RvcmUoKWBgIGV4dGVuc2lvbiBoYXMgdGhlIGVmZmVjdCBvZiAqKmFsbCBQeXRob24KZGljdGlvbmFyaWVzIGJlaW5nIGFjY2VwdGVkIGFzIHBhcmFtZXRlcnMgcmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiB0YXJnZXQKY29sdW1uIGluIFNRTCoqLiBUaGUgZGljdGlvbmFyaWVzIGFyZSBjb252ZXJ0ZWQgYnkgdGhpcyBleHRlbnNpb24gaW50byBhCnRleHR1YWwgSFNUT1JFIGV4cHJlc3Npb24uICBJZiB0aGlzIGJlaGF2aW9yIGlzIG5vdCBkZXNpcmVkLCBkaXNhYmxlIHRoZQp1c2Ugb2YgdGhlIGhzdG9yZSBleHRlbnNpb24gYnkgc2V0dGluZyBgYHVzZV9uYXRpdmVfaHN0b3JlYGAgdG8gYGBGYWxzZWBgIGFzCmZvbGxvd3M6OgoKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoCiAgICAgICAgInBvc3RncmVzcWwrcHN5Y29wZzI6Ly9zY290dDp0aWdlckBsb2NhbGhvc3QvdGVzdCIsCiAgICAgICAgdXNlX25hdGl2ZV9oc3RvcmU9RmFsc2UsCiAgICApCgpUaGUgYGBIU1RPUkVgYCB0eXBlIGlzICoqc3RpbGwgc3VwcG9ydGVkKiogd2hlbiB0aGUKYGBwc3ljb3BnMi5leHRlbnNpb25zLnJlZ2lzdGVyX2hzdG9yZSgpYGAgZXh0ZW5zaW9uIGlzIG5vdCB1c2VkLiAgSXQgbWVyZWx5Cm1lYW5zIHRoYXQgdGhlIGNvZXJjaW9uIGJldHdlZW4gUHl0aG9uIGRpY3Rpb25hcmllcyBhbmQgdGhlIEhTVE9SRQpzdHJpbmcgZm9ybWF0LCBvbiBib3RoIHRoZSBwYXJhbWV0ZXIgc2lkZSBhbmQgdGhlIHJlc3VsdCBzaWRlLCB3aWxsIHRha2UKcGxhY2Ugd2l0aGluIFNRTEFsY2hlbXkncyBvd24gbWFyc2hhbGxpbmcgbG9naWMsIGFuZCBub3QgdGhhdCBvZiBgYHBzeWNvcGcyYGAKd2hpY2ggbWF5IGJlIG1vcmUgcGVyZm9ybWFudC4KCukAAAAAKQHaC2Fubm90YXRpb25zTikB2gRjYXN06QEAAAApAdoGcmFuZ2VzKQHaGV9QR0RpYWxlY3RfY29tbW9uX3BzeWNvcGcpAdoiX1BHRXhlY3V0aW9uQ29udGV4dF9jb21tb25fcHN5Y29wZykB2hRQR0lkZW50aWZpZXJQcmVwYXJlcikB2gRKU09OKQHaBUpTT05C6QMAAAApAdoFdHlwZXMpAdoEdXRpbCkB2gtGYXN0SW50RmxhZykB2hxwYXJzZV91c2VyX2FyZ3VtZW50X2Zvcl9lbnVteh5zcWxhbGNo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AAAAAAAAAAAAAAAAAAAAfAWrAQAAAAAAAH0GfAZkBWtcAABzAYwaZAZ8BGQAfAYaAHYBcwGMIgEAeQMEAHkCKQdO2gZjbG9zZWRGVNoBCnICAAAA2gEiKQhyKwAAAHJ1AAAA2gVFcnJvcnI0AAAA2gNzdHLaCXBhcnRpdGlvbtoXX2lzX2Rpc2Nvbm5lY3RfbWVzc2FnZXPaBGZpbmQpB3IXAAAA2gFlclMAAAByTwAAANoFc3RyX2XaA21zZ9oDaWR4cwcAAAAgICAgICAgchoAAADaDWlzX2Rpc2Nvbm5lY3R6IFBHRGlhbGVjdF9wc3ljb3BnMi5pc19kaXNjb25uZWN0SQMAAHN7AAAAgADcCxWQYZgUnxqZGtcZKdEZKdQLKvQKABAXkHqgOKhV1A8z2Bcb9AgAFRiYAZNG1xQk0RQkoFTTFCqoMdEULYhF2Bcb1xcz1BczkAPYFhuXapFqoBOTb5AD2BMWmCGTOKADqDWwFLAjqDvSIDbZGx/wBwAYNPAIABAVch0AAABjAQAAAAAAAAAAAAAAAAAAAAMAAAHzBAAAAJcAeQEpAk4pD3oWdGVybWluYXRpbmcgY29ubmVjdGlvbnoVY2xvc2VkIHRoZSBjb25uZWN0aW9uehNjb25uZWN0aW9uIG5vdCBvcGVueiJjb3VsZCBub3QgcmVjZWl2ZSBkYXRhIGZyb20gc2VydmVyeh1jb3VsZCBub3Qgc2VuZCBkYXRhIHRvIHNlcnZlcnoZY29ubmVjdGlvbiBhbHJlYWR5IGNsb3NlZHoVY3Vyc29yIGFscmVhZHkgY2xvc2VkeiFsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHl6J2Nvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIHVuZXhwZWN0ZWRseXouU1NMIGVycm9yOiBkZWNyeXB0aW9uIGZhaWxlZCBvciBiYWQgcmVjb3JkIG1hY3omU1NMIFNZU0NBTEwgZXJyb3I6IEJhZCBmaWxlIGRlc2NyaXB0b3J6H1NTTCBTWVNDQUxMIGVycm9yOiBFT0YgZGV0ZWN0ZWR6JlNTTCBTWVNDQUxMIGVycm9yOiBPcGVyYXRpb24gdGltZWQgb3V0eh5TU0wgU1lTQ0FMTCBlcnJvcjogQmFkIGFkZHJlc3N6GlNTTCBTWVNDQUxMIGVycm9yOiBTdWNjZXNzchUAAAByUAAAAHMBAAAAIHIaAAAAcuwAAAB6KlBHRGlhbGVjdF9wc3ljb3BnMi5faXNfZGlzY29ubmVjdF9tZXNzYWdlc1sDAABzBwAAAIAA8AQcEApyHQAAACkCcmYAAADpZAAAAHIUAAAAKQFGKQJURik9ch8AAAByIAAAAHIhAAAA2gZkcml2ZXLaGHN1cHBvcnRzX3N0YXRlbWVudF9jYWNoZdocc3VwcG9ydHNfc2VydmVyX3NpZGVfY3Vyc29yc9oSZGVmYXVsdF9wYXJhbXN0eWxlcoYAAAByTAAAANoRZXhlY3V0aW9uX2N0eF9jbHNyXQAAANoIcHJlcGFyZXJyewAAANohdXNlX2luc2VydG1hbnl2YWx1ZXNfd29fcmV0dXJuaW5n2hRyZXR1cm5zX25hdGl2ZV9ieXRlc3KFAAAAcg4AAADaC3VwZGF0ZV9jb3B5cgcAAADaCGNvbHNwZWNzcgoAAAByEgAAANoIc3FsdHlwZXNyCwAAAHIkAAAAcgYAAADaCUlOVDRSQU5HRXI/AAAA2glJTlQ4UkFOR0XaCE5VTVJBTkdF2glEQVRFUkFOR0VyQwAAANoHVFNSQU5HRXJGAAAA2glUU1RaUkFOR0VySQAAAHJxAAAAcoEAAADaC2NsYXNzbWV0aG9kcooAAADaEW1lbW9pemVkX3Byb3BlcnR5co0AAAByNgAAAHKYAAAAcpoAAAByoAAAAHKjAAAAcqcAAAByqQAAAHKvAAAAcsgAAAByzQAAAHLQAAAActcAAABy3QAAAHLgAAAA2hdtZW1vaXplZF9pbnN0YW5jZW1ldGhvZHKDAAAAcvIAAABy7AAAANoNX19jbGFzc2NlbGxfXykBcocAAABzAQAAAEByGgAAAHI1AAAAcjUAAABhAgAAc7ABAAD4hADYDReARuAfI9AEHNgjJ9AEIOAZI9AEFuAjKNAEINgYM9AEFdgPLIBI2Bcd0AQU2Cgs0AQl4Bsg0AQY4Bkd0AQW4A8fiHTXDx/RDx/YCCHXCCrRCCrgDBCQJ9gMFI9NiU2YN9gMEZA42AwS1wwc0Qwc0B4z2AwS1wwc0Qwc0B4z2AwSj0+JT9AdMtgMEtcMHNEMHNAeMNgMEo9OiU7QHDLYDBLXDBzRDBzQHjbwEwoJCvMFDRAGgEjwIgAaJ9gkJ/MHJgUS9FABCgUK8BgABhHxAgMFGPMDAAYR8AIDBRjwCgAGCtcFG9EFG/ECAwUa8wMABhzwAgMFGvAKAAYK1wUb0QUb8QIDBRbzAwAGHPACAwUW8AoABgrXBRvRBRvxAggFCvMDAAYc8AIIBQryFAEFTAHyBgEFJPIGAQUj8gYBBSbyBgEFJfIGMgUY82gBCgU28hgBBS3yBgEFLPMGBgUY8BIAOj/zAwYFCvASADo/8wMGBQrwEAAGCtcFIdEFIfECBgUY8wMABiLwAgYFGPIQEAUV8CQABgrXBRvRBRvxAh0FCvMDAAYc9AIdBQpyHQAAAHI1AAAAKSzaB19fZG9jX1/aCl9fZnV0dXJlX19yAwAAANoPY29sbGVjdGlvbnMuYWJj2gNhYmNyVQAAANoHbG9nZ2luZ3J3AAAA2gZ0eXBpbmdyBAAAANoAcgYAAADaD19wc3ljb3BnX2NvbW1vbnIHAAAAcggAAADaBGJhc2VyCQAAANoEanNvbnIKAAAAcgsAAAByDQAAAHL/AAAAcg4AAAByDwAAAHIQAAAA2glnZXRMb2dnZXJyVwAAAHISAAAAciQAAADaF0Fic3RyYWN0U2luZ2xlUmFuZ2VJbXBscicAAAByPwAAAHJDAAAAckYAAABySQAAAHJMAAAAcl0AAAByXwAAANoLX19tZW1iZXJzX1/aBnZhbHVlc3JgAAAAcmEAAAByNQAAAHIYAAAAchUAAAByHQAAAHIaAAAA2gg8bW9kdWxlPnIYAQAAAQAAAHMFAQAA8AMBAQHxEmEHAQT1RA8AASPlACnbAA7bAAndABflABTdADbdAD/dACbdABbdABfdACHdABTdAB/dADDgCRqIF9cJGtEJGtAbO9MJPIAG9AYCARSIZPQAAgEU9AoCARSIdfQAAgEU9AodARiQVtcVM9EVM/QAHQEY9EABAQEpmE70AAEBKfQIAQEmmB70AAEBJvQIAQEqmF70AAEBKvQIAQEsmH70AAEBLPQIFQEq0CJE9AAVASr0MAEBCdAkOPQAAQEJ9AgCASaQa/QAAgEm8BAABRTXBB/RBB/XBCbRBCbTBCjxBwMBAtgEFtgEIfQIWAQBCtAZMvQAWAQBCvB2CAALHYEHch0AAAA=
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 19
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
array.cpython-312.pyc
16.30 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
asyncpg.cpython-312.pyc
56.82 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
base.cpython-312.pyc
200.18 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dml.cpython-312.pyc
12.28 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ext.cpython-312.pyc
18.84 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
hstore.cpython-312.pyc
14.99 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
json.cpython-312.pyc
14.79 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
named_types.cpython-312.pyc
22.32 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
operators.cpython-312.pyc
2.09 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pg8000.cpython-312.pyc
29.53 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pg_catalog.cpython-312.pyc
10.69 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
provision.cpython-312.pyc
7.51 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
psycopg.cpython-312.pyc
36.67 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
psycopg2.cpython-312.pyc
35.11 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
psycopg2cffi.cpython-312.pyc
2.09 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ranges.cpython-312.pyc
33.94 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
types.cpython-312.pyc
11.23 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_psycopg_common.cpython-312.pyc
7.50 KB
lrw-r--r--
2025-04-04 08:02:01
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-312.pyc
3.33 KB
lrw-r--r--
2025-04-04 08:02:01
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).