REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 25.64 KB
Close
/opt/cloudlinux/venv/lib64/python3.11/site-packages/sqlalchemy/engine/__pycache__/__init__.cpython-311.pyc
Text
Base64
pw0NCgAAAAAMDjFq8mIAAOMAAAAAAAAAAAAAAAACAAAAAAAAAPNAAQAAlwBkAFoAZAFkAmwBbQJaAgEAZAFkA2wBbQNaAwEAZAFkBGwEbQVaBQEAZAFkBWwEbQZaBgEAZAFkBmwEbQdaBwEAZAFkB2wEbQhaCAEAZAFkCGwEbQlaCQEAZAFkCWwEbQpaCgEAZAFkCmwLbQxaDAEAZAFkC2wLbQ1aDQEAZAFkDGwLbQ5aDgEAZAFkDWwLbQ9aDwEAZAFkDmwLbRBaEAEAZAFkD2wLbRFaEQEAZAFkEGwLbRJaEgEAZAFkEWwTbRRaFAEAZAFkEmwTbRVaFQEAZAFkE2wTbRZaFgEAZAFkFGwTbRdaFwEAZAFkFWwTbRhaGAEAZAFkFmwTbRlaGQEAZAFkF2wTbRpaGgEAZAFkGGwDbRtaGwEAZBlkGmwcbR1aHQEAZBtaHmQchABaH2QhZB6EAVogZB9aIWQgUwApImF0BwAAU1FMIGNvbm5lY3Rpb25zLCBTUUwgZXhlY3V0aW9uIGFuZCBoaWdoLWxldmVsIERCLUFQSSBpbnRlcmZhY2UuCgpUaGUgZW5naW5lIHBhY2thZ2UgZGVmaW5lcyB0aGUgYmFzaWMgY29tcG9uZW50cyB1c2VkIHRvIGludGVyZmFjZQpEQi1BUEkgbW9kdWxlcyB3aXRoIGhpZ2hlci1sZXZlbCBzdGF0ZW1lbnQgY29uc3RydWN0aW9uLApjb25uZWN0aW9uLW1hbmFnZW1lbnQsIGV4ZWN1dGlvbiBhbmQgcmVzdWx0IGNvbnRleHRzLiAgVGhlIHByaW1hcnkKImVudHJ5IHBvaW50IiBjbGFzcyBpbnRvIHRoaXMgcGFja2FnZSBpcyB0aGUgRW5naW5lIGFuZCBpdHMgcHVibGljCmNvbnN0cnVjdG9yIGBgY3JlYXRlX2VuZ2luZSgpYGAuCgpUaGlzIHBhY2thZ2UgaW5jbHVkZXM6CgpiYXNlLnB5CiAgICBEZWZpbmVzIGludGVyZmFjZSBjbGFzc2VzIGFuZCBzb21lIGltcGxlbWVudGF0aW9uIGNsYXNzZXMgd2hpY2gKICAgIGNvbXByaXNlIHRoZSBiYXNpYyBjb21wb25lbnRzIHVzZWQgdG8gaW50ZXJmYWNlIGJldHdlZW4gYSBEQi1BUEksCiAgICBjb25zdHJ1Y3RlZCBhbmQgcGxhaW4tdGV4dCBzdGF0ZW1lbnRzLCBjb25uZWN0aW9ucywgdHJhbnNhY3Rpb25zLAogICAgYW5kIHJlc3VsdHMuCgpkZWZhdWx0LnB5CiAgICBDb250YWlucyBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBvZiBzb21lIG9mIHRoZSBjb21wb25lbnRzIGRlZmluZWQKICAgIGluIGJhc2UucHkuICBBbGwgY3VycmVudCBkYXRhYmFzZSBkaWFsZWN0cyB1c2UgdGhlIGNsYXNzZXMgaW4KICAgIGRlZmF1bHQucHkgYXMgYmFzZSBjbGFzc2VzIGZvciB0aGVpciBvd24gZGF0YWJhc2Utc3BlY2lmaWMKICAgIGltcGxlbWVudGF0aW9ucy4KCnN0cmF0ZWdpZXMucHkKICAgIFRoZSBtZWNoYW5pY3Mgb2YgY29uc3RydWN0aW5nIGBgRW5naW5lYGAgb2JqZWN0cyBhcmUgcmVwcmVzZW50ZWQKICAgIGhlcmUuICBEZWZpbmVzIHRoZSBgYEVuZ2luZVN0cmF0ZWd5YGAgY2xhc3Mgd2hpY2ggcmVwcmVzZW50cyBob3cKICAgIHRvIGdvIGZyb20gYXJndW1lbnRzIHNwZWNpZmllZCB0byB0aGUgYGBjcmVhdGVfZW5naW5lKClgYAogICAgZnVuY3Rpb24sIHRvIGEgZnVsbHkgY29uc3RydWN0ZWQgYGBFbmdpbmVgYCwgaW5jbHVkaW5nCiAgICBpbml0aWFsaXphdGlvbiBvZiBjb25uZWN0aW9uIHBvb2xpbmcsIGRpYWxlY3RzLCBhbmQgc3BlY2lmaWMKICAgIHN1YmNsYXNzZXMgb2YgYGBFbmdpbmVgYC4KCnRocmVhZGxvY2FsLnB5CiAgICBUaGUgYGBUTEVuZ2luZWBgIGNsYXNzIGlzIGRlZmluZWQgaGVyZSwgd2hpY2ggaXMgYSBzdWJjbGFzcyBvZgogICAgdGhlIGdlbmVyaWMgYGBFbmdpbmVgYCBhbmQgdHJhY2tzIGBgQ29ubmVjdGlvbmBgIGFuZAogICAgYGBUcmFuc2FjdGlvbmBgIG9iamVjdHMgYWdhaW5zdCB0aGUgaWRlbnRpdHkgb2YgdGhlIGN1cnJlbnQKICAgIHRocmVhZC4gIFRoaXMgYWxsb3dzIGNlcnRhaW4gcHJvZ3JhbW1pbmcgcGF0dGVybnMgYmFzZWQgYXJvdW5kCiAgICB0aGUgY29uY2VwdCBvZiBhICJ0aHJlYWQtbG9jYWwgY29ubmVjdGlvbiIgdG8gYmUgcG9zc2libGUuCiAgICBUaGUgYGBUTEVuZ2luZWBgIGlzIGNyZWF0ZWQgYnkgdXNpbmcgdGhlICJ0aHJlYWRsb2NhbCIgZW5naW5lCiAgICBzdHJhdGVneSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBgYGNyZWF0ZV9lbmdpbmUoKWBgIGZ1bmN0aW9uLgoKdXJsLnB5CiAgICBEZWZpbmVzIHRoZSBgYFVSTGBgIGNsYXNzIHdoaWNoIHJlcHJlc2VudHMgdGhlIGluZGl2aWR1YWwKICAgIGNvbXBvbmVudHMgb2YgYSBzdHJpbmcgVVJMIHBhc3NlZCB0byBgYGNyZWF0ZV9lbmdpbmUoKWBgLiAgQWxzbwogICAgZGVmaW5lcyBhIGJhc2ljIG1vZHVsZS1sb2FkaW5nIHN0cmF0ZWd5IGZvciB0aGUgZGlhbGVjdCBzcGVjaWZpZXIKICAgIHdpdGhpbiBhIFVSTC4K6QEAAAApAdoKc3RyYXRlZ2llcykB2gR1dGlsKQHaCkNvbm5lY3Rpb24pAdoGRW5naW5lKQHaEU5lc3RlZFRyYW5zYWN0aW9uKQHaD1Jvb3RUcmFuc2FjdGlvbikB2gtUcmFuc2FjdGlvbikB2hNUd29QaGFzZVRyYW5zYWN0aW9uKQHaCENvbXBpbGVkKQHaC0Nvbm5lY3RhYmxlKQHaEkNyZWF0ZUVuZ2luZVBsdWdpbikB2gdEaWFsZWN0KQHaEEV4Y2VwdGlvbkNvbnRleHQpAdoQRXhlY3V0aW9uQ29udGV4dCkB2gxUeXBlQ29tcGlsZXIpAdoMQmFzZVJvd1Byb3h5KQHaGUJ1ZmZlcmVkQ29sdW1uUmVzdWx0UHJveHkpAdoRQnVmZmVyZWRDb2x1bW5Sb3cpAdoWQnVmZmVyZWRSb3dSZXN1bHRQcm94eSkB2hhGdWxseUJ1ZmZlcmVkUmVzdWx0UHJveHkpAdoLUmVzdWx0UHJveHkpAdoIUm93UHJveHkpAdoSY29ubmVjdGlvbl9tZW1vaXpl6QIAAAApAdoDZGRs2gVwbGFpbmMAAAAAAAAAAAAAAAAFAAAADwAAAPN2AAAAlwB8AaAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAXQCAAAAAAAAAAAAAKYCAACrAgAAAAAAAAAAfQJ0BAAAAAAAAAAAAABqAgAAAAAAAAAAfAIZAAAAAAAAAAAAfQICAHwCagMAAAAAAAAAAHwAaQB8AaQBjgFTACkCYYFOAABDcmVhdGUgYSBuZXcgOmNsYXNzOmBfZW5naW5lLkVuZ2luZWAgaW5zdGFuY2UuCgogICAgVGhlIHN0YW5kYXJkIGNhbGxpbmcgZm9ybSBpcyB0byBzZW5kIHRoZSA6cmVmOmBVUkwgPGRhdGFiYXNlX3VybHM+YCBhcyB0aGUKICAgIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnQsIHVzdWFsbHkgYSBzdHJpbmcKICAgIHRoYXQgaW5kaWNhdGVzIGRhdGFiYXNlIGRpYWxlY3QgYW5kIGNvbm5lY3Rpb24gYXJndW1lbnRzOjoKCiAgICAgICAgZW5naW5lID0gY3JlYXRlX2VuZ2luZSgicG9zdGdyZXNxbDovL3Njb3R0OnRpZ2VyQGxvY2FsaG9zdC90ZXN0IikKCiAgICAuLiBub3RlOjoKCiAgICAgICAgUGxlYXNlIHJldmlldyA6cmVmOmBkYXRhYmFzZV91cmxzYCBmb3IgZ2VuZXJhbCBndWlkZWxpbmVzIGluIGNvbXBvc2luZwogICAgICAgIFVSTCBzdHJpbmdzLiAgSW4gcGFydGljdWxhciwgc3BlY2lhbCBjaGFyYWN0ZXJzLCBzdWNoIGFzIHRob3NlIG9mdGVuCiAgICAgICAgcGFydCBvZiBwYXNzd29yZHMsIG11c3QgYmUgVVJMIGVuY29kZWQgdG8gYmUgcHJvcGVybHkgcGFyc2VkLgoKICAgIEFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgbWF5IHRoZW4gZm9sbG93IGl0IHdoaWNoCiAgICBlc3RhYmxpc2ggdmFyaW91cyBvcHRpb25zIG9uIHRoZSByZXN1bHRpbmcgOmNsYXNzOmBfZW5naW5lLkVuZ2luZWAKICAgIGFuZCBpdHMgdW5kZXJseWluZyA6Y2xhc3M6YC5EaWFsZWN0YCBhbmQgOmNsYXNzOmBfcG9vbC5Qb29sYAogICAgY29uc3RydWN0czo6CgogICAgICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoIm15c3FsOi8vc2NvdHQ6dGlnZXJAaG9zdG5hbWUvZGJuYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9J2xhdGluMScsIGVjaG89VHJ1ZSkKCiAgICBUaGUgc3RyaW5nIGZvcm0gb2YgdGhlIFVSTCBpcwogICAgYGBkaWFsZWN0Wytkcml2ZXJdOi8vdXNlcjpwYXNzd29yZEBob3N0L2RibmFtZVs/a2V5PXZhbHVlLi5dYGAsIHdoZXJlCiAgICBgYGRpYWxlY3RgYCBpcyBhIGRhdGFiYXNlIG5hbWUgc3VjaCBhcyBgYG15c3FsYGAsIGBgb3JhY2xlYGAsCiAgICBgYHBvc3RncmVzcWxgYCwgZXRjLiwgYW5kIGBgZHJpdmVyYGAgdGhlIG5hbWUgb2YgYSBEQkFQSSwgc3VjaCBhcwogICAgYGBwc3ljb3BnMmBgLCBgYHB5b2RiY2BgLCBgYGN4X29yYWNsZWBgLCBldGMuICBBbHRlcm5hdGl2ZWx5LAogICAgdGhlIFVSTCBjYW4gYmUgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmB+c3FsYWxjaGVteS5lbmdpbmUudXJsLlVSTGAuCgogICAgYGAqKmt3YXJnc2BgIHRha2VzIGEgd2lkZSB2YXJpZXR5IG9mIG9wdGlvbnMgd2hpY2ggYXJlIHJvdXRlZAogICAgdG93YXJkcyB0aGVpciBhcHByb3ByaWF0ZSBjb21wb25lbnRzLiAgQXJndW1lbnRzIG1heSBiZSBzcGVjaWZpYyB0bwogICAgdGhlIDpjbGFzczpgX2VuZ2luZS5FbmdpbmVgLCB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YC5EaWFsZWN0YCwKICAgIGFzIHdlbGwgYXMgdGhlCiAgICA6Y2xhc3M6YF9wb29sLlBvb2xgLiAgU3BlY2lmaWMgZGlhbGVjdHMgYWxzbyBhY2NlcHQga2V5d29yZCBhcmd1bWVudHMgdGhhdAogICAgYXJlIHVuaXF1ZSB0byB0aGF0IGRpYWxlY3QuICAgSGVyZSwgd2UgZGVzY3JpYmUgdGhlIHBhcmFtZXRlcnMKICAgIHRoYXQgYXJlIGNvbW1vbiB0byBtb3N0IDpmdW5jOmBfc2EuY3JlYXRlX2VuZ2luZSgpYCB1c2FnZS4KCiAgICBPbmNlIGVzdGFibGlzaGVkLCB0aGUgbmV3bHkgcmVzdWx0aW5nIDpjbGFzczpgX2VuZ2luZS5FbmdpbmVgIHdpbGwKICAgIHJlcXVlc3QgYSBjb25uZWN0aW9uIGZyb20gdGhlIHVuZGVybHlpbmcgOmNsYXNzOmBfcG9vbC5Qb29sYCBvbmNlCiAgICA6bWV0aDpgX2VuZ2luZS5FbmdpbmUuY29ubmVjdGAgaXMgY2FsbGVkLCBvciBhIG1ldGhvZCB3aGljaCBkZXBlbmRzIG9uIGl0CiAgICBzdWNoIGFzIDptZXRoOmBfZW5naW5lLkVuZ2luZS5leGVjdXRlYCBpcyBpbnZva2VkLiAgIFRoZQogICAgOmNsYXNzOmBfcG9vbC5Qb29sYCBpbiB0dXJuCiAgICB3aWxsIGVzdGFibGlzaCB0aGUgZmlyc3QgYWN0dWFsIERCQVBJIGNvbm5lY3Rpb24gd2hlbiB0aGlzIHJlcXVlc3QKICAgIGlzIHJlY2VpdmVkLiAgIFRoZSA6ZnVuYzpgX3NhLmNyZWF0ZV9lbmdpbmVgIGNhbGwgaXRzZWxmIGRvZXMgKipub3QqKgogICAgZXN0YWJsaXNoIGFueSBhY3R1YWwgREJBUEkgY29ubmVjdGlvbnMgZGlyZWN0bHkuCgogICAgLi4gc2VlYWxzbzo6CgogICAgICAgIDpkb2M6YC9jb3JlL2VuZ2luZXNgCgogICAgICAgIDpkb2M6YC9kaWFsZWN0cy9pbmRleGAKCiAgICAgICAgOnJlZjpgY29ubmVjdGlvbnNfdG9wbGV2ZWxgCgogICAgOnBhcmFtIGNhc2Vfc2Vuc2l0aXZlPVRydWU6IGlmIEZhbHNlLCByZXN1bHQgY29sdW1uIG5hbWVzCiAgICAgICB3aWxsIG1hdGNoIGluIGEgY2FzZS1pbnNlbnNpdGl2ZSBmYXNoaW9uLCB0aGF0IGlzLAogICAgICAgYGByb3dbJ1NvbWVDb2x1bW4nXWBgLgoKICAgIDpwYXJhbSBjb25uZWN0X2FyZ3M6IGEgZGljdGlvbmFyeSBvZiBvcHRpb25zIHdoaWNoIHdpbGwgYmUKICAgICAgICBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIERCQVBJJ3MgYGBjb25uZWN0KClgYCBtZXRob2QgYXMKICAgICAgICBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLiAgU2VlIHRoZSBleGFtcGxlCiAgICAgICAgYXQgOnJlZjpgY3VzdG9tX2RiYXBpX2FyZ3NgLgoKICAgIDpwYXJhbSBjb252ZXJ0X3VuaWNvZGU9RmFsc2U6IGlmIHNldCB0byBUcnVlLCBjYXVzZXMKICAgICAgICBhbGwgOmNsYXNzOmAuU3RyaW5nYCBkYXRhdHlwZXMgdG8gYWN0IGFzIHRob3VnaCB0aGUKICAgICAgICA6cGFyYW1yZWY6YC5TdHJpbmcuY29udmVydF91bmljb2RlYCBmbGFnIGhhcyBiZWVuIHNldCB0byBgYFRydWVgYCwKICAgICAgICByZWdhcmRsZXNzIG9mIGEgc2V0dGluZyBvZiBgYEZhbHNlYGAgb24gYW4gaW5kaXZpZHVhbCA6Y2xhc3M6YC5TdHJpbmdgCiAgICAgICAgdHlwZS4gIFRoaXMgaGFzIHRoZSBlZmZlY3Qgb2YgY2F1c2luZyBhbGwgOmNsYXNzOmAuU3RyaW5nYCAtYmFzZWQKICAgICAgICBjb2x1bW5zIHRvIGFjY29tbW9kYXRlIFB5dGhvbiBVbmljb2RlIG9iamVjdHMgZGlyZWN0bHkgYXMgdGhvdWdoIHRoZQogICAgICAgIGRhdGF0eXBlIHdlcmUgdGhlIDpjbGFzczpgLlVuaWNvZGVgIHR5cGUuCgogICAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAxLjMKCiAgICAgICAgICAgIFRoZSA6cGFyYW1yZWY6YF9zYS5jcmVhdGVfZW5naW5lLmNvbnZlcnRfdW5pY29kZWAgcGFyYW1ldGVyCiAgICAgICAgICAgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgogICAgICAgICAgICBBbGwgbW9kZXJuIERCQVBJcyBub3cgc3VwcG9ydCBQeXRob24gVW5pY29kZSBkaXJlY3RseSBhbmQgdGhpcwogICAgICAgICAgICBwYXJhbWV0ZXIgaXMgdW5uZWNlc3NhcnkuCgogICAgOnBhcmFtIGNyZWF0b3I6IGEgY2FsbGFibGUgd2hpY2ggcmV0dXJucyBhIERCQVBJIGNvbm5lY3Rpb24uCiAgICAgICAgVGhpcyBjcmVhdGlvbiBmdW5jdGlvbiB3aWxsIGJlIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZwogICAgICAgIGNvbm5lY3Rpb24gcG9vbCBhbmQgd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSBhbGwgbmV3IGRhdGFiYXNlCiAgICAgICAgY29ubmVjdGlvbnMuIFVzYWdlIG9mIHRoaXMgZnVuY3Rpb24gY2F1c2VzIGNvbm5lY3Rpb24KICAgICAgICBwYXJhbWV0ZXJzIHNwZWNpZmllZCBpbiB0aGUgVVJMIGFyZ3VtZW50IHRvIGJlIGJ5cGFzc2VkLgoKICAgICAgICBUaGlzIGhvb2sgaXMgbm90IGFzIGZsZXhpYmxlIGFzIHRoZSBuZXdlcgogICAgICAgIDpjbGFzczpgX2V2ZW50cy5EaWFsZWN0RXZlbnRzLmRvX2Nvbm5lY3RgIGhvb2sgd2hpY2ggYWxsb3dzIGNvbXBsZXRlCiAgICAgICAgY29udHJvbCBvdmVyIGhvdyBhIGNvbm5lY3Rpb24gaXMgbWFkZSB0byB0aGUgZGF0YWJhc2UsIGdpdmVuIHRoZSBmdWxsCiAgICAgICAgc2V0IG9mIFVSTCBhcmd1bWVudHMgYW5kIHN0YXRlIGJlZm9yZWhhbmQuCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOmNsYXNzOmBfZXZlbnRzLkRpYWxlY3RFdmVudHMuZG9fY29ubmVjdGAgLSBldmVudCBob29rIHRoYXQgYWxsb3dzCiAgICAgICAgICAgIGZ1bGwgY29udHJvbCBvdmVyIERCQVBJIGNvbm5lY3Rpb24gbWVjaGFuaWNzLgoKICAgICAgICAgICAgOnJlZjpgY3VzdG9tX2RiYXBpX2FyZ3NgCgogICAgOnBhcmFtIGVjaG89RmFsc2U6IGlmIFRydWUsIHRoZSBFbmdpbmUgd2lsbCBsb2cgYWxsIHN0YXRlbWVudHMKICAgICAgICBhcyB3ZWxsIGFzIGEgYGByZXByKClgYCBvZiB0aGVpciBwYXJhbWV0ZXIgbGlzdHMgdG8gdGhlIGRlZmF1bHQgbG9nCiAgICAgICAgaGFuZGxlciwgd2hpY2ggZGVmYXVsdHMgdG8gYGBzeXMuc3Rkb3V0YGAgZm9yIG91dHB1dC4gICBJZiBzZXQgdG8gdGhlCiAgICAgICAgc3RyaW5nIGBgImRlYnVnImBgLCByZXN1bHQgcm93cyB3aWxsIGJlIHByaW50ZWQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dAogICAgICAgIGFzIHdlbGwuIFRoZSBgYGVjaG9gYCBhdHRyaWJ1dGUgb2YgYGBFbmdpbmVgYCBjYW4gYmUgbW9kaWZpZWQgYXQgYW55CiAgICAgICAgdGltZSB0byB0dXJuIGxvZ2dpbmcgb24gYW5kIG9mZjsgZGlyZWN0IGNvbnRyb2wgb2YgbG9nZ2luZyBpcyBhbHNvCiAgICAgICAgYXZhaWxhYmxlIHVzaW5nIHRoZSBzdGFuZGFyZCBQeXRob24gYGBsb2dnaW5nYGAgbW9kdWxlLgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YGRiZW5naW5lX2xvZ2dpbmdgIC0gZnVydGhlciBkZXRhaWwgb24gaG93IHRvIGNvbmZpZ3VyZQogICAgICAgICAgICBsb2dnaW5nLgoKCiAgICA6cGFyYW0gZWNob19wb29sPUZhbHNlOiBpZiBUcnVlLCB0aGUgY29ubmVjdGlvbiBwb29sIHdpbGwgbG9nCiAgICAgICAgaW5mb3JtYXRpb25hbCBvdXRwdXQgc3VjaCBhcyB3aGVuIGNvbm5lY3Rpb25zIGFyZSBpbnZhbGlkYXRlZAogICAgICAgIGFzIHdlbGwgYXMgd2hlbiBjb25uZWN0aW9ucyBhcmUgcmVjeWNsZWQgdG8gdGhlIGRlZmF1bHQgbG9nIGhhbmRsZXIsCiAgICAgICAgd2hpY2ggZGVmYXVsdHMgdG8gYGBzeXMuc3Rkb3V0YGAgZm9yIG91dHB1dC4gICBJZiBzZXQgdG8gdGhlIHN0cmluZwogICAgICAgIGBgImRlYnVnImBgLCB0aGUgbG9nZ2luZyB3aWxsIGluY2x1ZGUgcG9vbCBjaGVja291dHMgYW5kIGNoZWNraW5zLgogICAgICAgIERpcmVjdCBjb250cm9sIG9mIGxvZ2dpbmcgaXMgYWxzbyBhdmFpbGFibGUgdXNpbmcgdGhlIHN0YW5kYXJkIFB5dGhvbgogICAgICAgIGBgbG9nZ2luZ2BgIG1vZHVsZS4KCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cmVmOmBkYmVuZ2luZV9sb2dnaW5nYCAtIGZ1cnRoZXIgZGV0YWlsIG9uIGhvdyB0byBjb25maWd1cmUKICAgICAgICAgICAgbG9nZ2luZy4KCgogICAgOnBhcmFtIGVtcHR5X2luX3N0cmF0ZWd5OiAgVGhlIFNRTCBjb21waWxhdGlvbiBzdHJhdGVneSB0byB1c2Ugd2hlbgogICAgICAgIHJlbmRlcmluZyBhbiBJTiBvciBOT1QgSU4gZXhwcmVzc2lvbiBmb3IgOm1ldGg6YC5Db2x1bW5PcGVyYXRvcnMuaW5fYAogICAgICAgIHdoZXJlIHRoZSByaWdodC1oYW5kIHNpZGUKICAgICAgICBpcyBhbiBlbXB0eSBzZXQuICAgVGhpcyBpcyBhIHN0cmluZyB2YWx1ZSB0aGF0IG1heSBiZSBvbmUgb2YKICAgICAgICBgYHN0YXRpY2BgLCBgYGR5bmFtaWNgYCwgb3IgYGBkeW5hbWljX3dhcm5gYC4gICBUaGUgYGBzdGF0aWNgYAogICAgICAgIHN0cmF0ZWd5IGlzIHRoZSBkZWZhdWx0LCBhbmQgYW4gSU4gY29tcGFyaXNvbiB0byBhbiBlbXB0eSBzZXQKICAgICAgICB3aWxsIGdlbmVyYXRlIGEgc2ltcGxlIGZhbHNlIGV4cHJlc3Npb24gIjEgIT0gMSIuICAgVGhlIGBgZHluYW1pY2BgCiAgICAgICAgc3RyYXRlZ3kgYmVoYXZlcyBsaWtlIHRoYXQgb2YgU1FMQWxjaGVteSAxLjEgYW5kIGVhcmxpZXIsIGVtaXR0aW5nCiAgICAgICAgYSBmYWxzZSBleHByZXNzaW9uIG9mIHRoZSBmb3JtICJleHByICE9IGV4cHIiLCB3aGljaCBoYXMgdGhlIGVmZmVjdAogICAgICAgIG9mIGV2YWx1dGluZyB0byBOVUxMIGluIHRoZSBjYXNlIG9mIGEgbnVsbCBleHByZXNzaW9uLgogICAgICAgIGBgZHluYW1pY193YXJuYGAgaXMgdGhlIHNhbWUgYXMgYGBkeW5hbWljYGAsIGhvd2V2ZXIgYWxzbyBlbWl0cyBhCiAgICAgICAgd2FybmluZyB3aGVuIGFuIGVtcHR5IHNldCBpcyBlbmNvdW50ZXJlZDsgdGhpcyBiZWNhdXNlIHRoZSAiZHluYW1pYyIKICAgICAgICBjb21wYXJpc29uIGlzIHR5cGljYWxseSBwb29ybHkgcGVyZm9ybWluZyBvbiBtb3N0IGRhdGFiYXNlcy4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4yICBBZGRlZCB0aGUgYGBlbXB0eV9pbl9zdHJhdGVneWBgIHNldHRpbmcgYW5kCiAgICAgICAgICAgYWRkaXRpb25hbGx5IGRlZmF1bHRlZCB0aGUgYmVoYXZpb3IgZm9yIGVtcHR5LXNldCBJTiBjb21wYXJpc29ucwogICAgICAgICAgIHRvIGEgc3RhdGljIGJvb2xlYW4gZXhwcmVzc2lvbi4KCiAgICA6cGFyYW0gZW5jb2Rpbmc6IERlZmF1bHRzIHRvIGBgdXRmLThgYC4gIFRoaXMgaXMgdGhlIHN0cmluZwogICAgICAgIGVuY29kaW5nIHVzZWQgYnkgU1FMQWxjaGVteSBmb3Igc3RyaW5nIGVuY29kZS9kZWNvZGUKICAgICAgICBvcGVyYXRpb25zIHdoaWNoIG9jY3VyIHdpdGhpbiBTUUxBbGNoZW15LCAqKm91dHNpZGUgb2YKICAgICAgICB0aGUgREJBUElzIG93biBlbmNvZGluZyBmYWNpbGl0aWVzLioqCgogICAgICAgIC4uIG5vdGU6OiBUaGUgYGBlbmNvZGluZ2BgIHBhcmFtZXRlciBkZWFscyBvbmx5IHdpdGggaW4tUHl0aG9uCiAgICAgICAgICAgZW5jb2RpbmcgaXNzdWVzIHRoYXQgd2VyZSBwcmV2YWxlbnQgd2l0aCBtYW55IERCQVBJcyB1bmRlciAgUHl0aG9uCiAgICAgICAgICAgMi4gIFVuZGVyIFB5dGhvbiAzIGl0IGlzIG1vc3RseSB1bnVzZWQuICAgRm9yICBEQkFQSXMgdGhhdCByZXF1aXJlCiAgICAgICAgICAgY2xpZW50IGVuY29kaW5nIGNvbmZpZ3VyYXRpb25zLCBzdWNoIGFzIHRob3NlIG9mIE15U1FMIGFuZCBPcmFjbGUsCiAgICAgICAgICAgcGxlYXNlIGNvbnN1bHQgc3BlY2lmaWMgOnJlZjpgZGlhbGVjdCBkb2N1bWVudGF0aW9uCiAgICAgICAgICAgPGRpYWxlY3RfdG9wbGV2ZWw+YCBmb3IgZGV0YWlscy4KCiAgICAgICAgQWxsIG1vZGVybiBEQkFQSXMgdGhhdCB3b3JrIGluIFB5dGhvbiAzIG5lY2Vzc2FyaWx5IGZlYXR1cmUgZGlyZWN0CiAgICAgICAgc3VwcG9ydCBmb3IgUHl0aG9uIHVuaWNvZGUgc3RyaW5ncy4gICBVbmRlciBQeXRob24gMiwgdGhpcyB3YXMgbm90CiAgICAgICAgYWx3YXlzIHRoZSBjYXNlLiAgRm9yIHRob3NlIHNjZW5hcmlvcyB3aGVyZSB0aGUgREJBUEkgaXMgZGV0ZWN0ZWQgYXMKICAgICAgICBub3Qgc3VwcG9ydGluZyBhIFB5dGhvbiBgYHVuaWNvZGVgYCBvYmplY3QgdW5kZXIgUHl0aG9uIDIsIHRoaXMKICAgICAgICBlbmNvZGluZyBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgc291cmNlL2Rlc3RpbmF0aW9uIGVuY29kaW5nLiAgSXQgaXMKICAgICAgICAqKm5vdCB1c2VkKiogZm9yIHRob3NlIGNhc2VzIHdoZXJlIHRoZSBEQkFQSSBoYW5kbGVzIHVuaWNvZGUgZGlyZWN0bHkuCgogICAgICAgIFRvIHByb3Blcmx5IGNvbmZpZ3VyZSBhIHN5c3RlbSB0byBhY2NvbW1vZGF0ZSBQeXRob24gYGB1bmljb2RlYGAKICAgICAgICBvYmplY3RzLCB0aGUgREJBUEkgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgdG8gaGFuZGxlIHVuaWNvZGUgdG8gdGhlCiAgICAgICAgZ3JlYXRlc3QgZGVncmVlIGFzIGlzIGFwcHJvcHJpYXRlIC0gc2VlIHRoZSBub3RlcyBvbiB1bmljb2RlIHBlcnRhaW5pbmcKICAgICAgICB0byB0aGUgc3BlY2lmaWMgdGFyZ2V0IGRhdGFiYXNlIGluIHVzZSBhdCA6cmVmOmBkaWFsZWN0X3RvcGxldmVsYC4KCiAgICAgICAgQXJlYXMgd2hlcmUgc3RyaW5nIGVuY29kaW5nIG1heSBuZWVkIHRvIGJlIGFjY29tbW9kYXRlZAogICAgICAgIG91dHNpZGUgb2YgdGhlIERCQVBJLCBuZWFybHkgYWx3YXlzIHVuZGVyICoqUHl0aG9uIDIgb25seSoqLAogICAgICAgIGluY2x1ZGUgemVybyBvciBtb3JlIG9mOgoKICAgICAgICAqIHRoZSB2YWx1ZXMgcGFzc2VkIHRvIGJvdW5kIHBhcmFtZXRlcnMsIGNvcnJlc3BvbmRpbmcgdG8KICAgICAgICAgIHRoZSA6Y2xhc3M6YC5Vbmljb2RlYCB0eXBlIG9yIHRoZSA6Y2xhc3M6YC5TdHJpbmdgIHR5cGUKICAgICAgICAgIHdoZW4gYGBjb252ZXJ0X3VuaWNvZGVgYCBpcyBgYFRydWVgYDsKICAgICAgICAqIHRoZSB2YWx1ZXMgcmV0dXJuZWQgaW4gcmVzdWx0IHNldCBjb2x1bW5zIGNvcnJlc3BvbmRpbmcKICAgICAgICAgIHRvIHRoZSA6Y2xhc3M6YC5Vbmljb2RlYCB0eXBlIG9yIHRoZSA6Y2xhc3M6YC5TdHJpbmdgCiAgICAgICAgICB0eXBlIHdoZW4gYGBjb252ZXJ0X3VuaWNvZGVgYCBpcyBgYFRydWVgYDsKICAgICAgICAqIHRoZSBzdHJpbmcgU1FMIHN0YXRlbWVudCBwYXNzZWQgdG8gdGhlIERCQVBJJ3MKICAgICAgICAgIGBgY3Vyc29yLmV4ZWN1dGUoKWBgIG1ldGhvZDsKICAgICAgICAqIHRoZSBzdHJpbmcgbmFtZXMgb2YgdGhlIGtleXMgaW4gdGhlIGJvdW5kIHBhcmFtZXRlcgogICAgICAgICAgZGljdGlvbmFyeSBwYXNzZWQgdG8gdGhlIERCQVBJJ3MgYGBjdXJzb3IuZXhlY3V0ZSgpYGAKICAgICAgICAgIGFzIHdlbGwgYXMgYGBjdXJzb3Iuc2V0aW5wdXRzaXplcygpYGAgbWV0aG9kczsKICAgICAgICAqIHRoZSBzdHJpbmcgY29sdW1uIG5hbWVzIHJldHJpZXZlZCBmcm9tIHRoZSBEQkFQSSdzCiAgICAgICAgICBgYGN1cnNvci5kZXNjcmlwdGlvbmBgIGF0dHJpYnV0ZS4KCiAgICAgICAgV2hlbiB1c2luZyBQeXRob24gMywgdGhlIERCQVBJIGlzIHJlcXVpcmVkIHRvIHN1cHBvcnQgYWxsIG9mIHRoZSBhYm92ZQogICAgICAgIHZhbHVlcyBhcyBQeXRob24gYGB1bmljb2RlYGAgb2JqZWN0cywgd2hpY2ggaW4gUHl0aG9uIDMgYXJlIGp1c3Qga25vd24KICAgICAgICBhcyBgYHN0cmBgLiAgSW4gUHl0aG9uIDIsIHRoZSBEQkFQSSBkb2VzIG5vdCBzcGVjaWZ5IHVuaWNvZGUgYmVoYXZpb3IKICAgICAgICBhdCBhbGwsIHNvIFNRTEFsY2hlbXkgbXVzdCBtYWtlIGRlY2lzaW9ucyBmb3IgZWFjaCBvZiB0aGUgYWJvdmUgdmFsdWVzCiAgICAgICAgb24gYSBwZXItREJBUEkgYmFzaXMgLSBpbXBsZW1lbnRhdGlvbnMgYXJlIGNvbXBsZXRlbHkgaW5jb25zaXN0ZW50IGluCiAgICAgICAgdGhlaXIgYmVoYXZpb3IuCgogICAgOnBhcmFtIGV4ZWN1dGlvbl9vcHRpb25zOiBEaWN0aW9uYXJ5IGV4ZWN1dGlvbiBvcHRpb25zIHdoaWNoIHdpbGwKICAgICAgICBiZSBhcHBsaWVkIHRvIGFsbCBjb25uZWN0aW9ucy4gIFNlZQogICAgICAgIDptZXRoOmB+c3FsYWxjaGVteS5lbmdpbmUuQ29ubmVjdGlvbi5leGVjdXRpb25fb3B0aW9uc2AKCiAgICA6cGFyYW0gaGlkZV9wYXJhbWV0ZXJzOiBCb29sZWFuLCB3aGVuIHNldCB0byBUcnVlLCBTUUwgc3RhdGVtZW50IHBhcmFtZXRlcnMKICAgICAgICB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQgaW4gSU5GTyBsb2dnaW5nIG5vciB3aWxsIHRoZXkgYmUgZm9ybWF0dGVkIGludG8KICAgICAgICB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIDpjbGFzczpgLlN0YXRlbWVudEVycm9yYCBvYmplY3RzLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjMuOAoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YGRiZW5naW5lX2xvZ2dpbmdgIC0gZnVydGhlciBkZXRhaWwgb24gaG93IHRvIGNvbmZpZ3VyZQogICAgICAgICAgICBsb2dnaW5nLgoKICAgIDpwYXJhbSBpbXBsaWNpdF9yZXR1cm5pbmc9VHJ1ZTogV2hlbiBgYFRydWVgYCwgYSBSRVRVUk5JTkctCiAgICAgICAgY29tcGF0aWJsZSBjb25zdHJ1Y3QsIGlmIGF2YWlsYWJsZSwgd2lsbCBiZSB1c2VkIHRvCiAgICAgICAgZmV0Y2ggbmV3bHkgZ2VuZXJhdGVkIHByaW1hcnkga2V5IHZhbHVlcyB3aGVuIGEgc2luZ2xlIHJvdwogICAgICAgIElOU0VSVCBzdGF0ZW1lbnQgaXMgZW1pdHRlZCB3aXRoIG5vIGV4aXN0aW5nIHJldHVybmluZygpCiAgICAgICAgY2xhdXNlLiAgVGhpcyBhcHBsaWVzIHRvIHRob3NlIGJhY2tlbmRzIHdoaWNoIHN1cHBvcnQgUkVUVVJOSU5HCiAgICAgICAgb3IgYSBjb21wYXRpYmxlIGNvbnN0cnVjdCwgaW5jbHVkaW5nIFBvc3RncmVTUUwsIEZpcmViaXJkLCBPcmFjbGUsCiAgICAgICAgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIuICAgU2V0IHRoaXMgdG8gYGBGYWxzZWBgIHRvIGRpc2FibGUKICAgICAgICB0aGUgYXV0b21hdGljIHVzYWdlIG9mIFJFVFVSTklORy4KCiAgICA6cGFyYW0gaXNvbGF0aW9uX2xldmVsOiB0aGlzIHN0cmluZyBwYXJhbWV0ZXIgaXMgaW50ZXJwcmV0ZWQgYnkgdmFyaW91cwogICAgICAgIGRpYWxlY3RzIGluIG9yZGVyIHRvIGFmZmVjdCB0aGUgdHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsIG9mIHRoZQogICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24uICAgVGhlIHBhcmFtZXRlciBlc3NlbnRpYWxseSBhY2NlcHRzIHNvbWUgc3Vic2V0IG9mCiAgICAgICAgdGhlc2Ugc3RyaW5nIGFyZ3VtZW50czogYGAiU0VSSUFMSVpBQkxFImBgLCBgYCJSRVBFQVRBQkxFIFJFQUQiYGAsCiAgICAgICAgYGAiUkVBRCBDT01NSVRURUQiYGAsIGBgIlJFQUQgVU5DT01NSVRURUQiYGAgYW5kIGBgIkFVVE9DT01NSVQiYGAuCiAgICAgICAgQmVoYXZpb3IgaGVyZSB2YXJpZXMgcGVyIGJhY2tlbmQsIGFuZAogICAgICAgIGluZGl2aWR1YWwgZGlhbGVjdHMgc2hvdWxkIGJlIGNvbnN1bHRlZCBkaXJlY3RseS4KCiAgICAgICAgTm90ZSB0aGF0IHRoZSBpc29sYXRpb24gbGV2ZWwgY2FuIGFsc28gYmUgc2V0IG9uIGEKICAgICAgICBwZXItOmNsYXNzOmBfZW5naW5lLkNvbm5lY3Rpb25gIGJhc2lzIGFzIHdlbGwsIHVzaW5nIHRoZQogICAgICAgIDpwYXJhbXJlZjpgLkNvbm5lY3Rpb24uZXhlY3V0aW9uX29wdGlvbnMuaXNvbGF0aW9uX2xldmVsYAogICAgICAgIGZlYXR1cmUuCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOmF0dHI6YF9lbmdpbmUuQ29ubmVjdGlvbi5kZWZhdWx0X2lzb2xhdGlvbl9sZXZlbGAKICAgICAgICAgICAgLSB2aWV3IGRlZmF1bHQgbGV2ZWwKCiAgICAgICAgICAgIDpwYXJhbXJlZjpgLkNvbm5lY3Rpb24uZXhlY3V0aW9uX29wdGlvbnMuaXNvbGF0aW9uX2xldmVsYAogICAgICAgICAgICAtIHNldCBwZXIgOmNsYXNzOmBfZW5naW5lLkNvbm5lY3Rpb25gIGlzb2xhdGlvbiBsZXZlbAoKICAgICAgICAgICAgOnJlZjpgU1FMaXRlIFRyYW5zYWN0aW9uIElzb2xhdGlvbiA8c3FsaXRlX2lzb2xhdGlvbl9sZXZlbD5gCgogICAgICAgICAgICA6cmVmOmBQb3N0Z3JlU1FMIFRyYW5zYWN0aW9uIElzb2xhdGlvbiA8cG9zdGdyZXNxbF9pc29sYXRpb25fbGV2ZWw+YAoKICAgICAgICAgICAgOnJlZjpgTXlTUUwgVHJhbnNhY3Rpb24gSXNvbGF0aW9uIDxteXNxbF9pc29sYXRpb25fbGV2ZWw+YAoKICAgICAgICAgICAgOnJlZjpgc2Vzc2lvbl90cmFuc2FjdGlvbl9pc29sYXRpb25gIC0gZm9yIHRoZSBPUk0KCiAgICA6cGFyYW0ganNvbl9kZXNlcmlhbGl6ZXI6IGZvciBkaWFsZWN0cyB0aGF0IHN1cHBvcnQgdGhlCiAgICAgICAgOmNsYXNzOmBfdHlwZXMuSlNPTmAKICAgICAgICBkYXRhdHlwZSwgdGhpcyBpcyBhIFB5dGhvbiBjYWxsYWJsZSB0aGF0IHdpbGwgY29udmVydCBhIEpTT04gc3RyaW5nCiAgICAgICAgdG8gYSBQeXRob24gb2JqZWN0LiAgQnkgZGVmYXVsdCwgdGhlIFB5dGhvbiBgYGpzb24ubG9hZHNgYCBmdW5jdGlvbiBpcwogICAgICAgIHVzZWQuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMS4zLjcgIFRoZSBTUUxpdGUgZGlhbGVjdCByZW5hbWVkIHRoaXMgZnJvbQogICAgICAgICAgIGBgX2pzb25fZGVzZXJpYWxpemVyYGAuCgogICAgOnBhcmFtIGpzb25fc2VyaWFsaXplcjogZm9yIGRpYWxlY3RzIHRoYXQgc3VwcG9ydCB0aGUgOmNsYXNzOmBfdHlwZXMuSlNPTmAKICAgICAgICBkYXRhdHlwZSwgdGhpcyBpcyBhIFB5dGhvbiBjYWxsYWJsZSB0aGF0IHdpbGwgcmVuZGVyIGEgZ2l2ZW4gb2JqZWN0CiAgICAgICAgYXMgSlNPTi4gICBCeSBkZWZhdWx0LCB0aGUgUHl0aG9uIGBganNvbi5kdW1wc2BgIGZ1bmN0aW9uIGlzIHVzZWQuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMS4zLjcgIFRoZSBTUUxpdGUgZGlhbGVjdCByZW5hbWVkIHRoaXMgZnJvbQogICAgICAgICAgIGBgX2pzb25fc2VyaWFsaXplcmBgLgoKICAgIDpwYXJhbSBsYWJlbF9sZW5ndGg9Tm9uZTogb3B0aW9uYWwgaW50ZWdlciB2YWx1ZSB3aGljaCBsaW1pdHMKICAgICAgICB0aGUgc2l6ZSBvZiBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29sdW1uIGxhYmVscyB0byB0aGF0IG1hbnkKICAgICAgICBjaGFyYWN0ZXJzLiBJZiBsZXNzIHRoYW4gNiwgbGFiZWxzIGFyZSBnZW5lcmF0ZWQgYXMKICAgICAgICAiXyhjb3VudGVyKSIuIElmIGBgTm9uZWBgLCB0aGUgdmFsdWUgb2YKICAgICAgICBgYGRpYWxlY3QubWF4X2lkZW50aWZpZXJfbGVuZ3RoYGAsIHdoaWNoIG1heSBiZSBhZmZlY3RlZCB2aWEgdGhlCiAgICAgICAgOnBhcmFtcmVmOmBfc2EuY3JlYXRlX2VuZ2luZS5tYXhfaWRlbnRpZmllcl9sZW5ndGhgIHBhcmFtZXRlciwKICAgICAgICBpcyB1c2VkIGluc3RlYWQuICAgVGhlIHZhbHVlIG9mCiAgICAgICAgOnBhcmFtcmVmOmBfc2EuY3JlYXRlX2VuZ2luZS5sYWJlbF9sZW5ndGhgCiAgICAgICAgbWF5IG5vdCBiZSBsYXJnZXIgdGhhbiB0aGF0IG9mCiAgICAgICAgOnBhcmFtcmVmOmBfc2EuY3JlYXRlX2VuZ2luZS5tYXhfaWRlbnRmaWVyX2xlbmd0aGAuCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2EuY3JlYXRlX2VuZ2luZS5tYXhfaWRlbnRpZmllcl9sZW5ndGhgCgogICAgOnBhcmFtIGxpc3RlbmVyczogQSBsaXN0IG9mIG9uZSBvciBtb3JlCiAgICAgICAgOmNsYXNzOmB+c3FsYWxjaGVteS5pbnRlcmZhY2VzLlBvb2xMaXN0ZW5lcmAgb2JqZWN0cyB3aGljaCB3aWxsCiAgICAgICAgcmVjZWl2ZSBjb25uZWN0aW9uIHBvb2wgZXZlbnRzLgoKICAgIDpwYXJhbSBsb2dnaW5nX25hbWU6ICBTdHJpbmcgaWRlbnRpZmllciB3aGljaCB3aWxsIGJlIHVzZWQgd2l0aGluCiAgICAgICAgdGhlICJuYW1lIiBmaWVsZCBvZiBsb2dnaW5nIHJlY29yZHMgZ2VuZXJhdGVkIHdpdGhpbiB0aGUKICAgICAgICAic3FsYWxjaGVteS5lbmdpbmUiIGxvZ2dlci4gRGVmYXVsdHMgdG8gYSBoZXhzdHJpbmcgb2YgdGhlCiAgICAgICAgb2JqZWN0J3MgaWQuCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnJlZjpgZGJlbmdpbmVfbG9nZ2luZ2AgLSBmdXJ0aGVyIGRldGFpbCBvbiBob3cgdG8gY29uZmlndXJlCiAgICAgICAgICAgIGxvZ2dpbmcuCgoKCiAgICA6cGFyYW0gbWF4X2lkZW50aWZpZXJfbGVuZ3RoOiBpbnRlZ2VyOyBvdmVycmlkZSB0aGUgbWF4X2lkZW50aWZpZXJfbGVuZ3RoCiAgICAgICAgZGV0ZXJtaW5lZCBieSB0aGUgZGlhbGVjdC4gIGlmIGBgTm9uZWBgIG9yIHplcm8sIGhhcyBubyBlZmZlY3QuICBUaGlzCiAgICAgICAgaXMgdGhlIGRhdGFiYXNlJ3MgY29uZmlndXJlZCBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgbWF5IGJlCiAgICAgICAgdXNlZCBpbiBhIFNRTCBpZGVudGlmaWVyIHN1Y2ggYXMgYSB0YWJsZSBuYW1lLCBjb2x1bW4gbmFtZSwgb3IgbGFiZWwKICAgICAgICBuYW1lLiBBbGwgZGlhbGVjdHMgZGV0ZXJtaW5lIHRoaXMgdmFsdWUgYXV0b21hdGljYWxseSwgaG93ZXZlciBpbiB0aGUKICAgICAgICBjYXNlIG9mIGEgbmV3IGRhdGFiYXNlIHZlcnNpb24gZm9yIHdoaWNoIHRoaXMgdmFsdWUgaGFzIGNoYW5nZWQgYnV0CiAgICAgICAgU1FMQWxjaGVteSdzIGRpYWxlY3QgaGFzIG5vdCBiZWVuIGFkanVzdGVkLCB0aGUgdmFsdWUgbWF5IGJlIHBhc3NlZAogICAgICAgIGhlcmUuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMy45CgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnBhcmFtcmVmOmBfc2EuY3JlYXRlX2VuZ2luZS5sYWJlbF9sZW5ndGhgCgogICAgOnBhcmFtIG1heF9vdmVyZmxvdz0xMDogdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyB0byBhbGxvdyBpbgogICAgICAgIGNvbm5lY3Rpb24gcG9vbCAib3ZlcmZsb3ciLCB0aGF0IGlzIGNvbm5lY3Rpb25zIHRoYXQgY2FuIGJlCiAgICAgICAgb3BlbmVkIGFib3ZlIGFuZCBiZXlvbmQgdGhlIHBvb2xfc2l6ZSBzZXR0aW5nLCB3aGljaCBkZWZhdWx0cwogICAgICAgIHRvIGZpdmUuIHRoaXMgaXMgb25seSB1c2VkIHdpdGggOmNsYXNzOmB+c3FsYWxjaGVteS5wb29sLlF1ZXVlUG9vbGAuCgogICAgOnBhcmFtIG1vZHVsZT1Ob25lOiByZWZlcmVuY2UgdG8gYSBQeXRob24gbW9kdWxlIG9iamVjdCAodGhlIG1vZHVsZQogICAgICAgIGl0c2VsZiwgbm90IGl0cyBzdHJpbmcgbmFtZSkuICBTcGVjaWZpZXMgYW4gYWx0ZXJuYXRlIERCQVBJIG1vZHVsZSB0bwogICAgICAgIGJlIHVzZWQgYnkgdGhlIGVuZ2luZSdzIGRpYWxlY3QuICBFYWNoIHN1Yi1kaWFsZWN0IHJlZmVyZW5jZXMgYQogICAgICAgIHNwZWNpZmljIERCQVBJIHdoaWNoIHdpbGwgYmUgaW1wb3J0ZWQgYmVmb3JlIGZpcnN0IGNvbm5lY3QuICBUaGlzCiAgICAgICAgcGFyYW1ldGVyIGNhdXNlcyB0aGUgaW1wb3J0IHRvIGJlIGJ5cGFzc2VkLCBhbmQgdGhlIGdpdmVuIG1vZHVsZSB0bwogICAgICAgIGJlIHVzZWQgaW5zdGVhZC4gQ2FuIGJlIHVzZWQgZm9yIHRlc3Rpbmcgb2YgREJBUElzIGFzIHdlbGwgYXMgdG8KICAgICAgICBpbmplY3QgIm1vY2siIERCQVBJIGltcGxlbWVudGF0aW9ucyBpbnRvIHRoZSA6Y2xhc3M6YF9lbmdpbmUuRW5naW5lYC4KCiAgICA6cGFyYW0gcGFyYW1zdHlsZT1Ob25lOiBUaGUgYHBhcmFtc3R5bGUgPGh0dHA6Ly9sZWdhY3kucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDI0OS8jcGFyYW1zdHlsZT5gXwogICAgICAgIHRvIHVzZSB3aGVuIHJlbmRlcmluZyBib3VuZCBwYXJhbWV0ZXJzLiAgVGhpcyBzdHlsZSBkZWZhdWx0cyB0byB0aGUKICAgICAgICBvbmUgcmVjb21tZW5kZWQgYnkgdGhlIERCQVBJIGl0c2VsZiwgd2hpY2ggaXMgcmV0cmlldmVkIGZyb20gdGhlCiAgICAgICAgYGAucGFyYW1zdHlsZWBgIGF0dHJpYnV0ZSBvZiB0aGUgREJBUEkuICBIb3dldmVyLCBtb3N0IERCQVBJcyBhY2NlcHQKICAgICAgICBtb3JlIHRoYW4gb25lIHBhcmFtc3R5bGUsIGFuZCBpbiBwYXJ0aWN1bGFyIGl0IG1heSBiZSBkZXNpcmFibGUKICAgICAgICB0byBjaGFuZ2UgYSAibmFtZWQiIHBhcmFtc3R5bGUgaW50byBhICJwb3NpdGlvbmFsIiBvbmUsIG9yIHZpY2UgdmVyc2EuCiAgICAgICAgV2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBwYXNzZWQsIGl0IHNob3VsZCBiZSBvbmUgb2YgdGhlIHZhbHVlcwogICAgICAgIGBgInFtYXJrImBgLCBgYCJudW1lcmljImBgLCBgYCJuYW1lZCJgYCwgYGAiZm9ybWF0ImBgIG9yCiAgICAgICAgYGAicHlmb3JtYXQiYGAsIGFuZCBzaG91bGQgY29ycmVzcG9uZCB0byBhIHBhcmFtZXRlciBzdHlsZSBrbm93bgogICAgICAgIHRvIGJlIHN1cHBvcnRlZCBieSB0aGUgREJBUEkgaW4gdXNlLgoKICAgIDpwYXJhbSBwb29sPU5vbmU6IGFuIGFscmVhZHktY29uc3RydWN0ZWQgaW5zdGFuY2Ugb2YKICAgICAgICA6Y2xhc3M6YH5zcWxhbGNoZW15LnBvb2wuUG9vbGAsIHN1Y2ggYXMgYQogICAgICAgIDpjbGFzczpgfnNxbGFsY2hlbXkucG9vbC5RdWV1ZVBvb2xgIGluc3RhbmNlLiBJZiBub24tTm9uZSwgdGhpcwogICAgICAgIHBvb2wgd2lsbCBiZSB1c2VkIGRpcmVjdGx5IGFzIHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gcG9vbAogICAgICAgIGZvciB0aGUgZW5naW5lLCBieXBhc3Npbmcgd2hhdGV2ZXIgY29ubmVjdGlvbiBwYXJhbWV0ZXJzIGFyZQogICAgICAgIHByZXNlbnQgaW4gdGhlIFVSTCBhcmd1bWVudC4gRm9yIGluZm9ybWF0aW9uIG9uIGNvbnN0cnVjdGluZwogICAgICAgIGNvbm5lY3Rpb24gcG9vbHMgbWFudWFsbHksIHNlZSA6cmVmOmBwb29saW5nX3RvcGxldmVsYC4KCiAgICA6cGFyYW0gcG9vbGNsYXNzPU5vbmU6IGEgOmNsYXNzOmB+c3FsYWxjaGVteS5wb29sLlBvb2xgCiAgICAgICAgc3ViY2xhc3MsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgYSBjb25uZWN0aW9uIHBvb2wKICAgICAgICBpbnN0YW5jZSB1c2luZyB0aGUgY29ubmVjdGlvbiBwYXJhbWV0ZXJzIGdpdmVuIGluIHRoZSBVUkwuIE5vdGUKICAgICAgICB0aGlzIGRpZmZlcnMgZnJvbSBgYHBvb2xgYCBpbiB0aGF0IHlvdSBkb24ndCBhY3R1YWxseQogICAgICAgIGluc3RhbnRpYXRlIHRoZSBwb29sIGluIHRoaXMgY2FzZSwgeW91IGp1c3QgaW5kaWNhdGUgd2hhdCB0eXBlCiAgICAgICAgb2YgcG9vbCB0byBiZSB1c2VkLgoKICAgIDpwYXJhbSBwb29sX2xvZ2dpbmdfbmFtZTogIFN0cmluZyBpZGVudGlmaWVyIHdoaWNoIHdpbGwgYmUgdXNlZCB3aXRoaW4KICAgICAgIHRoZSAibmFtZSIgZmllbGQgb2YgbG9nZ2luZyByZWNvcmRzIGdlbmVyYXRlZCB3aXRoaW4gdGhlCiAgICAgICAic3FsYWxjaGVteS5wb29sIiBsb2dnZXIuIERlZmF1bHRzIHRvIGEgaGV4c3RyaW5nIG9mIHRoZSBvYmplY3QncwogICAgICAgaWQuCgoKICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnJlZjpgZGJlbmdpbmVfbG9nZ2luZ2AgLSBmdXJ0aGVyIGRldGFpbCBvbiBob3cgdG8gY29uZmlndXJlCiAgICAgICAgICAgIGxvZ2dpbmcuCgoKICAgIDpwYXJhbSBwb29sX3ByZV9waW5nOiBib29sZWFuLCBpZiBUcnVlIHdpbGwgZW5hYmxlIHRoZSBjb25uZWN0aW9uIHBvb2wKICAgICAgICAicHJlLXBpbmciIGZlYXR1cmUgdGhhdCB0ZXN0cyBjb25uZWN0aW9ucyBmb3IgbGl2ZW5lc3MgdXBvbgogICAgICAgIGVhY2ggY2hlY2tvdXQuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YHBvb2xfZGlzY29ubmVjdHNfcGVzc2ltaXN0aWNgCgogICAgOnBhcmFtIHBvb2xfc2l6ZT01OiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRvIGtlZXAgb3BlbgogICAgICAgIGluc2lkZSB0aGUgY29ubmVjdGlvbiBwb29sLiBUaGlzIHVzZWQgd2l0aAogICAgICAgIDpjbGFzczpgfnNxbGFsY2hlbXkucG9vbC5RdWV1ZVBvb2xgIGFzCiAgICAgICAgd2VsbCBhcyA6Y2xhc3M6YH5zcWxhbGNoZW15LnBvb2wuU2luZ2xldG9uVGhyZWFkUG9vbGAuICBXaXRoCiAgICAgICAgOmNsYXNzOmB+c3FsYWxjaGVteS5wb29sLlF1ZXVlUG9vbGAsIGEgYGBwb29sX3NpemVgYCBzZXR0aW5nCiAgICAgICAgb2YgMCBpbmRpY2F0ZXMgbm8gbGltaXQ7IHRvIGRpc2FibGUgcG9vbGluZywgc2V0IGBgcG9vbGNsYXNzYGAgdG8KICAgICAgICA6Y2xhc3M6YH5zcWxhbGNoZW15LnBvb2wuTnVsbFBvb2xgIGluc3RlYWQuCgogICAgOnBhcmFtIHBvb2xfcmVjeWNsZT0tMTogdGhpcyBzZXR0aW5nIGNhdXNlcyB0aGUgcG9vbCB0byByZWN5Y2xlCiAgICAgICAgY29ubmVjdGlvbnMgYWZ0ZXIgdGhlIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzIGhhcyBwYXNzZWQuIEl0CiAgICAgICAgZGVmYXVsdHMgdG8gLTEsIG9yIG5vIHRpbWVvdXQuIEZvciBleGFtcGxlLCBzZXR0aW5nIHRvIDM2MDAKICAgICAgICBtZWFucyBjb25uZWN0aW9ucyB3aWxsIGJlIHJlY3ljbGVkIGFmdGVyIG9uZSBob3VyLiBOb3RlIHRoYXQKICAgICAgICBNeVNRTCBpbiBwYXJ0aWN1bGFyIHdpbGwgZGlzY29ubmVjdCBhdXRvbWF0aWNhbGx5IGlmIG5vCiAgICAgICAgYWN0aXZpdHkgaXMgZGV0ZWN0ZWQgb24gYSBjb25uZWN0aW9uIGZvciBlaWdodCBob3VycyAoYWx0aG91Z2gKICAgICAgICB0aGlzIGlzIGNvbmZpZ3VyYWJsZSB3aXRoIHRoZSBNeVNRTERCIGNvbm5lY3Rpb24gaXRzZWxmIGFuZCB0aGUKICAgICAgICBzZXJ2ZXIgY29uZmlndXJhdGlvbiBhcyB3ZWxsKS4KCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cmVmOmBwb29sX3NldHRpbmdfcmVjeWNsZWAKCiAgICA6cGFyYW0gcG9vbF9yZXNldF9vbl9yZXR1cm49J3JvbGxiYWNrJzogc2V0IHRoZQogICAgICAgIDpwYXJhbXJlZjpgX3Bvb2wuUG9vbC5yZXNldF9vbl9yZXR1cm5gIHBhcmFtZXRlciBvZiB0aGUgdW5kZXJseWluZwogICAgICAgIDpjbGFzczpgX3Bvb2wuUG9vbGAgb2JqZWN0LCB3aGljaCBjYW4gYmUgc2V0IHRvIHRoZSB2YWx1ZXMKICAgICAgICBgYCJyb2xsYmFjayJgYCwgYGAiY29tbWl0ImBgLCBvciBgYE5vbmVgYC4KCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cGFyYW1yZWY6YF9wb29sLlBvb2wucmVzZXRfb25fcmV0dXJuYAoKICAgIDpwYXJhbSBwb29sX3RpbWVvdXQ9MzA6IG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGdpdmluZwogICAgICAgIHVwIG9uIGdldHRpbmcgYSBjb25uZWN0aW9uIGZyb20gdGhlIHBvb2wuIFRoaXMgaXMgb25seSB1c2VkCiAgICAgICAgd2l0aCA6Y2xhc3M6YH5zcWxhbGNoZW15LnBvb2wuUXVldWVQb29sYC4KCiAgICA6cGFyYW0gcG9vbF91c2VfbGlmbz1GYWxzZTogdXNlIExJRk8gKGxhc3QtaW4tZmlyc3Qtb3V0KSB3aGVuIHJldHJpZXZpbmcKICAgICAgICBjb25uZWN0aW9ucyBmcm9tIDpjbGFzczpgLlF1ZXVlUG9vbGAgaW5zdGVhZCBvZiBGSUZPCiAgICAgICAgKGZpcnN0LWluLWZpcnN0LW91dCkuIFVzaW5nIExJRk8sIGEgc2VydmVyLXNpZGUgdGltZW91dCBzY2hlbWUgY2FuCiAgICAgICAgcmVkdWNlIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgdXNlZCBkdXJpbmcgbm9uLSBwZWFrICAgcGVyaW9kcyBvZgogICAgICAgIHVzZS4gICBXaGVuIHBsYW5uaW5nIGZvciBzZXJ2ZXItc2lkZSB0aW1lb3V0cywgZW5zdXJlIHRoYXQgYSByZWN5Y2xlIG9yCiAgICAgICAgcHJlLXBpbmcgc3RyYXRlZ3kgaXMgaW4gdXNlIHRvIGdyYWNlZnVsbHkgICBoYW5kbGUgc3RhbGUgY29ubmVjdGlvbnMuCgogICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4zCgogICAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cmVmOmBwb29sX3VzZV9saWZvYAoKICAgICAgICAgICAgOnJlZjpgcG9vbF9kaXNjb25uZWN0c2AKCiAgICA6cGFyYW0gcGx1Z2luczogc3RyaW5nIGxpc3Qgb2YgcGx1Z2luIG5hbWVzIHRvIGxvYWQuICBTZWUKICAgICAgICA6Y2xhc3M6YC5DcmVhdGVFbmdpbmVQbHVnaW5gIGZvciBiYWNrZ3JvdW5kLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjIuMwoKICAgIDpwYXJhbSBzdHJhdGVneT0ncGxhaW4nOiBzZWxlY3RzIGFsdGVybmF0ZSBlbmdpbmUgaW1wbGVtZW50YXRpb25zLgogICAgICAgIEN1cnJlbnRseSBhdmFpbGFibGUgYXJlOgoKICAgICAgICAqIHRoZSBgYHRocmVhZGxvY2FsYGAgc3RyYXRlZ3ksIHdoaWNoIGlzIGRlc2NyaWJlZCBpbgogICAgICAgICAgOnJlZjpgdGhyZWFkbG9jYWxfc3RyYXRlZ3lgOwogICAgICAgICogdGhlIGBgbW9ja2BgIHN0cmF0ZWd5LCB3aGljaCBkaXNwYXRjaGVzIGFsbCBzdGF0ZW1lbnQKICAgICAgICAgIGV4ZWN1dGlvbiB0byBhIGZ1bmN0aW9uIHBhc3NlZCBhcyB0aGUgYXJndW1lbnQgYGBleGVjdXRvcmBgLgogICAgICAgICAgU2VlIGBleGFtcGxlIGluIHRoZSBGQVEKICAgICAgICAgIDxodHRwOi8vZG9jcy5zcWxhbGNoZW15Lm9yZy9lbi9sYXRlc3QvZmFxL21ldGFkYXRhX3NjaGVtYS5odG1sI2hvdy1jYW4taS1nZXQtdGhlLWNyZWF0ZS10YWJsZS1kcm9wLXRhYmxlLW91dHB1dC1hcy1hLXN0cmluZz5gXy4KCiAgICA6cGFyYW0gZXhlY3V0b3I9Tm9uZTogYSBmdW5jdGlvbiB0YWtpbmcgYXJndW1lbnRzCiAgICAgICAgYGAoc3FsLCAqbXVsdGlwYXJhbXMsICoqcGFyYW1zKWBgLCB0byB3aGljaCB0aGUgYGBtb2NrYGAgc3RyYXRlZ3kgd2lsbAogICAgICAgIGRpc3BhdGNoIGFsbCBzdGF0ZW1lbnQgZXhlY3V0aW9uLiBVc2VkIG9ubHkgYnkgYGBzdHJhdGVneT0nbW9jaydgYC4KCiAgICDaCHN0cmF0ZWd5KQTaA3BvcNoQZGVmYXVsdF9zdHJhdGVneXIDAAAA2gZjcmVhdGUpA9oEYXJnc9oGa3dhcmdzch4AAABzAwAAACAgIPpRL29wdC9jbG91ZGxpbnV4L3ZlbnYvbGliNjQvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL3NxbGFsY2hlbXkvZW5naW5lL19faW5pdF9fLnB52g1jcmVhdGVfZW5naW5lciUAAABVAAAAcz0AAACAAPBsDQAQFo96inqYKtUmNtEPN9QPN4BI3Q8Z1A8koFjUDy6ASNgLGog4jD+YRNALK6BG0Asr0Asr0AQr8wAAAAD6C3NxbGFsY2hlbXkuYwIAAAAAAAAAAAAAAAUAAAALAAAA87YAAACHAIcBlwB0AQAAAAAAAAAAAACIAIgBZgJkAYQIiQBEAKYAAACrAAAAAAAAAAAApgEAAKsBAAAAAAAAAAB9A2QCfANkAzwAAAB8A6ABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AqYBAACrAQAAAAAAAAAAAQB8A6ACAAAAAAAAAAAAAAAAAAAAAAAAAABkBKYBAACrAQAAAAAAAAAAfQR0BwAAAAAAAAAAAAB8BGYBaQB8A6QBjgFTACkFYXsFAABDcmVhdGUgYSBuZXcgRW5naW5lIGluc3RhbmNlIHVzaW5nIGEgY29uZmlndXJhdGlvbiBkaWN0aW9uYXJ5LgoKICAgIFRoZSBkaWN0aW9uYXJ5IGlzIHR5cGljYWxseSBwcm9kdWNlZCBmcm9tIGEgY29uZmlnIGZpbGUuCgogICAgVGhlIGtleXMgb2YgaW50ZXJlc3QgdG8gYGBlbmdpbmVfZnJvbV9jb25maWcoKWBgIHNob3VsZCBiZSBwcmVmaXhlZCwgZS5nLgogICAgYGBzcWxhbGNoZW15LnVybGBgLCBgYHNxbGFsY2hlbXkuZWNob2BgLCBldGMuICBUaGUgJ3ByZWZpeCcgYXJndW1lbnQKICAgIGluZGljYXRlcyB0aGUgcHJlZml4IHRvIGJlIHNlYXJjaGVkIGZvci4gIEVhY2ggbWF0Y2hpbmcga2V5IChhZnRlciB0aGUKICAgIHByZWZpeCBpcyBzdHJpcHBlZCkgaXMgdHJlYXRlZCBhcyB0aG91Z2ggaXQgd2VyZSB0aGUgY29ycmVzcG9uZGluZyBrZXl3b3JkCiAgICBhcmd1bWVudCB0byBhIDpmdW5jOmBfc2EuY3JlYXRlX2VuZ2luZWAgY2FsbC4KCiAgICBUaGUgb25seSByZXF1aXJlZCBrZXkgaXMgKGFzc3VtaW5nIHRoZSBkZWZhdWx0IHByZWZpeCkgYGBzcWxhbGNoZW15LnVybGBgLAogICAgd2hpY2ggcHJvdmlkZXMgdGhlIDpyZWY6YGRhdGFiYXNlIFVSTCA8ZGF0YWJhc2VfdXJscz5gLgoKICAgIEEgc2VsZWN0IHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB3aWxsIGJlICJjb2VyY2VkIiB0byB0aGVpcgogICAgZXhwZWN0ZWQgdHlwZSBiYXNlZCBvbiBzdHJpbmcgdmFsdWVzLiAgICBUaGUgc2V0IG9mIGFyZ3VtZW50cwogICAgaXMgZXh0ZW5zaWJsZSBwZXItZGlhbGVjdCB1c2luZyB0aGUgYGBlbmdpbmVfY29uZmlnX3R5cGVzYGAgYWNjZXNzb3IuCgogICAgOnBhcmFtIGNvbmZpZ3VyYXRpb246IEEgZGljdGlvbmFyeSAodHlwaWNhbGx5IHByb2R1Y2VkIGZyb20gYSBjb25maWcgZmlsZSwKICAgICAgICBidXQgdGhpcyBpcyBub3QgYSByZXF1aXJlbWVudCkuICBJdGVtcyB3aG9zZSBrZXlzIHN0YXJ0IHdpdGggdGhlIHZhbHVlCiAgICAgICAgb2YgJ3ByZWZpeCcgd2lsbCBoYXZlIHRoYXQgcHJlZml4IHN0cmlwcGVkLCBhbmQgd2lsbCB0aGVuIGJlIHBhc3NlZCB0bwogICAgICAgIDpyZWY6YGNyZWF0ZV9lbmdpbmVgLgoKICAgIDpwYXJhbSBwcmVmaXg6IFByZWZpeCB0byBtYXRjaCBhbmQgdGhlbiBzdHJpcCBmcm9tIGtleXMKICAgICAgICBpbiAnY29uZmlndXJhdGlvbicuCgogICAgOnBhcmFtIGt3YXJnczogRWFjaCBrZXl3b3JkIGFyZ3VtZW50IHRvIGBgZW5naW5lX2Zyb21fY29uZmlnKClgYCBpdHNlbGYKICAgICAgICBvdmVycmlkZXMgdGhlIGNvcnJlc3BvbmRpbmcgaXRlbSB0YWtlbiBmcm9tIHRoZSAnY29uZmlndXJhdGlvbicKICAgICAgICBkaWN0aW9uYXJ5LiAgS2V5d29yZCBhcmd1bWVudHMgc2hvdWxkICpub3QqIGJlIHByZWZpeGVkLgoKICAgIGMBAAAAAAAAAAAAAAAFAAAAMwAAAPOAAAAAlQJLAAEAlwB8AF04fQF8AaAAAAAAAAAAAAAAAAAAAAAAAAAAAACJA6YBAACrAQAAAAAAAAAArxd8AXQDAAAAAAAAAAAAAIkDpgEAAKsBAAAAAAAAAABkAIUCGQAAAAAAAAAAAIkCfAEZAAAAAAAAAAAAZgJWAJcBAQCMOWQAUwApAU4pAtoKc3RhcnRzd2l0aNoDbGVuKQTaAi4w2gNrZXnaDWNvbmZpZ3VyYXRpb27aBnByZWZpeHMEAAAAICCAgHIkAAAA+gk8Z2VuZXhwcj56JWVuZ2luZV9mcm9tX2NvbmZpZy48bG9jYWxzPi48Z2VuZXhwcj4wAgAAc2IAAAD46ADoAIAA8AAEEwbwAAQTBuAMD9gLDo8+ij6YJtELIdQLIfAHBBMG2AkMjVOQFolbjFuIXYhd1AkbmF2oM9QdL9AIMPADBBMG8AAEEwbwAAQTBvAABBMG8AAEEwbwAAQTBnImAAAAVNoOX2NvZXJjZV9jb25maWfaA3VybCkE2gRkaWN02gZ1cGRhdGVyHwAAAHIlAAAAKQVyLgAAAHIvAAAAciMAAADaB29wdGlvbnNyMgAAAHMFAAAAYGAgICByJAAAANoSZW5naW5lX2Zyb21fY29uZmlncjYAAAAQAgAAc4cAAAD4+IAA9UABAA8T8AAEEwbwAAQTBvAABBMG8AAEEwbwAAQTBuATIPAFBBMG8QAEEwb0AAQTBvEABA8G9AAEDwaAR/AKACElgEfQDBzRBB3YBAuHToJOkDbRBBrUBBrQBBrYChGPK4orkGXRChzUChyAQ90LGJgT0Aso0AsooAfQCyjQCyjQBChyJgAAACkCciUAAAByNgAAAE4pAXInAAAAKSLaB19fZG9jX1/aAHIDAAAAcgQAAADaBGJhc2VyBQAAAHIGAAAAcgcAAAByCAAAAHIJAAAAcgoAAADaCmludGVyZmFjZXNyCwAAAHIMAAAAcg0AAAByDgAAAHIPAAAAchAAAAByEQAAANoGcmVzdWx0chIAAAByEwAAAHIUAAAAchUAAAByFgAAAHIXAAAAchgAAAByGQAAANoDc3FschsAAAByIAAAAHIlAAAAcjYAAADaB19fYWxsX1+pAHImAAAAciQAAAD6CDxtb2R1bGU+cj8AAAABAAAAc/0BAADwAwEBAfAQLAEE8AAsAQTwXAEAARnQABjQABjQABjQABjQABjYABLQABLQABLQABLQABLQABLYABzQABzQABzQABzQABzQABzYABjQABjQABjQABjQABjQABjYACPQACPQACPQACPQACPQACPYACHQACHQACHQACHQACHQACHYAB3QAB3QAB3QAB3QAB3QAB3YACXQACXQACXQACXQACXQACXYACDQACDQACDQACDQACDQACDYACPQACPQACPQACPQACPQACPYACrQACrQACrQACrQACrQACrYAB/QAB/QAB/QAB/QAB/QAB/YACjQACjQACjQACjQACjQACjYACjQACjQACjQACjQACjQACjYACTQACTQACTQACTQACTQACTYACDQACDQACDQACDQACDQACDYAC3QAC3QAC3QAC3QAC3QAC3YACXQACXQACXQACXQACXQACXYACrQACrQACrQACrQACrQACrYACzQACzQACzQACzQACzQACzYAB/QAB/QAB/QAB/QAB/QAB/YABzQABzQABzQABzQABzQABzYACTQACTQACTQACTQACTQACTYABXQABXQABXQABXQABXQABXwCgAUG9AAEPAGeAYBLPAAeAYBLPAAeAYBLPB2DSgBKfAAKAEp8AAoASnwACgBKfBWAQALMoAHgAeAB3ImAAAA
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 10
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
base.cpython-311.pyc
99.31 KB
lrw-r--r--
2026-07-22 02:19:55
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
default.cpython-311.pyc
66.23 KB
lrw-r--r--
2026-07-22 02:19:55
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
interfaces.cpython-311.pyc
49.32 KB
lrw-r--r--
2026-07-22 02:19:55
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
reflection.cpython-311.pyc
38.35 KB
lrw-r--r--
2026-07-22 02:19:55
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
result.cpython-311.pyc
66.15 KB
lrw-r--r--
2026-07-22 02:19:55
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
strategies.cpython-311.pyc
13.58 KB
lrw-r--r--
2026-07-22 02:19:55
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
threadlocal.cpython-311.pyc
8.53 KB
lrw-r--r--
2026-07-22 02:19:55
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
url.cpython-311.pyc
13.18 KB
lrw-r--r--
2026-07-22 02:19:55
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
util.cpython-311.pyc
2.65 KB
lrw-r--r--
2026-07-22 02:19:55
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-311.pyc
25.64 KB
lrw-r--r--
2026-07-22 02:19:55
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).