Files
crm.clientright.ru/modules/Settings/CTMultipleSMTP/workflow/CTMultipleSMTPEmailTask.php
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

1 line
35 KiB
PHP

<?php eval(base64_decode('CiBnb3RvIEVuc0pVOyBFbnNKVTogcmVxdWlyZV9vbmNlICJceDZkXDE1N1wxNDRcMTY1XDE1NFx4NjVcMTYzXHgyZlwxNDNcMTU3XHg2ZFx4NWZceDc2XDE2NFx4NjlcMTQ3XHg2NVx4NzJceDVmXHg3N1x4NmZceDcyXHg2Ylx4NjZceDZjXHg2Zlx4NzdcNTdcMTI2XHg1NFx4NDVcMTU2XHg3NFwxNTFceDc0XDE3MVx4NDNceDYxXDE0M1wxNTBcMTQ1XDU2XDE1MVx4NmVceDYzIjsgZ290byBxc2hQMDsgS25wNEo6IHJlcXVpcmVfb25jZSAiXDE1NVwxNTdceDY0XDE2NVx4NmNceDY1XDE2M1w1N1wxMDVcMTU1XHg2MVx4NjlcMTU0XDE2M1x4MmZcMTU1XDE1N1wxNDRceDY1XDE1NFwxNjNceDJmXHg0ZFwxNDFcMTUxXDE1NFwxNDVcMTYyXDU2XDE2MFx4NjhcMTYwIjsgZ290byBNS2ZoazsgS2ZlNWg6IHJlcXVpcmVfb25jZSAiXDE1MVwxNTZcMTQzXHg2Y1x4NzVceDY0XHg2NVw1N1x4NzNcMTUxXHg2ZFx4NzBcMTU0XDE0NVwxNTBceDc0XHg2ZFx4NmNcMTQ0XHg2Zlx4NmRcNTdcMTYzXHg2OVx4NmRcMTYwXHg2Y1x4NjVcMTM3XDE1MFx4NzRceDZkXDE1NFwxMzdcMTQ0XDE1N1wxNTVcNTZcMTYwXHg2OFx4NzAiOyBnb3RvIEtucDRKOyBQOWsxdTogcmVxdWlyZV9vbmNlICJcMTU1XHg2ZlwxNDRceDc1XHg2Y1wxNDVcMTYzXHgyZlx4NDVcMTU1XHg2MVx4NjlcMTU0XDE2M1w1N1wxNTVcMTQxXDE1MVwxNTRceDJlXDE2MFx4NjhcMTYwIjsgZ290byBLZmU1aDsgTUtmaGs6IGNsYXNzIENUTXVsdGlwbGVTTVRQRW1haWxUYXNrIGV4dGVuZHMgVlRUYXNrIHsgcHVibGljICRleGVjdXRlSW1tZWRpYXRlbHkgPSBmYWxzZTsgcHVibGljIGZ1bmN0aW9uIGdldEZpZWxkTmFtZXMoKSB7IHJldHVybiBhcnJheSgiXHg3M1x4NzVcMTQyXDE1Mlx4NjVcMTQzXDE2NCIsICJceDYzXDE1N1wxNTZcMTY0XDE0NVwxNTZcMTY0IiwgIlx4NzJcMTQ1XDE0M1wxNDVcMTYwXDE1MVx4NjVceDZlXDE2NCIsICJcMTQ1XHg2ZFx4NjFceDY5XDE1NFx4NjNceDYzIiwgIlwxNDVceDZkXDE0MVx4NjlcMTU0XHg2Mlx4NjNcMTQzIiwgIlwxNDZceDcyXHg2Zlx4NmRceDQ1XHg2ZFx4NjFcMTUxXHg2YyIsICJcMTYwXDE0NFx4NjYiLCAiXDE2MFwxNDRceDY2XHg1NFwxNDVceDZkXHg3MFwxNTRcMTQxXDE2NFx4NjVceDQ5XDE0NCIsICJceDczXHg2OVwxNDdcMTU2XHg2MVx4NzRcMTY1XHg3MlwxNDUiLCAiXHg3Mlx4NjVcMTYwXDE1NFx4NzlcMTI0XDE1NyIpOyB9IHB1YmxpYyBmdW5jdGlvbiBkb1Rhc2soJGVudGl0eSkgeyBnbG9iYWwgJGN1cnJlbnRfdXNlciwgJGFkYjsgJHV0aWwgPSBuZXcgVlRXb3JrZmxvd1V0aWxzKCk7ICRhZG1pbiA9ICR1dGlsLT5hZG1pblVzZXIoKTsgJG1vZHVsZSA9ICRlbnRpdHktPmdldE1vZHVsZU5hbWUoKTsgJGZyb21Vc2VySWQgPSBVc2Vyczo6Z2V0QWN0aXZlQWRtaW5JZCgpOyAkZW50aXR5T3duZXJJZCA9ICRlbnRpdHktPmdldCgiXHg2ZFx4NmZcMTQ0XDE1MVx4NjZceDY5XHg2NVx4NjRceDYyXHg3OSIpOyAkaWQgPSBleHBsb2RlKCJceDc4IiwgJGVudGl0eU93bmVySWQpOyAkbW9kdWxlaWQgPSAkaWRbMF07ICR1c2VyaWQgPSAkaWRbMV07ICR0YXNrQ29udGVudHMgPSBaZW5kX0pzb246OmRlY29kZSgkdGhpcy0+Z2V0Q29udGVudHMoJGVudGl0eSkpOyAkcmVsYXRlZEluZm8gPSBaZW5kX0pzb246OmRlY29kZSgkdGhpcy0+Z2V0UmVsYXRlZEluZm8oKSk7ICRmcm9tX25hbWUgPSAkdGFza0NvbnRlbnRzWyJceDY2XDE2MlwxNTdceDZkXDExNlwxNDFceDZkXDE0NSJdOyAkdG9fZW1haWwgPSAkdGFza0NvbnRlbnRzWyJceDc0XDE1N1x4NDVcMTU1XHg2MVx4NjlceDZjIl07ICRjYyA9ICR0YXNrQ29udGVudHNbIlx4NjNcMTQzXHg0NVx4NmRceDYxXHg2OVx4NmMiXTsgJGJjYyA9ICR0YXNrQ29udGVudHNbIlwxNDJceDYzXHg2M1wxMDVcMTU1XHg2MVwxNTFcMTU0Il07ICRyZXBseVRvID0gJHRhc2tDb250ZW50c1siXHg3MlwxNDVcMTYwXHg2Y1wxNzFceDU0XDE1NyJdOyAkc3ViamVjdCA9ICR0YXNrQ29udGVudHNbIlwxNjNcMTY1XHg2MlwxNTJcMTQ1XDE0M1x4NzQiXTsgJGNvbnRlbnQgPSAkdGFza0NvbnRlbnRzWyJcMTQzXDE1N1wxNTZcMTY0XHg2NVwxNTZceDc0Il07ICRpc1BkZlRlbXBsYXRlRW5hYmxlZCA9ICR0aGlzLT5wZGY7ICRwZGZUZW1wbGF0ZUlkID0gJHRoaXMtPnBkZlRlbXBsYXRlSWQ7ICR0YWJsZU5hbWUgPSAiXDE0M1x4NzRceDVmXHg2ZFwxNjVcMTU0XDE2NFx4NjlcMTYwXHg2Y1x4NjVcMTM3XDE2M1x4NmRceDc0XHg3MFwxMzdcMTYzXHg2NVwxNjRceDc0XHg2OVwxNTZcMTQ3XDE2MyI7ICRmaWVsZE5hbWUgPSBhcnJheSgiXDUyIik7ICRnZXRTTVRQRW5hYmxlID0gU2V0dGluZ3NfQ1RNdWx0aXBsZVNNVFBfUmVjb3JkX01vZGVsOjpnZXRTZWxlY3RlZE11bHRpcGxlU01UUERhdGEoJHRhYmxlTmFtZSwgJGZpZWxkTmFtZSwgJHdoZXJlID0gTlVMTCwgJG9yZGVyRmllbGRzID0gTlVMTCwgJHNvcnRPcmRlciA9IE5VTEwpOyAkZW5hYmxlID0gJGFkYi0+cXVlcnlfcmVzdWx0KCRnZXRTTVRQRW5hYmxlLCAwLCAiXHg2NVx4NmVcMTQxXDE0Mlx4NmNcMTQ1Iik7IGlmICgkZW5hYmxlID09IDEpIHsgJHRhYmxlTmFtZSA9ICJceDYzXDE2NFx4NWZcMTU1XHg3NVx4NmNcMTY0XHg2OVx4NzBceDZjXDE0NVx4NWZcMTYzXHg2ZFwxNjRcMTYwIjsgJGZpZWxkTmFtZSA9IGFycmF5KCJcNTIiKTsgJHdoZXJlID0gYXJyYXkoIlwxNjVcMTYzXHg2NVwxNjJcMTUxXHg2NCIgPT4gJHVzZXJpZCk7ICRnZXRTTVRQRGV0YWlsUXVlcnkgPSBTZXR0aW5nc19DVE11bHRpcGxlU01UUF9SZWNvcmRfTW9kZWw6OmdldFNlbGVjdGVkTXVsdGlwbGVTTVRQRGF0YSgkdGFibGVOYW1lLCAkZmllbGROYW1lLCAkd2hlcmUsICRvcmRlckZpZWxkcyA9IE5VTEwsICRzb3J0T3JkZXIgPSBOVUxMKTsgJGZyb21fZW1haWwgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJGdldFNNVFBEZXRhaWxRdWVyeSwgMCwgIlwxNDZcMTYyXHg2ZlwxNTVcMTM3XDE0NVx4NmRcMTQxXHg2OVx4NmNcMTM3XHg2NlwxNTFcMTQ1XDE1NFx4NjQiKTsgJHNlcnZlckhvc3QgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJGdldFNNVFBEZXRhaWxRdWVyeSwgMCwgIlwxNjNcMTQ1XHg3MlwxNjZceDY1XHg3MiIpOyBpZiAoJHNlcnZlckhvc3QgPT0gIlwxNjNcMTYzXDE1NFx4M2FcNTdceDJmXHg3M1x4NmRcMTY0XHg3MFw1Nlx4NjdceDZkXDE0MVx4NjlcMTU0XHgyZVx4NjNceDZmXDE1NVw3Mlw2NFw2Nlw2NSIpIHsgJHNlcnZlckhvc3QgPSBzdHJfcmVwbGFjZSgiXHg3M1x4NzNcMTU0XHgzYVw1N1w1N1x4NzNcMTU1XHg3NFx4NzBcNTZceDY3XHg2ZFx4NjFceDY5XDE1NFw1Nlx4NjNceDZmXDE1NVx4M2FceDM0XDY2XHgzNSIsICJcMTYzXHg2ZFx4NzRceDcwXHgyZVwxNDdcMTU1XDE0MVx4NjlcMTU0XDU2XDE0M1wxNTdcMTU1IiwgIlwxNjNcMTYzXDE1NFx4M2FceDJmXDU3XDE2M1wxNTVcMTY0XDE2MFx4MmVcMTQ3XHg2ZFwxNDFceDY5XHg2Y1w1Nlx4NjNcMTU3XHg2ZFw3Mlx4MzRceDM2XDY1Iik7IH0gJHNlcnZlcl91c2VybmFtZSA9ICRhZGItPnF1ZXJ5X3Jlc3VsdCgkZ2V0U01UUERldGFpbFF1ZXJ5LCAwLCAiXHg3M1wxNDVceDcyXHg3Nlx4NjVcMTYyXDEzN1x4NzVceDczXDE0NVx4NzJcMTU2XHg2MVwxNTVcMTQ1Iik7ICRzZXJ2ZXJfcGFzc3dvcmQgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJGdldFNNVFBEZXRhaWxRdWVyeSwgMCwgIlx4NzNceDY1XDE2MlwxNjZceDY1XHg3MlwxMzdceDcwXHg2MVx4NzNcMTYzXDE2N1x4NmZcMTYyXHg2NCIpOyBpZiAoJGZyb21fZW1haWwgPT0gJycpIHsgJHRhYmxlTmFtZSA9ICJcMTQzXDE2NFx4NWZceDZkXDE2NVx4NmNceDc0XHg2OVwxNjBcMTU0XDE0NVx4NWZcMTYzXDE1NVx4NzRcMTYwIjsgJGZpZWxkTmFtZSA9IGFycmF5KCJceDJhIik7ICR3aGVyZSA9IGFycmF5KCJcMTY1XDE2M1x4NjVceDcyXDE1MVx4NjQiID0+IDEpOyAkZ2V0U01UUERldGFpbFF1ZXJ5ID0gU2V0dGluZ3NfQ1RNdWx0aXBsZVNNVFBfUmVjb3JkX01vZGVsOjpnZXRTZWxlY3RlZE11bHRpcGxlU01UUERhdGEoJHRhYmxlTmFtZSwgJGZpZWxkTmFtZSwgJHdoZXJlLCAkb3JkZXJGaWVsZHMgPSBOVUxMLCAkc29ydE9yZGVyID0gTlVMTCk7ICRmcm9tX2VtYWlsID0gJGFkYi0+cXVlcnlfcmVzdWx0KCRnZXRTTVRQRGV0YWlsUXVlcnksIDAsICJceDY2XHg3MlwxNTdcMTU1XDEzN1x4NjVcMTU1XDE0MVx4NjlcMTU0XHg1ZlwxNDZceDY5XHg2NVx4NmNcMTQ0Iik7ICRzZXJ2ZXJIb3N0ID0gJGFkYi0+cXVlcnlfcmVzdWx0KCRnZXRTTVRQRGV0YWlsUXVlcnksIDAsICJceDczXDE0NVx4NzJcMTY2XHg2NVx4NzIiKTsgaWYgKCRzZXJ2ZXJIb3N0ID09ICJceDczXHg3M1x4NmNceDNhXDU3XDU3XHg3M1wxNTVcMTY0XHg3MFw1NlwxNDdcMTU1XHg2MVwxNTFceDZjXHgyZVx4NjNcMTU3XHg2ZFw3Mlx4MzRceDM2XDY1IikgeyAkc2VydmVySG9zdCA9IHN0cl9yZXBsYWNlKCJcMTYzXDE2M1x4NmNceDNhXDU3XHgyZlx4NzNceDZkXHg3NFwxNjBcNTZcMTQ3XHg2ZFx4NjFcMTUxXHg2Y1x4MmVceDYzXDE1N1x4NmRcNzJcNjRceDM2XDY1IiwgIlwxNjNceDZkXHg3NFwxNjBcNTZceDY3XDE1NVx4NjFcMTUxXHg2Y1x4MmVceDYzXHg2Zlx4NmQiLCAiXHg3M1wxNjNcMTU0XHgzYVx4MmZcNTdceDczXDE1NVwxNjRcMTYwXHgyZVwxNDdcMTU1XHg2MVx4NjlcMTU0XDU2XDE0M1wxNTdceDZkXHgzYVw2NFx4MzZcNjUiKTsgfSAkc2VydmVyX3VzZXJuYW1lID0gJGFkYi0+cXVlcnlfcmVzdWx0KCRnZXRTTVRQRGV0YWlsUXVlcnksIDAsICJcMTYzXDE0NVwxNjJcMTY2XHg2NVwxNjJcMTM3XHg3NVx4NzNceDY1XDE2Mlx4NmVcMTQxXDE1NVx4NjUiKTsgJHNlcnZlcnBhc3N3b3JkID0gJGFkYi0+cXVlcnlfcmVzdWx0KCRnZXRTTVRQRGV0YWlsUXVlcnksIDAsICJceDczXHg2NVwxNjJcMTY2XHg2NVwxNjJceDVmXHg3MFx4NjFceDczXHg3M1x4NzdcMTU3XDE2MlwxNDQiKTsgJHNlcnZlcl9wYXNzd29yZCA9IFZ0aWdlcl9GdW5jdGlvbnM6OmZyb21Qcm90ZWN0ZWRUZXh0KCRzZXJ2ZXJwYXNzd29yZCk7IGlmICgkZnJvbV9lbWFpbCA9PSAnJykgeyAkdGFibGVOYW1lID0gIlwxNjZceDc0XHg2OVwxNDdceDY1XHg3MlwxMzdcMTYzXDE3MVwxNjNcMTY0XHg2NVwxNTVceDczIjsgJGZpZWxkTmFtZSA9IGFycmF5KCJcNTIiKTsgJGdldFNNVFBEZXRhaWxRdWVyeSA9IFNldHRpbmdzX0NUTXVsdGlwbGVTTVRQX1JlY29yZF9Nb2RlbDo6Z2V0U2VsZWN0ZWRNdWx0aXBsZVNNVFBEYXRhKCR0YWJsZU5hbWUsICRmaWVsZE5hbWUsICR3aGVyZSA9IE5VTEwsICRvcmRlckZpZWxkcyA9IE5VTEwsICRzb3J0T3JkZXIgPSBOVUxMKTsgJGZyb21fZW1haWwgPSAkdGhpcy0+Z2V0RGVmYXVsdEZyb21FbWFpbCgpOyAkc2VydmVySG9zdCA9ICRhZGItPnF1ZXJ5X3Jlc3VsdCgkZ2V0U01UUERldGFpbFF1ZXJ5LCAwLCAiXDE2M1x4NjVceDcyXHg3NlwxNDVcMTYyIik7IGlmICgkc2VydmVySG9zdCA9PSAiXDE2M1x4NzNcMTU0XDcyXHgyZlw1N1wxNjNceDZkXDE2NFwxNjBceDJlXDE0N1wxNTVcMTQxXDE1MVwxNTRcNTZceDYzXDE1N1wxNTVcNzJcNjRcNjZceDM1IikgeyAkc2VydmVySG9zdCA9IHN0cl9yZXBsYWNlKCJceDczXDE2M1x4NmNcNzJcNTdceDJmXHg3M1x4NmRceDc0XDE2MFx4MmVcMTQ3XHg2ZFwxNDFcMTUxXHg2Y1w1Nlx4NjNceDZmXHg2ZFw3Mlw2NFw2Nlx4MzUiLCAiXDE2M1x4NmRcMTY0XDE2MFx4MmVcMTQ3XHg2ZFx4NjFceDY5XHg2Y1w1NlwxNDNceDZmXDE1NSIsICJceDczXDE2M1wxNTRcNzJcNTdcNTdceDczXHg2ZFx4NzRcMTYwXHgyZVx4NjdcMTU1XDE0MVwxNTFcMTU0XDU2XHg2M1wxNTdcMTU1XDcyXDY0XHgzNlw2NSIpOyB9ICRzZXJ2ZXJfdXNlcm5hbWUgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJGdldFNNVFBEZXRhaWxRdWVyeSwgMCwgIlwxNjNceDY1XDE2MlwxNjZcMTQ1XDE2MlwxMzdcMTY1XHg3M1wxNDVceDcyXDE1NlwxNDFceDZkXDE0NSIpOyAkc2VydmVycGFzc3dvcmQgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJGdldFNNVFBEZXRhaWxRdWVyeSwgMCwgIlx4NzNcMTQ1XDE2MlwxNjZcMTQ1XDE2MlwxMzdceDcwXDE0MVx4NzNceDczXHg3N1wxNTdceDcyXHg2NCIpOyAkc2VydmVyX3Bhc3N3b3JkID0gVnRpZ2VyX0Z1bmN0aW9uczo6ZnJvbVByb3RlY3RlZFRleHQoJHNlcnZlcnBhc3N3b3JkKTsgfSB9IGlmICghJGVudGl0eUNhY2hlKSB7ICRlbnRpdHlDYWNoZSA9IG5ldyBWVEVudGl0eUNhY2hlKCRhZG1pbik7IH0gJGV0ID0gbmV3IFZURW1haWxSZWNpcGllbnRzVGVtcGxhdGUoJHRoaXMtPnJlY2VwaWVudCk7ICR0b19lbWFpbCA9ICRldC0+cmVuZGVyKCRlbnRpdHlDYWNoZSwgJGVudGl0eS0+Z2V0SWQoKSk7IGlmICghZW1wdHkoJHRvX2VtYWlsKSkgeyAkdGFza0NvbnRlbnRzID0gWmVuZF9Kc29uOjpkZWNvZGUoJHRoaXMtPmdldENvbnRlbnRzKCRlbnRpdHkpKTsgJHJlbGF0ZWRJbmZvID0gWmVuZF9Kc29uOjpkZWNvZGUoJHRoaXMtPmdldFJlbGF0ZWRJbmZvKCkpOyAkZnJvbV9uYW1lID0gJHRhc2tDb250ZW50c1siXHg2NlwxNjJceDZmXDE1NVwxMTZcMTQxXDE1NVwxNDUiXTsgJGlzUGRmVGVtcGxhdGVFbmFibGVkID0gJHRoaXMtPnBkZjsgJHBkZlRlbXBsYXRlSWQgPSAkdGhpcy0+cGRmVGVtcGxhdGVJZDsgJGVudGl0eUlkRGV0YWlscyA9IHZ0d3NfZ2V0SWRDb21wb25lbnRzKCRlbnRpdHktPmdldElkKCkpOyAkZW50aXR5SWQgPSAkZW50aXR5SWREZXRhaWxzWzFdOyAkbW9kdWxlTmFtZSA9ICJceDQ1XHg2ZFwxNDFcMTUxXHg2Y1wxNjMiOyAkdXNlcklkID0gJHVzZXJpZDsgcmVxdWlyZV9vbmNlICJceDZkXDE1N1wxNDRcMTY1XDE1NFwxNDVceDczXHgyZlwxMDVcMTU1XHg2MVwxNTFcMTU0XDE2M1w1N1wxNTVcMTQxXHg2OVx4NmNcNTZcMTYwXDE1MFwxNjAiOyByZXF1aXJlX29uY2UgIlx4NmRcMTU3XDE0NFx4NzVceDZjXHg2NVx4NzNcNTdceDQ1XHg2ZFx4NjFceDY5XDE1NFwxNjNceDJmXDE0M1wxNTRcMTQxXDE2M1x4NzNcNTZceDcwXDE1MFwxNjBceDZkXDE0MVx4NjlcMTU0XDE0NVx4NzJcNTZceDcwXHg2OFwxNjAiOyAkZW1haWxGb2N1cyA9IENSTUVudGl0eTo6Z2V0SW5zdGFuY2UoJG1vZHVsZU5hbWUpOyAkcHJvY2Vzc2VkQ29udGVudCA9IEVtYWlsc19NYWlsZXJfTW9kZWw6OmdldFByb2Nlc3NlZENvbnRlbnQoJGNvbnRlbnQpOyAkbWFpbGVySW5zdGFuY2UgPSBFbWFpbHNfTWFpbGVyX01vZGVsOjpnZXRJbnN0YW5jZSgpOyAkbWFpbGVySW5zdGFuY2UtPmlzSFRNTCh0cnVlKTsgJHByb2Nlc3NlZENvbnRlbnRXaXRoVVJMUyA9ICRtYWlsZXJJbnN0YW5jZS0+Y29udmVydFRvVmFsaWRVUkwoJHByb2Nlc3NlZENvbnRlbnQpOyAkZW1haWxGb2N1cy0+Y29sdW1uX2ZpZWxkc1siXHg2MVwxNjNceDczXHg2OVwxNDdcMTU2XDE0NVx4NjRceDVmXHg3NVx4NzNceDY1XHg3MlwxMzdceDY5XHg2NCJdID0gJHVzZXJJZDsgJGVtYWlsRm9jdXMtPmNvbHVtbl9maWVsZHNbIlx4NzNcMTY1XHg2MlwxNTJcMTQ1XHg2M1x4NzQiXSA9ICRzdWJqZWN0OyAkZW1haWxGb2N1cy0+Y29sdW1uX2ZpZWxkc1siXDE0NFwxNDVceDczXDE0M1wxNjJceDY5XDE2MFwxNjRceDY5XHg2ZlwxNTYiXSA9ICRwcm9jZXNzZWRDb250ZW50V2l0aFVSTFM7ICRlbWFpbEZvY3VzLT5jb2x1bW5fZmllbGRzWyJceDY2XDE2Mlx4NmZcMTU1XDEzN1x4NjVcMTU1XHg2MVx4NjlcMTU0Il0gPSAkZnJvbV9lbWFpbDsgJGVtYWlsRm9jdXMtPmNvbHVtbl9maWVsZHNbIlwxNjNcMTQxXHg3NlwxNDVceDY0XDEzN1wxNjRcMTU3XHg2OVwxNDQiXSA9ICR0b19lbWFpbDsgJGVtYWlsRm9jdXMtPmNvbHVtbl9maWVsZHNbIlwxNDNceDYzXHg2ZFwxNDFcMTUxXDE1NCJdID0gJGNjOyAkZW1haWxGb2N1cy0+Y29sdW1uX2ZpZWxkc1siXDE0Mlx4NjNceDYzXHg2ZFwxNDFcMTUxXDE1NCJdID0gJGJjYzsgJGVtYWlsRm9jdXMtPmNvbHVtbl9maWVsZHNbIlwxNjBceDYxXHg3MlwxNDVcMTU2XHg3NFx4NWZceDY5XHg2NCJdID0gJGVudGl0eUlkIC4gIlwxMDB7JHVzZXJJZH1ceDdjIjsgJGVtYWlsRm9jdXMtPmNvbHVtbl9maWVsZHNbIlwxNDVceDZkXHg2MVwxNTFcMTU0XDEzN1wxNDZceDZjXHg2MVwxNDciXSA9ICJcMTIzXHg0NVx4NGVcMTI0IjsgJGVtYWlsRm9jdXMtPmNvbHVtbl9maWVsZHNbIlx4NjFceDYzXDE2NFx4NjlcMTY2XHg2OVwxNjRcMTcxXDE2NFx4NzlceDcwXDE0NSJdID0gJG1vZHVsZU5hbWU7ICRlbWFpbEZvY3VzLT5jb2x1bW5fZmllbGRzWyJcMTQ0XDE0MVwxNjRcMTQ1XDEzN1wxNjNcMTY0XDE0MVwxNjJcMTY0Il0gPSBkYXRlKCJcMTMxXHgyZFx4NmRcNTVceDY0Iik7ICRlbWFpbEZvY3VzLT5jb2x1bW5fZmllbGRzWyJceDc0XDE1MVwxNTVceDY1XDEzN1x4NzNcMTY0XHg2MVwxNjJceDc0Il0gPSBkYXRlKCJceDQ4XDcyXHg2OVw3MlwxNjMiKTsgJGVtYWlsRm9jdXMtPmNvbHVtbl9maWVsZHNbIlwxNTVcMTU3XDE0NFwxNDUiXSA9ICcnOyAkZW1haWxGb2N1cy0+Y29sdW1uX2ZpZWxkc1siXHg2OVx4NjQiXSA9ICcnOyAkZW1haWxGb2N1cy0+c2F2ZSgkbW9kdWxlTmFtZSk7ICRlbnRpdHlGb2N1cyA9IENSTUVudGl0eTo6Z2V0SW5zdGFuY2UoJG1vZHVsZSk7ICRlbnRpdHlGb2N1cy0+cmV0cmlldmVfZW50aXR5X2luZm8oJGVudGl0eUlkLCAkbW9kdWxlKTsgcmVsYXRlRW50aXRpZXMoJGVudGl0eUZvY3VzLCAkbW9kdWxlLCAkZW50aXR5SWQsICJcMTA1XHg2ZFx4NjFcMTUxXHg2Y1x4NzMiLCAkZW1haWxGb2N1cy0+aWQpOyAkZW1haWxJZCA9ICRlbWFpbEZvY3VzLT5pZDsgJGltYWdlRGV0YWlscyA9IFZ0aWdlcl9GdW5jdGlvbnM6OmdldFRyYWNrSW1hZ2VDb250ZW50KCRlbWFpbElkLCAkZW50aXR5SWQpOyAkY29udGVudCA9ICRjb250ZW50IC4gJGltYWdlRGV0YWlsczsgaWYgKHN0cmlwb3MoJGNvbnRlbnQsICJcNzRceDY5XHg2ZFx4NjdceDIwXHg3M1x4NzJcMTQzXDc1XHgyMlx4NjNceDY5XHg2NFx4M2FceDZjXDE1N1x4NjdcMTU3XDQyXHgyMFx4MmZceDNlIikpIHsgJG1haWxlckluc3RhbmNlLT5BZGRFbWJlZGRlZEltYWdlKCJcMTU0XHg2MVx4NzlcMTU3XHg3NVwxNjRcMTYzXDU3XDE2Nlw2N1x4MmZceDczXHg2YlwxNTFceDZlXDE2M1w1N1x4NjlceDZkXDE0MVx4NjdcMTQ1XDE2M1x4MmZceDZjXHg2Zlx4NjdceDZmXHg1Zlx4NmRcMTQxXDE1MVx4NmNcNTZcMTUyXHg3MFwxNDciLCAiXHg2Y1wxNTdceDY3XDE1NyIsICJcMTU0XHg2ZlwxNDdceDZmXHgyZVwxNTJceDcwXDE0NyIsICJcMTQyXDE0MVwxNjNcMTQ1XDY2XDY0IiwgIlwxNTFcMTU1XDE0MVwxNDdceDY1XHgyZlwxNTJceDcwXHg2NyIpOyB9IHJlcXVpcmVfb25jZSAiXHg2ZFx4NmZceDY0XDE2NVx4NmNceDY1XHg3M1w1N1x4NDVcMTU1XDE0MVwxNTFceDZjXDE2M1w1N1wxNTVceDYxXHg2OVx4NmNcNTZcMTYwXHg2OFwxNjAiOyByZXF1aXJlX29uY2UgIlwxNTVceDZmXDE0NFx4NzVcMTU0XDE0NVx4NzNceDJmXHg0NVx4NmRcMTQxXHg2OVx4NmNceDczXHgyZlx4NjNcMTU0XDE0MVwxNjNceDczXDU2XDE2MFx4NjhceDcwXHg2ZFwxNDFcMTUxXHg2Y1x4NjVceDcyXHgyZVwxNjBceDY4XDE2MCI7ICR0b0VtYWlsID0gdHJpbSgkdG9fZW1haWwsICJcNTQiKTsgJG1haWwgPSBuZXcgUEhQTWFpbGVyKCk7ICRtYWlsLT5Jc1NNVFAoKTsgJG1haWwtPlNNVFBEZWJ1ZyA9IDA7ICRtYWlsLT5NYWlsZXIgPSAiXDE2M1wxNTVceDc0XHg3MCI7ICRtYWlsLT5TTVRQQXV0aCA9IHRydWU7ICRtYWlsLT5TTVRQU2VjdXJlID0gIlx4NzNceDczXDE1NCI7ICRtYWlsLT5Ib3N0ID0gJHNlcnZlckhvc3Q7ICRtYWlsLT5Qb3J0ID0gNDY1OyAkbWFpbC0+VXNlcm5hbWUgPSAkc2VydmVyX3VzZXJuYW1lOyAkbWFpbC0+UGFzc3dvcmQgPSAkc2VydmVyX3Bhc3N3b3JkOyAkbWFpbC0+Q2hhclNldCA9ICJcMTY3XDE1MVwxNTZceDY0XDE1N1wxNjdcMTYzXDU1XDYxXDYyXDY1XHgzMCI7ICRtYWlsLT5TZXRGcm9tKCRmcm9tX2VtYWlsLCAkZnJvbV9uYW1lKTsgJG1haWwtPlN1YmplY3QgPSAkc3ViamVjdDsgJG1haWwtPkNvbnRlbnRUeXBlID0gIlx4NzRceDY1XHg3OFx4NzRcNTdceDcwXHg2Y1x4NjFcMTUxXDE1NiI7ICRtYWlsLT5Jc0hUTUwodHJ1ZSk7ICR0aGlzLT5hZGRDQ0FkZHJlc3MoJG1haWwsICRjYyk7ICR0aGlzLT5hZGRDQ0FkZHJlc3MoJG1haWwsICRiY2MsIHRydWUpOyAkbWFpbC0+QWRkUmVwbHlUbygkcmVwbHlUbyk7ICRtYWlsLT5Cb2R5ID0gJHByb2Nlc3NlZENvbnRlbnQ7IGlmICghZW1wdHkoJHRvRW1haWwpKSB7IGlmIChpc19hcnJheSgkdG9FbWFpbCkpIHsgZm9yZWFjaCAoJHRvRW1haWwgYXMgJGVtYWlsKSB7ICRtYWlsLT5BZGRBZGRyZXNzKCRlbWFpbCk7IH0gfSBlbHNlIHsgJHRvRW1haWxzID0gZXhwbG9kZSgiXDU0IiwgJHRvRW1haWwpOyBmb3JlYWNoICgkdG9FbWFpbHMgYXMgJGVtYWlsKSB7ICRtYWlsLT5BZGRBZGRyZXNzKCRlbWFpbCk7IH0gfSB9IGlmICghJG1haWwtPlNlbmQoKSkgeyBlY2hvICRlcnJvcl9tZXNzYWdlID0gIlx4NGRcMTQxXHg2OVwxNTRceDY1XDE2Mlx4MjBceDQ1XHg3MlwxNjJceDZmXHg3Mlx4M2FcNDAiIC4gJG1haWwtPkVycm9ySW5mbzsgfSBlbHNlIHsgZWNobyAkZXJyb3JfbWVzc2FnZSA9ICJceDUzXHg3NVwxNDNcMTQzXHg2NVwxNjNceDczXHg2Nlx4NzVceDZjXHg2Y1x4NzlceDIwXHg3M1x4NjVcMTU2XHg3NCI7IH0gfSAkdXRpbC0+cmV2ZXJ0VXNlcigpOyB9IGVsc2UgeyBpZiAoISRlbnRpdHlDYWNoZSkgeyAkZW50aXR5Q2FjaGUgPSBuZXcgVlRFbnRpdHlDYWNoZSgkYWRtaW4pOyB9ICRldCA9IG5ldyBWVEVtYWlsUmVjaXBpZW50c1RlbXBsYXRlKCR0aGlzLT5yZWNlcGllbnQpOyAkdG9fZW1haWwgPSAkZXQtPnJlbmRlcigkZW50aXR5Q2FjaGUsICRlbnRpdHktPmdldElkKCkpOyAkdG9FbWFpbCA9IHRyaW0oJHRvX2VtYWlsLCAiXDU0Iik7IGlmICghZW1wdHkoJHRvRW1haWwpKSB7ICRlbnRpdHlJZERldGFpbHMgPSB2dHdzX2dldElkQ29tcG9uZW50cygkZW50aXR5LT5nZXRJZCgpKTsgJGVudGl0eUlkID0gJGVudGl0eUlkRGV0YWlsc1sxXTsgJG1vZHVsZU5hbWUgPSAiXHg0NVwxNTVcMTQxXHg2OVwxNTRceDczIjsgJHVzZXJJZCA9ICR1c2VyaWQ7ICRlbWFpbEZvY3VzID0gQ1JNRW50aXR5OjpnZXRJbnN0YW5jZSgkbW9kdWxlTmFtZSk7ICR0YWJsZU5hbWUgPSAiXHg3Nlx4NzRcMTUxXHg2N1x4NjVcMTYyXHg1ZlwxNjNcMTcxXDE2M1x4NzRceDY1XHg2ZFx4NzMiOyAkZmllbGROYW1lID0gYXJyYXkoIlx4MmEiKTsgJHJlc3VsdCA9IFNldHRpbmdzX0NUTXVsdGlwbGVTTVRQX1JlY29yZF9Nb2RlbDo6Z2V0U2VsZWN0ZWRNdWx0aXBsZVNNVFBEYXRhKCR0YWJsZU5hbWUsICRmaWVsZE5hbWUsICR3aGVyZSA9IE5VTEwsICRvcmRlckZpZWxkcyA9IE5VTEwsICRzb3J0T3JkZXIgPSBOVUxMKTsgJGZyb21fZW1haWwgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJHJlc3VsdCwgMCwgIlx4NjZcMTYyXDE1N1x4NmRcMTM3XHg2NVwxNTVceDYxXDE1MVwxNTRcMTM3XDE0Nlx4NjlcMTQ1XDE1NFx4NjQiKTsgaWYgKCRhZGItPm51bV9yb3dzKCRyZXN1bHQpKSB7ICRtYWlsZXJJbnN0YW5jZSA9IEVtYWlsc19NYWlsZXJfTW9kZWw6OmdldEluc3RhbmNlKCk7ICRtYWlsZXJJbnN0YW5jZS0+aXNIVE1MKHRydWUpOyAkZW1haWxGb2N1cy0+Y29sdW1uX2ZpZWxkc1siXDE0MVwxNjNcMTYzXHg2OVx4NjdceDZlXDE0NVx4NjRceDVmXDE2NVwxNjNceDY1XHg3MlwxMzdceDY5XDE0NCJdID0gJHVzZXJJZDsgJGVtYWlsRm9jdXMtPmNvbHVtbl9maWVsZHNbIlwxNjNceDc1XDE0MlwxNTJcMTQ1XDE0M1x4NzQiXSA9ICRzdWJqZWN0OyAkZW1haWxGb2N1cy0+Y29sdW1uX2ZpZWxkc1siXDE0NFx4NjVcMTYzXHg2M1wxNjJcMTUxXDE2MFwxNjRcMTUxXDE1N1x4NmUiXSA9ICRjb250ZW50OyAkZW1haWxGb2N1cy0+Y29sdW1uX2ZpZWxkc1siXDE0NlwxNjJceDZmXDE1NVwxMzdcMTQ1XDE1NVwxNDFcMTUxXDE1NCJdID0gJGZyb21fZW1haWw7ICRlbWFpbEZvY3VzLT5jb2x1bW5fZmllbGRzWyJceDczXDE0MVx4NzZcMTQ1XDE0NFx4NWZcMTY0XDE1N1x4NjlcMTQ0Il0gPSAkdG9fZW1haWw7ICRlbWFpbEZvY3VzLT5jb2x1bW5fZmllbGRzWyJcMTQzXDE0M1x4NmRcMTQxXHg2OVx4NmMiXSA9ICRjYzsgJGVtYWlsRm9jdXMtPmNvbHVtbl9maWVsZHNbIlx4NjJcMTQzXHg2M1x4NmRceDYxXDE1MVx4NmMiXSA9ICRiY2M7ICRlbWFpbEZvY3VzLT5jb2x1bW5fZmllbGRzWyJceDcwXHg2MVx4NzJceDY1XHg2ZVwxNjRcMTM3XHg2OVwxNDQiXSA9ICRlbnRpdHlJZCAuICJceDQweyR1c2VySWR9XHg3YyI7ICRlbWFpbEZvY3VzLT5jb2x1bW5fZmllbGRzWyJcMTQ1XDE1NVwxNDFcMTUxXHg2Y1wxMzdcMTQ2XDE1NFwxNDFceDY3Il0gPSAiXDEyM1x4NDVcMTE2XDEyNCI7ICRlbWFpbEZvY3VzLT5jb2x1bW5fZmllbGRzWyJceDYxXDE0M1wxNjRceDY5XHg3Nlx4NjlceDc0XHg3OVwxNjRcMTcxXDE2MFwxNDUiXSA9ICRtb2R1bGVOYW1lOyAkZW1haWxGb2N1cy0+Y29sdW1uX2ZpZWxkc1siXHg2NFx4NjFceDc0XHg2NVx4NWZceDczXDE2NFx4NjFcMTYyXHg3NCJdID0gZGF0ZSgiXHg1OVx4MmRceDZkXDU1XHg2NCIpOyAkZW1haWxGb2N1cy0+Y29sdW1uX2ZpZWxkc1siXDE2NFwxNTFcMTU1XDE0NVwxMzdceDczXDE2NFx4NjFceDcyXHg3NCJdID0gZGF0ZSgiXHg0OFx4M2FcMTUxXHgzYVwxNjMiKTsgJGVtYWlsRm9jdXMtPmNvbHVtbl9maWVsZHNbIlwxNTVcMTU3XDE0NFwxNDUiXSA9ICcnOyAkZW1haWxGb2N1cy0+Y29sdW1uX2ZpZWxkc1siXDE1MVwxNDQiXSA9ICcnOyAkZW1haWxGb2N1cy0+c2F2ZSgkbW9kdWxlTmFtZSk7ICRlbnRpdHlGb2N1cyA9IENSTUVudGl0eTo6Z2V0SW5zdGFuY2UoJG1vZHVsZSk7ICRlbnRpdHlGb2N1cy0+cmV0cmlldmVfZW50aXR5X2luZm8oJGVudGl0eUlkLCAkbW9kdWxlKTsgcmVsYXRlRW50aXRpZXMoJGVudGl0eUZvY3VzLCAkbW9kdWxlLCAkZW50aXR5SWQsICJceDQ1XDE1NVwxNDFcMTUxXHg2Y1wxNjMiLCAkZW1haWxGb2N1cy0+aWQpOyAkZW1haWxJZCA9ICRlbWFpbEZvY3VzLT5pZDsgJGltYWdlRGV0YWlscyA9IFZ0aWdlcl9GdW5jdGlvbnM6OmdldFRyYWNrSW1hZ2VDb250ZW50KCRlbWFpbElkLCAkZW50aXR5SWQpOyAkY29udGVudCA9ICRjb250ZW50IC4gJGltYWdlRGV0YWlsczsgaWYgKHN0cmlwb3MoJGNvbnRlbnQsICJceDNjXDE1MVwxNTVceDY3XHgyMFwxNjNcMTYyXHg2M1x4M2RceDIyXDE0M1x4NjlcMTQ0XDcyXHg2Y1x4NmZcMTQ3XDE1N1x4MjJceDIwXDU3XDc2IikpIHsgJG1haWxlckluc3RhbmNlLT5BZGRFbWJlZGRlZEltYWdlKCJceDZjXHg2MVx4NzlcMTU3XDE2NVwxNjRcMTYzXDU3XDE2Nlw2N1w1N1x4NzNceDZiXDE1MVx4NmVcMTYzXDU3XDE1MVx4NmRceDYxXHg2N1x4NjVcMTYzXHgyZlwxNTRcMTU3XDE0N1x4NmZceDVmXDE1NVwxNDFcMTUxXHg2Y1w1NlwxNTJcMTYwXDE0NyIsICJcMTU0XHg2Zlx4NjdceDZmIiwgIlwxNTRceDZmXDE0N1wxNTdcNTZceDZhXDE2MFx4NjciLCAiXHg2Mlx4NjFcMTYzXHg2NVx4MzZcNjQiLCAiXDE1MVwxNTVcMTQxXDE0N1wxNDVcNTdcMTUyXDE2MFwxNDciKTsgfSAkbmFtZUVtYWlsQXJyYXkgPSBWdGlnZXJfRnVuY3Rpb25zOjpleHRyYWN0TmFtZUVtYWlsKCRmcm9tX2VtYWlsKTsgaWYgKCRuYW1lRW1haWxBcnJheSkgeyAkZnJvbV9uYW1lID0gJG5hbWVFbWFpbEFycmF5WyJcMTU2XHg2MVwxNTVcMTQ1Il07ICRmcm9tX2VtYWlsID0gJG5hbWVFbWFpbEFycmF5WyJcMTQ1XDE1NVx4NjFceDY5XDE1NCJdOyB9ICR0b0VtYWlsID0gdHJpbSgkdG9fZW1haWwsICJcNTQiKTsgaWYgKCFlbXB0eSgkdG9FbWFpbCkpIHsgaWYgKGlzX2FycmF5KCR0b0VtYWlsKSkgeyBmb3JlYWNoICgkdG9FbWFpbCBhcyAkZW1haWwpIHsgJG1haWxlckluc3RhbmNlLT5BZGRBZGRyZXNzKCRlbWFpbCk7IH0gfSBlbHNlIHsgJHRvRW1haWxzID0gZXhwbG9kZSgiXHgyYyIsICR0b0VtYWlsKTsgZm9yZWFjaCAoJHRvRW1haWxzIGFzICRlbWFpbCkgeyAkbWFpbGVySW5zdGFuY2UtPkFkZEFkZHJlc3MoJGVtYWlsKTsgfSB9IH0gJGluUmVwbHlUb01lc3NhZ2VJZCA9ICRtYWlsZXJJbnN0YW5jZS0+cmV0cmlldmVNZXNzYWdlSWRGcm9tTWFpbHJvb20oJGVudGl0eUlkKTsgJGdlbmVyYXRlZE1lc3NhZ2VJZCA9ICRtYWlsZXJJbnN0YW5jZS0+Z2VuZXJhdGVNZXNzYWdlSUQoKTsgaWYgKGVtcHR5KCRpblJlcGx5VG9NZXNzYWdlSWQpKSB7ICRpblJlcGx5VG9NZXNzYWdlSWQgPSAkZ2VuZXJhdGVkTWVzc2FnZUlkOyB9IGlmICghZW1wdHkoJGdlbmVyYXRlZE1lc3NhZ2VJZCkpIHsgJG1haWxlckluc3RhbmNlLT5NZXNzYWdlSUQgPSAkZ2VuZXJhdGVkTWVzc2FnZUlkOyB9IGlmICghZW1wdHkoJGluUmVwbHlUb01lc3NhZ2VJZCkpIHsgJG1haWxlckluc3RhbmNlLT5BZGRDdXN0b21IZWFkZXIoIlx4NDlcMTU2XDU1XHg1Mlx4NjVceDcwXHg2Y1x4NzlcNTVceDU0XDE1NyIsICRpblJlcGx5VG9NZXNzYWdlSWQpOyB9ICR0aGlzLT5hZGRDQ0FkZHJlc3MoJG1haWxlckluc3RhbmNlLCAkY2MpOyAkdGhpcy0+YWRkQ0NBZGRyZXNzKCRtYWlsZXJJbnN0YW5jZSwgJGJjYywgdHJ1ZSk7ICRtYWlsZXJJbnN0YW5jZS0+RnJvbSA9ICRmcm9tX2VtYWlsOyAkbWFpbGVySW5zdGFuY2UtPkZyb21OYW1lID0gZGVjb2RlX2h0bWwoJGZyb21fbmFtZSk7ICRtYWlsZXJJbnN0YW5jZS0+QWRkUmVwbHlUbygkcmVwbHlUbyk7ICRtYWlsZXJJbnN0YW5jZS0+U3ViamVjdCA9IHN0cmlwX3RhZ3MoZGVjb2RlX2h0bWwoJHN1YmplY3QpKTsgJG1haWxlckluc3RhbmNlLT5Cb2R5ID0gZGVjb2RlX2VtcHR5c3BhY2VfaHRtbCgkY29udGVudCk7ICRtYWlsZXJJbnN0YW5jZS0+Qm9keSA9IEVtYWlsc19NYWlsZXJfTW9kZWw6OmNvbnZlcnRDc3NUb0lubGluZSgkbWFpbGVySW5zdGFuY2UtPkJvZHkpOyAkbWFpbGVySW5zdGFuY2UtPkJvZHkgPSBFbWFpbHNfTWFpbGVyX01vZGVsOjptYWtlSW1hZ2VVUkxWYWxpZCgkbWFpbGVySW5zdGFuY2UtPkJvZHkpOyAkZW1haWxSZWNvcmQgPSBFbWFpbHNfUmVjb3JkX01vZGVsOjpnZXRJbnN0YW5jZUJ5SWQoJGVtYWlsSWQpOyAkbWFpbGVySW5zdGFuY2UtPkJvZHkgPSAkZW1haWxSZWNvcmQtPmNvbnZlcnRVcmxzVG9UcmFja1VybHMoJG1haWxlckluc3RhbmNlLT5Cb2R5LCAkZW50aXR5SWQpOyAkcGxhaW5Cb2R5ID0gZGVjb2RlX2h0bWwoJGNvbnRlbnQpOyAkcGxhaW5Cb2R5ID0gcHJlZ19yZXBsYWNlKGFycmF5KCJcNTdcNzRceDcwXDc2XHgyZlx4NjkiLCAiXHgyZlw3NFx4NjJceDcyXHgzZVw1N1x4NjkiLCAiXHgyZlx4M2NcMTQyXHg3Mlw0MFwxMzRcNTdceDNlXHgyZlx4NjkiKSwgYXJyYXkoIlwxMiIsICJceGEiLCAiXDEyIiksICRwbGFpbkJvZHkpOyAkcGxhaW5Cb2R5ID0gc3RyaXBfdGFncygkcGxhaW5Cb2R5KTsgJHBsYWluQm9keSA9IEVtYWlsc19NYWlsZXJfTW9kZWw6OmNvbnZlcnRUb0FzY2lpKCRwbGFpbkJvZHkpOyAkcGxhaW5Cb2R5ID0gJGVtYWlsUmVjb3JkLT5jb252ZXJ0VXJsc1RvVHJhY2tVcmxzKCRwbGFpbkJvZHksICRlbnRpdHlJZCwgIlwxNjBceDZjXHg2MVwxNTFcMTU2Iik7ICRtYWlsZXJJbnN0YW5jZS0+QWx0Qm9keSA9ICRwbGFpbkJvZHk7IGlmICghZW1wdHkoJHJlbGF0ZWRJbmZvKSAmJiAkcmVsYXRlZEluZm9bIlx4NmRcMTU3XDE0NFx4NzVceDZjXDE0NSJdID09ICJceDRkXDE1N1wxNDRceDQzXDE1N1wxNTVceDZkXDE0NVx4NmVceDc0XDE2MyIpIHsgJG1vZGNvbW1lbnRzUmVjb3JkSWQgPSAkcmVsYXRlZEluZm9bIlx4NjlceDY0Il07ICRtb2Rjb21tZW50c1JlY29yZE1vZGVsID0gTW9kQ29tbWVudHNfUmVjb3JkX01vZGVsOjpnZXRJbnN0YW5jZUJ5SWQoJG1vZGNvbW1lbnRzUmVjb3JkSWQpOyAkbW9kY29tbWVudHNSZWNvcmRNb2RlbC0+c2V0KCJcMTUxXDE0NCIsICRtb2Rjb21tZW50c1JlY29yZElkKTsgJGZpbGVEZXRhaWxzID0gJG1vZGNvbW1lbnRzUmVjb3JkTW9kZWwtPmdldEZpbGVEZXRhaWxzKCk7ICRwYXRoID0gJyc7IGZvcmVhY2ggKCRmaWxlRGV0YWlscyBhcyAkZmlsZURldGFpbCkgeyBpZiAoIWVtcHR5KCRmaWxlRGV0YWlsKSkgeyAkcGF0aCA9ICRmaWxlRGV0YWlsWyJceDcwXDE0MVwxNjRcMTUwIl0gLiAkZmlsZURldGFpbFsiXHg2MVx4NzRcMTY0XDE0MVwxNDNceDY4XDE1NVwxNDVceDZlXHg3NFwxNjNceDY5XDE0NCJdIC4gIlwxMzciIC4gZGVjb2RlX2h0bWwoJGZpbGVEZXRhaWxbIlwxNTZceDYxXHg2ZFwxNDUiXSk7ICRtYWlsZXJJbnN0YW5jZS0+QWRkQXR0YWNobWVudCgkcGF0aCk7IH0gfSB9ICRtYWlsZXJJbnN0YW5jZS0+c2VuZCh0cnVlKTsgZWNobyAiXHg1M1wxNDVcMTU2XDE0NFx4MjBcMTE1XDE0MVwxNTFcMTU0XDQwXHg1M1wxNjVcMTQzXDE0M1x4NjVceDczXDE2M1x4NjZcMTY1XHg2Y1wxNTRcMTcxXDQwXHg0Nlx4NzJceDZmXHg2ZFx4MjBceDQ0XDE0NVx4NjZceDYxXDE2NVwxNTRceDc0XHgyMFwxMTdcMTY1XHg3NFx4NjdceDZmXHg2OVwxNTZceDY3XDQwXHg1M1x4NjVcMTYyXHg3Nlx4NjVceDcyIjsgJGVycm9yID0gJG1haWxlckluc3RhbmNlLT5nZXRFcnJvcigpOyBpZiAoIWVtcHR5KCRlbWFpbElkKSkgeyAkZW1haWxGb2N1cy0+c2V0RW1haWxBY2Nlc3NDb3VudFZhbHVlKCRlbWFpbElkKTsgfSBpZiAoJHBhdGgpIHsgaWYgKCFlbXB0eSgkZmlsZURldGFpbHMpICYmIGlzX2FycmF5KCRmaWxlRGV0YWlscykpIHsgZm9yZWFjaCAoJGZpbGVEZXRhaWxzIGFzICRmaWxlRGV0YWlsKSB7ICRtb2Rjb21tZW50c1JlY29yZE1vZGVsLT51cGxvYWRBbmRTYXZlRmlsZSgkZW1haWxJZCwgJGZpbGVEZXRhaWxbIlx4NjFcMTY0XHg3NFwxNDFcMTQzXDE1MFwxNTVceDY1XDE1Nlx4NzRcMTYzXHg2OVwxNDQiXSk7IH0gfSB9IGlmICgkZXJyb3IpIHsgJGVtYWlsRm9jdXMtPnRyYXNoKCRtb2R1bGVOYW1lLCAkZW1haWxJZCk7IH0gZWxzZSB7IGlmICgkZ2VuZXJhdGVkTWVzc2FnZUlkICYmICRlbnRpdHlJZCkgeyAkbWFpbGVySW5zdGFuY2UtPnVwZGF0ZU1lc3NhZ2VJZEJ5Q3JtSWQoJGdlbmVyYXRlZE1lc3NhZ2VJZCwgJGVudGl0eUlkKTsgfSB9IH0gfSB9IH0gcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCRlbnRpdHksICRlbnRpdHlDYWNoZSA9IGZhbHNlKSB7IGlmICghJHRoaXMtPmNvbnRlbnRzKSB7IGdsb2JhbCAkYWRiLCAkY3VycmVudF91c2VyOyAkdGFza0NvbnRlbnRzID0gYXJyYXkoKTsgJGVudGl0eUlkID0gJGVudGl0eS0+Z2V0SWQoKTsgJHV0aWxzID0gbmV3IFZUV29ya2Zsb3dVdGlscygpOyAkYWRtaW5Vc2VyID0gJHV0aWxzLT5hZG1pblVzZXIoKTsgaWYgKCEkZW50aXR5Q2FjaGUpIHsgJGVudGl0eUNhY2hlID0gbmV3IFZURW50aXR5Q2FjaGUoJGFkbWluVXNlcik7IH0gJGZyb21Vc2VySWQgPSBVc2Vyczo6Z2V0QWN0aXZlQWRtaW5JZCgpOyAkZW50aXR5T3duZXJJZCA9ICRlbnRpdHktPmdldCgiXHg2MVwxNjNceDczXHg2OVx4NjdceDZlXHg2NVwxNDRcMTM3XHg3NVwxNjNceDY1XHg3Mlx4NWZcMTUxXHg2NCIpOyBpZiAoJGVudGl0eU93bmVySWQpIHsgbGlzdCgkbW9kdWxlSWQsICRmcm9tVXNlcklkKSA9IGV4cGxvZGUoIlwxNzAiLCAkZW50aXR5T3duZXJJZCk7IH0gJG93bmVyRW50aXR5ID0gJGVudGl0eUNhY2hlLT5mb3JJZCgkZW50aXR5T3duZXJJZCk7IGlmICgkb3duZXJFbnRpdHktPmdldE1vZHVsZU5hbWUoKSA9PT0gIlx4NDdcMTYyXHg2ZlwxNjVcMTYwXHg3MyIpIHsgbGlzdCgkbW9kdWxlSWQsICRyZWNvcmRJZCkgPSB2dHdzX2dldElkQ29tcG9uZW50cygkZW50aXR5SWQpOyAkZnJvbVVzZXJJZCA9IFZ0aWdlcl9VdGlsX0hlbHBlcjo6Z2V0Q3JlYXRvcigkcmVjb3JkSWQpOyB9ICR1c2VyT2JqID0gQ1JNRW50aXR5OjpnZXRJbnN0YW5jZSgiXDEyNVx4NzNcMTQ1XHg3Mlx4NzMiKTsgJHVzZXJPYmotPnJldHJpZXZlQ3VycmVudFVzZXJJbmZvRnJvbUZpbGUoJGZyb21Vc2VySWQpOyBpZiAoJHRoaXMtPmZyb21FbWFpbCAmJiAhKCRvd25lckVudGl0eS0+Z2V0TW9kdWxlTmFtZSgpID09PSAiXHg0N1x4NzJceDZmXHg3NVwxNjBcMTYzIiAmJiBzdHJwb3MoJHRoaXMtPmZyb21FbWFpbCwgIlx4NjFceDczXDE2M1wxNTFcMTQ3XHg2ZVwxNDVceDY0XDEzN1wxNjVcMTYzXHg2NVx4NzJcMTM3XDE1MVwxNDRcNDBceDNhXDQwXDUwXDEyNVwxNjNceDY1XDE2MlwxNjNceDI5XHgyMCIpICE9PSBmYWxzZSkpIHsgaWYgKHN0cnBvcygkdGhpcy0+ZnJvbUVtYWlsLCAiXDQ2XDE1NFx4NzRcNzMiKSAmJiBzdHJwb3MoJHRoaXMtPmZyb21FbWFpbCwgIlw0NlwxNDdcMTY0XHgzYiIpKSB7IGxpc3QoJGZyb21OYW1lVGFnLCAkZnJvbUVtYWlsVGFnKSA9IGV4cGxvZGUoIlw0Nlx4NmNceDc0XHgzYiIsICR0aGlzLT5mcm9tRW1haWwpOyBsaXN0KCRmcm9tRW1haWxUYWcsICRyZXN0KSA9IGV4cGxvZGUoIlx4MjZcMTQ3XHg3NFw3MyIsICRmcm9tRW1haWxUYWcpOyB9IGVsc2VpZiAoc3RycG9zKCR0aGlzLT5mcm9tRW1haWwsICJcNzQiKSAmJiBzdHJwb3MoJHRoaXMtPmZyb21FbWFpbCwgIlw3NiIpKSB7IGxpc3QoJGZyb21OYW1lVGFnLCAkZnJvbUVtYWlsVGFnKSA9IGV4cGxvZGUoIlw3NCIsICR0aGlzLT5mcm9tRW1haWwpOyBsaXN0KCRmcm9tRW1haWxUYWcsICRyZXN0KSA9IGV4cGxvZGUoIlx4M2UiLCAkZnJvbUVtYWlsVGFnKTsgfSBlbHNlIHsgaWYgKGZpbHRlcl92YXIoJHRoaXMtPmZyb21FbWFpbCwgRklMVEVSX1ZBTElEQVRFX0VNQUlMKSkgeyAkZnJvbUVtYWlsVGFnID0gJHRoaXMtPmZyb21FbWFpbDsgJGZyb21OYW1lVGFnID0gJHRoaXMtPmZyb21FbWFpbDsgfSBlbHNlIHsgJGZyb21OYW1lVGFnID0gJHRoaXMtPmZyb21FbWFpbDsgaWYgKCR1c2VyT2JqKSB7ICRmcm9tRW1haWxUYWcgPSAkdXNlck9iai0+ZW1haWwxOyB9IGVsc2UgeyAkZnJvbUVtYWlsVGFnID0gJHRoaXMtPmdldERlZmF1bHRGcm9tRW1haWwoJHRoaXMtPmZyb21FbWFpbCk7IH0gfSB9ICRldCA9IG5ldyBWVEVtYWlsUmVjaXBpZW50c1RlbXBsYXRlKCRmcm9tRW1haWxUYWcpOyAkZnJvbUVtYWlsID0gJGV0LT5yZW5kZXIoJGVudGl0eUNhY2hlLCAkZW50aXR5SWQpOyAkbnQgPSBuZXcgVlRFbWFpbFJlY2lwaWVudHNUZW1wbGF0ZSgkZnJvbU5hbWVUYWcpOyAkZnJvbU5hbWUgPSAkbnQtPnJlbmRlcigkZW50aXR5Q2FjaGUsICRlbnRpdHlJZCk7IH0gZWxzZSB7IGlmICgkdXNlck9iaikgeyAkZnJvbUVtYWlsID0gJHVzZXJPYmotPmVtYWlsMTsgJGZyb21OYW1lID0gdHJpbSgkdXNlck9iai0+Zmlyc3RfbmFtZSAuICJceDIwIiAuICR1c2VyT2JqLT5sYXN0X25hbWUpOyB9IGVsc2UgeyAkZnJvbUVtYWlsID0gJHRoaXMtPmdldERlZmF1bHRGcm9tRW1haWwoKTsgJHVzZXJPYmogPSBVc2Vyczo6Z2V0QWN0aXZlQWRtaW5Vc2VyKCk7ICRmcm9tTmFtZSA9IHRyaW0oJHVzZXJPYmotPmZpcnN0X25hbWUgLiAiXHgyMCIgLiAkdXNlck9iai0+bGFzdF9uYW1lKTsgfSB9IGlmICghJGZyb21FbWFpbCkgeyAkdXRpbHMtPnJldmVydFVzZXIoKTsgcmV0dXJuIGZhbHNlOyB9ICR0YXNrQ29udGVudHNbIlx4NjZceDcyXHg2ZlwxNTVcMTA1XHg2ZFx4NjFceDY5XHg2YyJdID0gJGZyb21FbWFpbDsgJHRhc2tDb250ZW50c1siXHg2Nlx4NzJceDZmXDE1NVx4NGVcMTQxXDE1NVwxNDUiXSA9ICRmcm9tTmFtZTsgJGRlZlJlcGx5VG8gPSAkdGhpcy0+Z2V0RGVmYXVsdFJlcGx5VG9FbWFpbCgpOyBpZiAoJHRoaXMtPnJlcGx5VG8gJiYgISgkb3duZXJFbnRpdHktPmdldE1vZHVsZU5hbWUoKSA9PT0gIlx4NDdceDcyXDE1N1wxNjVcMTYwXHg3MyIgJiYgc3RycG9zKCR0aGlzLT5yZXBseVRvLCAiXHg2MVx4NzNcMTYzXDE1MVx4NjdceDZlXHg2NVwxNDRcMTM3XDE2NVx4NzNceDY1XHg3Mlx4NWZcMTUxXHg2NFx4MjBceDNhXHgyMFw1MFx4NTVceDczXHg2NVx4NzJceDczXDUxXDQwIikgIT09IGZhbHNlKSkgeyAkZXQgPSBuZXcgVlRFbWFpbFJlY2lwaWVudHNUZW1wbGF0ZSgkdGhpcy0+cmVwbHlUbyk7ICRyZXBseVRvRW1haWxEZXRhaWxzID0gJGV0LT5yZW5kZXIoJGVudGl0eUNhY2hlLCAkZW50aXR5SWQpOyAkcmVwbHlUb0VtYWlsRGV0YWlscyA9IHRyaW0oJHJlcGx5VG9FbWFpbERldGFpbHMsICJceDJjIik7IGlmIChmaWx0ZXJfdmFyKCRyZXBseVRvRW1haWxEZXRhaWxzLCBGSUxURVJfVkFMSURBVEVfRU1BSUwpKSB7ICRyZXBseVRvRW1haWwgPSAkcmVwbHlUb0VtYWlsRGV0YWlsczsgfSBlbHNlIHsgJHJlcGx5VG9FbWFpbCA9ICRkZWZSZXBseVRvOyB9IH0gZWxzZSB7ICRyZXBseVRvRW1haWwgPSAkZGVmUmVwbHlUbzsgfSAkdGFza0NvbnRlbnRzWyJceDcyXDE0NVwxNjBcMTU0XDE3MVx4NTRceDZmIl0gPSAkcmVwbHlUb0VtYWlsOyBpZiAoJGVudGl0eS0+Z2V0TW9kdWxlTmFtZSgpID09PSAiXHg0NVwxNjZcMTQ1XDE1NlwxNjRceDczIikgeyAkY29udGFjdElkID0gJGVudGl0eS0+Z2V0KCJcMTQzXDE1N1x4NmVceDc0XHg2MVx4NjNceDc0XHg1ZlwxNTFcMTQ0Iik7IGlmICgkY29udGFjdElkKSB7ICRjb250YWN0SWRzID0gJyc7IGxpc3QoJHdzSWQsICRyZWNvcmRJZCkgPSBleHBsb2RlKCJceDc4IiwgJGVudGl0eUlkKTsgJHdlYnNlcnZpY2VPYmplY3QgPSBWdGlnZXJXZWJzZXJ2aWNlT2JqZWN0Ojpmcm9tTmFtZSgkYWRiLCAiXDEwM1x4NmZceDZlXHg3NFx4NjFcMTQzXDE2NFx4NzMiKTsgJHJlc3VsdCA9ICRhZGItPnBxdWVyeSgiXHg1M1wxMDVceDRjXHg0NVx4NDNceDU0XDQwXHg2M1x4NmZceDZlXDE2NFx4NjFcMTQzXDE2NFx4NjlcMTQ0XHgyMFwxMDZceDUyXDExN1wxMTVceDIwXDE2Nlx4NzRceDY5XHg2N1wxNDVceDcyXHg1ZlwxNDNceDZlXHg3NFwxNDFceDYzXDE2NFx4NjlcMTY2XHg2OVx4NzRcMTcxXHg3Mlx4NjVceDZjXHgyMFwxMjdcMTEwXHg0NVx4NTJcMTA1XHgyMFwxNDFcMTQzXHg3NFx4NjlceDc2XDE1MVwxNjRcMTcxXDE1MVx4NjRceDIwXDc1XHgyMFw3NyIsIGFycmF5KCRyZWNvcmRJZCkpOyAkbnVtT2ZSb3dzID0gJGFkYi0+bnVtX3Jvd3MoJHJlc3VsdCk7IGZvciAoJGkgPSAwOyAkaSA8ICRudW1PZlJvd3M7ICRpKyspIHsgJGNvbnRhY3RJZHMgLj0gdnR3c19nZXRJZCgkd2Vic2VydmljZU9iamVjdC0+Z2V0RW50aXR5SWQoKSwgJGFkYi0+cXVlcnlfcmVzdWx0KCRyZXN1bHQsICRpLCAiXDE0M1x4NmZceDZlXDE2NFwxNDFcMTQzXHg3NFwxNTFceDY0IikpIC4gIlw1NCI7IH0gfSAkZW50aXR5LT5zZXQoIlwxNDNceDZmXHg2ZVwxNjRcMTQxXHg2M1x4NzRceDVmXHg2OVx4NjQiLCB0cmltKCRjb250YWN0SWRzLCAiXHgyYyIpKTsgJGVudGl0eUNhY2hlLT5jYWNoZVskZW50aXR5SWRdID0gJGVudGl0eTsgfSAkZXQgPSBuZXcgVlRFbWFpbFJlY2lwaWVudHNUZW1wbGF0ZSgkdGhpcy0+cmVjZXBpZW50KTsgJHRvRW1haWwgPSAkZXQtPnJlbmRlcigkZW50aXR5Q2FjaGUsICRlbnRpdHlJZCk7ICRlY2N0ID0gbmV3IFZURW1haWxSZWNpcGllbnRzVGVtcGxhdGUoJHRoaXMtPmVtYWlsY2MpOyAkY2NFbWFpbCA9ICRlY2N0LT5yZW5kZXIoJGVudGl0eUNhY2hlLCAkZW50aXR5SWQpOyAkZWJjY3QgPSBuZXcgVlRFbWFpbFJlY2lwaWVudHNUZW1wbGF0ZSgkdGhpcy0+ZW1haWxiY2MpOyAkYmNjRW1haWwgPSAkZWJjY3QtPnJlbmRlcigkZW50aXR5Q2FjaGUsICRlbnRpdHlJZCk7IGlmIChzdHJsZW4odHJpbSgkdG9FbWFpbCwgIlx4MjBceDlcMTJceDJjIikpID09IDAgJiYgc3RybGVuKHRyaW0oJGNjRW1haWwsICJceDIwXHg5XHhhXHgyYyIpKSA9PSAwICYmIHN0cmxlbih0cmltKCRiY2NFbWFpbCwgIlx4MjBceDlceGFceDJjIikpID09IDApIHsgJHV0aWxzLT5yZXZlcnRVc2VyKCk7IHJldHVybiBmYWxzZTsgfSAkdGFza0NvbnRlbnRzWyJceDc0XDE1N1wxMDVceDZkXDE0MVwxNTFcMTU0Il0gPSAkdG9FbWFpbDsgJHRhc2tDb250ZW50c1siXDE0M1x4NjNcMTA1XDE1NVwxNDFceDY5XHg2YyJdID0gJGNjRW1haWw7ICR0YXNrQ29udGVudHNbIlwxNDJceDYzXHg2M1x4NDVceDZkXHg2MVwxNTFceDZjIl0gPSAkYmNjRW1haWw7ICR0aGlzLT5wYXJzZUVtYWlsVGVtcGxhdGUoJGVudGl0eSk7ICRzdCA9IG5ldyBWVFNpbXBsZVRlbXBsYXRlKCR0aGlzLT5zdWJqZWN0KTsgJHRhc2tDb250ZW50c1siXDE2M1wxNjVceDYyXDE1Mlx4NjVceDYzXHg3NCJdID0gJHN0LT5yZW5kZXIoJGVudGl0eUNhY2hlLCAkZW50aXR5SWQpOyAkY3QgPSBuZXcgVlRTaW1wbGVUZW1wbGF0ZSgkdGhpcy0+Y29udGVudCk7ICR0YXNrQ29udGVudHNbIlx4NjNceDZmXHg2ZVwxNjRcMTQ1XDE1NlwxNjQiXSA9ICRjdC0+cmVuZGVyKCRlbnRpdHlDYWNoZSwgJGVudGl0eUlkKTsgaWYgKGVtcHR5KCR0aGlzLT5zaWduYXR1cmUpKSB7ICR0aGlzLT5zaWduYXR1cmUgPSAiXDEzMVwxNDVceDczIjsgfSAkY29udGVudCA9ICR0YXNrQ29udGVudHNbIlwxNDNcMTU3XHg2ZVwxNjRcMTQ1XHg2ZVx4NzQiXTsgaWYgKCR0aGlzLT5zaWduYXR1cmUgPT0gIlwxMzFceDY1XDE2MyIpIHsgJHVzZXJPYmogPSBDUk1FbnRpdHk6OmdldEluc3RhbmNlKCJceDU1XDE2M1wxNDVceDcyXDE2MyIpOyAkdXNlck9iai0+cmV0cmlldmVDdXJyZW50VXNlckluZm9Gcm9tRmlsZSgkZnJvbVVzZXJJZCk7ICRjb250ZW50IC49ICJceDNjXHg2Mlx4NzJcNzZceDNjXHg2Mlx4NzJceDNlIiAuIGRlY29kZV9odG1sKCR1c2VyT2JqLT5zaWduYXR1cmUpOyB9ICR0YXNrQ29udGVudHNbIlwxNDNcMTU3XHg2ZVwxNjRceDY1XHg2ZVx4NzQiXSA9ICRjb250ZW50OyAkdGhpcy0+Y29udGVudHMgPSAkdGFza0NvbnRlbnRzOyAkdXRpbHMtPnJldmVydFVzZXIoKTsgfSBpZiAoaXNfYXJyYXkoJHRoaXMtPmNvbnRlbnRzKSkgeyAkdGhpcy0+Y29udGVudHMgPSBaZW5kX0pzb246OmVuY29kZSgkdGhpcy0+Y29udGVudHMpOyB9IHJldHVybiAkdGhpcy0+Y29udGVudHM7IH0gcHVibGljIGZ1bmN0aW9uIHBhcnNlRW1haWxUZW1wbGF0ZSgkZW50aXR5KSB7ICRtb2R1bGVOYW1lID0gJGVudGl0eS0+Z2V0TW9kdWxlTmFtZSgpOyBsaXN0KCR3c0lkLCAkcmVjb3JkSWQpID0gZXhwbG9kZSgiXHg3OCIsICRlbnRpdHktPmdldElkKCkpOyAkbWVyZ2VkSHRtbCA9IGdldE1lcmdlZERlc2NyaXB0aW9uKCR0aGlzLT5jb250ZW50LCAkcmVjb3JkSWQsICRtb2R1bGVOYW1lKTsgJHRoaXMtPmNvbnRlbnQgPSAkbWVyZ2VkSHRtbDsgfSBmdW5jdGlvbiBnZXREZWZhdWx0UmVwbHlUb0VtYWlsKCkgeyBnbG9iYWwgJEhFTFBERVNLX1NVUFBPUlRfRU1BSUxfUkVQTFlfSUQ7ICRkZWZhdWx0UmVwbHlUb0VtYWlsID0gbnVsbDsgaWYgKCFlbXB0eSgkSEVMUERFU0tfU1VQUE9SVF9FTUFJTF9SRVBMWV9JRCkgJiYgJEhFTFBERVNLX1NVUFBPUlRfRU1BSUxfUkVQTFlfSUQgIT09ICJcMTYzXHg3NVx4NzBcMTYwXDE1N1x4NzJcMTY0XDEwMFx4NjNcMTU3XHg2ZFx4NzBcMTQxXHg2ZVwxNzFceDJkXDE1NlwxNDFceDZkXHg2NVw1Nlx4NjNceDZmXHg2ZCIpIHsgJGRlZmF1bHRSZXBseVRvRW1haWwgPSAkSEVMUERFU0tfU1VQUE9SVF9FTUFJTF9SRVBMWV9JRDsgfSBlbHNlIHsgJGNhY2hlZE91dGdvaW5nRnJvbUVtYWlsID0gVlRDYWNoZVV0aWxzOjpnZXRPdXRnb2luZ01haWxGcm9tRW1haWxBZGRyZXNzKCk7IGlmIChlbXB0eSgkY2FjaGVkT3V0Z29pbmdGcm9tRW1haWwpKSB7IGdsb2JhbCAkYWRiOyAkc3FsID0gIlx4NTNcMTA1XDExNFx4NDVceDQzXDEyNFw0MFx4NjZceDcyXHg2ZlwxNTVcMTM3XHg2NVx4NmRcMTQxXDE1MVwxNTRceDVmXDE0NlwxNTFceDY1XHg2Y1x4NjRcNDBceDQ2XHg1MlwxMTdcMTE1XDQwXHg3Nlx4NzRceDY5XHg2N1wxNDVceDcyXHg1Zlx4NzNcMTcxXDE2M1wxNjRceDY1XDE1NVwxNjNcNDBceDU3XDExMFx4NDVcMTIyXHg0NVw0MFwxNjNcMTQ1XDE2Mlx4NzZcMTQ1XHg3Mlx4NWZcMTY0XHg3OVx4NzBcMTQ1XHgzZFw3NyI7ICRyZXN1bHQgPSAkYWRiLT5wcXVlcnkoJHNxbCwgYXJyYXkoIlwxNDVceDZkXDE0MVwxNTFcMTU0IikpOyAkb3V0Z29pbmdGcm9tRWFtaWwgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJHJlc3VsdCwgMCwgIlx4NjZcMTYyXHg2ZlwxNTVceDVmXDE0NVx4NmRceDYxXDE1MVwxNTRceDVmXDE0Nlx4NjlcMTQ1XDE1NFx4NjQiKTsgaWYgKGVtcHR5KCRvdXRnb2luZ0Zyb21FYW1pbCkpIHsgJGFjdGl2ZUFkbWluID0gVXNlcnM6OmdldEFjdGl2ZUFkbWluVXNlcigpOyAkZGVmYXVsdFJlcGx5VG9FbWFpbCA9ICRhY3RpdmVBZG1pbi0+ZW1haWwxOyB9IGVsc2UgeyAkZGVmYXVsdFJlcGx5VG9FbWFpbCA9ICRvdXRnb2luZ0Zyb21FYW1pbDsgVlRDYWNoZVV0aWxzOjpzZXRPdXRnb2luZ01haWxGcm9tRW1haWxBZGRyZXNzKCRvdXRnb2luZ0Zyb21FYW1pbCk7IH0gfSBlbHNlIHsgJGRlZmF1bHRSZXBseVRvRW1haWwgPSAkY2FjaGVkT3V0Z29pbmdGcm9tRW1haWw7IH0gfSByZXR1cm4gJGRlZmF1bHRSZXBseVRvRW1haWw7IH0gZnVuY3Rpb24gZ2V0RGVmYXVsdEZyb21FbWFpbCgkZnJvbU5hbWUgPSBudWxsKSB7ICRkZWZhdWx0RnJvbUVtYWlsID0gbnVsbDsgJGNhY2hlZE91dGdvaW5nRnJvbUVtYWlsID0gVlRDYWNoZVV0aWxzOjpnZXRPdXRnb2luZ01haWxGcm9tRW1haWxBZGRyZXNzKCk7IGlmIChlbXB0eSgkY2FjaGVkT3V0Z29pbmdGcm9tRW1haWwpKSB7IGdsb2JhbCAkYWRiOyAkc3FsID0gIlx4NTNceDQ1XHg0Y1x4NDVcMTAzXDEyNFw0MFx4NjZcMTYyXHg2Zlx4NmRceDVmXDE0NVwxNTVcMTQxXDE1MVwxNTRceDVmXDE0NlwxNTFceDY1XDE1NFx4NjRceDIwXDEwNlx4NTJcMTE3XDExNVw0MFx4NzZcMTY0XDE1MVwxNDdcMTQ1XHg3MlwxMzdceDczXHg3OVx4NzNceDc0XHg2NVx4NmRcMTYzXHgyMFwxMjdceDQ4XHg0NVwxMjJceDQ1XHgyMFx4NzNcMTQ1XDE2Mlx4NzZcMTQ1XHg3MlwxMzdceDc0XHg3OVwxNjBceDY1XHgzZFw3NyI7ICRyZXN1bHQgPSAkYWRiLT5wcXVlcnkoJHNxbCwgYXJyYXkoIlx4NjVcMTU1XHg2MVwxNTFceDZjIikpOyAkb3V0Z29pbmdGcm9tRWFtaWwgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJHJlc3VsdCwgMCwgIlwxNDZcMTYyXHg2ZlwxNTVcMTM3XDE0NVwxNTVcMTQxXDE1MVx4NmNceDVmXDE0NlwxNTFceDY1XHg2Y1x4NjQiKTsgaWYgKGVtcHR5KCRvdXRnb2luZ0Zyb21FYW1pbCkpIHsgaWYgKCRmcm9tTmFtZSkgeyAkdXNlckVtYWlsID0gZ2V0VXNlckVtYWlsSWQoIlwxNjVcMTYzXDE0NVx4NzJceDVmXHg2ZVwxNDFcMTU1XHg2NSIsICRmcm9tTmFtZSk7ICRkZWZhdWx0RnJvbUVtYWlsID0gJHVzZXJFbWFpbDsgfSBpZiAoISRkZWZhdWx0RnJvbUVtYWlsKSB7ICRhY3RpdmVBZG1pblVzZXIgPSBVc2Vyczo6Z2V0QWN0aXZlQWRtaW5Vc2VyKCk7ICRkZWZhdWx0RnJvbUVtYWlsID0gJGFjdGl2ZUFkbWluVXNlci0+ZW1haWwxOyB9IH0gZWxzZSB7ICRkZWZhdWx0RnJvbUVtYWlsID0gJG91dGdvaW5nRnJvbUVhbWlsOyBWVENhY2hlVXRpbHM6OnNldE91dGdvaW5nTWFpbEZyb21FbWFpbEFkZHJlc3MoJG91dGdvaW5nRnJvbUVhbWlsKTsgfSB9IGVsc2UgeyAkZGVmYXVsdEZyb21FbWFpbCA9ICRjYWNoZWRPdXRnb2luZ0Zyb21FbWFpbDsgfSByZXR1cm4gJGRlZmF1bHRGcm9tRW1haWw7IH0gZnVuY3Rpb24gYWRkQ0NBZGRyZXNzKCRtYWlsZXJPYmosICRhZGRyZXNzLCAkaXNCQ0MgPSBmYWxzZSkgeyAkbWV0aG9kID0gIWVtcHR5KCRpc0JDQykgPyAiXHg0MVx4NjRcMTQ0XDEwMlx4NDNceDQzIiA6ICJcMTAxXDE0NFx4NjRceDQzXHg0MyI7IGlmICghZW1wdHkoJGFkZHJlc3MpKSB7ICRhZGRyZXNzZXMgPSBleHBsb2RlKCJceDJjIiwgdHJpbSgkYWRkcmVzcywgIlw1NCIpKTsgZm9yZWFjaCAoJGFkZHJlc3NlcyBhcyAkY2MpIHsgJG5hbWUgPSBwcmVnX3JlcGxhY2UoIlw1N1x4MjhceDViXDEzNlwxMDBceDVkXHgyYlw1MVx4NDBcNTBceDJlXHgyYVx4MjlcNTciLCAiXDQ0XDYxIiwgJGNjKTsgaWYgKHN0cmlwb3MoJGNjLCAiXDc0IikpIHsgJG5hbWVBZGRyUGFpciA9IGV4cGxvZGUoIlx4M2MiLCAkY2MpOyAkbmFtZSA9ICRuYW1lQWRkclBhaXJbMF07ICRjYyA9IHRyaW0oJG5hbWVBZGRyUGFpclsxXSwgIlx4M2UiKTsgfSBpZiAoIWVtcHR5KCRjYykpIHsgJG1haWxlck9iai0+eyRtZXRob2R9KCRjYywgJG5hbWUpOyB9IH0gfSB9IH0gZ290byBkVUk3SzsgcXNoUDA6IHJlcXVpcmVfb25jZSAiXHg2ZFx4NmZceDY0XDE2NVx4NmNceDY1XDE2M1w1N1x4NjNcMTU3XHg2ZFwxMzdceDc2XDE2NFwxNTFcMTQ3XHg2NVx4NzJcMTM3XHg3N1x4NmZcMTYyXHg2YlwxNDZceDZjXDE1N1wxNjdceDJmXHg1Nlx4NTRceDU3XHg2ZlwxNjJceDZiXDE0Nlx4NmNcMTU3XDE2N1x4NTVceDc0XHg2OVx4NmNcMTYzXDU2XHg3MFx4NjhceDcwIjsgZ290byBZZG9ZRzsgWWRvWUc6IHJlcXVpcmVfb25jZSAiXDE1NVx4NmZcMTQ0XDE2NVx4NmNcMTQ1XHg3M1x4MmZceDYzXHg2Zlx4NmRceDVmXDE2NlwxNjRcMTUxXHg2N1wxNDVcMTYyXDEzN1wxNjdceDZmXHg3Mlx4NmJceDY2XHg2Y1wxNTdceDc3XHgyZlwxMjZceDU0XHg0NVx4NmRceDYxXDE1MVx4NmNcMTIyXHg2NVwxNDNceDY5XHg3MFwxNTFcMTQ1XHg2ZVwxNjRcMTYzXDEyNFx4NjVceDZkXHg3MFx4NmNcMTQxXHg3NFwxNDVcNTZceDY5XHg2ZVwxNDMiOyBnb3RvIFA5azF1OyBkVUk3Szog')); ?>