REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 45.37 KB
Close
/proc/thread-self/root/opt/alt/python37/lib64/python3.7/site-packages/sqlalchemy/sql/__pycache__/operators.cpython-37.pyc
Text
Base64
Qg0NCgAAAADDzDRd7aQAAOMAAAAAAAAAAAAAAABqAAAAQAAAAHPABAAAZABaAGQBZAJsAW0CWgIBAGQBZANsAW0DWgMBAGQBZARsAW0EWgQBAGQBZAVsAW0FWgUBAGQBZAZsAW0GWgYBAGQBZAdsAW0HWgcBAGQBZAhsAW0IWggBAGQBZAlsAW0JWgkBAGQBZApsAW0KWgoBAGQBZAtsAW0LWgsBAGQBZAxsAW0MWgwBAGQBZA1sAW0NWg0BAGQBZA5sAW0OWg4BAGQBZA9sAW0PWg8BAGQBZBBsAW0QWhABAGQBZBFsAW0RWhEBAGQBZBJsAW0SWhIBAGQBZBNsAW0TWhMBAGQBZBRsAW0UWhQBAGQVZBZsFW0WWhYBAGUWaheQAXIKZAFkF2wBbRhaGAEAbgRlFFoYRwBkGGQZhABkGWUZgwNaGkcAZBpkG4QAZBtlGYMDWhtHAGQcZB2EAGQdZRqDA1ocZQVlD2UCZQ5oBFodZQVlD2UMZQhlBmUKaAZaHmQeZB+EAFofZCBkIYQAWiBkImQjhABaIWUgZCRkJYQAgwFaImQmZCeEAFojZChkKYQAWiRkKmQrhABaJWQsZC2EAFomZSBkLmQvhACDAVonZSBkMGQxhACDAVooZSBkMmQzhACDAVopZSBkNGQ1hACDAVoqZDZkN4QAWitkOGQ5hABaLGUgZJdkO2Q8hAGDAVotZSBkmGQ9ZD6EAYMBWi5lIGSZZD9kQIQBgwFaL2UgZJpkQWRChAGDAVowZSBkm2REZEWEAYMBWjFlIGScZEZkR4QBgwFaMmUgZEhkSYQAgwFaM2UgZEpkS4QAgwFaNGRMZE2EAFo1ZE5kT4QAWjZkUGRRhABaN2RSZFOEAFo4ZSBknWRUZFWEAYMBWjllIGSeZFZkV4QBgwFaOmUgZJ9kWGRZhAGDAVo7ZSBkoGRaZFuEAYMBWjxlIGShZFxkXYQBgwFaPWUgZKJkXmRfhAGDAVo+ZSBkYGRhhACDAVo/ZSBkYmRjhACDAVpAZGRkZYQAWkFlIGRmZGeEAIMBWkJlIGRoZGmEAIMBWkNkamRrhABaRGRsZG2EAFpFZG5kb4QAWkZkcGRxhABaR2RyZHOEAFpIZHRkdYQAWklkdmR3hABaSmR4ZHmEAFpLZHpke4QAWkxkfGR9hABaTWR+ZH+EAFpOZIBkgYQAWk9lCWUlZSZlA2URZgVaUGSCZIOEAFpRZQhlDGUGZQplDGUIZQplBmkEWlJkhGSFhABaU2UdoFRlRWUDZRFnA6EBoFVlBWUPZwKhAVpWZVagVGUHZUplS2cDoQFaV2UWalhkhmSHZIiNAlpZZRZqWGSJZIpkiI0CWlplFmpYZItkjGSIjQJaW2UhZI1lImSNZTZkjWU3ZI1lB2SNZUpkjWVLZI1lDmSOZRRkjmUYZI5lDWSOZRBkjmUCZI9lE2SPZUVkkGVEZJBlP2SRZUBkkWUvZJFlMGSRZS1kkWUuZJFlM2SRZTRkkWUpZJFlKmSRZQVkkWUPZJFlJ2SRZShkkWVCZJFlQ2SRZQhkkWUMZJFlBmSRZQpkkWUxZJFlMmSRZTVkkWUJZJFlJWSRZSZkkWUDZJJlEWQVZUFkk2VGZJJlR2SSZStklGUjZJNlJGQBZVlkh2VaZVplW2VbaTVaXGSVZJaEAFpdZDpTACmjeipEZWZpbmVzIG9wZXJhdG9ycyB1c2VkIGluIFNRTCBleHByZXNzaW9ucy7pAAAAACkB2gNhZGQpAdoEYW5kXykB2ghjb250YWlucykB2gJlcSkB2gJnZSkB2gdnZXRpdGVtKQHaAmd0KQHaA2ludikB2gJsZSkB2gZsc2hpZnQpAdoCbHQpAdoDbW9kKQHaA211bCkB2gJuZSkB2gNuZWcpAdoDb3JfKQHaBnJzaGlmdCkB2gNzdWIpAdoHdHJ1ZWRpdukCAAAAKQHaBHV0aWwpAdoDZGl2YwAAAAAAAAAAAAAAAAMAAABAAAAAc1AAAABlAFoBZABaAmQBWgNkAloEZANkBIQAWgVkBWQGhABaBmQHZAiEAFoHZBRkDGQNhAFaCGQVZA5kD4QBWglkEGQRhABaCmQSZBOEAFoLZAtTACkW2glPcGVyYXRvcnNh0gEAAEJhc2Ugb2YgY29tcGFyaXNvbiBhbmQgbG9naWNhbCBvcGVyYXRvcnMuCgogICAgSW1wbGVtZW50cyBiYXNlIG1ldGhvZHMKICAgIDptZXRoOmB+c3FsYWxjaGVteS5zcWwub3BlcmF0b3JzLk9wZXJhdG9ycy5vcGVyYXRlYCBhbmQKICAgIDptZXRoOmB+c3FsYWxjaGVteS5zcWwub3BlcmF0b3JzLk9wZXJhdG9ycy5yZXZlcnNlX29wZXJhdGVgLCBhcyB3ZWxsIGFzCiAgICA6bWV0aDpgfnNxbGFsY2hlbXkuc3FsLm9wZXJhdG9ycy5PcGVyYXRvcnMuX19hbmRfX2AsCiAgICA6bWV0aDpgfnNxbGFsY2hlbXkuc3FsLm9wZXJhdG9ycy5PcGVyYXRvcnMuX19vcl9fYCwKICAgIDptZXRoOmB+c3FsYWxjaGVteS5zcWwub3BlcmF0b3JzLk9wZXJhdG9ycy5fX2ludmVydF9fYC4KCiAgICBVc3VhbGx5IGlzIHVzZWQgdmlhIGl0cyBtb3N0IGNvbW1vbiBzdWJjbGFzcwogICAgOmNsYXNzOmAuQ29sdW1uT3BlcmF0b3JzYC4KCiAgICCpAGMCAAAAAAAAAAIAAAAEAAAAQwAAAHMMAAAAfACgAHQBfAGhAlMAKQFhLgIAAEltcGxlbWVudCB0aGUgYGAmYGAgb3BlcmF0b3IuCgogICAgICAgIFdoZW4gdXNlZCB3aXRoIFNRTCBleHByZXNzaW9ucywgcmVzdWx0cyBpbiBhbgogICAgICAgIEFORCBvcGVyYXRpb24sIGVxdWl2YWxlbnQgdG8KICAgICAgICA6ZnVuYzpgfi5leHByZXNzaW9uLmFuZF9gLCB0aGF0IGlzOjoKCiAgICAgICAgICAgIGEgJiBiCgogICAgICAgIGlzIGVxdWl2YWxlbnQgdG86OgoKICAgICAgICAgICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCBhbmRfCiAgICAgICAgICAgIGFuZF8oYSwgYikKCiAgICAgICAgQ2FyZSBzaG91bGQgYmUgdGFrZW4gd2hlbiB1c2luZyBgYCZgYCByZWdhcmRpbmcKICAgICAgICBvcGVyYXRvciBwcmVjZWRlbmNlOyB0aGUgYGAmYGAgb3BlcmF0b3IgaGFzIHRoZSBoaWdoZXN0IHByZWNlZGVuY2UuCiAgICAgICAgVGhlIG9wZXJhbmRzIHNob3VsZCBiZSBlbmNsb3NlZCBpbiBwYXJlbnRoZXNpcyBpZiB0aGV5IGNvbnRhaW4KICAgICAgICBmdXJ0aGVyIHN1YiBleHByZXNzaW9uczo6CgogICAgICAgICAgICAoYSA9PSAyKSAmIChiID09IDQpCgogICAgICAgICkC2gdvcGVyYXRlcgMAAAApAtoEc2VsZtoFb3Ro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IHByZWNlZGVuY2UgdG8gYXBwbHkgdG8gdGhlIG9wZXJhdG9yLCB3aGVuCiAgICAgICAgIHBhcmVudGhlc2l6aW5nIGV4cHJlc3Npb25zLiAgQSBsb3dlciBudW1iZXIgd2lsbCBjYXVzZSB0aGUgZXhwcmVzc2lvbgogICAgICAgICB0byBiZSBwYXJlbnRoZXNpemVkIHdoZW4gYXBwbGllZCBhZ2FpbnN0IGFub3RoZXIgb3BlcmF0b3Igd2l0aAogICAgICAgICBoaWdoZXIgcHJlY2VkZW5jZS4gIFRoZSBkZWZhdWx0IHZhbHVlIG9mIGBgMGBgIGlzIGxvd2VyIHRoYW4gYWxsCiAgICAgICAgIG9wZXJhdG9ycyBleGNlcHQgZm9yIHRoZSBjb21tYSAoYGAsYGApIGFuZCBgYEFTYGAgb3BlcmF0b3JzLgogICAgICAgICBBIHZhbHVlIG9mIDEwMCB3aWxsIGJlIGhpZ2hlciBvciBlcXVhbCB0byBhbGwgb3BlcmF0b3JzLCBhbmQgLTEwMAogICAgICAgICB3aWxsIGJlIGxvd2VyIHRoYW4gb3IgZXF1YWwgdG8gYWxsIG9wZXJhdG9ycy4KCiAgICAgICAgOnBhcmFtIGlzX2NvbXBhcmlzb246IGlmIFRydWUsIHRoZSBvcGVyYXRvciB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgYQogICAgICAgICAiY29tcGFyaXNvbiIgb3BlcmF0b3IsIHRoYXQgaXMgd2hpY2ggZXZhbHVhdGVzIHRvIGEgYm9vbGVhbgogICAgICAgICB0cnVlL2ZhbHNlIHZhbHVlLCBsaWtlIGBgPT1gYCwgYGA+YGAsIGV0Yy4gIFRoaXMgZmxhZyBzaG91bGQgYmUgc2V0CiAgICAgICAgIHNvIHRoYXQgT1JNIHJlbGF0aW9uc2hpcHMgY2FuIGVzdGFibGlzaCB0aGF0IHRoZSBvcGVyYXRvciBpcyBhCiAgICAgICAgIGNvbXBhcmlzb24gb3BlcmF0b3Igd2hlbiB1c2VkIGluIGEgY3VzdG9tIGpvaW4gY29uZGl0aW9uLgoKICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC45LjIgLSBhZGRlZCB0aGUKICAgICAgICAgICAgOnBhcmFtcmVmOmAuT3BlcmF0b3JzLm9wLmlzX2NvbXBhcmlzb25gIGZsYWcuCgogICAgICAgIDpwYXJhbSByZXR1cm5fdHlwZTogYSA6Y2xhc3M6YC5UeXBlRW5naW5lYCBjbGFzcyBvciBvYmplY3QgdGhhdCB3aWxsCiAgICAgICAgICBmb3JjZSB0aGUgcmV0dXJuIHR5cGUgb2YgYW4gZXhwcmVzc2lvbiBwcm9kdWNlZCBieSB0aGlzIG9wZXJhdG9yCiAgICAgICAgICB0byBiZSBvZiB0aGF0IHR5cGUuICAgQnkgZGVmYXVsdCwgb3BlcmF0b3JzIHRoYXQgc3BlY2lmeQogICAgICAgICAgOnBhcmFtcmVmOmAuT3BlcmF0b3JzLm9wLmlzX2NvbXBhcmlzb25gIHdpbGwgcmVzb2x2ZSB0bwogICAgICAgICAgOmNsYXNzOmAuQm9vbGVhbmAsIGFuZCB0aG9zZSB0aGF0IGRvIG5vdCB3aWxsIGJlIG9mIHRoZSBzYW1lCiAgICAgICAgICB0eXBlIGFzIHRoZSBsZWZ0LWhhbmQgb3BlcmFuZC4KCiAgICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjIuMGIzIC0gYWRkZWQgdGhlCiAgICAgICAgICAgICA6cGFyYW1yZWY6YC5PcGVyYXRvcnMub3AucmV0dXJuX3R5cGVgIGFyZ3VtZW50LgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YHR5cGVzX29wZXJhdG9yc2AKCiAgICAgICAgICAgIDpyZWY6YHJlbGF0aW9uc2hpcF9jdXN0b21fb3BlcmF0b3JgCgogICAgICAgIGMBAAAAAAAAAAEAAAADAAAAEwAAAHMKAAAAiACIAXwAgwJTACkBTnIZAAAAKQFyHAAAACkC2ghvcGVyYXRvcnIbAAAAchkAAAByHQAAANoHYWdhaW5zdLgAAABzAgAAAAABeh1PcGVyYXRvcnMub3AuPGxvY2Fscz4uYWdhaW5zdCkB2gljdXN0b21fb3ApBnIbAAAA2ghvcHN0cmluZ9oKcHJlY2VkZW5jZdoNaXNfY29tcGFyaXNvbtoLcmV0dXJuX3R5cGVyIgAAAHIZAAAAKQJyIQAAAHIbAAAAch0AAADaAm9wfAAAAHMGAAAAADoO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ACoAAABzEgAAAAgNBAIEAggYCBgIEgpAChEIGnIYAAAAYwAAAAAAAAAAAAAAAAUAAABAAAAAczYAAABlAFoBZABaAmQBWgNkAFoAZA1kBWQGhAFaBGQHZAiEAFoFZAlkCoQAWgZkC2QMhABaB2QEUwApDnIjAAAAYcQCAABSZXByZXNlbnQgYSAnY3VzdG9tJyBvcGVyYXRvci4KCiAgICA6Y2xhc3M6YC5jdXN0b21fb3BgIGlzIG5vcm1hbGx5IGluc3RhbnRpYXRlZCB3aGVuIHRoZQogICAgOm1ldGg6YC5PcGVyYXRvcnMub3BgIG9yIDptZXRoOmAuT3BlcmF0b3JzLmJvb2xfb3BgIG1ldGhvZHMKICAgIGFyZSB1c2VkIHRvIGNyZWF0ZSBhIGN1c3RvbSBvcGVyYXRvciBjYWxsYWJsZS4gIFRoZSBjbGFzcyBjYW4gYWxzbyBiZQogICAgdXNlZCBkaXJlY3RseSB3aGVuIHByb2dyYW1tYXRpY2FsbHkgY29uc3RydWN0aW5nIGV4cHJlc3Npb25zLiAgIEUuZy4KICAgIHRvIHJlcHJlc2VudCB0aGUgImZhY3RvcmlhbCIgb3BlcmF0aW9uOjoKCiAgICAgICAgZnJvbSBzcWxhbGNoZW15LnNxbCBpbXBvcnQgVW5hcnlFeHByZXNzaW9uCiAgICAgICAgZnJvbSBzcWxhbGNoZW15LnNxbCBpbXBvcnQgb3BlcmF0b3JzCiAgICAgICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCBOdW1lcmljCgogICAgICAgIHVuYXJ5ID0gVW5hcnlFeHByZXNzaW9uKHRhYmxlLmMuc29tZWNvbHVtbiwKICAgICAgICAgICAgICAgIG1vZGlmaWVyPW9wZXJhdG9ycy5jdXN0b21fb3AoIiEiKSwKICAgICAgICAgICAgICAgIHR5cGVfPU51bWVyaWMpCgoKICAgIC4uIHNlZWFsc286OgoKICAgICAgICA6bWV0aDpgLk9wZXJhdG9ycy5vcGAKCiAgICAgICAgOm1ldGg6YC5PcGVyYXRvcnMuYm9vbF9vcGAKCiAgICByAQAAAEZOYwcAAAAAAAAABwAAAAMAAABDAAAAczYAAAB8AXwAXwB8AnwAXwF8A3wAXwJ8BXwAXwN8BnwAXwR8BHIsfASgBXwEoQFuAmQAfABfBmQAUwApAU4pB3IkAAAAciUAAAByJgAAANoWbmF0dXJhbF9zZWxmX3ByZWNlZGVudNoOZWFnZXJfZ3JvdXBpbmdaDF90b19pbnN0YW5jZXInAAAAKQdyGwAAAHIkAAAAciUAAAByJgAAAHInAAAAcjMAAAByNAAAAHIZAAAAchkAAAByHQAAANoIX19pbml0X18NAQAAcwwAAAAACQYBBgEGAQYBBgJ6EmN1c3RvbV9vcC5fX2luaXRfX2MCAAAAAAAAAAIAAAADAAAAQwAAAHMWAAAAdAB8AXQBgwJvFHwBagJ8AGoCawJTACkBTikD2gppc2luc3RhbmNlciMAAAByJAAAACkCchsAAAByHAAAAHIZAAAAchkAAAByHQAAANoGX19lcV9fHwEAAHMCAAAAAAF6EGN1c3RvbV9vcC5fX2VxX19jAQAAAAAAAAABAAAAAgAAAEMAAABzCAAAAHQAfACDAVMAKQFOKQHaAmlkKQFyGwAAAHIZAAAAchkAAAByHQAAANoIX19oYXNoX18iAQAAcwIAAAAAAXoSY3VzdG9tX29wLl9faGFzaF9fYwMAAAAAAAAABAAAAAMAAABLAAAAcxAAAAB8AWoAfAB8AmYCfAOOAVMAKQFOKQFyGgAAACkEchsAAADaBGxlZnTaBXJpZ2h02gJrd3IZAAAAchkAAAByHQAAANoIX19jYWxsX18lAQAAcwIAAAAAAXoSY3VzdG9tX29wLl9fY2FsbF9fKQVyAQAAAEZORkYpCHIuAAAAci8AAAByMAAAAHIxAAAAcjUAAAByNwAAAHI5AAAAcj0AAAByGQAAAHIZAAAAchkAAAByHQAAAHIjAAAA8QAAAHMUAAAACBgEAgQFAAEAAQABAAEKCwgDCANyIwAAAGMAAAAAAAAAAAAAAAADAAAAQAAAAHOgAQAAZQBaAWQAWgJkAVoDZAJaBGQDWgVkBGQFhABaBmQGZAeEAFoHZQhqCVoJZAhkCYQAWgpkCmQLhABaC2QMZA2EAFoMZA5kD4QAWg1kEGQRhABaDmQSZBOEAFoPZBRkFYQAWhBkFmQXhABaEWQYZBmEAFoSZBpkG4QAWhNkHGQdhABaFGQeZB+EAFoVZGNkIGQhhAFaFmRkZCJkI4QBWhdkJGQlhABaGGQmZCeEAFoZZGVkKGQphAFaGmRmZCpkK4QBWhtkLGQthABaHGQuZC+EAFodZDBkMYQAWh5kMmQzhABaH2Q0ZDWEAFogZDZkN4QAWiFkOGQ5hABaImQ6ZDuEAFojZDxkPYQAWiRkPmQ/hABaJWRAZEGEAFomZEJkQ4QAWidkRGRFhABaKGRGZEeEAFopZEhkSYQAWipkSmRLhABaK2RnZE1kToQBWixkT2RQhABaLWRRZFKEAFouZFNkVIQAWi9kVWRWhABaMGRXZFiEAFoxZFlkWoQAWjJkW2RchABaM2RdZF6EAFo0ZF9kYIQAWjVkYWRihABaNmQDUwApaNoPQ29sdW1uT3BlcmF0b3JzYQEEAABEZWZpbmVzIGJvb2xlYW4sIGNvbXBhcmlzb24sIGFuZCBvdGhlciBvcGVyYXRvcnMgZm9yCiAgICA6Y2xhc3M6YC5Db2x1bW5FbGVtZW50YCBleHByZXNzaW9ucy4KCiAgICBCeSBkZWZhdWx0LCBhbGwgbWV0aG9kcyBjYWxsIGRvd24gdG8KICAgIDptZXRoOmAub3BlcmF0ZWAgb3IgOm1ldGg6YC5yZXZlcnNlX29wZXJhdGVgLAogICAgcGFzc2luZyBpbiB0aGUgYXBwcm9wcmlhdGUgb3BlcmF0b3IgZnVuY3Rpb24gZnJvbSB0aGUKICAgIFB5dGhvbiBidWlsdGluIGBgb3BlcmF0b3JgYCBtb2R1bGUgb3IKICAgIGEgU1FMQWxjaGVteS1zcGVjaWZpYyBvcGVyYXRvciBmdW5jdGlvbiBmcm9tCiAgICA6bW9kOmBzcWxhbGNoZW15LmV4cHJlc3Npb24ub3BlcmF0b3JzYC4gICBGb3IgZXhhbXBsZQogICAgdGhlIGBgX19lcV9fYGAgZnVuY3Rpb246OgoKICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYub3BlcmF0ZShvcGVyYXRvcnMuZXEsIG90aGVyKQoKICAgIFdoZXJlIGBgb3BlcmF0b3JzLmVxYGAgaXMgZXNzZW50aWFsbHk6OgoKICAgICAgICBkZWYgZXEoYSwgYik6CiAgICAgICAgICAgIHJldHVybiBhID09IGIKCiAgICBUaGUgY29yZSBjb2x1bW4gZXhwcmVzc2lvbiB1bml0IDpj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aGVteSB2ZXJzaW9ucywgc2VlCiAgICAgICAgICA6cGFyYW1yZWY6YC5jcmVhdGVfZW5naW5lLmVtcHR5X2luX3N0cmF0ZWd5YCBmb3IgYmVoYXZpb3JhbCBvcHRpb25zLgoKICAgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMS4yIHNpbXBsaWZpZWQgdGhlIGJlaGF2aW9yIG9mICJlbXB0eSBpbiIKICAgICAgICAgICAgIGV4cHJlc3Npb25zCgogICAgICAgICogQSBib3VuZCBwYXJhbWV0ZXIsIGUuZy4gOmZ1bmM6YC5iaW5kcGFyYW1gLCBtYXkgYmUgdXNlZCBpZiBpdAogICAgICAgICAgaW5jbHVkZXMgdGhlIDpwYXJhbXJlZjpgLmJpbmRwYXJhbS5leHBhbmRpbmdgIGZsYWc6OgoKICAgICAgICAgICAgc3RtdC53aGVyZShjb2x1bW4uaW5fKGJpbmRwYXJhbSgndmFsdWUnLCBleHBhbmRpbmc9VHJ1ZSkpKQoKICAgICAgICAgIEluIHRoaXMgY2FsbGluZyBmb3JtLCB0aGUgZXhwcmVzc2lvbiByZW5kZXJzIGEgc3BlY2lhbCBub24tU1FMCiAgICAgICAgICBwbGFjZWhvbGRlciBleHByZXNzaW9uIHRoYXQgbG9va3MgbGlrZTo6CgogICAgICAgICAgICBXSEVSRSBDT0wgSU4gKFtFWFBBTkRJTkdfdmFsdWVdKQoKICAgICAgICAgIFRoaXMgcGxhY2Vob2xkZXIgZXhwcmVzc2lvbiBpcyBpbnRlcmNlcHRlZCBhdCBzdGF0ZW1lbnQgZXhlY3V0aW9uCiAgICAgICAgICB0aW1lIHRvIGJlIGNvbnZlcnRlZCBpbnRvIHRoZSB2YXJpYWJsZSBudW1iZXIgb2YgYm91bmQgcGFyYW1ldGVyCiAgICAgICAgICBmb3JtIGlsbHVzdHJhdGVkIGVhcmxpZXIuICAgSWYgdGhlIHN0YXRlbWVudCB3ZXJlIGV4ZWN1dGVkIGFzOjoKCiAgICAgICAgICAgIGNvbm5lY3Rpb24uZXhlY3V0ZShzdG10LCB7InZhbHVlIjogWzEsIDIsIDNdfSkKCiAgICAgICAgICBUaGUgZGF0YWJhc2Ugd291bGQgYmUgcGFzc2VkIGEgYm91bmQgcGFyYW1ldGVyIGZvciBlYWNoIHZhbHVlOjoKCiAgICAgICAgICAgIFdIRVJFIENPTCBJTiAoPywgPywgPykKCiAgICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjIgYWRkZWQgImV4cGFuZGluZyIgYm91bmQgcGFyYW1ldGVycwoKICAgICAgICAgIElmIGFuIGVtcHR5IGxpc3QgaXMgcGFzc2VkLCBhIHNwZWNpYWwgImVtcHR5IGxpc3QiIGV4cHJlc3Npb24sCiAgICAgICAgICB3aGljaCBpcyBzcGVjaWZpYyB0byB0aGUgZGF0YWJhc2UgaW4gdXNlLCBpcyByZW5kZXJlZC4gIE9uCiAgICAgICAgICBTUUxpdGUgdGhpcyB3b3VsZCBiZTo6CgogICAgICAgICAgICBXSEVSRSBDT0wgSU4gKFNFTEVDVCAxIEZST00gKFNFTEVDVCAxKSBXSEVSRSAxIT0xKQoKICAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMyAiZXhwYW5kaW5nIiBib3VuZCBwYXJhbWV0ZXJzIG5vdyBzdXBwb3J0CiAgICAgICAgICAgICBlbXB0eSBsaXN0cwoKICAgICAgICAqIGEgOmZ1bmM6YC5zZWxlY3RgIGNvbnN0cnVjdCwgd2hpY2ggaXMgdXN1YWxseSBhIGNvcnJlbGF0ZWQKICAgICAgICAgIHNjYWxhciBzZWxlY3Q6OgoKICAgICAgICAgICAgc3RtdC53aGVyZSgKICAgICAgICAgICAgICAgIGNvbHVtbi5pbl8oCiAgICAgICAgICAgICAgICAgICAgc2VsZWN0KFtvdGhlcnRhYmxlLmMueV0pLgogICAgICAgICAgICAgICAgICAgIHdoZXJlKHRhYmxlLmMueCA9PSBvdGhlcnRhYmxlLmMueCkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQoKICAgICAgICAgIEluIHRoaXMgY2FsbGluZyBmb3JtLCA6bWV0aDpgLkNvbHVtbk9wZXJhdG9ycy5pbl9gIHJlbmRlcnMgYXMgZ2l2ZW46OgoKICAgICAgICAgICAgV0hFUkUgQ09MIElOIChTRUxFQ1Qgb3RoZXJ0YWJsZS55CiAgICAgICAgICAg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bGVhbiB2YWx1ZXMKICAgICAgICBvbiBjZXJ0YWluIHBsYXRmb3Jtcy4KCiAgICAgICAgLi4gc2VlYWxzbzo6IDptZXRoOmAuQ29sdW1uT3BlcmF0b3JzLmlzX2AKCiAgICAgICAgKQJyGgAAANoFaXNub3QpAnIbAAAAchwAAAByGQAAAHIZAAAAch0AAAByXAAAAJcCAABzAgAAAAALehVDb2x1bW5PcGVyYXRvcnMuaXNub3RjAgAAAAAAAAADAAAAAwAAAEsAAABzEAAAAHwAagB0AXwBZgJ8Ao4BUwApAWH7DAAASW1wbGVtZW50IHRoZSBgYHN0YXJ0c3dpdGhgYCBvcGVyYXRvci4KCiAgICAgICAgUHJvZHVjZXMgYSBMSUtFIGV4cHJlc3Npb24gdGhhdCB0ZXN0cyBhZ2FpbnN0IGEgbWF0Y2ggZm9yIHRoZSBzdGFydAogICAgICAgIG9mIGEgc3RyaW5nIHZhbHVlOjoKCiAgICAgICAgICAgIGNvbHVtbiBMSUtFIDxvdGhlcj4gfHwgJyUnCgogICAgICAgIEUuZy46OgoKICAgICAgICAgICAgc3RtdCA9IHNlbGVjdChbc29tZXRhYmxlXSkuXAogICAgICAgICAgICAgICAgd2hlcmUoc29tZXRhYmxlLmMuY29sdW1uLnN0YXJ0c3dpdGgoImZvb2JhciIpKQoKICAgICAgICBTaW5jZSB0aGUgb3BlcmF0b3IgdXNlcyBgYExJS0VgYCwgd2lsZGNhcmQgY2hhcmFjdGVycwogICAgICAgIGBgIiUiYGAgYW5kIGBgIl8iYGAgdGhhdCBhcmUgcHJlc2VudCBpbnNpZGUgdGhlIDxvdGhlcj4gZXhwcmVzc2lvbgogICAgICAgIHdpbGwgYmVoYXZlIGxpa2Ugd2lsZGNhcmRzIGFzIHdlbGwuICAgRm9yIGxpdGVyYWwgc3RyaW5nCiAgICAgICAgdmFsdWVzLCB0aGUgOnBhcmFtcmVmOmAuQ29sdW1uT3BlcmF0b3JzLnN0YXJ0c3dpdGguYXV0b2VzY2FwZWAgZmxhZwogICAgICAgIG1heSBiZSBzZXQgdG8gYGBUcnVlYGAgdG8gYXBwbHkgZXNjYXBpbmcgdG8gb2NjdXJyZW5jZXMgb2YgdGhlc2UKICAgICAgICBjaGFyYWN0ZXJzIHdpdGhpbiB0aGUgc3RyaW5nIHZhbHVlIHNvIHRoYXQgdGhleSBtYXRjaCBhcyB0aGVtc2VsdmVzCiAgICAgICAgYW5kIG5vdCBhcyB3aWxkY2FyZCBjaGFyYWN0ZXJzLiAgQWx0ZXJuYXRpdmVseSwgdGhlCiAgICAgICAgOnBhcmFtcmVmOmAuQ29sdW1uT3BlcmF0b3JzLnN0YXJ0c3dpdGguZXNjYXBlYCBwYXJhbWV0ZXIgd2lsbCBlc3RhYmxpc2gKICAgICAgICBhIGdpdmVuIGNoYXJhY3RlciBhcyBhbiBlc2NhcGUgY2hhcmFjdGVyIHdoaWNoIGNhbiBiZSBvZiB1c2Ugd2hlbgogICAgICAgIHRoZSB0YXJnZXQgZXhwcmVzc2lvbiBpcyBub3QgYSBsaXRlcmFsIHN0cmluZy4KCiAgICAgICAgOnBhcmFtIG90aGVyOiBleHByZXNzaW9uIHRvIGJlIGNvbXBhcmVkLiAgIFRoaXMgaXMgdXN1YWxseSBhIHBsYWluCiAgICAgICAgICBzdHJpbmcgdmFsdWUsIGJ1dCBjYW4gYWxzbyBiZSBhbiBhcmJpdHJhcnkgU1FMIGV4cHJlc3Npb24uICBMSUtFCiAgICAgICAgICB3aWxkY2FyZCBjaGFyYWN0ZXJzIGBgJWBgIGFuZCBgYF9gYCBhcmUgbm90IGVzY2FwZWQgYnkgZGVmYXVsdCB1bmxlc3MKICAgICAgICAgIHRoZSA6cGFyYW1yZWY6YC5Db2x1bW5PcGVyYXRvcnMuc3RhcnRzd2l0aC5hdXRvZXNjYXBlYCBmbGFnIGlzCiAgICAgICAgICBzZXQgdG8gVHJ1ZS4KCiAgICAgICAgOnBhcmFtIGF1dG9lc2NhcGU6IGJvb2xlYW47IHdoZW4gVHJ1ZSwgZXN0YWJsaXNoZXMgYW4gZXNjYXBlIGNoYXJhY3RlcgogICAgICAgICAgd2l0aGluIHRoZSBMSUtFIGV4cHJlc3Npb24sIHRoZW4gYXBwbGllcyBpdCB0byBhbGwgb2NjdXJyZW5jZXMgb2YKICAgICAgICAgIGBgIiUiYGAsIGBgIl8iYGAgYW5kIHRoZSBlc2NhcGUgY2hhcmFjdGVyIGl0c2VsZiB3aXRoaW4gdGhlCiAgICAgICAgICBjb21wYXJpc29uIHZhbHVlLCB3aGljaCBpcyBhc3N1bWVkIHRvIGJlIGEgbGl0ZXJhbCBzdHJpbmcgYW5kIG5vdCBhCiAgICAgICAgICBTUUwgZXhwcmVzc2lvbi4KCiAgICAgICAgICBBbiBleHByZXNzaW9uIHN1Y2ggYXM6OgoKICAgICAgICAgICAgc29tZWNvbHVtbi5zdGFydHN3aXRoKCJmb28lYmFyIiwgYXV0b2VzY2FwZT1UcnVlKQoKICAgICAgICAgIFdpbGwgcmVuZGVyIGFzOjoKCiAgICAgICAgICAgIHNvbWVjb2x1bW4gTElLRSA6cGFyYW0gfHwgJyUnIEVTQ0FQRSAnLycKCiAgICAgICAgICBXaXRoIHRoZSB2YWx1ZSBvZiA6cGFyYW0gYXMgYGAiZm9vLyViYXIiYGAuCgogICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4yCgogICAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAxLjIuMCBUaGUKICAgICAgICAgICAgOnBhcmFtcmVmOmAuQ29sdW1uT3BlcmF0b3JzLnN0YXJ0c3dpdGguYXV0b2VzY2FwZWAgcGFyYW1ldGVyIGlzCiAgICAgICAgICAgICBub3cgYSBzaW1wbGUgYm9vbGVhbiByYXRoZXIgdGhhbiBhIGNoYXJhY3RlcjsgdGhlIGVzY2FwZQogICAgICAgICAgICAgY2hhcmFjdGVyIGl0c2VsZiBpcyBhbHNvIGVzY2FwZWQsIGFuZCBkZWZhdWx0cyB0byBhIGZvcndhcmRzCiAgICAgICAgICAgICBzbGFzaCwgd2hpY2ggaXRzZWxmIGNhbiBiZSBjdXN0b21pemVkIHVzaW5nIHRoZQogICAgICAgICAgICAgOnBhcmFtcmVmOmAuQ29sdW1uT3BlcmF0b3JzLnN0YXJ0c3dpdGguZXNjYXBlYCBwYXJhbWV0ZXIuCgogICAgICAgIDpwYXJhbSBlc2NhcGU6IGEgY2hhcmFjdGVyIHdoaWNoIHdoZW4gZ2l2ZW4gd2lsbCByZW5kZXIgd2l0aCB0aGUKICAgICAgICAgIGBgRVNDQVBFYGAga2V5d29yZCB0byBlc3RhYmxpc2ggdGhhdCBjaGFyYWN0ZXIgYXMgdGhlIGVzY2FwZQogICAgICAgICAgY2hhcmFjdGVyLiAgVGhpcyBjaGFyYWN0ZXIgY2FuIHRoZW4gYmUgcGxhY2VkIHByZWNlZGluZyBvY2N1cnJlbmNlcwogICAgICAgICAgb2YgYGAlYGAgYW5kIGBgX2BgIHRvIGFsbG93IHRoZW0gdG8gYWN0IGFzIHRoZW1zZWx2ZXMgYW5kIG5vdAogICAgICAgICAgd2lsZGNhcmQgY2hhcmFjdGVycy4KCiAgICAgICAgICBBbiBleHByZXNzaW9uIHN1Y2ggYXM6OgoKICAgICAgICAgICAgc29tZWNvbHVtbi5zdGFydHN3aXRoKCJmb28vJWJhciIsIGVzY2FwZT0iXiIpCgogICAgICAgICAgV2lsbCByZW5kZXIgYXM6OgoKICAgICAgICAgICAgc29tZWNvbHVtbiBMSUtFIDpwYXJhbSB8fCAnJScgRVNDQVBFICdeJwoKICAgICAgICAgIFRoZSBwYXJhbWV0ZXIgbWF5IGFsc28gYmUgY29tYmluZWQgd2l0aAogICAgICAgICAgOnBhcmFtcmVmOmAuQ29sdW1uT3BlcmF0b3JzLnN0YXJ0c3dpdGguYXV0b2VzY2FwZWA6OgoKICAgICAgICAgICAgc29tZWNvbHVtbi5zdGFydHN3aXRoKCJmb28lYmFyXmJhdCIsIGVzY2FwZT0iXiIsIGF1dG9lc2NhcGU9VHJ1ZSkKCiAgICAgICAgICBXaGVyZSBhYm92ZSwgdGhlIGdpdmVuIGxpdGVyYWwgcGFyYW1ldGVyIHdpbGwgYmUgY29udmVydGVkIHRvCiAgICAgICAgICBgYCJmb29eJWJhcl5eYmF0ImBgIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8gdGhlIGRhdGFiYXNlLgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDptZXRoOmAuQ29sdW1uT3BlcmF0b3JzLmVuZHN3aXRoYAoKICAgICAgICAgICAgOm1ldGg6YC5Db2x1bW5PcGVyYXRvcnMuY29udGFpbnNgCgogICAgICAgICAgICA6bWV0aDpgLkNvbHVtbk9wZXJhdG9ycy5saWtlYAoKICAgICAgICApAnIaAAAA2g1zdGFydHN3aXRoX29wKQNyGwAAAHIcAAAAciwAAAByGQAAAHIZAAAAch0AAADaCnN0YXJ0c3dpdGikAgAAcwIAAAAAVnoaQ29sdW1uT3BlcmF0b3JzLnN0YXJ0c3dpdGhjAgAAAAAAAAADAAAAAwAAAEsAAABzEAAAAHwAagB0AXwBZgJ8Ao4BUwApAWHjDAAASW1wbGVtZW50IHRoZSAnZW5kc3dpdGgnIG9wZXJhdG9yLgoKICAgICAgICBQcm9kdWNlcyBhIExJS0UgZXhwcmVzc2lvbiB0aGF0IHRlc3RzIGFnYWluc3QgYSBtYXRjaCBmb3IgdGhlIGVuZAogICAgICAgIG9mIGEgc3RyaW5nIHZhbHVlOjoKCiAgICAgICAgICAgIGNvbHVtbiBMSUtFICclJyB8fCA8b3RoZXI+CgogICAgICAgIEUuZy46OgoKICAgICAgICAgICAgc3RtdCA9IHNlbGVjdChbc29tZXRhYmxlXSkuXAogICAgICAgICAgICAgICAgd2hlcmUoc29tZXRhYmxlLmMuY29sdW1uLmVuZHN3aXRoKCJmb29iYXIiKSkKCiAgICAgICAgU2luY2UgdGhlIG9wZXJhdG9yIHVzZXMgYGBMSUtFYGAsIHdpbGRjYXJkIGNoYXJhY3RlcnMKICAgICAgICBgYCIlImBgIGFuZCBgYCJfImBgIHRoYXQgYXJlIHByZXNlbnQgaW5zaWRlIHRoZSA8b3RoZXI+IGV4cHJlc3Npb24KICAgICAgICB3aWxsIGJlaGF2ZSBsaWtlIHdpbGRjYXJkcyBhcyB3ZWxsLiAgIEZvciBsaXRlcmFsIHN0cmluZwogICAgICAgIHZhbHVlcywgdGhlIDpwYXJhbXJlZjpgLkNvbHVtbk9wZXJhdG9ycy5lbmRzd2l0aC5hdXRvZXNjYXBlYCBmbGFnCiAgICAgICAgbWF5IGJlIHNldCB0byBgYFRydWVgYCB0byBhcHBseSBlc2NhcGluZyB0byBvY2N1cnJlbmNlcyBvZiB0aGVzZQogICAgICAgIGNoYXJhY3RlcnMgd2l0aGluIHRoZSBzdHJpbmcgdmFsdWUgc28gdGhhdCB0aGV5IG1hdGNoIGFzIHRoZW1zZWx2ZXMKICAgICAgICBhbmQgbm90IGFzIHdpbGRjYXJkIGNoYXJhY3RlcnMuICBBbHRlcm5hdGl2ZWx5LCB0aGUKICAgICAgICA6cGFyYW1yZWY6YC5Db2x1bW5PcGVyYXRvcnMuZW5kc3dpdGguZXNjYXBlYCBwYXJhbWV0ZXIgd2lsbCBlc3RhYmxpc2gKICAgICAgICBhIGdpdmVuIGNoYXJhY3RlciBhcyBhbiBlc2NhcGUgY2hhcmFjdGVyIHdoaWNoIGNhbiBiZSBvZiB1c2Ugd2hlbgogICAgICAgIHRoZSB0YXJnZXQgZXhwcmVzc2lvbiBpcyBub3QgYSBsaXRlcmFsIHN0cmluZy4KCiAgICAgICAgOnBhcmFtIG90aGVyOiBleHByZXNzaW9uIHRvIGJlIGNvbXBhcmVkLiAgIFRoaXMgaXMgdXN1YWxseSBhIHBsYWluCiAgICAgICAgICBzdHJpbmcgdmFsdWUsIGJ1dCBjYW4gYWxzbyBiZSBhbiBhcmJpdHJhcnkgU1FMIGV4cHJlc3Npb24uICBMSUtFCiAgICAgICAgICB3aWxkY2FyZCBjaGFyYWN0ZXJzIGBgJWBgIGFuZCBgYF9gYCBhcmUgbm90IGVzY2FwZWQgYnkgZGVmYXVsdCB1bmxlc3MKICAgICAgICAgIHRoZSA6cGFyYW1yZWY6YC5Db2x1bW5PcGVyYXRvcnMuZW5kc3dpdGguYXV0b2VzY2FwZWAgZmxhZyBpcwogICAgICAgICAgc2V0IHRvIFRydWUuCgogICAgICAgIDpwYXJhbSBhdXRvZXNjYXBlOiBib29sZWFuOyB3aGVuIFRydWUsIGVzdGFibGlzaGVzIGFuIGVzY2FwZSBjaGFyYWN0ZXIKICAgICAgICAgIHdpdGhpbiB0aGUgTElLRSBleHByZXNzaW9uLCB0aGVuIGFwcGxpZXMgaXQgdG8gYWxsIG9jY3VycmVuY2VzIG9mCiAgICAgICAgICBgYCIlImBgLCBgYCJfImBgIGFuZCB0aGUgZXNjYXBlIGNoYXJhY3RlciBpdHNlbGYgd2l0aGluIHRoZQogICAgICAgICAgY29tcGFyaXNvbiB2YWx1ZSwgd2hpY2ggaXMgYXNzdW1lZCB0byBiZSBhIGxpdGVyYWwgc3RyaW5nIGFuZCBub3QgYQogICAgICAgICAgU1FMIGV4cHJlc3Npb24uCgogICAgICAgICAgQW4gZXhwcmVzc2lvbiBzdWNoIGFzOjoKCiAgICAgICAgICAgIHNvbWVjb2x1bW4uZW5kc3dpdGgoImZvbyViYXIiLCBhdXRvZXNjYXBlPVRydWUpCgogICAgICAgICAgV2lsbCByZW5kZXIgYXM6OgoKICAgICAgICAgICAgc29tZWNvbHVtbiBMSUtFICclJyB8fCA6cGFyYW0gRVNDQVBFICcvJwoKICAgICAgICAgIFdpdGggdGhlIHZhbHVlIG9mIDpwYXJhbSBhcyBgYCJmb28vJWJhciJgYC4KCiAgICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjIKCiAgICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDEuMi4wIFRoZQogICAgICAgICAgICA6cGFyYW1yZWY6YC5Db2x1bW5PcGVyYXRvcnMuZW5kc3dpdGguYXV0b2VzY2FwZWAgcGFyYW1ldGVyIGlzCiAgICAgICAgICAgICBub3cgYSBzaW1wbGUgYm9vbGVhbiByYXRoZXIgdGhhbiBhIGNoYXJhY3RlcjsgdGhlIGVzY2FwZQogICAgICAgICAgICAgY2hhcmFjdGVyIGl0c2VsZiBpcyBhbHNvIGVzY2FwZWQsIGFuZCBkZWZhdWx0cyB0byBhIGZvcndhcmRzCiAgICAgICAgICAgICBzbGFzaCwgd2hpY2ggaXRzZWxmIGNhbiBiZSBjdXN0b21pemVkIHVzaW5nIHRoZQogICAgICAgICAgICAgOnBhcmFtcmVmOmAuQ29sdW1uT3BlcmF0b3JzLmVuZHN3aXRoLmVzY2FwZWAgcGFyYW1ldGVyLgoKICAgICAgICA6cGFyYW0gZXNjYXBlOiBhIGNoYXJhY3RlciB3aGljaCB3aGVuIGdpdmVuIHdpbGwgcmVuZGVyIHdpdGggdGhlCiAgICAgICAgICBgYEVTQ0FQRWBgIGtleXdvcmQgdG8gZXN0YWJsaXNoIHRoYXQgY2hhcmFjdGVyIGFzIHRoZSBlc2NhcGUKICAgICAgICAgIGNoYXJhY3Rlci4gIFRoaXMgY2hhcmFjdGVyIGNhbiB0aGVuIGJlIHBsYWNlZCBwcmVjZWRpbmcgb2NjdXJyZW5jZXMKICAgICAgICAgIG9mIGBgJWBgIGFuZCBgYF9gYCB0byBhbGxvdyB0aGVtIHRvIGFjdCBhcyB0aGVtc2VsdmVzIGFuZCBub3QKICAgICAgICAgIHdpbGRjYXJkIGNoYXJhY3RlcnMuCgogICAgICAgICAgQW4gZXhwcmVzc2lvbiBzdWNoIGFzOjoKCiAgICAgICAgICAgIHNvbWVjb2x1bW4uZW5kc3dpdGgoImZvby8lYmFyIiwgZXNjYXBlPSJeIikKCiAgICAgICAgICBXaWxsIHJlbmRlciBhczo6CgogICAgICAgICAgICBzb21lY29sdW1uIExJS0UgJyUnIHx8IDpwYXJhbSBFU0NBUEUgJ14nCgogICAgICAgICAgVGhlIHBhcmFtZXRlciBtYXkgYWxzbyBiZSBjb21iaW5lZCB3aXRoCiAgICAgICAgICA6cGFyYW1yZWY6YC5Db2x1bW5PcGVyYXRvcnMuZW5kc3dpdGguYXV0b2VzY2FwZWA6OgoKICAgICAgICAgICAgc29tZWNvbHVtbi5lbmRzd2l0aCgiZm9vJWJhcl5iYXQiLCBlc2NhcGU9Il4iLCBhdXRvZXNjYXBlPVRydWUpCgogICAgICAgICAgV2hlcmUgYWJvdmUsIHRoZSBnaXZlbiBsaXRlcmFsIHBhcmFtZXRlciB3aWxsIGJlIGNvbnZlcnRlZCB0bwogICAgICAgICAgYGAiZm9vXiViYXJeXmJhdCJgYCBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIHRoZSBkYXRhYmFzZS4KCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6bWV0aDpgLkNvbHVtbk9wZXJhdG9ycy5zdGFydHN3aXRoYAoKICAgICAgICAgICAgOm1ldGg6YC5Db2x1bW5PcGVyYXRvcnMuY29udGFpbnNgCgogICAgICAgICAgICA6bWV0aDpgLkNvbHVtbk9wZXJhdG9ycy5saWtlYAoKICAgICAgICApAnIaAAAA2gtlbmRzd2l0aF9vcCkDchsAAAByHAAAAHIsAAAAchkAAAByGQAAAHIdAAAA2ghlbmRzd2l0aPwCAABzAgAAAABWehhDb2x1bW5PcGVyYXRvcnMuZW5kc3dpdGhjAgAAAAAAAAADAAAAAwAAAEsAAABzEAAAAHwAagB0AXwBZgJ8Ao4BUwApAWH8DAAASW1wbGVtZW50IHRoZSAnY29udGFpbnMnIG9wZXJhdG9yLgoKICAgICAgICBQcm9kdWNlcyBhIExJS0UgZXhwcmVzc2lvbiB0aGF0IHRlc3RzIGFnYWluc3QgYSBtYXRjaCBmb3IgdGhlIG1pZGRsZQogICAgICAgIG9mIGEgc3RyaW5nIHZhbHVlOjoKCiAgICAgICAgICAgIGNvbHVtbiBMSUtFICclJyB8fCA8b3RoZXI+IHx8ICclJwoKICAgICAgICBFLmcuOjoKCiAgICAgICAgICAgIHN0bXQgPSBzZWxlY3QoW3NvbWV0YWJsZV0pLlwKICAgICAgICAgICAgICAgIHdoZXJlKHNvbWV0YWJsZS5jLmNvbHVtbi5jb250YWlucygiZm9vYmFyIikpCgogICAgICAgIFNpbmNlIHRoZSBvcGVyYXRvciB1c2VzIGBgTElLRWBgLCB3aWxkY2FyZCBjaGFyYWN0ZXJzCiAgICAgICAgYGAiJSJgYCBhbmQgYGAiXyJgYCB0aGF0IGFyZSBwcmVzZW50IGluc2lkZSB0aGUgPG90aGVyPiBleHByZXNzaW9uCiAgICAgICAgd2lsbCBiZWhhdmUgbGlrZSB3aWxkY2FyZHMgYXMgd2VsbC4gICBGb3IgbGl0ZXJhbCBzdHJpbmcKICAgICAgICB2YWx1ZXMsIHRoZSA6cGFyYW1yZWY6YC5Db2x1bW5PcGVyYXRvcnMuY29udGFpbnMuYXV0b2VzY2FwZWAgZmxhZwogICAgICAgIG1heSBiZSBzZXQgdG8gYGBUcnVlYGAgdG8gYXBwbHkgZXNjYXBpbmcgdG8gb2NjdXJyZW5jZXMgb2YgdGhlc2UKICAgICAgICBjaGFyYWN0ZXJzIHdpdGhpbiB0aGUgc3RyaW5nIHZhbHVlIHNvIHRoYXQgdGhleSBtYXRjaCBhcyB0aGVtc2VsdmVzCiAgICAgICAgYW5kIG5vdCBhcyB3aWxkY2FyZCBjaGFyYWN0ZXJzLiAgQWx0ZXJuYXRpdmVseSwgdGhlCiAgICAgICAgOnBhcmFtcmVmOmAuQ29sdW1uT3BlcmF0b3JzLmNvbnRhaW5zLmVzY2FwZWAgcGFyYW1ldGVyIHdpbGwgZXN0YWJsaXNoCiAgICAgICAgYSBnaXZlbiBjaGFyYWN0ZXIgYXMgYW4gZXNjYXBlIGNoYXJhY3RlciB3aGljaCBjYW4gYmUgb2YgdXNlIHdoZW4KICAgICAgICB0aGUgdGFyZ2V0IGV4cHJlc3Npb24gaXMgbm90IGEgbGl0ZXJhbCBzdHJpbmcuCgogICAgICAgIDpwYXJhbSBvdGhlcjogZXhwcmVzc2lvbiB0byBiZSBjb21wYXJlZC4gICBUaGlzIGlzIHVzdWFsbHkgYSBwbGFpbgogICAgICAgICAgc3RyaW5nIHZhbHVlLCBidXQgY2FuIGFsc28gYmUgYW4gYXJiaXRyYXJ5IFNRTCBleHByZXNzaW9uLiAgTElLRQogICAgICAgICAgd2lsZGNhcmQgY2hhcmFjdGVycyBgYCVgYCBhbmQgYGBfYGAgYXJlIG5vdCBlc2NhcGVkIGJ5IGRlZmF1bHQgdW5sZXNzCiAgICAgICAgICB0aGUgOnBhcmFtcmVmOmAuQ29sdW1uT3BlcmF0b3JzLmNvbnRhaW5zLmF1dG9lc2NhcGVgIGZsYWcgaXMKICAgICAgICAgIHNldCB0byBUcnVlLgoKICAgICAgICA6cGFyYW0gYXV0b2VzY2FwZTogYm9vbGVhbjsgd2hlbiBUcnVlLCBlc3RhYmxpc2hlcyBhbiBlc2NhcGUgY2hhcmFjdGVyCiAgICAgICAgICB3aXRoaW4gdGhlIExJS0UgZXhwcmVzc2lvbiwgdGhlbiBhcHBsaWVzIGl0IHRvIGFsbCBvY2N1cnJlbmNlcyBvZgogICAgICAgICAgYGAiJSJgYCwgYGAiXyJgYCBhbmQgdGhlIGVzY2FwZSBjaGFyYWN0ZXIgaXRzZWxmIHdpdGhpbiB0aGUKICAgICAgICAgIGNvbXBhcmlzb24gdmFsdWUsIHdoaWNoIGlzIGFzc3VtZWQgdG8gYmUgYSBsaXRlcmFsIHN0cmluZyBhbmQgbm90IGEKICAgICAgICAgIFNRTCBleHByZXNzaW9uLgoKICAgICAgICAgIEFuIGV4cHJlc3Npb24gc3VjaCBhczo6CgogICAgICAgICAgICBzb21lY29sdW1uLmNvbnRhaW5zKCJmb28lYmFyIiwgYXV0b2VzY2FwZT1UcnVlKQoKICAgICAgICAgIFdpbGwgcmVuZGVyIGFzOjoKCiAgICAgICAgICAgIHNvbWVjb2x1bW4gTElLRSAnJScgfHwgOnBhcmFtIHx8ICclJyBFU0NBUEUgJy8nCgogICAgICAgICAgV2l0aCB0aGUgdmFsdWUgb2YgOnBhcmFtIGFzIGBgImZvby8lYmFyImBgLgoKICAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMgoKICAgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMS4yLjAgVGhlCiAgICAgICAgICAgIDpwYXJhbXJlZjpgLkNvbHVtbk9wZXJhdG9ycy5jb250YWlucy5hdXRvZXNjYXBlYCBwYXJhbWV0ZXIgaXMKICAgICAgICAgICAgIG5vdyBhIHNpbXBsZSBib29sZWFuIHJhdGhlciB0aGFuIGEgY2hhcmFjdGVyOyB0aGUgZXNjYXBlCiAgICAgICAgICAgICBjaGFyYWN0ZXIgaXRzZWxmIGlzIGFsc28gZXNjYXBlZCwgYW5kIGRlZmF1bHRzIHRvIGEgZm9yd2FyZHMKICAgICAgICAgICAgIHNsYXNoLCB3aGljaCBpdHNlbGYgY2FuIGJlIGN1c3RvbWl6ZWQgdXNpbmcgdGhlCiAgICAgICAgICAgICA6cGFyYW1yZWY6YC5Db2x1bW5PcGVyYXRvcnMuY29udGFpbnMuZXNjYXBlYCBwYXJhbWV0ZXIuCgogICAgICAgIDpwYXJhbSBlc2NhcGU6IGEgY2hhcmFjdGVyIHdoaWNoIHdoZW4gZ2l2ZW4gd2lsbCByZW5kZXIgd2l0aCB0aGUKICAgICAgICAgIGBgRVNDQVBFYGAga2V5d29yZCB0byBlc3RhYmxpc2ggdGhhdCBjaGFyYWN0ZXIgYXMgdGhlIGVzY2FwZQogICAgICAgICAgY2hhcmFjdGVyLiAgVGhpcyBjaGFyYWN0ZXIgY2FuIHRoZW4gYmUgcGxhY2VkIHByZWNlZGluZyBvY2N1cnJlbmNlcwogICAgICAgICAgb2YgYGAlYGAgYW5kIGBgX2BgIHRvIGFsbG93IHRoZW0gdG8gYWN0IGFzIHRoZW1zZWx2ZXMgYW5kIG5vdAogICAgICAgICAgd2lsZGNhcmQgY2hhcmFjdGVycy4KCiAgICAgICAgICBBbiBleHByZXNzaW9uIHN1Y2ggYXM6OgoKICAgICAgICAgICAgc29tZWNvbHVtbi5jb250YWlucygiZm9vLyViYXIiLCBlc2NhcGU9Il4iKQoKICAgICAgICAgIFdpbGwgcmVuZGVyIGFzOjoKCiAgICAgICAgICAgIHNvbWVjb2x1bW4gTElLRSAnJScgfHwgOnBhcmFtIHx8ICclJyBFU0NBUEUgJ14nCgogICAgICAgICAgVGhlIHBhcmFtZXRlciBtYXkgYWxzbyBiZSBjb21iaW5lZCB3aXRoCiAgICAgICAgICA6cGFyYW1yZWY6YC5Db2x1bW5PcGVyYXRvcnMuY29udGFpbnMuYXV0b2VzY2FwZWA6OgoKICAgICAgICAgICAgc29tZWNvbHVtbi5jb250YWlucygiZm9vJWJhcl5iYXQiLCBlc2NhcGU9Il4iLCBhdXRvZXNjYXBlPVRydWUpCgogICAgICAgICAgV2hlcmUgYWJvdmUsIHRoZSBnaXZlbiBsaXRlcmFsIHBhcmFtZXRlciB3aWxsIGJlIGNvbnZlcnRlZCB0bwogICAgICAgICAgYGAiZm9vXiViYXJeXmJhdCJgYCBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIHRoZSBkYXRhYmFzZS4KCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6bWV0aDpgLkNvbHVtbk9wZXJhdG9ycy5zdGFydHN3aXRoYAoKICAgICAgICAgICAgOm1ldGg6YC5Db2x1bW5PcGVyYXRvcnMuZW5kc3dpdGhgCgogICAgICAgICAgICA6bWV0aDpgLkNvbHVtbk9wZXJhdG9ycy5saWtlYAoKCiAgICAgICAgKQJyGgAAANoLY29udGFpbnNfb3ApA3IbAAAAchwAAAByLAAAAHIZAAAAchkAAAByHQAAAHIEAAAAVAMAAHMCAAAAAFd6GENvbHVtbk9wZXJhdG9ycy5jb250YWluc2MCAAAAAAAAAAMAAAADAAAASwAAAHMQAAAAfABqAHQBfAFmAnwCjgFTACkBYVkCAABJbXBsZW1lbnRzIGEgZGF0YWJhc2Utc3BlY2lmaWMgJ21hdGNoJyBvcGVyYXRvci4KCiAgICAgICAgOm1ldGg6YH4uQ29sdW1uT3BlcmF0b3JzLm1hdGNoYCBhdHRlbXB0cyB0byByZXNvbHZlIHRvCiAgICAgICAgYSBNQVRDSC1saWtlIGZ1bmN0aW9uIG9yIG9wZXJhdG9yIHByb3ZpZGVkIGJ5IHRoZSBiYWNrZW5k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
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-37.pyc
5.57 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
base.cpython-37.pyc
23.16 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
compiler.cpython-37.pyc
93.70 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
crud.cpython-37.pyc
15.01 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ddl.cpython-37.pyc
36.50 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
default_comparator.cpython-37.pyc
7.21 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dml.cpython-37.pyc
31.66 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
elements.cpython-37.pyc
146.00 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
expression.cpython-37.pyc
6.47 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
functions.cpython-37.pyc
32.50 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
naming.cpython-37.pyc
4.67 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
operators.cpython-37.pyc
45.37 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
schema.cpython-37.pyc
142.91 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
selectable.cpython-37.pyc
122.08 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
sqltypes.cpython-37.pyc
86.91 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
type_api.cpython-37.pyc
47.55 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
util.cpython-37.pyc
23.63 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
visitors.cpython-37.pyc
10.00 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.pyc
3.02 KB
lrw-r--r--
2023-11-14 14:32:36
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).