REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 42.24 KB
Close
/opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/ext/__pycache__/mutable.cpython-311.pyc
Text
Base64
pw0NCgAAAACjfG9pTHwAAOMAAAAAAAAAAAAAAAAGAAAAAAAAAPM6AQAAlwBkAFoAZAFkAmwBWgFkA2QEbAJtA1oDAQBkA2QFbAJtBFoEAQBkA2QGbAVtBloGAQBkA2QHbAVtB1oHAQBkA2QIbAVtCFoIAQBkA2QJbAltCloKAQBkA2QKbAttDFoMAQBkA2QLbA1tDloOAQACAEcAZAyEAGQNZQ+mAwAAqwMAAAAAAAAAAFoQAgBHAGQOhABkD2UQpgMAAKsDAAAAAAAAAABaEQIARwBkEIQAZBFlEKYDAACrAwAAAAAAAAAAWhJkEoQAWhMCAGUTpgAAAKsAAAAAAAAAAAABAAIARwBkE4QAZBRlEWUUpgQAAKsEAAAAAAAAAABaFQIARwBkFYQAZBZlEWUWpgQAAKsEAAAAAAAAAABaFwIARwBkF4QAZBhlEWUYpgQAAKsEAAAAAAAAAABaGWQCUwApGWEqMgAAUHJvdmlkZSBzdXBwb3J0IGZvciB0cmFja2luZyBvZiBpbi1wbGFjZSBjaGFuZ2VzIHRvIHNjYWxhciB2YWx1ZXMsCndoaWNoIGFyZSBwcm9wYWdhdGVkIGludG8gT1JNIGNoYW5nZSBldmVudHMgb24gb3duaW5nIHBhcmVudCBvYmplY3RzLgoKLi4gX211dGFibGVfc2NhbGFyczoKCkVzdGFibGlzaGluZyBNdXRhYmlsaXR5IG9uIFNjYWxhciBDb2x1bW4gVmFsdWVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpBIHR5cGljYWwgZXhhbXBsZSBvZiBhICJtdXRhYmxlIiBzdHJ1Y3R1cmUgaXMgYSBQeXRob24gZGljdGlvbmFyeS4KRm9sbG93aW5nIHRoZSBleGFtcGxlIGludHJvZHVjZWQgaW4gOnJlZjpgdHlwZXNfdG9wbGV2ZWxgLCB3ZQpiZWdpbiB3aXRoIGEgY3VzdG9tIHR5cGUgdGhhdCBtYXJzaGFscyBQeXRob24gZGljdGlvbmFyaWVzIGludG8KSlNPTiBzdHJpbmdzIGJlZm9yZSBiZWluZyBwZXJzaXN0ZWQ6OgoKICAgIGZyb20gc3FsYWxjaGVteS50eXBlcyBpbXBvcnQgVHlwZURlY29yYXRvciwgVkFSQ0hBUgogICAgaW1wb3J0IGpzb24KCiAgICBjbGFzcyBKU09ORW5jb2RlZERpY3QoVHlwZURlY29yYXRvcik6CiAgICAgICAgIlJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHN0cnVjdHVyZSBhcyBhIGpzb24tZW5jb2RlZCBzdHJpbmcuIgoKICAgICAgICBpbXBsID0gVkFSQ0hBUgoKICAgICAgICBkZWYgcHJvY2Vzc19iaW5kX3BhcmFtKHNlbGYsIHZhbHVlLCBkaWFsZWN0KToKICAgICAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzb24uZHVtcHModmFsdWUpCiAgICAgICAgICAgIHJldHVybiB2YWx1ZQoKICAgICAgICBkZWYgcHJvY2Vzc19yZXN1bHRfdmFsdWUoc2VsZiwgdmFsdWUsIGRpYWxlY3QpOgogICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHZhbHVlID0ganNvbi5sb2Fkcyh2YWx1ZSkKICAgICAgICAgICAgcmV0dXJuIHZhbHVlCgpUaGUgdXNhZ2Ugb2YgYGBqc29uYGAgaXMgb25seSBmb3IgdGhlIHB1cnBvc2VzIG9mIGV4YW1wbGUuIFRoZQo6bW9kOmBzcWxhbGNoZW15LmV4dC5tdXRhYmxlYCBleHRlbnNpb24gY2FuIGJlIHVzZWQKd2l0aCBhbnkgdHlwZSB3aG9zZSB0YXJnZXQgUHl0aG9uIHR5cGUgbWF5IGJlIG11dGFibGUsIGluY2x1ZGluZwo6Y2xhc3M6YC5QaWNrbGVUeXBlYCwgOmNsYXNzOmBfcG9zdGdyZXNxbC5BUlJBWWAsIGV0Yy4KCldoZW4gdXNpbmcgdGhlIDptb2Q6YHNxbGFsY2hlbXkuZXh0Lm11dGFibGVgIGV4dGVuc2lvbiwgdGhlIHZhbHVlIGl0c2VsZgp0cmFja3MgYWxsIHBhcmVudHMgd2hpY2ggcmVmZXJlbmNlIGl0LiAgQmVsb3csIHdlIGlsbHVzdHJhdGUgYSBzaW1wbGUKdmVyc2lvbiBvZiB0aGUgOmNsYXNzOmAuTXV0YWJsZURpY3RgIGRpY3Rpb25hcnkgb2JqZWN0LCB3aGljaCBhcHBsaWVzCnRoZSA6Y2xhc3M6YC5NdXRhYmxlYCBtaXhpbiB0byBhIHBsYWluIFB5dGhvbiBkaWN0aW9uYXJ5OjoKCiAgICBmcm9tIHNxbGFsY2hlbXkuZXh0Lm11dGFibGUgaW1wb3J0IE11dGFibGUKCiAgICBjbGFzcyBNdXRhYmxlRGljdChNdXRhYmxlLCBkaWN0KToKICAgICAgICBAY2xhc3NtZXRob2QKICAgICAgICBkZWYgY29lcmNlKGNscywga2V5LCB2YWx1ZSk6CiAgICAgICAgICAgICJDb252ZXJ0IHBsYWluIGRpY3Rpb25hcmllcyB0byBNdXRhYmxlRGljdC4iCgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgTXV0YWJsZURpY3QpOgogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11dGFibGVEaWN0KHZhbHVlKQoKICAgICAgICAgICAgICAgICMgdGhpcyBjYWxsIHdpbGwgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICAgICAgICAgcmV0dXJuIE11dGFibGUuY29lcmNlKGtleSwgdmFsdWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKCiAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgICAgICAiRGV0ZWN0IGRpY3Rpb25hcnkgc2V0IGV2ZW50cyBhbmQgZW1pdCBjaGFuZ2UgZXZlbnRzLiIKCiAgICAgICAgICAgIGRpY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSkKICAgICAgICAgICAgc2VsZi5jaGFuZ2VkKCkKCiAgICAgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgICAgICJEZXRlY3QgZGljdGlvbmFyeSBkZWwgZXZlbnRzIGFuZCBlbWl0IGNoYW5nZSBldmVudHMuIgoKICAgICAgICAgICAgZGljdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpCiAgICAgICAgICAgIHNlbGYuY2hhbmdlZCgpCgpUaGUgYWJvdmUgZGljdGlvbmFyeSBjbGFzcyB0YWtlcyB0aGUgYXBwcm9hY2ggb2Ygc3ViY2xhc3NpbmcgdGhlIFB5dGhvbgpidWlsdC1pbiBgYGRpY3RgYCB0byBwcm9kdWNlIGEgZGljdApzdWJjbGFzcyB3aGljaCByb3V0ZXMgYWxsIG11dGF0aW9uIGV2ZW50cyB0aHJvdWdoIGBgX19zZXRpdGVtX19gYC4gIFRoZXJlIGFyZQp2YXJpYW50cyBvbiB0aGlzIGFwcHJvYWNoLCBzdWNoIGFzIHN1YmNsYXNzaW5nIGBgVXNlckRpY3QuVXNlckRpY3RgYCBvcgpgYGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nYGA7IHRoZSBwYXJ0IHRoYXQncyBpbXBvcnRhbnQgdG8gdGhpcyBleGFtcGxlIGlzCnRoYXQgdGhlIDptZXRoOmAuTXV0YWJsZS5jaGFuZ2VkYCBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIGFuIGluLXBsYWNlCmNoYW5nZSB0byB0aGUgZGF0YXN0cnVjdHVyZSB0YWtlcyBwbGFjZS4KCldlIGFsc28gcmVkZWZpbmUgdGhlIDptZXRoOmAuTXV0YWJsZS5jb2VyY2VgIG1ldGhvZCB3aGljaCB3aWxsIGJlIHVzZWQgdG8KY29udmVydCBhbnkgdmFsdWVzIHRoYXQgYXJlIG5vdCBpbnN0YW5jZXMgb2YgYGBNdXRhYmxlRGljdGBgLCBzdWNoCmFzIHRoZSBwbGFpbiBkaWN0aW9uYXJpZXMgcmV0dXJuZWQgYnkgdGhlIGBganNvbmBgIG1vZHVsZSwgaW50byB0aGUKYXBwcm9wcmlhdGUgdHlwZS4gIERlZmluaW5nIHRoaXMgbWV0aG9kIGlzIG9wdGlvbmFsOyB3ZSBjb3VsZCBqdXN0IGFzIHdlbGwKY3JlYXRlZCBvdXIgYGBKU09ORW5jb2RlZERpY3RgYCBzdWNoIHRoYXQgaXQgYWx3YXlzIHJldHVybnMgYW4gaW5zdGFuY2UKb2YgYGBNdXRhYmxlRGljdGBgLCBhbmQgYWRkaXRpb25hbGx5IGVuc3VyZWQgdGhhdCBhbGwgY2FsbGluZyBjb2RlCnVzZXMgYGBNdXRhYmxlRGljdGBgIGV4cGxpY2l0bHkuICBXaGVuIDptZXRoOmAuTXV0YWJsZS5jb2VyY2VgIGlzIG5vdApvdmVycmlkZGVuLCBhbnkgdmFsdWVzIGFwcGxpZWQgdG8gYSBwYXJlbnQgb2JqZWN0IHdoaWNoIGFyZSBub3QgaW5zdGFuY2VzCm9mIHRoZSBtdXRhYmxlIHR5cGUgd2lsbCByYWlzZSBhIGBgVmFsdWVFcnJvcmBgLgoKT3VyIG5ldyBgYE11dGFibGVEaWN0YGAgdHlwZSBvZmZlcnMgYSBjbGFzcyBtZXRob2QKOm1ldGg6YH4uTXV0YWJsZS5hc19tdXRhYmxlYCB3aGljaCB3ZSBjYW4gdXNlIHdpdGhpbiBjb2x1bW4gbWV0YWRhdGEKdG8gYXNzb2NpYXRlIHdpdGggdHlwZXMuIFRoaXMgbWV0aG9kIGdyYWJzIHRoZSBnaXZlbiB0eXBlIG9iamVjdCBvcgpjbGFzcyBhbmQgYXNzb2NpYXRlcyBhIGxpc3RlbmVyIHRoYXQgd2lsbCBkZXRlY3QgYWxsIGZ1dHVyZSBtYXBwaW5ncwpvZiB0aGlzIHR5cGUsIGFwcGx5aW5nIGV2ZW50IGxpc3RlbmluZyBpbnN0cnVtZW50YXRpb24gdG8gdGhlIG1hcHBlZAphdHRyaWJ1dGUuIFN1Y2ggYXMsIHdpdGggY2xhc3NpY2FsIHRhYmxlIG1ldGFkYXRhOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IFRhYmxlLCBDb2x1bW4sIEludGVnZXIKCiAgICBteV9kYXRhID0gVGFibGUoJ215X2RhdGEnLCBtZXRhZGF0YSwKICAgICAgICBDb2x1bW4oJ2lkJywgSW50ZWdlciwgcHJpbWFyeV9rZXk9VHJ1ZSksCiAgICAgICAgQ29sdW1uKCdkYXRhJywgTXV0YWJsZURpY3QuYXNfbXV0YWJsZShKU09ORW5jb2RlZERpY3QpKQogICAgKQoKQWJvdmUsIDptZXRoOmB+Lk11dGFibGUuYXNfbXV0YWJsZWAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBgYEpTT05FbmNvZGVkRGljdGBgCihpZiB0aGUgdHlwZSBvYmplY3Qgd2FzIG5vdCBhbiBpbnN0YW5jZSBhbHJlYWR5KSwgd2hpY2ggd2lsbCBpbnRlcmNlcHQgYW55CmF0dHJpYnV0ZXMgd2hpY2ggYXJlIG1hcHBlZCBhZ2FpbnN0IHRoaXMgdHlwZS4gIEJlbG93IHdlIGVzdGFibGlzaCBhIHNpbXBsZQptYXBwaW5nIGFnYWluc3QgdGhlIGBgbXlfZGF0YWBgIHRhYmxlOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IG1hcHBlcgoKICAgIGNsYXNzIE15RGF0YUNsYXNzKG9iamVjdCk6CiAgICAgICAgcGFzcwoKICAgICMgYXNzb2NpYXRlcyBtdXRhdGlvbiBsaXN0ZW5lcnMgd2l0aCBNeURhdGFDbGFzcy5kYXRhCiAgICBtYXBwZXIoTXlEYXRhQ2xhc3MsIG15X2RhdGEpCgpUaGUgYGBNeURhdGFDbGFzcy5kYXRhYGAgbWVtYmVyIHdpbGwgbm93IGJlIG5vdGlmaWVkIG9mIGluIHBsYWNlIGNoYW5nZXMKdG8gaXRzIHZhbHVlLgoKVGhlcmUncyBubyBkaWZmZXJlbmNlIGluIHVzYWdlIHdoZW4gdXNpbmcgZGVjbGFyYXRpdmU6OgoKICAgIGZyb20gc3FsYWxjaGVteS5leHQuZGVjbGFyYXRpdmUgaW1wb3J0IGRlY2xhcmF0aXZlX2Jhc2UKCiAgICBCYXNlID0gZGVjbGFyYXRpdmVfYmFzZSgpCgogICAgY2xhc3MgTXlEYXRhQ2xhc3MoQmFzZSk6CiAgICAgICAgX190YWJsZW5hbWVfXyA9ICdteV9kYXRhJwogICAgICAgIGlkID0gQ29sdW1uKEludGVnZXIsIHByaW1hcnlfa2V5PVRydWUpCiAgICAgICAgZGF0YSA9IENvbHVtbihNdXRhYmxlRGljdC5hc19tdXRhYmxlKEpTT05FbmNvZGVkRGljdCkpCgpBbnkgaW4tcGxhY2UgY2hhbmdlcyB0byB0aGUgYGBNeURhdGFDbGFzcy5kYXRhYGAgbWVtYmVyCndpbGwgZmxhZyB0aGUgYXR0cmlidXRlIGFzICJkaXJ0eSIgb24gdGhlIHBhcmVudCBvYmplY3Q6OgoKICAgID4+PiBmcm9tIHNxbGFsY2hlbXkub3JtIGltcG9ydCBTZXNzaW9uCgogICAgPj4+IHNlc3MgPSBTZXNzaW9uKCkKICAgID4+PiBtMSA9IE15RGF0YUNsYXNzKGRhdGE9eyd2YWx1ZTEnOidmb28nfSkKICAgID4+PiBzZXNzLmFkZChtMSkKICAgID4+PiBzZXNzLmNvbW1pdCgpCgogICAgPj4+IG0xLmRhdGFbJ3ZhbHVlMSddID0gJ2JhcicKICAgID4+PiBhc3NlcnQgbTEgaW4gc2Vzcy5kaXJ0eQogICAgVHJ1ZQoKVGhlIGBgTXV0YWJsZURpY3RgYCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGFsbCBmdXR1cmUgaW5zdGFuY2VzCm9mIGBgSlNPTkVuY29kZWREaWN0YGAgaW4gb25lIHN0ZXAsIHVzaW5nCjptZXRoOmB+Lk11dGFibGUuYXNzb2NpYXRlX3dpdGhgLiAgVGhpcyBpcyBzaW1pbGFyIHRvCjptZXRoOmB+Lk11dGFibGUuYXNfbXV0YWJsZWAgZXhjZXB0IGl0IHdpbGwgaW50ZXJjZXB0IGFsbCBvY2N1cnJlbmNlcwpvZiBgYE11dGFibGVEaWN0YGAgaW4gYWxsIG1hcHBpbmdzIHVuY29uZGl0aW9uYWxseSwgd2l0aG91dAp0aGUgbmVlZCB0byBkZWNsYXJlIGl0IGluZGl2aWR1YWxseTo6CgogICAgTXV0YWJsZURpY3QuYXNzb2NpYXRlX3dpdGgoSlNPTkVuY29kZWREaWN0KQoKICAgIGNsYXNzIE15RGF0YUNsYXNzKEJhc2UpOgogICAgICAgIF9fdGFibGVuYW1lX18gPSAnbXlfZGF0YScKICAgICAgICBpZCA9IENvbHVtbihJbnRlZ2VyLCBwcmltYXJ5X2tleT1UcnVlKQogICAgICAgIGRhdGEgPSBDb2x1bW4oSlNPTkVuY29kZWREaWN0KQoKClN1cHBvcnRpbmcgUGlja2xpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSBrZXkgdG8gdGhlIDptb2Q6YHNxbGFsY2hlbXkuZXh0Lm11dGFibGVgIGV4dGVuc2lvbiByZWxpZXMgdXBvbiB0aGUKcGxhY2VtZW50IG9mIGEgYGB3ZWFrcmVmLldlYWtLZXlEaWN0aW9uYXJ5YGAgdXBvbiB0aGUgdmFsdWUgb2JqZWN0LCB3aGljaApzdG9yZXMgYSBtYXBwaW5nIG9mIHBhcmVudCBtYXBwZWQgb2JqZWN0cyBrZXllZCB0byB0aGUgYXR0cmlidXRlIG5hbWUgdW5kZXIKd2hpY2ggdGhleSBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdmFsdWUuIGBgV2Vha0tleURpY3Rpb25hcnlgYCBvYmplY3RzIGFyZQpub3QgcGlja2xhYmxlLCBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGV5IGNvbnRhaW4gd2Vha3JlZnMgYW5kIGZ1bmN0aW9uCmNhbGxiYWNrcy4gSW4gb3VyIGNhc2UsIHRoaXMgaXMgYSBnb29kIHRoaW5nLCBzaW5jZSBpZiB0aGlzIGRpY3Rpb25hcnkgd2VyZQpwaWNrbGFibGUsIGl0IGNvdWxkIGxlYWQgdG8gYW4gZXhjZXNzaXZlbHkgbGFyZ2UgcGlja2xlIHNpemUgZm9yIG91ciB2YWx1ZQpvYmplY3RzIHRoYXQgYXJlIHBpY2tsZWQgYnkgdGhlbXNlbHZlcyBvdXRzaWRlIG9mIHRoZSBjb250ZXh0IG9mIHRoZSBwYXJlbnQuClRoZSBkZXZlbG9wZXIgcmVzcG9uc2liaWxpdHkgaGVyZSBpcyBvbmx5IHRvIHByb3ZpZGUgYSBgYF9fZ2V0c3RhdGVfX2BgIG1ldGhvZAp0aGF0IGV4Y2x1ZGVzIHRoZSA6bWV0aDpgfk11dGFibGVCYXNlLl9wYXJlbnRzYCBjb2xsZWN0aW9uIGZyb20gdGhlIHBpY2tsZQpzdHJlYW06OgoKICAgIGNsYXNzIE15TXV0YWJsZVR5cGUoTXV0YWJsZSk6CiAgICAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICAgICAgZCA9IHNlbGYuX19kaWN0X18uY29weSgpCiAgICAgICAgICAgIGQucG9wKCdfcGFyZW50cycsIE5vbmUpCiAgICAgICAgICAgIHJldHVybiBkCgpXaXRoIG91ciBkaWN0aW9uYXJ5IGV4YW1wbGUsIHdlIG5lZWQgdG8gcmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGUgZGljdCBpdHNlbGYKKGFuZCBhbHNvIHJlc3RvcmUgdGhlbSBvbiBfX3NldHN0YXRlX18pOjoKCiAgICBjbGFzcyBNdXRhYmxlRGljdChNdXRhYmxlLCBkaWN0KToKICAgICAgICAjIC4uLi4KCiAgICAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICAgICAgcmV0dXJuIGRpY3Qoc2VsZikKCiAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgICAgIHNlbGYudXBkYXRlKHN0YXRlKQoKSW4gdGhlIGNhc2UgdGhhdCBvdXIgbXV0YWJsZSB2YWx1ZSBvYmplY3QgaXMgcGlja2xlZCBhcyBpdCBpcyBhdHRhY2hlZCB0byBvbmUKb3IgbW9yZSBwYXJlbnQgb2JqZWN0cyB0aGF0IGFyZSBhbHNvIHBhcnQgb2YgdGhlIHBpY2tsZSwgdGhlIDpjbGFzczpgLk11dGFibGVgCm1peGluIHdpbGwgcmUtZXN0YWJsaXNoIHRoZSA6YXR0cjpgLk11dGFibGUuX3BhcmVudHNgIGNvbGxlY3Rpb24gb24gZWFjaCB2YWx1ZQpvYmplY3QgYXMgdGhlIG93bmluZyBwYXJlbnRzIHRoZW1zZWx2ZXMgYXJlIHVucGlja2xlZC4KClJlY2VpdmluZyBFdmVudHMKLS0tLS0tLS0tLS0tLS0tLQoKVGhlIDptZXRoOmAuQXR0cmlidXRlRXZlbnRzLm1vZGlmaWVkYCBldmVudCBoYW5kbGVyIG1heSBiZSB1c2VkIHRvIHJlY2VpdmUKYW4gZXZlbnQgd2hlbiBhIG11dGFibGUgc2NhbGFyIGVtaXRzIGEgY2hhbmdlIGV2ZW50LiAgVGhpcyBldmVudCBoYW5kbGVyCmlzIGNhbGxlZCB3aGVuIHRoZSA6ZnVuYzpgLmF0dHJpYnV0ZXMuZmxhZ19tb2RpZmllZGAgZnVuY3Rpb24gaXMgY2FsbGVkCmZyb20gd2l0aGluIHRoZSBtdXRhYmxlIGV4dGVuc2lvbjo6CgogICAgZnJvbSBzcWxhbGNoZW15LmV4dC5kZWNsYXJhdGl2ZSBpbXBvcnQgZGVjbGFyYXRpdmVfYmFzZQogICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCBldmVudAoKICAgIEJhc2UgPSBkZWNsYXJhdGl2ZV9iYXNlKCkKCiAgICBjbGFzcyBNeURhdGFDbGFzcyhCYXNlKToKICAgICAgICBfX3RhYmxlbmFtZV9fID0gJ215X2RhdGEnCiAgICAgICAgaWQgPSBDb2x1bW4oSW50ZWdlciwgcHJpbWFyeV9rZXk9VHJ1ZSkKICAgICAgICBkYXRhID0gQ29sdW1uKE11dGFibGVEaWN0LmFzX211dGFibGUoSlNPTkVuY29kZWREaWN0KSkKCiAgICBAZXZlbnQubGlzdGVuc19mb3IoTXlEYXRhQ2xhc3MuZGF0YSwgIm1vZGlmaWVkIikKICAgIGRlZiBtb2RpZmllZF9qc29uKGluc3RhbmNlKToKICAgICAgICBwcmludCgianNvbiB2YWx1ZSBtb2RpZmllZDoiLCBpbnN0YW5jZS5kYXRhKQoKLi4gX211dGFibGVfY29tcG9zaXRlczoKCkVzdGFibGlzaGluZyBNdXRhYmlsaXR5IG9uIENvbXBvc2l0ZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKQ29tcG9zaXRlcyBhcmUgYSBzcGVjaWFsIE9STSBmZWF0dXJlIHdoaWNoIGFsbG93IGEgc2luZ2xlIHNjYWxhciBhdHRyaWJ1dGUgdG8KYmUgYXNzaWduZWQgYW4gb2JqZWN0IHZhbHVlIHdoaWNoIHJlcHJlc2VudHMgaW5mb3JtYXRpb24gImNvbXBvc2VkIiBmcm9tIG9uZQpvciBtb3JlIGNvbHVtbnMgZnJvbSB0aGUgdW5kZXJseWluZyBtYXBwZWQgdGFibGUuIFRoZSB1c3VhbCBleGFtcGxlIGlzIHRoYXQgb2YKYSBnZW9tZXRyaWMgInBvaW50IiwgYW5kIGlzIGludHJvZHVjZWQgaW4gOnJlZjpgbWFwcGVyX2NvbXBvc2l0ZWAuCgpBcyBpcyB0aGUgY2FzZSB3aXRoIDpjbGFzczpgLk11dGFibGVgLCB0aGUgdXNlci1kZWZpbmVkIGNvbXBvc2l0ZSBjbGFzcwpzdWJjbGFzc2VzIDpjbGFzczpgLk11dGFibGVDb21wb3NpdGVgIGFzIGEgbWl4aW4sIGFuZCBkZXRlY3RzIGFuZCBkZWxpdmVycwpjaGFuZ2UgZXZlbnRzIHRvIGl0cyBwYXJlbnRzIHZpYSB0aGUgOm1ldGg6YC5NdXRhYmxlQ29tcG9zaXRlLmNoYW5nZWRgIG1ldGhvZC4KSW4gdGhlIGNhc2Ugb2YgYSBjb21wb3NpdGUgY2xhc3MsIHRoZSBkZXRlY3Rpb24gaXMgdXN1YWxseSB2aWEgdGhlIHVzYWdlIG9mClB5dGhvbiBkZXNjcmlwdG9ycyAoaS5lLiBgYEBwcm9wZXJ0eWBgKSwgb3IgYWx0ZXJuYXRpdmVseSB2aWEgdGhlIHNwZWNpYWwKUHl0aG9uIG1ldGhvZCBgYF9fc2V0YXR0cl9fKClgYC4gQmVsb3cgd2UgZXhwYW5kIHVwb24gdGhlIGBgUG9pbnRgYCBjbGFzcwppbnRyb2R1Y2VkIGluIDpyZWY6YG1hcHBlcl9jb21wb3NpdGVgIHRvIHN1YmNsYXNzIDpjbGFzczpgLk11dGFibGVDb21wb3NpdGVgCmFuZCB0byBhbHNvIHJvdXRlIGF0dHJpYnV0ZSBzZXQgZXZlbnRzIHZpYSBgYF9fc2V0YXR0cl9fYGAgdG8gdGhlCjptZXRoOmAuTXV0YWJsZUNvbXBvc2l0ZS5jaGFuZ2VkYCBtZXRob2Q6OgoKICAgIGZyb20gc3FsYWxjaGVteS5leHQubXV0YWJsZSBpbXBvcnQgTXV0YWJsZUNvbXBvc2l0ZQoKICAgIGNsYXNzIFBvaW50KE11dGFibGVDb21wb3NpdGUpOgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4LCB5KToKICAgICAgICAgICAgc2VsZi54ID0geAogICAgICAgICAgICBzZWxmLnkgPSB5CgogICAgICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgICAgIkludGVyY2VwdCBzZXQgZXZlbnRzIgoKICAgICAgICAgICAgIyBzZXQgdGhlIGF0dHJpYnV0ZQogICAgICAgICAgICBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwga2V5LCB2YWx1ZSkKCiAgICAgICAgICAgICMgYWxlcnQgYWxsIHBhcmVudHMgdG8gdGhlIGNoYW5nZQogICAgICAgICAgICBzZWxmLmNoYW5nZWQoKQoKICAgICAgICBkZWYgX19jb21wb3NpdGVfdmFsdWVzX18oc2VsZik6CiAgICAgICAgICAgIHJldHVybiBzZWxmLngsIHNlbGYueQoKICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob3RoZXIsIFBvaW50KSBhbmQgXAogICAgICAgICAgICAgICAgb3RoZXIueCA9PSBzZWxmLnggYW5kIFwKICAgICAgICAgICAgICAgIG90aGVyLnkgPT0gc2VsZi55CgogICAgICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQoKVGhlIDpjbGFzczpgLk11dGFibGVDb21wb3NpdGVgIGNsYXNzIHVzZXMgYSBQeXRob24gbWV0YWNsYXNzIHRvIGF1dG9tYXRpY2FsbHkKZXN0YWJsaXNoIGxpc3RlbmVycyBmb3IgYW55IHVzYWdlIG9mIDpmdW5jOmBfb3JtLmNvbXBvc2l0ZWAgdGhhdCBzcGVjaWZpZXMgb3VyCmBgUG9pbnRgYCB0eXBlLiBCZWxvdywgd2hlbiBgYFBvaW50YGAgaXMgbWFwcGVkIHRvIHRoZSBgYFZlcnRleGBgIGNsYXNzLApsaXN0ZW5lcnMgYXJlIGVzdGFibGlzaGVkIHdoaWNoIHdpbGwgcm91dGUgY2hhbmdlIGV2ZW50cyBmcm9tIGBgUG9pbnRgYApvYmplY3RzIHRvIGVhY2ggb2YgdGhlIGBgVmVydGV4LnN0YXJ0YGAgYW5kIGBgVmVydGV4LmVuZGBgIGF0dHJpYnV0ZXM6OgoKICAgIGZyb20gc3FsYWxjaGVteS5vcm0gaW1wb3J0IGNvbXBvc2l0ZSwgbWFwcGVyCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IFRhYmxlLCBDb2x1bW4KCiAgICB2ZXJ0aWNlcyA9IFRhYmxlKCd2ZXJ0aWNlcycsIG1ldGFkYXRhLAogICAgICAgIENvbHVtbignaWQnLCBJbnRlZ2VyLCBwcmltYXJ5X2tleT1UcnVlKSwKICAgICAgICBDb2x1bW4oJ3gxJywgSW50ZWdlciksCiAgICAgICAgQ29sdW1uKCd5MScsIEludGVnZXIpLAogICAgICAgIENvbHVtbigneDInLCBJbnRlZ2VyKSwKICAgICAgICBDb2x1bW4oJ3kyJywgSW50ZWdlciksCiAgICAgICAgKQoKICAgIGNsYXNzIFZlcnRleChvYmplY3QpOgogICAgICAgIHBhc3MKCiAgICBtYXBwZXIoVmVydGV4LCB2ZXJ0aWNlcywgcHJvcGVydGllcz17CiAgICAgICAgJ3N0YXJ0JzogY29tcG9zaXRlKFBvaW50LCB2ZXJ0aWNlcy5jLngxLCB2ZXJ0aWNlcy5jLnkxKSwKICAgICAgICAnZW5kJzogY29tcG9zaXRlKFBvaW50LCB2ZXJ0aWNlcy5jLngyLCB2ZXJ0aWNlcy5jLnkyKQogICAgfSkKCkFueSBpbi1wbGFjZSBjaGFuZ2VzIHRvIHRoZSBgYFZlcnRleC5zdGFydGBgIG9yIGBgVmVydGV4LmVuZGBgIG1lbWJlcnMKd2lsbCBmbGFnIHRoZSBhdHRyaWJ1dGUgYXMgImRpcnR5IiBvbiB0aGUgcGFyZW50IG9iamVjdDo6CgogICAgPj4+IGZyb20gc3FsYWxjaGVteS5vcm0gaW1wb3J0IFNlc3Npb24KCiAgICA+Pj4gc2VzcyA9IFNlc3Npb24oKQogICAgPj4+IHYxID0gVmVydGV4KHN0YXJ0PVBvaW50KDMsIDQpLCBlbmQ9UG9pbnQoMTIsIDE1KSkKICAgID4+PiBzZXNzLmFkZCh2MSkKICAgID4+PiBzZXNzLmNvbW1pdCgpCgogICAgPj4+IHYxLmVuZC54ID0gOAogICAgPj4+IGFzc2VydCB2MSBpbiBzZXNzLmRpcnR5CiAgICBUcnVlCgpDb2VyY2luZyBNdXRhYmxlIENvbXBvc2l0ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGUgOm1ldGg6YC5NdXRhYmxlQmFzZS5jb2VyY2VgIG1ldGhvZCBpcyBhbHNvIHN1cHBvcnRlZCBvbiBjb21wb3NpdGUgdHlwZXMuCkluIHRoZSBjYXNlIG9mIDpjbGFzczpgLk11dGFibGVDb21wb3NpdGVgLCB0aGUgOm1ldGg6YC5NdXRhYmxlQmFzZS5jb2VyY2VgCm1ldGhvZCBpcyBvbmx5IGNhbGxlZCBmb3IgYXR0cmlidXRlIHNldCBvcGVyYXRpb25zLCBub3QgbG9hZCBvcGVyYXRpb25zLgpPdmVycmlkaW5nIHRoZSA6bWV0aDpgLk11dGFibGVCYXNlLmNvZXJjZWAgbWV0aG9kIGlzIGVzc2VudGlhbGx5IGVxdWl2YWxlbnQKdG8gdXNpbmcgYSA6ZnVuYzpgLnZhbGlkYXRlc2AgdmFsaWRhdGlvbiByb3V0aW5lIGZvciBhbGwgYXR0cmlidXRlcyB3aGljaAptYWtlIHVzZSBvZiB0aGUgY3VzdG9tIGNvbXBvc2l0ZSB0eXBlOjoKCiAgICBjbGFzcyBQb2ludChNdXRhYmxlQ29tcG9zaXRlKToKICAgICAgICAjIG90aGVyIFBvaW50IG1ldGhvZHMKICAgICAgICAjIC4uLgoKICAgICAgICBkZWYgY29lcmNlKGNscywga2V5LCB2YWx1ZSk6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKICAgICAgICAgICAgICAgIHZhbHVlID0gUG9pbnQoKnZhbHVlKQogICAgICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBQb2ludCk6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0dXBsZSBvciBQb2ludCBleHBlY3RlZCIpCiAgICAgICAgICAgIHJldHVybiB2YWx1ZQoKU3VwcG9ydGluZyBQaWNrbGluZwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKQXMgaXMgdGhlIGNhc2Ugd2l0aCA6Y2xhc3M6YC5NdXRhYmxlYCwgdGhlIDpjbGFzczpgLk11dGFibGVDb21wb3NpdGVgIGhlbHBlcgpjbGFzcyB1c2VzIGEgYGB3ZWFrcmVmLldlYWtLZXlEaWN0aW9uYXJ5YGAgYXZhaWxhYmxlIHZpYSB0aGUKOm1ldGg6YE11dGFibGVCYXNlLl9wYXJlbnRzYCBhdHRyaWJ1dGUgd2hpY2ggaXNuJ3QgcGlja2xhYmxlLiBJZiB3ZSBuZWVkIHRvCnBpY2tsZSBpbnN0YW5jZXMgb2YgYGBQb2ludGBgIG9yIGl0cyBvd25pbmcgY2xhc3MgYGBWZXJ0ZXhgYCwgd2UgYXQgbGVhc3QgbmVlZAp0byBkZWZpbmUgYSBgYF9fZ2V0c3RhdGVfX2BgIHRoYXQgZG9lc24ndCBpbmNsdWRlIHRoZSBgYF9wYXJlbnRzYGAgZGljdGlvbmFyeS4KQmVsb3cgd2UgZGVmaW5lIGJvdGggYSBgYF9fZ2V0c3RhdGVfX2BgIGFuZCBhIGBgX19zZXRzdGF0ZV9fYGAgdGhhdCBwYWNrYWdlIHVwCnRoZSBtaW5pbWFsIGZvcm0gb2Ygb3VyIGBgUG9pbnRgYCBjbGFzczo6CgogICAgY2xhc3MgUG9pbnQoTXV0YWJsZUNvbXBvc2l0ZSk6CiAgICAgICAgIyAuLi4KCiAgICAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYueCwgc2VsZi55CgogICAgICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgogICAgICAgICAgICBzZWxmLngsIHNlbGYueSA9IHN0YXRlCgpBcyB3aXRoIDpjbGFzczpgLk11dGFibGVgLCB0aGUgOmNsYXNzOmAuTXV0YWJsZUNvbXBvc2l0ZWAgYXVnbWVudHMgdGhlCnBpY2tsaW5nIHByb2Nlc3Mgb2YgdGhlIHBhcmVudCdzIG9iamVjdC1yZWxhdGlvbmFsIHN0YXRlIHNvIHRoYXQgdGhlCjptZXRoOmBNdXRhYmxlQmFzZS5fcGFyZW50c2AgY29sbGVjdGlvbiBpcyByZXN0b3JlZCB0byBhbGwgYGBQb2ludGBgIG9iamVjdHMuCgrpAAAAAE7pAgAAACkB2gVldmVudCkB2gV0eXBlcykB2gZNYXBwZXIpAdoGbWFwcGVyKQHaDW9iamVjdF9tYXBwZXIpAdoNZmxhZ19tb2RpZmllZCkB2hFTY2hlbWFFdmVudFRhcmdldCkB2hFtZW1vaXplZF9wcm9wZXJ0eWMAAAAAAAAAAAAAAAACAAAAAAAAAPNqAAAAlwBlAFoBZABaAmQBWgNlBGQChACmAAAAqwAAAAAAAAAAAFoFZQZkA4QApgAAAKsAAAAAAAAAAABaB2UGZASEAKYAAACrAAAAAAAAAAAAWghlBmQFhACmAAAAqwAAAAAAAAAAAFoJZAZTACkH2gtNdXRhYmxlQmFzZXpQQ29tbW9uIGJhc2UgY2xhc3MgdG8gOmNsYXNzOmAuTXV0YWJsZWAKICAgIGFuZCA6Y2xhc3M6YC5NdXRhYmxlQ29tcG9zaXRlYC4KCiAgICBjAQAAAAAAAAAAAAAAAgAAAAMAAADzKAAAAJcAdAEAAAAAAAAAAAAAagEAAAAAAAAAAKYAAACrAAAAAAAAAAAAUwApAWEhAQAARGljdGlvbmFyeSBvZiBwYXJlbnQgb2JqZWN0LT5hdHRyaWJ1dGUgbmFtZSBvbiB0aGUgcGFyZW50LgoKICAgICAgICBUaGlzIGF0dHJpYnV0ZSBpcyBhIHNvLWNhbGxlZCAibWVtb2l6ZWQiIHByb3BlcnR5LiAgSXQgaW5pdGlhbGl6ZXMKICAgICAgICBpdHNlbGYgd2l0aCBhIG5ldyBgYHdlYWtyZWYuV2Vha0tleURpY3Rpb25hcnlgYCB0aGUgZmlyc3QgdGltZQogICAgICAgIGl0IGlzIGFjY2Vzc2VkLCByZXR1cm5pbmcgdGhlIHNhbWUgb2JqZWN0IHVwb24gc3Vic2VxdWVudCBhY2Nlc3MuCgogICAgICAgICkC2gd3ZWFrcmVm2hFXZWFrS2V5RGljdGlvbmFyeakB2gRzZWxmcwEAAAAg+movYnVpbGRkaXIvYnVpbGQvQlVJTEQvY2xvdWRsaW51eC12ZW52LTEuMC4xMC92ZW52L2xpYjY0L3B5dGhvbjMuMTEvc2l0ZS1wYWNrYWdlcy9zcWxhbGNoZW15L2V4dC9tdXRhYmxlLnB52ghfcGFyZW50c3oUTXV0YWJsZUJhc2UuX3BhcmVudHN3AQAAcxMAAACAAPUUABAX1A8o0Q8q1A8q0Agq8wAAAABjAwAAAAAAAAAAAAAABwAAAAMAAADzUAAAAJcAfAKAAmQBUwBkAn0DdAEAAAAAAAAAAAAAfAN8AXQDAAAAAAAAAAAAAHwCpgEAAKsBAAAAAAAAAABmAnoGAACmAQAAqwEAAAAAAAAAAIIBKQNhoAMAAEdpdmVuIGEgdmFsdWUsIGNvZXJjZSBpdCBpbnRvIHRoZSB0YXJnZXQgdHlwZS4KCiAgICAgICAgQ2FuIGJlIG92ZXJyaWRkZW4gYnkgY3VzdG9tIHN1YmNsYXNzZXMgdG8gY29lcmNlIGluY29taW5nCiAgICAgICAgZGF0YSBpbnRvIGEgcGFydGljdWxhciB0eXBlLgoKICAgICAgICBCeSBkZWZhdWx0LCByYWlzZXMgYGBWYWx1ZUVycm9yYGAuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBpbiBkaWZmZXJlbnQgc2NlbmFyaW9zIGRlcGVuZGluZyBvbiBpZgogICAgICAgIHRoZSBwYXJlbnQgY2xhc3MgaXMgb2YgdHlwZSA6Y2xhc3M6YC5NdXRhYmxlYCBvciBvZiB0eXBlCiAgICAgICAgOmNsYXNzOmAuTXV0YWJsZUNvbXBvc2l0ZWAuICBJbiB0aGUgY2FzZSBvZiB0aGUgZm9ybWVyLCBpdCBpcyBjYWxsZWQKICAgICAgICBmb3IgYm90aCBhdHRyaWJ1dGUtc2V0IG9wZXJhdGlvbnMgYXMgd2VsbCBhcyBkdXJpbmcgT1JNIGxvYWRpbmcKICAgICAgICBvcGVyYXRpb25zLiAgRm9yIHRoZSBsYXR0ZXIsIGl0IGlzIG9ubHkgY2FsbGVkIGR1cmluZyBhdHRyaWJ1dGUtc2V0CiAgICAgICAgb3BlcmF0aW9uczsgdGhlIG1lY2hhbmljcyBvZiB0aGUgOmZ1bmM6YC5jb21wb3NpdGVgIGNvbnN0cnVjdAogICAgICAgIGhhbmRsZSBjb2VyY2lvbiBkdXJpbmcgbG9hZCBvcGVyYXRpb25zLgoKCiAgICAgICAgOnBhcmFtIGtleTogc3RyaW5nIG5hbWUgb2YgdGhlIE9STS1tYXBwZWQgYXR0cmlidXRlIGJlaW5nIHNldC4KICAgICAgICA6cGFyYW0gdmFsdWU6IHRoZSBpbmNvbWluZyB2YWx1ZS4KICAgICAgICA6cmV0dXJuOiB0aGUgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIGNvZXJjZWQgdmFsdWUsIG9yIHJhaXNlCiAgICAgICAgIGBgVmFsdWVFcnJvcmBgIGlmIHRoZSBjb2VyY2lvbiBjYW5ub3QgYmUgY29tcGxldGVkLgoKICAgICAgICBOejFBdHRyaWJ1dGUgJyVzJyBkb2VzIG5vdCBhY2NlcHQgb2JqZWN0cyBvZiB0eXBlICVzKQLaClZhbHVlRXJyb3LaBHR5cGUpBNoDY2xz2gNrZXnaBXZhbHVl2gNtc2dzBAAAACAgICByEwAAANoGY29lcmNlehJNdXRhYmxlQmFzZS5jb2VyY2WDAQAAczEAAACAAPAwAAwRiD3YExeQNNgOQYgD3Q4YmBOgA6VUqCWhW6Rb0B8x0Rkx0Q4y1A4y0AgychUAAABjAgAAAAAAAAAAAAAAAQAAAAMAAADzEgAAAJcAfAFqAAAAAAAAAAAAaAFTACkBYREDAABHaXZlbiBhIGRlc2NyaXB0b3IgYXR0cmlidXRlLCByZXR1cm4gYSBgYHNldCgpYGAgb2YgdGhlIGF0dHJpYnV0ZQogICAgICAgIGtleXMgd2hpY2ggaW5kaWNhdGUgYSBjaGFuZ2UgaW4gdGhlIHN0YXRlIG9mIHRoaXMgYXR0cmlidXRlLgoKICAgICAgICBUaGlzIGlzIG5vcm1hbGx5IGp1c3QgYGBzZXQoW2F0dHJpYnV0ZS5rZXldKWBgLCBidXQgY2FuIGJlIG92ZXJyaWRkZW4KICAgICAgICB0byBwcm92aWRlIGZvciBhZGRpdGlvbmFsIGtleXMuICBFLmcuIGEgOmNsYXNzOmAuTXV0YWJsZUNvbXBvc2l0ZWAKICAgICAgICBhdWdtZW50cyB0aGlzIHNldCB3aXRoIHRoZSBhdHRyaWJ1dGUga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbHVtbnMKICAgICAgICB0aGF0IGNvbXByaXNlIHRoZSBjb21wb3NpdGUgdmFsdWUuCgogICAgICAgIFRoaXMgY29sbGVjdGlvbiBpcyBjb25zdWx0ZWQgaW4gdGhlIGNhc2Ugb2YgaW50ZXJjZXB0aW5nIHRoZQogICAgICAgIDptZXRoOmAuSW5zdGFuY2VFdmVudHMucmVmcmVzaGAgYW5kCiAgICAgICAgOm1ldGg6YC5JbnN0YW5jZUV2ZW50cy5yZWZyZXNoX2ZsdXNoYCBldmVudHMsIHdoaWNoIHBhc3MgYWxvbmcgYSBsaXN0CiAgICAgICAgb2YgYXR0cmlidXRlIG5hbWVzIHRoYXQgaGF2ZSBiZWVuIHJlZnJlc2hlZDsgdGhlIGxpc3QgaXMgY29tcGFyZWQKICAgICAgICBhZ2FpbnN0IHRoaXMgc2V0IHRvIGRldGVybWluZSBpZiBhY3Rpb24gbmVlZHMgdG8gYmUgdGFrZW4uCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6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ZSByZXR1cm5lZCB0eXBlIGlzIGFsd2F5cyBhbiBpbnN0YW5jZSwgZXZlbiBpZiBhIGNsYXNzCiAgICAgICAgaXMgZ2l2ZW4sIGFuZCB0aGF0IG9ubHkgY29sdW1ucyB3aGljaCBhcmUgZGVjbGFyZWQgc3BlY2lmaWNhbGx5IHdpdGgKICAgICAgICB0aGF0IHR5cGUgaW5zdGFuY2UgcmVjZWl2ZSBhZGRpdGlvbmFsIGluc3RydW1lbnRhdGlvbi4KCiAgICAgICAgVG8gYXNzb2NpYXRlIGEgcGFydGljdWxhciBtdXRhYmxlIHR5cGUgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2YgYQogICAgICAgIHBhcnRpY3VsYXIgdHlwZSwgdXNlIHRoZSA6bWV0aDpgLk11dGFibGUuYXNzb2NpYXRlX3dpdGhgIGNsYXNzbWV0aG9kCiAgICAgICAgb2YgdGhlIHBhcnRpY3VsYXIgOmNsYXNzOmAuTXV0YWJsZWAgc3ViY2xhc3MgdG8gZXN0YWJsaXNoIGEgZ2xvYmFsCiAgICAgICAgYXNzb2NpYXRpb24uCgogICAgICAgIC4uIHdhcm5pbmc6OgoKICAgICAgICAgICBUaGUgbGlzdGVuZXJzIGVzdGFibGlzaGVkIGJ5IHRoaXMgbWV0aG9kIGFyZSAqZ2xvYmFsKgogICAgICAgICAgIHRvIGFsbCBtYXBwZXJzLCBhbmQgYXJlICpub3QqIGdhcmJhZ2UgY29sbGVjdGVkLiAgIE9ubHkgdXNlCiAgICAgICAgICAgOm1ldGg6YC5hc19tdXRhYmxlYCBmb3IgdHlwZXMgdGhhdCBhcmUgcGVybWFuZW50IHRvIGFuIGFwcGxpY2F0aW9uLAogICAgICAgICAgIG5vdCB3aXRoIGFkLWhvYyB0eXBlcyBlbHNlIHRoaXMgd2lsbCBjYXVzZSB1bmJvdW5kZWQgZ3Jvd3RoCiAgICAgICAgICAgaW4gbWVtb3J5IHVzYWdlLgoKICAgICAgICDaFGJlZm9yZV9wYXJlbnRfYXR0YWNoYwIAAAAAAAAAAAAAAAMAAAATAAAA8xoAAACXAHwAfAFqAAAAAAAAAAAAZAE8AAAAZABTACkCTtoWX2V4dF9tdXRhYmxlX29yaWdfdHlwZSkB2gRpbmZvKQLaBnNxbHR5cHJXAAAAcwIAAAAgIHITAAAA2hBfYWRkX2NvbHVtbl9tZW1veixNdXRhYmxlLmFzX211dGFibGUuPGxvY2Fscz4uX2FkZF9jb2x1bW5fbWVtb18CAABzFQAAAIAA4Dg+kAaUC9AcNNEQNdAQNdAQNXIVAAAAVEZjAgAAAAAAAAAAAAAABwAAABMAAADzFgEAAJUDlwB8AGoAAAAAAAAAAAByAmQAUwB8AGoBAAAAAAAAAABEAF12fQKJBHI2dAUAAAAAAAAAAAAAfAJqAwAAAAAAAAAAZAGmAgAAqwIAAAAAAAAAAHIhfAJqAwAAAAAAAAAAagQAAAAAAAAAAKAFAAAAAAAAAAAAAAAAAAAAAAAAAABkAqYBAACrAQAAAAAAAAAAiQV1AHMUfAJqBgAAAAAAAAAAZAMZAAAAAAAAAAAAagcAAAAAAAAAAIkFdQByKIkDoAgAAAAAAAAAAAAAAAAAAAAAAAAAAHQTAAAAAAAAAAAAAHwBfAJqCgAAAAAAAAAApgIAAKsCAAAAAAAAAACmAQAAqwEAAAAAAAAAAAEAjHdkAFMAKQROcmoAAAByaQAAAHICAAAAKQtyXQAAAHJeAAAA2gdoYXNhdHRy2gpleHByZXNzaW9ucmoAAAByJgAAAHJfAAAAchgAAAByWgAAAHJgAAAAchoAAAApBnIHAAAAckgAAAByYQAAAHIZAAAA2hJzY2hlbWFfZXZlbnRfY2hlY2tyYgAAAHMGAAAAICAggICAchMAAAByYwAAAHorTXV0YWJsZS5hc19tdXRhYmxlLjxsb2NhbHM+Lmxpc3Rlbl9mb3JfdHlwZWcCAABzrAAAAPiAANgPFdQPIfAAAQ0X2BAWkAbYGB7UGCvwAAcNTAHwAAcNTAGQBOAUJvADBhFMAeUYH6AEpA+wFtEYONQYOPAFBhFMAfAGABkdnA/UGCzXGDDSGDDQMUnRGErUGErYFx7wAwEZH/AAARkf4BYalGygMZRv1BYqqGfQFjXQFjXYFBfXFDDSFDC1F7gWwBTEGNExStQxStEUS9QUS9AUS/jwDwcNTAHwAAcNTAFyFQAAAHJkAAAAKQhyBQAAANoLdG9faW5zdGFuY2VyNAAAAHIKAAAAcgQAAADaC2xpc3RlbnNfZm9yckkAAAByBwAAACkFchkAAAByYgAAAHJsAAAAcmMAAABycAAAAHMFAAAAYGAgIEByEwAAANoKYXNfbXV0YWJsZXoSTXV0YWJsZS5hc19tdXRhYmxlNwIAAHOtAAAA+Pj4gAD1QgEAExjUEiOgR9ESLNQSLIgH9QoADBaQZ9UfMNELMdQLMfAACAkn5Q0S1A0emHfQKD7RDT/UDT/wAgENP/AAAQ0/8QMADkAB1A0/8AIBDT/wBgAiJtAMHtAMHuAhJtAMHvAECglMAfAACglMAfAACglMAfAACglMAfAACglMAfAACglMAfAACglMAfUYAAkOjAyVVtAdMLAv0QhC1AhC0AhC4A8WiA5yFQAAAE4pCXJMAAAAck0AAAByTgAAAHJPAAAAclgAAAByUAAAAHJaAAAAcmUAAABycwAAAHJRAAAAchUAAAByEwAAAHJTAAAAclMAAAAGAgAAc4QAAACAAIAAgACAAIAA8AIFBQjwAAUFCPAOBAUn8AAEBSfwAAQFJ/AMAAYR8AIFBUQB8AAFBUQB8QMABhGEW/ACBQVEAfAOAAYR8AIYBUMB8AAYBUMB8QMABhGEW/ACGAVDAfA0AAYR8AI9BRfwAD0FF/EDAAYRhFvwAj0FF/AAPQUX8AA9BRdyFQAAAHJTAAAAYwAAAAAAAAAAAAAAAAIAAAAAAAAA8y4AAACXAGUAWgFkAFoCZAFaA2UEZAKEAKYAAACrAAAAAAAAAAAAWgVkA4QAWgZkBFMAKQXaEE11dGFibGVDb21wb3NpdGV61k1peGluIHRoYXQgZGVmaW5lcyB0cmFuc3BhcmVudCBwcm9wYWdhdGlvbiBvZiBjaGFuZ2UKICAgIGV2ZW50cyBvbiBhIFNRTEFsY2hlbXkgImNvbXBvc2l0ZSIgb2JqZWN0IHRvIGl0cwogICAgb3duaW5nIHBhcmVudCBvciBwYXJlbnRzLgoKICAgIFNlZSB0aGUgZXhhbXBsZSBpbiA6cmVmOmBtdXRhYmxlX2NvbXBvc2l0ZXNgIGZvciB1c2FnZSBpbmZvcm1hdGlvbi4KCiAgICBjAgAAAAAAAAAAAAAAAwAAAAMAAADzTAAAAJcAfAFqAAAAAAAAAAAAaAGgAQAAAAAAAAAAAAAAAAAAAAAAAAAAfAFqAgAAAAAAAAAAagMAAAAAAAAAAKYBAACrAQAAAAAAAAAAUwByLQAAACkEchoAAADaBXVuaW9u2ghwcm9wZXJ0edoPX2F0dHJpYnV0ZV9rZXlzch8AAABzAgAAACAgchMAAAByIQAAAHohTXV0YWJsZUNvbXBvc2l0ZS5fZ2V0X2xpc3Rlbl9rZXlzgQIAAHMgAAAAgADgEBmUDYh/1w8k0g8koFnUJTfUJUfRD0jUD0jQCEhyFQAAAGMBAAAAAAAAAAAAAAAHAAAAAwAAAPMEAQAAlwB8AGoAAAAAAAAAAACgAQAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABEAF1lXAIAAH0BfQJ0BQAAAAAAAAAAAAB8AaYBAACrAQAAAAAAAAAAoAMAAAAAAAAAAAAAAAAAAAAAAAAAAHwCpgEAAKsBAAAAAAAAAAB9A3QJAAAAAAAAAAAAAHwAoAUAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfANqBgAAAAAAAAAApgIAAKsCAAAAAAAAAABEAF0WXAIAAH0EfQV0DwAAAAAAAAAAAAB8AXwFfASmAwAAqwMAAAAAAAAAAAEAjBeMZmQBUwByVQAAACkIchQAAAByVgAAAHIIAAAA2gxnZXRfcHJvcGVydHnaA3ppcNoUX19jb21wb3NpdGVfdmFsdWVzX19yeQAAANoHc2V0YXR0cikGchIAAAByVwAAAHIaAAAAcmEAAAByGwAAANoJYXR0cl9uYW1lcwYAAAAgICAgICByEwAAAHJYAAAAehhNdXRhYmxlQ29tcG9zaXRlLmNoYW5nZWSFAgAAc5gAAACAAPAGABwgnD3XGy7SGy7RGzDUGzDwAAYJMvAABgkyiUuIRpBD5RMgoBbREyjUEyjXEzXSEzWwY9ETOtQTOohE3SQn2BAU1xAp0hAp0RAr1BArqFTULUHxAwIlDvQAAiUO8AADDTLwAAMNMtEQIJAFkHn1BgARGJgGoAmoNdEQMdQQMdAQMdAQMfAHAw0y8AcGCTLwAAYJMnIVAAAATikHckwAAAByTQAAAHJOAAAAck8AAAByUAAAAHIhAAAAclgAAAByUQAAAHIVAAAAchMAAABydQAAAHJ1AAAAeAIAAHNLAAAAgACAAIAAgACAAPACBgUI8AAGBQjwEAAGEfACAQVJAfAAAQVJAfEDAAYRhFvwAgEFSQHwBgkFMvAACQUy8AAJBTLwAAkFMvAACQUychUAAABydQAAAGMAAAAAAAAAAAAAAAAFAAAAAwAAAPN8AAAAlwBkAYQAfQB0AQAAAAAAAAAAAABqAQAAAAAAAAAAdAQAAAAAAAAAAAAAZAJ8AKYDAACrAwAAAAAAAAAAcx10AQAAAAAAAAAAAABqAwAAAAAAAAAAdAQAAAAAAAAAAAAAZAJ8AKYDAACrAwAAAAAAAAAAAQBkAFMAZABTACkDTmMCAAAAAAAAAAAAAAAHAAAAEwAAAPMAAQAAlwB8AGoAAAAAAAAAAABEAF11fQJ0AwAAAAAAAAAAAAB8AmQBpgIAAKsCAAAAAAAAAAByY3QFAAAAAAAAAAAAAHwCagMAAAAAAAAAAHQIAAAAAAAAAAAAAKYCAACrAgAAAAAAAAAAckl0CwAAAAAAAAAAAAB8AmoDAAAAAAAAAAB0DAAAAAAAAAAAAACmAgAAqwIAAAAAAAAAAHIvfAJqAwAAAAAAAAAAoAcAAAAAAAAAAAAAAAAAAAAAAAAAAHQRAAAAAAAAAAAAAHwBfAJqCQAAAAAAAAAApgIAAKsCAAAAAAAAAABkAnwBpgMAAKsDAAAAAAAAAAABAIx2ZABTACkDTtoPY29tcG9zaXRlX2NsYXNzRikK2hJpdGVyYXRlX3Byb3BlcnRpZXNybgAAAHI0AAAAcoIAAAByGAAAANoKaXNzdWJjbGFzc3J1AAAAcksAAAByYAAAAHIaAAAAKQNyBwAAAHJIAAAAcmEAAABzAwAAACAgIHITAAAA2hBfbGlzdGVuX2Zvcl90eXBlejNfc2V0dXBfY29tcG9zaXRlX2xpc3RlbmVyLjxsb2NhbHM+Ll9saXN0ZW5fZm9yX3R5cGWSAgAAc48AAACAANgUGtQULfAACAkS8AAICRKIROUQF5gE0B4v0RAw1BAw8AMHDRLlFB6YdNQfM7VU0RQ61BQ68AUHDRL1BgAVH5h01B8z1TVF0RRG1BRG8AcHDRLwCgARFdQQJNcQOdIQOd0UG5hGoESkSNEULdQULah1sGbxAwIREvQAAhES8AACERL48A0ICRLwAAgJEnIVAAAAcmQAAAApBHIEAAAA2ghjb250YWluc3IGAAAAckkAAAApAXKFAAAAcwEAAAAgchMAAADaGV9zZXR1cF9jb21wb3NpdGVfbGlzdGVuZXJyhwAAAJECAABzVAAAAIAA8AIJBRLwAAkFEvAACQUS9RYADBGMPp0m0CI10DdH0QtI1AtI8AABBUQB3QgNjAyVVtAdMNAyQtEIQ9QIQ9AIQ9AIQ9AIQ/ADAQVEAfAAAQVEAXIVAAAAYwAAAAAAAAAAAAAAAAIAAAAAAAAA814AAACXAGUAWgFkAFoCZAFaA2QChABaBGQDhABaBWQEhABaBmQFhABaB2QGhABaCGQHhABaCWQIhABaCmULZAmEAKYAAACrAAAAAAAAAAAAWgxkCoQAWg1kC4QAWg5kDFMAKQ3aC011dGFibGVEaWN0YWoDAABBIGRpY3Rpb25hcnkgdHlwZSB0aGF0IGltcGxlbWVudHMgOmNsYXNzOmAuTXV0YWJsZWAuCgogICAgVGhlIDpjbGFzczpgLk11dGFibGVEaWN0YCBvYmplY3QgaW1wbGVtZW50cyBhIGRpY3Rpb25hcnkgdGhhdCB3aWxsCiAgICBlbWl0IGNoYW5nZSBldmVudHMgdG8gdGhlIHVuZGVybHlpbmcgbWFwcGluZyB3aGVuIHRoZSBjb250ZW50cyBvZgogICAgdGhlIGRpY3Rpb25hcnkgYXJlIGFsdGVyZWQsIGluY2x1ZGluZyB3aGVuIHZhbHVlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZC4KCiAgICBOb3RlIHRoYXQgOmNsYXNzOmAuTXV0YWJsZURpY3RgIGRvZXMgKipub3QqKiBhcHBseSBtdXRhYmxlIHRyYWNraW5nIHRvICB0aGUKICAgICp2YWx1ZXMgdGhlbXNlbHZlcyogaW5zaWRlIHRoZSBkaWN0aW9uYXJ5LiBUaGVyZWZvcmUgaXQgaXMgbm90IGEgc3VmZmljaWVudAogICAgc29sdXRpb24gZm9yIHRoZSB1c2UgY2FzZSBvZiB0cmFja2luZyBkZWVwIGNoYW5nZXMgdG8gYSAqcmVjdXJzaXZlKgogICAgZGljdGlvbmFyeSBzdHJ1Y3R1cmUsIHN1Y2ggYXMgYSBKU09OIHN0cnVjdHVyZS4gIFRvIHN1cHBvcnQgdGhpcyB1c2UgY2FzZSwKICAgIGJ1aWxkIGEgc3ViY2xhc3Mgb2YgIDpjbGFzczpgLk11dGFibGVEaWN0YCB0aGF0IHByb3ZpZGVzIGFwcHJvcHJpYXRlCiAgICBjb2VyY2lvbiB0byB0aGUgdmFsdWVzIHBsYWNlZCBpbiB0aGUgZGlj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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 12
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
associationproxy.cpython-311.pyc
73.70 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
automap.cpython-311.pyc
40.42 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
baked.cpython-311.pyc
30.16 KB
lrw-r--r--
2026-02-06 08:01:46
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
compiler.cpython-311.pyc
17.69 KB
lrw-r--r--
2026-02-06 08:01:46
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
horizontal_shard.cpython-311.pyc
10.96 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
hybrid.cpython-311.pyc
43.92 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
indexable.cpython-311.pyc
12.78 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
instrumentation.cpython-311.pyc
20.14 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
mutable.cpython-311.pyc
42.24 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
orderinglist.cpython-311.pyc
17.78 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
serializer.cpython-311.pyc
7.73 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
__init__.cpython-311.pyc
363 B
lrw-r--r--
2026-02-06 08:01:46
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).