REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 48.73 KB
Close
/opt/cloudlinux/venv/lib64/python3.11/site-packages/sqlalchemy/sql/__pycache__/functions.cpython-311.pyc
Text
Base64
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aXMgZ29pbmcgdG8gYmUgb3ZlcnJpZGRlbi5640dlbmVyaWNGdW5jdGlvbiAne30nIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCB3aXRoIGRpZmZlcmVudCBsZXR0ZXIgY2FzZSwgc28gdGhlIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBmdW5jdGlvbiAne30nIGlzIHN3aXRjaGVkIGludG8gY2FzZS1zZW5zaXRpdmUgbW9kZS4gR2VuZXJpY0Z1bmN0aW9uIG9iamVjdHMgd2lsbCBiZSBmdWxseSBjYXNlLWluc2Vuc2l0aXZlIGluIGEgZnV0dXJlIHJlbGVhc2Uu6QAAAAB6tEdlbmVyaWNGdW5jdGlvbihzKSAne30nIGFyZSBhbHJlYWR5IHJlZ2lzdGVyZWQgd2l0aCBkaWZmZXJlbnQgbGV0dGVyIGNhc2VzIGFuZCBtaWdodCBpbnRlcmFjdCB3aXRoICd7fScuIEdlbmVyaWNGdW5jdGlvbiBvYmplY3RzIHdpbGwgYmUgZnVsbHkgY2FzZS1pbnNlbnNpdGl2ZSBpbiBhIGZ1dHVyZSByZWxlYXNlLnpMVGhlIEdlbmVyaWNGdW5jdGlvbiAne30nIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBhbmQgaXMgZ29pbmcgdG8gYmUgb3ZlcnJpZGVuLk4pDNoJX3JlZ2lzdHJ52hhfY2FzZV9zZW5zaXRpdmVfcmVnaXN0cnlyBwAAANoJdGV4dF90eXBl2gVsb3dlctoPX0NBU0VfU0VOU0lUSVZF2gR3YXJu2gZmb3JtYXTaD3dhcm5fZGVwcmVjYXRlZNoEbGlzdNoEa2V5c9oGc29ydGVkKQbaCmlkZW50aWZpZXLaAmZu2gdwYWNrYWdl2gNyZWfaEmNhc2Vfc2Vuc2l0aXZlX3JlZ9oOcmF3X2lkZW50aWZpZXJzBgAAACAgICAgIHInAAAA2hFyZWdpc3Rlcl9mdW5jdGlvbnJAAAAAMAAAAHO2AQAAgAD1EgALFJBH1AocgEPdGTGwJ9QZOtAEFtgVH4BO3REVlB6gCtERK9QRK9cRMdIRMdERM9QRM4BK8AYACBKQU9AHGNAHGJhToBqcX7VP0B1D0B1D2AsZ0B0vsArUHTvQCzvQCzvdDBCMSfACAREt3y0zqlawStEtP9QtP/EFAw0O9AAD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YWx1ZXMuCgogICAgICAgIEEgaHlwb3RoZXRpY2FsIFNRTCBmdW5jdGlvbiAiaXNfZXF1YWwoKSIgd2hpY2ggY29tcGFyZXMgdG8gdmFsdWVzCiAgICAgICAgZm9yIGVxdWFsaXR5IHdvdWxkIGJlIHdyaXR0ZW4gaW4gdGhlIENvcmUgZXhwcmVzc2lvbiBsYW5ndWFnZSBhczo6CgogICAgICAgICAgICBleHByID0gZnVuYy5pc19lcXVhbCgiYSIsICJiIikKCiAgICAgICAgSWYgImlzX2VxdWFsKCkiIGFib3ZlIGlzIGNvbXBhcmluZyAiYSIgYW5kICJiIiBmb3IgZXF1YWxpdHksIHRoZQogICAgICAgIDptZXRoOmAuRnVuY3Rpb25FbGVtZW50LmFzX2NvbXBhcmlzb25gIG1ldGhvZCB3b3VsZCBiZSBpbnZva2VkIGFzOjoKCiAgICAgICAgICAgIGV4cHIgPSBmdW5jLmlzX2VxdWFsKCJhIiwgImIiKS5hc19jb21wYXJpc29uKDEsIDIpCgogICAgICAgIFdoZXJlIGFib3ZlLCB0aGUgaW50ZWdlciB2YWx1ZSAiMSIgcmVmZXJzIHRvIHRoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUKICAgICAgICAiaXNfZXF1YWwoKSIgZnVuY3Rpb24gYW5kIHRoZSBpbnRlZ2VyIHZhbHVlICIyIiByZWZlcnMgdG8gdGhlIHNlY29uZC4KCiAgICAgICAgVGhpcyB3b3VsZCBjcmVhdGUgYSA6Y2xhc3M6YC5CaW5hcnlFeHByZXNzaW9uYCB0aGF0IGlzIGVxdWl2YWxlbnQgdG86OgoKICAgICAgICAgICAgQmluYXJ5RXhwcmVzc2lvbigiYSIsICJiIiwgb3BlcmF0b3I9b3AuZXEpCgogICAgICAgIEhvd2V2ZXIsIGF0IHRoZSBTUUwgbGV2ZWwgaXQgd291bGQgc3RpbGwgcmVuZGVyIGFzCiAgICAgICAgImlzX2VxdWFsKCdhJywgJ2InKSIuCgogICAgICAgIFRoZSBPUk0sIHdoZW4gaXQgbG9hZHMgYSByZWxhdGVkIG9iamVjdCBvciBjb2xsZWN0aW9uLCBuZWVkcyB0byBiZSBhYmxlCiAgICAgICAgdG8gbWFuaXB1bGF0ZSB0aGUgImxlZnQiIGFuZCAicmlnaHQiIHNpZGVzIG9mIHRoZSBPTiBjbGF1c2Ugb2YgYSBKT0lOCiAgICAgICAgZXhwcmVzc2lvbi4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gcHJvdmlkZSBhIFNRTCBmdW5jdGlvbgogICAgICAgIGNvbnN0cnVjdCB0aGF0IGNhbiBhbHNvIHN1cHBseSB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZSBPUk0sIHdoZW4gdXNlZAogICAgICAgIHdpdGggdGhlIDpwYXJhbXJlZjpgX29ybS5yZWxhdGlvbnNoaXAucHJpbWFyeWpvaW5gIHBhcmFtZXRlci4KICAgICAgICBUaGUgcmV0dXJuCiAgICAgICAgdmFsdWUgaXMgYSBjb250YWlubWVudCBvYmplY3QgY2FsbGVkIDpjbGFzczpgLkZ1bmN0aW9uQXNCaW5hcnlgLgoKICAgICAgICBBbiBPUk0gZXhhbXBsZSBpcyBhcyBmb2xsb3dzOjoKCiAgICAgICAgICAgIGNsYXNzIFZlbnVlKEJhc2UpOgogICAgICAgICAgICAgICAgX190YWJsZW5hbWVfXyA9ICd2ZW51ZScKICAgICAgICAgICAgICAgIGlkID0gQ29sdW1uKEludGVnZXIsIHByaW1hcnlfa2V5PVRydWUpCiAgICAgICAgICAgICAgICBuYW1lID0gQ29sdW1uKFN0cmluZykKCiAgICAgICAgICAgICAgICBkZXNjZW5kYW50cyA9IHJlbGF0aW9uc2hpcCgKICAgICAgICAgICAgICAgICAgICAiVmVudWUiLAogICAgICAgICAgICAgICAgICAgIHByaW1hcnlqb2luPWZ1bmMuaW5zdHIoCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZShmb3JlaWduKG5hbWUpKSwgbmFtZSArICIvIgogICAgICAgICAgICAgICAgICAgICkuYXNfY29tcGFyaXNvbigxLCAyKSA9PSAxLAogICAgICAgICAgICAgICAgICAgIHZpZXdvbmx5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgb3JkZXJfYnk9bmFtZQogICAgICAgICAgICAgICAgKQoKICAgICAgICBBYm92ZSwgdGhlICJWZW51ZSIgY2xhc3MgY2FuIGxvYWQgZGVzY2VuZGFudCAiVmVudWUiIG9iamVjdHMgYnkKICAgICAgICBkZXRlcm1pbmluZyBpZiB0aGUgbmFtZSBvZiB0aGUgcGFyZW50IFZlbnVlIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlCiAgICAgICAgc3RhcnQgb2YgdGhlIGh5cG90aGV0aWNhbCBkZXNjZW5kYW50IHZhbHVlJ3MgbmFtZSwgZS5nLiAicGFyZW50MSIgd291bGQKICAgICAgICBtYXRjaCB1cCB0byAicGFyZW50MS9jaGlsZDEiLCBidXQgbm90IHRvICJwYXJlbnQyL2NoaWxkMSIuCgogICAgICAgIFBvc3NpYmxlIHVzZSBjYXNlcyBpbmNsdWRlIHRoZSAibWF0ZXJpYWxpemVkIHBhdGgiIGV4YW1wbGUgZ2l2ZW4gYWJvdmUsCiAgICAgICAgYXMgd2VsbCBhcyBtYWtpbmcgdXNlIG9mIHNwZWNpYWwgU1FMIGZ1bmN0aW9ucyBzdWNoIGFzIGdlb21ldHJpYwogICAgICAgIGZ1bmN0aW9ucyB0byBjcmVhdGUgam9pbiBjb25kaXRpb25zLgoKICAgICAgICA6cGFyYW0gbGVmdF9pbmRleDogdGhlIGludGVnZXIgMS1iYXNlZCBpbmRleCBvZiB0aGUgZnVuY3Rpb24gYXJndW1lbnQKICAgICAgICAgdGhhdCBzZXJ2ZXMgYXMgdGhlICJsZWZ0IiBzaWRlIG9mIHRoZSBleHByZXNzaW9uLgogICAgICAgIDpwYXJhbSByaWdodF9pbmRleDogdGhlIGludGVnZXIgMS1iYXNlZCBpbmRleCBvZiB0aGUgZnVuY3Rpb24gYXJndW1lbnQKICAgICAgICAgdGhhdCBzZXJ2ZXMgYXMgdGhlICJyaWdodCIgc2lkZSBvZiB0aGUgZXhwcmVzc2lvbi4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4zCgogICAgICAgICkB2hBGdW5jdGlvbkFzQmluYXJ5KQNySQAAANoKbGVmdF9pbmRleNoLcmlnaHRfaW5kZXhzAwAAACAgIHInAAAA2g1hc19jb21wYXJpc29ueh1GdW5jdGlvbkVsZW1lbnQu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IGFuZCAgaXMgYQogICAgY29sdW1uLW9yaWVudGVkIFNRTCBlbGVtZW50IGxpa2UgYW55IG90aGVyLCBhbmQgaXMgdXNlZCBpbiB0aGF0IHdheTo6CgogICAgICAgID4+PiBwcmludChzZWxlY3QoW2Z1bmMuY291bnQodGFibGUuYy5pZCldKSkKICAgICAgICBTRUxFQ1QgY291bnQoc29tZXRhYmxlLmlkKSBGUk9NIHNvbWV0YWJsZQoKICAgIEFueSBuYW1lIGNhbiBiZSBnaXZlbiB0byA6ZGF0YTpgLmZ1bmNgLiBJZiB0aGUgZnVuY3Rpb24gbmFtZSBpcyB1bmtub3duIHRvCiAgICBTUUxBbGNoZW15LCBpdCB3aWxsIGJlIHJlbmRlcmVkIGV4YWN0bHkgYXMgaXMuIEZvciBjb21tb24gU1FMIGZ1bmN0aW9ucwogICAgd2hpY2ggU1FMQWxjaGVteSBpcyBhd2FyZSBvZiwgdGhlIG5hbWUgbWF5IGJlIGludGVycHJldGVkIGFzIGEgKmdlbmVyaWMKICAgIGZ1bmN0aW9uKiB3aGljaCB3aWxsIGJlIGNvbXBpbGVkIGFwcHJvcHJpYXRlbHkgdG8gdGhlIHRhcmdldCBkYXRhYmFzZTo6CgogICAgICAgID4+PiBwcmludChmdW5jLmN1cnJlbnRfdGltZXN0YW1wKCkpCiAgICAgICAgQ1VSUkVOVF9USU1FU1RBTVAKCiAgICBUbyBjYWxsIGZ1bmN0aW9ucyB3aGljaCBhcmUgcHJlc2VudCBpbiBkb3Qtc2VwYXJhdGVkIHBhY2thZ2VzLAogICAgc3BlY2lmeSB0aGVtIGluIHRoZSBzYW1lIG1hbm5lcjo6CgogICAgICAgID4+PiBwcmludChmdW5jLnN0YXRzLnlpZWxkX2N1cnZlKDUsIDEwKSkKICAgICAgICBzdGF0cy55aWVsZF9jdXJ2ZSg6eWllbGRfY3VydmVfMSwgOnlpZWxkX2N1cnZlXzIpCgogICAgU1FMQWxjaGVteSBjYW4gYmUgbWFkZSBhd2FyZSBvZiB0aGUgcmV0dXJuIHR5cGUgb2YgZnVuY3Rpb25zIHRvIGVuYWJsZQogICAgdHlwZS1zcGVjaWZpYyBsZXhpY2FsIGFuZCByZXN1bHQtYmFzZWQgYmVoYXZpb3IuIEZvciBleGFtcGxlLCB0byBlbnN1cmUKICAgIHRoYXQgYSBzdHJpbmctYmFzZWQgZnVuY3Rpb24gcmV0dXJucyBhIFVuaWNvZGUgdmFsdWUgYW5kIGlzIHNpbWlsYXJseQogICAgdHJlYXRlZCBhcyBhIHN0cmluZyBpbiBleHByZXNzaW9ucywgc3BlY2lmeQogICAgOmNsYXNzOmB+c3FsYWxjaGVteS50eXBlcy5Vbmljb2RlYCBhcyB0aGUgdHlwZToKCiAgICAgICAgPj4+IHByaW50KGZ1bmMubXlfc3RyaW5nKHUnaGknLCB0eXBlXz1Vbmljb2RlKSArICcgJyArCiAgICAgICAgLi4uICAgICAgIGZ1bmMubXlfc3RyaW5nKHUndGhlcmUnLCB0eXBlXz1Vbmljb2RlKSkKICAgICAgICBteV9zdHJpbmcoOm15X3N0cmluZ18xKSB8fCA6bXlfc3RyaW5nXzIgfHwgbXlfc3RyaW5nKDpteV9zdHJpbmdfMykKCiAgICBUaGUgb2JqZWN0IHJldHVybmVkIGJ5IGEgOmRhdGE6YC5mdW5jYCBjYWxsIGlzIHVzdWFsbHkgYW4gaW5zdGFuY2Ugb2YKICAgIDpjbGFzczpgLkZ1bmN0aW9uYC4KICAgIFRoaXMgb2JqZWN0IG1lZXRzIHRoZSAiY29sdW1uIiBpbnRlcmZhY2UsIGluY2x1ZGluZyBjb21wYXJpc29uIGFuZCBsYWJlbGluZwogICAgZnVuY3Rpb25zLiAgVGhlIG9iamVjdCBjYW4gYWxzbyBiZSBwYXNzZWQgdGhlIDptZXRoOmB+LkNvbm5lY3RhYmxlLmV4ZWN1dGVgCiAgICBtZXRob2Qgb2YgYSA6Y2xhc3M6YF9lbmdpbmUuQ29ubmVjdGlvbmAgb3IgOmNsYXNzOmBfZW5naW5lLkVuZ2luZWAsCiAgICB3aGVyZSBpdCB3aWxsIGJlCiAgICB3cmFwcGVkIGluc2lkZSBvZiBhIFNFTEVDVCBzdGF0ZW1lbnQgZmlyc3Q6OgoKICAgICAgICBwcmludChjb25uZWN0aW9uLmV4ZWN1dGUoZnVuYy5jdXJyZW50X3RpbWVzdGFtcCgpKS5zY2FsYXIoKSkKCiAgICBJbiBhIGZldyBleGNlcHRpb24gY2FzZXMsIHRoZSA6ZGF0YTpgLmZ1bmNgIGFjY2Vzc29yCiAgICB3aWxsIHJlZGlyZWN0IGEgbmFtZSB0byBhIGJ1aWx0LWluIGV4cHJlc3Npb24gc3VjaCBhcyA6ZnVuYzpgLmNhc3RgCiAgICBvciA6ZnVuYzpgLmV4dHJhY3RgLCBhcyB0aGVzZSBuYW1lcyBoYXZlIHdlbGwta25vd24gbWVhbmluZwogICAgYnV0IGFyZSBub3QgZXhhY3RseSB0aGUgc2FtZSBhcyAiZnVuY3Rpb25zIiBmcm9tIGEgU1FMQWxjaGVteQogICAgcGVyc3BlY3RpdmUuCgogICAgRnVuY3Rpb25zIHdoaWNoIGFyZSBpbnRlcnByZXRlZCBhcyAiZ2VuZXJpYyIgZnVuY3Rpb25zIGtub3cgaG93IHRvCiAgICBjYWxjdWxhdGUgdGhlaXIgcmV0dXJuIHR5cGUgYXV0b21hdGljYWxseS4gRm9yIGEgbGlzdGluZyBvZiBrbm93biBnZW5lcmljCiAgICBmdW5jdGlvbnMsIHNlZSA6cmVmOmBnZW5lcmljX2Z1bmN0aW9uc2AuCgogICAgLi4gbm90ZTo6CgogICAgICAgIFRoZSA6ZGF0YTpgLmZ1bmNgIGNvbnN0cnVjdCBoYXMgb25seSBsaW1pdGVkIHN1cHBvcnQgZm9yIGNhbGxpbmcKICAgICAgICBzdGFuZGFsb25lICJzdG9yZWQgcHJvY2VkdXJlcyIsIGVzcGVjaWFsbHkgdGhvc2Ugd2l0aCBzcGVjaWFsCiAgICAgICAgcGFyYW1ldGVyaXphdGlvbiBjb25jZXJucy4KCiAgICAgICAgU2VlIHRoZSBzZWN0aW9uIDpyZWY6YHN0b3JlZF9wcm9jZWR1cmVzYCBmb3IgZGV0YWlscyBvbiBob3cgdG8gdXNlCiAgICAgICAgdGhlIERCQVBJLWxldmVsIGBgY2FsbHByb2MoKWBgIG1ldGhvZCBmb3IgZnVsbHkgdHJhZGl0aW9uYWwgc3RvcmVkCiAgICAgICAgcHJvY2VkdXJlcy4KCiAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgOnJlZjpgY29yZXR1dG9yaWFsX2Z1bmN0aW9uc2AgLSBpbiB0aGUgQ29yZSBUdXRvcmlhbAoKICAgICAg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ngAAAHJWAAAAcqMAAABypAAAAHMBAAAAQHInAAAAct0AAABy3QAAAKECAABzQQAAAPiAAIAAgACAAIAA8AITBUMB8AATBUMB8AATBUMB8AATBUMB8AATBUMB8AATBUMB8AATBUMB8AATBUMB8AATBUMBciYAAABy3QAAAGMAAAAAAAAAAAAAAAABAAAAAAAAAPMgAAAAlwBlAFoBZABaAmQBWgNkAloEZANaBWQEhABaBmQFUwApBtoPR2VuZXJpY0Z1bmN0aW9uYcsLAABEZWZpbmUgYSAnZ2VuZXJpYycgZnVuY3Rpb24uCgogICAgQSBnZW5lcmljIGZ1bmN0aW9uIGlzIGEgcHJlLWVzdGFibGlzaGVkIDpjbGFzczpgLkZ1bmN0aW9uYAogICAgY2xhc3MgdGhhdCBpcyBpbnN0YW50aWF0ZWQgYXV0b21hdGljYWxseSB3aGVuIGNhbGxlZAogICAgYnkgbmFtZSBmcm9tIHRoZSA6ZGF0YTpgLmZ1bmNgIGF0dHJpYnV0ZS4gICAgTm90ZSB0aGF0CiAgICBjYWxsaW5nIGFueSBuYW1lIGZyb20gOmRhdGE6YC5mdW5jYCBoYXMgdGhlIGVmZmVjdCB0aGF0CiAgICBhIG5ldyA6Y2xhc3M6YC5GdW5jdGlvbmAgaW5zdGFuY2UgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LAogICAgZ2l2ZW4gdGhhdCBuYW1lLiAgVGhlIHByaW1hcnkgdXNlIGNhc2UgZm9yIGRlZmluaW5nCiAgICBhIDpjbGFzczpgLkdlbmVyaWNGdW5jdGlvbmAgY2xhc3MgaXMgc28gdGhhdCBhIGZ1bmN0aW9uCiAgICBvZiBhIHBhcnRpY3VsYXIgbmFtZSBtYXkgYmUgZ2l2ZW4gYSBmaXhlZCByZXR1cm4gdHlwZS4KICAgIEl0IGNhbiBhbHNvIGluY2x1ZGUgY3VzdG9tIGFyZ3VtZW50IHBhcnNpbmcgc2NoZW1lcyBhcyB3ZWxsCiAgICBhcyBhZGRpdGlvbmFsIG1ldGhvZHMuCgogICAgU3ViY2xhc3NlcyBvZiA6Y2xhc3M6YC5HZW5lcmljRnVuY3Rpb25gIGFyZSBhdXRvbWF0aWNhbGx5CiAgICByZWdpc3RlcmVkIHVuZGVyIHRoZSBuYW1lIG9mIHRoZSBjbGFzcy4gIEZvcgogICAgZXhhbXBsZSwgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gYGBhc191dGMoKWBgIHdvdWxkCiAgICBiZSBhdmFpbGFibGUgaW1tZWRpYXRlbHk6OgoKICAgICAgICBmcm9tIHNxbGFsY2hlbXkuc3FsLmZ1bmN0aW9ucyBpbXBvcnQgR2VuZXJpY0Z1bmN0aW9uCiAgICAgICAgZnJvbSBzcWxhbGNoZW15LnR5cGVzIGltcG9ydCBEYXRlVGltZQoKICAgICAgICBjbGFzcyBhc191dGMoR2VuZXJpY0Z1bmN0aW9uKToKICAgICAgICAgICAgdHlwZSA9IERhdGVUaW1lCgogICAgICAgIHByaW50KHNlbGVjdChbZnVuYy5hc191dGMoKV0pKQoKICAgIFVzZXItZGVmaW5lZCBnZW5lcmljIGZ1bmN0aW9ucyBjYW4gYmUgb3JnYW5pemVkIGludG8KICAgIHBhY2thZ2VzIGJ5IHNwZWNpZnlpbmcgdGhlICJwYWNrYWdlIiBhdHRyaWJ1dGUgd2hlbiBkZWZpbmluZwogICAgOmNsYXNzOmAuR2VuZXJpY0Z1bmN0aW9uYC4gICBUaGlyZCBwYXJ0eSBsaWJyYXJpZXMKICAgIGNvbnRhaW5pbmcgbWFueSBmdW5jdGlvbnMgbWF5IHdhbnQgdG8gdXNlIHRoaXMgaW4gb3JkZXIKICAgIHRvIGF2b2lkIG5hbWUgY29uZmxpY3RzIHdpdGggb3RoZXIgc3lzdGVtcy4gICBGb3IgZXhhbXBsZSwKICAgIGlmIG91ciBgYGFzX3V0YygpYGAgZnVuY3Rpb24gd2VyZSBwYXJ0IG9mIGEgcGFja2FnZQogICAgInRpbWUiOjoKCiAgICAgICAgY2xhc3MgYXNfdXRjKEdlbmVyaWNGdW5jdGlvbik6CiAgICAgICAgICAgIHR5cGUgPSBEYXRlVGltZQogICAgICAgICAgICBwYWNrYWdlID0gInRpbWUiCgogICAgVGhlIGFib3ZlIGZ1bmN0aW9uIHdvdWxkIGJlIGF2YWlsYWJsZSBmcm9tIDpkYXRhOmAuZnVuY2AKICAgIHVzaW5nIHRoZSBwYWNrYWdlIG5hbWUgYGB0aW1lYGA6OgoKICAgICAgICBwcmludChzZWxlY3QoW2Z1bmMudGltZS5hc191dGMoKV0pKQoKICAgIEEgZmluYWwgb3B0aW9uIGlzIHRvIGFsbG93IHRoZSBmdW5jdGlvbiB0byBiZSBhY2Nlc3NlZAogICAgZnJvbSBvbmUgbmFtZSBpbiA6ZGF0YTpgLmZ1bmNgIGJ1dCB0byByZW5kZXIgYXMgYSBkaWZmZXJlbnQgbmFtZS4KICAgIFRoZSBgYGlkZW50aWZpZXJgYCBhdHRyaWJ1dGUgd2lsbCBvdmVycmlkZSB0aGUgbmFtZSB1c2VkIHRvCiAgICBhY2Nlc3MgdGhlIGZ1bmN0aW9uIGFzIGxvYWRlZCBmcm9tIDpkYXRhOmAuZnVuY2AsIGJ1dCB3aWxsIHJldGFpbgogICAgdGhlIHVzYWdlIG9mIGBgbmFtZWBgIGFzIHRoZSByZW5kZXJlZCBuYW1lOjoKCiAgICAgICAgY2xhc3MgR2VvQnVmZmVyKEdlbmVyaWNGdW5jdGlvbik6CiAgICAgICAgICAgIHR5cGUgPSBHZW9tZXRyeQogICAgICAgICAgICBwYWNrYWdlID0gImdlbyIKICAgICAgICAgICAgbmFtZSA9ICJTVF9CdWZmZXIiCiAgICAgICAgICAgIGlkZW50aWZpZXIgPSAiYnVmZmVyIgoKICAgIFRoZSBhYm92ZSBmdW5jdGlvbiB3aWxsIHJlbmRlciBhcyBmb2xsb3dzOjoKCiAgICAgICAgPj4+IHByaW50KGZ1bmMuZ2VvLmJ1ZmZlcigpKQogICAgICAgIFNUX0J1ZmZlcigpCgogICAgVGhlIG5hbWUgd2lsbCBiZSByZW5kZXJlZCBhcyBpcywgaG93ZXZlciB3aXRob3V0IHF1b3RpbmcgdW5sZXNzIHRoZSBuYW1lCiAgICBjb250YWlucyBzcGVjaWFsIGNoYXJhY3RlcnMgdGhhdCByZXF1aXJlIHF1b3RpbmcuICBUbyBmb3JjZSBxdW90aW5nCiAgICBvbiBvciBvZmYgZm9yIHRoZSBuYW1lLCB1c2UgdGhlIDpjbGFzczpgLnNxbGFsY2hlbXkuc3FsLnF1b3RlZF9uYW1lYAogICAgY29uc3RydWN0OjoKCiAgICAgICAgZnJvbSBzcWxhbGNoZW15LnNxbCBpbXBvcnQgcXVvdGVkX25h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ICAgICkuZ3JvdXBfYnkoZnVuYy5yb2xsdXAodGFibGUuYy5jb2xfMSwgdGFibGUuYy5jb2xfMikpCgogICAgLi4gdmVyc2lvbmFkZGVkOjogMS4yCgogICAgVE5yXAEAAHIlAAAAciYAAAByJwAAAHJfAQAAcl8BAABhBAAAcl0BAAByJgAAAHJfAQAAYwAAAAAAAAAAAAAAAAEAAAAAAAAA8xYAAACXAGUAWgFkAFoCZAFaA2QCWgRkA1MAKQTaDWdyb3VwaW5nX3NldHNhMAMAAEltcGxlbWVudCB0aGUgYGBHUk9VUElORyBTRVRTYGAgZ3JvdXBpbmcgb3BlcmF0aW9uLgoKICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyBwYXJ0IG9mIHRoZSBHUk9VUCBCWSBvZiBhIHN0YXRlbWVudCwKICAgIGUuZy4gOm1ldGg6YF9leHByZXNzaW9uLlNlbGVjdC5ncm91cF9ieWA6OgoKICAgICAgICBzdG10ID0gc2VsZWN0KAogICAgICAgICAgICBbZnVuYy5zdW0odGFibGUuYy52YWx1ZSksIHRhYmxlLmMuY29sXzEsIHRhYmxlLmMuY29sXzJdCiAgICAgICAgKS5ncm91cF9ieShmdW5jLmdyb3VwaW5nX3NldHModGFibGUuYy5jb2xfMSwgdGFibGUuYy5jb2xfMikpCgogICAgSW4gb3JkZXIgdG8gZ3JvdXAgYnkgbXVsdGlwbGUgc2V0cywgdXNlIHRoZSA6ZnVuYzpgLnR1cGxlX2AgY29uc3RydWN0OjoKCiAgICAgICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCB0dXBsZV8KCiAgICAgICAgc3RtdCA9IHNlbGVjdCgKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgZnVuYy5zdW0odGFibGUuYy52YWx1ZSksCiAgICAgICAgICAgICAgICB0YWJsZS5jLmNvbF8xLCB0YWJsZS5jLmNvbF8yLAogICAgICAgICAgICAgICAgdGFibGUuYy5jb2xfM10KICAgICAgICApLmdyb3VwX2J5KAogICAgICAgICAgICBmdW5jLmdyb3VwaW5nX3NldHMoCiAgICAgICAgICAgICAgICB0dXBsZV8odGFibGUuYy5jb2xfMSwgdGFibGUuYy5jb2xfMiksCiAgICAgICAgICAgICAgICB0dXBsZV8odGFibGUuYy52YWx1ZSwgdGFibGUuYy5jb2xfMyksCiAgICAgICAgICAgICkKICAgICAgICApCgoKICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMgoKICAgIFROclwBAAByJQAAAHImAAAAcicAAAByYQEAAHJhAQAAcQQAAHMfAAAAgACAAIAAgACAAPACHAUI8AAcBQjwOgARFYBJgEmASXImAAAAcmEBAABOKQFyLAAAAClScp8AAADaAHIDAAAAcgQAAAByBQAAAHIGAAAAcgcAAAByQgEAANoEYmFzZXIIAAAAcgkAAADaCGVsZW1lbnRzcgoAAAByDAAAAHINAAAAcg4AAAByDwAAAHIQAAAAchEAAAByEgAAAHITAAAAchUAAAByFgAAAHIXAAAAchkAAAByGwAAANoKc2VsZWN0YWJsZXIcAAAAch0AAAByHgAAANoIdmlzaXRvcnNyHwAAAHIjAAAAciQAAAByLwAAAHIwAAAA2gZzeW1ib2xyMwAAAHJAAAAAckIAAABybwAAANoGb2JqZWN0crkAAABy0QAAANoIbW9kaWZpZXJyzQAAAHLdAAAA2g53aXRoX21ldGFjbGFzc3LpAAAAcvIAAABy+gAAAHL+AAAAcgMBAAByBwEAAHILAQAAcg0BAAByDwEAAHIUAQAAchkBAAByHQEAAHIfAQAAciQBAAByKAEAAHIrAQAAci0BAAByLwEAAHIxAQAAcjMBAAByNQEAAHI3AQAAcjkBAAByQAEAAHJHAQAAckkBAAByTQEAAHJPAQAAclMBAAByVQEAAHJZAQAAclsBAAByXwEAAHJhAQAAciUAAAByJgAAAHInAAAA+gg8bW9kdWxlPnJrAQAAAQAAAHNZCQAA8AMBAQHwEAIBBPAAAgEE8AYAARnQABjQABjQABjQABjQABjYABfQABfQABfQABfQABfQABfYABTQABTQABTQABTQABTQABTYABbQABbQABbQABbQABbQABbYAB3QAB3QAB3QAB3QAB3QAB3YACLQACLQACLQACLQACLQACLYABzQABzQABzQABzQABzQABzYABzQABzQABzQABzQABzQABzYACfQACfQACfQACfQACfQACfYACXQACXQACXQACXQACXQACXYACbQACbQACbQACbQACbQACbYACPQACPQACPQACPQACPQACPYABrQABrQABrQABrQABrQABrYACDQACDQACDQACDQACDQACDYACPQACPQACPQACPQACPQACPYAB3QAB3QAB3QAB3QAB3QAB3YACTQACTQACTQACTQACTQACTYAB7QAB7QAB7QAB7QAB7QAB7YACTQACTQACTQACTQACTQACTYABrQABrQABrQABrQABrQABrYACHQACHQACHQACHQACHQACHYAB3QAB3QAB3QAB3QAB3QAB3YACLQACLQACLQACLQACLQACLYAB7QAB7QAB7QAB7QAB7QAB7YACPQACPQACPQACPQACPQACPYABPQABPQABPQABPQABPQABPwBgANHYhE1AwcmFTRDCLUDCKACdgbK5g01Bsr0CxK0CxK0RtL1BtL0AAY2BIdkCSUK9gJIvACAQkM8AUEEwLxAAQTAvQABBMCgA/wDj8BOPAAPwE48AA/ATjwAD8BOPBEAkkFAUwB8ABJBQFMAfAASQUBTAHwAEkFAUwB8ABJBQFMAZBqoC2wGvEASQUBTAH0AEkFAUwB8ABJBQFMAfBYCiMBPPAAIwE88AAjATzwACMBPPAAIwE80Bcn8QAjATz0ACMBPPAAIwE88EwBdwEBCvAAdwEBCvAAdwEBCvAAdwEBCvAAdwEBCpgW8QB3AQEK9AB3AQEK8AB3AQEK8HQDAAga0AcZ0Qcb1AcbgATYDyHUDymABIQM4Asd0AsdoEXQCyrRCyrUCyqACPAGOgEK8AA6AQrwADoBCvAAOgEK8AA6AQqIf/EAOgEK9AA6AQrwADoBCvB6ARQBQwHwABQBQwHwABQBQwHwABQBQwHwABQBQwGQPfEAFAFDAfQAFAFDAfAAFAFDAfAuZgEBCvAAZgEBCvAAZgEBCvAAZgEBCvAAZgEBCtAWKZBk1BYpqCy4CNEWQdQWQfEAZgEBCvQAZgEBCvAAZgEBCvBSAwABEtAAEZAmmCTRAB/UAB/QAB/YABHQABGQKZhX0QAl1AAl0AAl8AYWARLwABYBEvAAFgES8AAWARLwABYBEpAf8QAWARL0ABYBEvAAFgES8DICATjwAAIBOPAAAgE48AACATjwAAIBOJA/8QACATj0AAIBOPAAAgE48AoHAUIB8AAHAUIB8AAHAUIB8AAHAUIB8AAHAUIBmB/xAAcBQgH0AAcBQgHwAAcBQgHwFAEBFfAAAQEV8AABARXwAAEBFfAAAQEV0A8h8QABARX0AAEBFfAAAQEV8AgBAQnwAAEBCfAAAQEJ8AABAQnwAAEBCdAKHPEAAQEJ9AABAQnwAAEBCfAIAQEJ8AABAQnwAAEBCfAAAQEJ8AABAQnQChzxAAEBCfQAAQEJ8AABAQnwCAEBCfAAAQEJ8AABAQnwAAEBCfAAAQEJ0Aoc8QABAQn0AAEBCfAAAQEJ8AgBAR3wAAEBHfAAAQEd8AABAR3wAAEBHYgv8QABAR30AAEBHfAAAQEd8AgBARvwAAEBG/AAAQEb8AABARvwAAEBG4hf8QABARv0AAEBG/AAAQEb8AgEATbwAAQBNvAABAE28AAEATbwAAQBNpAv8QAEATb0AAQBNvAABAE28A4BARXwAAEBFfAAAQEV8AABARXwAAEBFYhf8QABARX0AAEBFfAAAQEV8AgaATrwABoBOvAAGgE68AAaATrwABoBOohP8QAaATr0ABoBOvAAGgE68DoBARnwAAEBGfAAAQEZ8AABARnwAAEBGZA88QABARn0AAEBGfAAAQEZ8AgBARnwAAEBGfAAAQEZ8AABARnwAAEBGZA88QABARn0AAEBGfAAAQEZ8AgBAR3wAAEBHfAAAQEd8AABAR3wAAEBHZgM8QABAR30AAEBHfAAAQEd8AgBARvwAAEBG/AAAQEb8AABARvwAAEBG5A88QABARv0AAEBG/AAAQEb8AgBAR3wAAEBHfAAAQEd8AABAR3wAAEBHZAM8QABAR30AAEBHfAAAQEd8AgBAR3wAAEBHfAAAQEd8AABAR3wAAEBHZBc8QABAR30AAEBHfAAAQEd8AgBARvwAAEBG/AAAQEb8AABARvwAAEBG5A88QABARv0AAEBG/AAAQEb8AgBAR3wAAEBHfAAAQEd8AABAR3wAAEBHYhs8QABAR30AAEBHfAAAQEd8AgBARvwAAEBG/AAAQEb8AABARvwAAEBG4g88QABARv0AAEBG/AAAQEb8AgiATnwACIBOfAAIgE58AAiATnwACIBOZAP8QAiATn0ACIBOfAAIgE58EoBDQEk8AANASTwAA0BJPAADQEk8AANASSQT/EADQEk9AANASTwAA0BJPAgCgEI8AAKAQjwAAoBCPAACgEI8AAKAQiIPfEACgEI9AAKAQjwAAoBCPAaDgEi8AAOASLwAA4BIvAADgEi8AAOASKQbfEADgEi9AAOASLwAA4BIvAiDgEi8AAOASLwAA4BIvAADgEi8AAOASKQbfEADgEi9AAOASLwAA4BIvAiDAEe8AAMAR7wAAwBHvAADAEe8AAMAR6IP/EADAEe9AAMAR7wAAwBHvAeDAEe8AAMAR7wAAwBHvAADAEe8AAMAR6QH/EADAEe9AAMAR7wAAwBHvAeDAEe8AAMAR7wAAwBHvAADAEe8AAMAR6QP/EADAEe9AAMAR7wAAwBHvAeDAEe8AAMAR7wAAwBHvAADAEe8AAMAR6QD/EADAEe9AAMAR7wAAwBHvAeDQEV8AANARXwAA0BFfAADQEV8AANARWIP/EADQEV9AANARXwAA0BFfAgDQEV8AANARXwAA0BFfAADQEV8AANARWIX/EADQEV9AANARXwAA0BFfAgHgEV8AAeARXwAB4BFfAAHgEV8AAeARWQT/EAHgEV9AAeARXwAB4BFfAAHgEV8AAeARVyJgAAAA==
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
annotation.cpython-311.pyc
8.78 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
base.cpython-311.pyc
33.95 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
compiler.cpython-311.pyc
156.80 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
crud.cpython-311.pyc
28.82 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ddl.cpython-311.pyc
53.22 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
default_comparator.cpython-311.pyc
13.43 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dml.cpython-311.pyc
39.22 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
elements.cpython-311.pyc
197.28 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
expression.cpython-311.pyc
9.42 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
functions.cpython-311.pyc
48.73 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
naming.cpython-311.pyc
8.92 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
operators.cpython-311.pyc
55.27 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
schema.cpython-311.pyc
210.17 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
selectable.cpython-311.pyc
171.80 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
sqltypes.cpython-311.pyc
124.29 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
type_api.cpython-311.pyc
59.47 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
util.cpython-311.pyc
41.21 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
visitors.cpython-311.pyc
20.17 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-311.pyc
4.79 KB
lrw-r--r--
2026-02-06 08:01:45
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).