- 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.
1 line
20 KiB
PHP
1 line
20 KiB
PHP
<?php eval(base64_decode('CiBjbGFzcyBDVE11bHRpcGxlU01UUF9SZWNvcmRfTW9kZWwgZXh0ZW5kcyBFbWFpbHNfUmVjb3JkX01vZGVsIHsgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRJbnN0YW5jZUJ5SWQoJHJlY29yZElkLCAkbW9kdWxlID0gbnVsbCkgeyBpZiAoaXNfb2JqZWN0KCRtb2R1bGUpICYmIGlzX2EoJG1vZHVsZSwgIlx4NTZcMTY0XHg2OVx4NjdceDY1XDE2Mlx4NWZcMTE1XDE1N1wxNDRceDc1XHg2Y1wxNDVceDVmXDExNVwxNTdceDY0XDE0NVx4NmMiKSkgeyAkbW9kdWxlTmFtZSA9ICRtb2R1bGUtPmdldCgiXHg2ZVwxNDFceDZkXHg2NSIpOyB9IGVsc2VpZiAoaXNfc3RyaW5nKCRtb2R1bGUpKSB7ICRtb2R1bGUgPSBWdGlnZXJfTW9kdWxlX01vZGVsOjpnZXRJbnN0YW5jZSgkbW9kdWxlKTsgJG1vZHVsZU5hbWUgPSAkbW9kdWxlLT5nZXQoIlx4NmVcMTQxXDE1NVwxNDUiKTsgfSBlbHNlaWYgKGVtcHR5KCRtb2R1bGUpKSB7ICRtb2R1bGVOYW1lID0gZ2V0U2FsZXNFbnRpdHlUeXBlKCRyZWNvcmRJZCk7ICRtb2R1bGUgPSBWdGlnZXJfTW9kdWxlX01vZGVsOjpnZXRJbnN0YW5jZSgkbW9kdWxlTmFtZSk7IH0gJGZvY3VzID0gQ1JNRW50aXR5OjpnZXRJbnN0YW5jZSgiXHg0NVx4NmRceDYxXDE1MVwxNTRceDczIik7ICRmb2N1cy0+aWQgPSAkcmVjb3JkSWQ7ICRmb2N1cy0+cmV0cmlldmVfZW50aXR5X2luZm8oJHJlY29yZElkLCAkbW9kdWxlTmFtZSk7ICRtb2RlbENsYXNzTmFtZSA9IFZ0aWdlcl9Mb2FkZXI6OmdldENvbXBvbmVudENsYXNzTmFtZSgiXDExNVwxNTdcMTQ0XDE0NVwxNTQiLCAiXDEyMlx4NjVcMTQzXDE1N1x4NzJceDY0IiwgJG1vZHVsZU5hbWUpOyAkaW5zdGFuY2UgPSBuZXcgJG1vZGVsQ2xhc3NOYW1lKCk7IHJldHVybiAkaW5zdGFuY2UtPnNldERhdGEoJGZvY3VzLT5jb2x1bW5fZmllbGRzKS0+c2V0KCJcMTUxXDE0NCIsICRyZWNvcmRJZCktPnNldE1vZHVsZUZyb21JbnN0YW5jZSgkbW9kdWxlKS0+c2V0RW50aXR5KCRmb2N1cyk7IH0gcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRDbGVhbkluc3RhbmNlKCRtb2R1bGVOYW1lKSB7ICRmb2N1cyA9IENSTUVudGl0eTo6Z2V0SW5zdGFuY2UoIlx4NDVcMTU1XHg2MVx4NjlceDZjXHg3MyIpOyAkbW9kZWxDbGFzc05hbWUgPSBWdGlnZXJfTG9hZGVyOjpnZXRDb21wb25lbnRDbGFzc05hbWUoIlx4NGRcMTU3XHg2NFwxNDVceDZjIiwgIlx4NTJceDY1XHg2M1x4NmZceDcyXHg2NCIsICRtb2R1bGVOYW1lKTsgJGluc3RhbmNlID0gbmV3ICRtb2RlbENsYXNzTmFtZSgpOyByZXR1cm4gJGluc3RhbmNlLT5zZXREYXRhKCRmb2N1cy0+Y29sdW1uX2ZpZWxkcyktPnNldE1vZHVsZSgkbW9kdWxlTmFtZSktPnNldEVudGl0eSgkZm9jdXMpOyB9IHB1YmxpYyBmdW5jdGlvbiBzZW5kKCkgeyAkY3VycmVudFVzZXJNb2RlbCA9IFVzZXJzX1JlY29yZF9Nb2RlbDo6Z2V0Q3VycmVudFVzZXJNb2RlbCgpOyAkcm9vdERpcmVjdG9yeSA9IHZnbG9iYWwoIlx4NzJcMTU3XDE1N1wxNjRceDVmXHg2NFwxNTFcMTYyXHg2NVx4NjNcMTY0XDE1N1wxNjJcMTcxIik7ICRtYWlsZXIgPSBDVE11bHRpcGxlU01UUF9NYWlsZXJfTW9kZWw6OmdldEluc3RhbmNlKCk7ICRtYWlsZXItPklzSFRNTCh0cnVlKTsgJGZyb21FbWFpbCA9ICR0aGlzLT5nZXRNdWx0aXBsZVNNVE1Gcm9tRW1haWxBZGRyZXNzKCk7IGlmIChlbXB0eSgkZnJvbUVtYWlsKSkgeyAkZnJvbUVtYWlsID0gJHRoaXMtPmdldEZyb21FbWFpbEFkZHJlc3MoKTsgfSAkcmVwbHlUbyA9ICRjdXJyZW50VXNlck1vZGVsLT5nZXQoIlx4NjVceDZkXDE0MVwxNTFceDZjXHgzMSIpOyAkdXNlck5hbWUgPSAkY3VycmVudFVzZXJNb2RlbC0+Z2V0TmFtZSgpOyAkdG9FbWFpbEluZm8gPSBhcnJheV9maWx0ZXIoJHRoaXMtPmdldCgiXDE2NFwxNTdceDY1XHg2ZFwxNDFcMTUxXHg2Y1x4NjlceDZlXHg2NlwxNTciKSk7ICRlbWFpbHNJbmZvID0gYXJyYXkoKTsgZm9yZWFjaCAoJHRvRW1haWxJbmZvIGFzICRpZCA9PiAkZW1haWxzKSB7IGZvcmVhY2ggKCRlbWFpbHMgYXMgJGtleSA9PiAkdmFsdWUpIHsgYXJyYXlfcHVzaCgkZW1haWxzSW5mbywgJHZhbHVlKTsgfSB9ICR0b0VtYWlsSW5mbyA9IGFycmF5X21hcCgiXDE2NVwxNTZcMTYzXDE0NVwxNjJcMTUxXDE0MVx4NmNcMTUxXDE3Mlx4NjUiLCBhcnJheV91bmlxdWUoYXJyYXlfbWFwKCJceDczXHg2NVwxNjJceDY5XHg2MVx4NmNceDY5XHg3YVwxNDUiLCBhcnJheV9tYXAoIlx4NjFcMTYyXHg3Mlx4NjFceDc5XDEzN1wxNjVceDZlXDE1MVx4NzFcMTY1XDE0NSIsICR0b0VtYWlsSW5mbykpKSk7ICR0b0ZpZWxkRGF0YSA9IGFycmF5X2RpZmYoZXhwbG9kZSgiXDU0IiwgJHRoaXMtPmdldCgiXDE2M1wxNDFcMTY2XHg2NVwxNDRcMTM3XHg3NFx4NmZcMTUxXHg2NCIpKSwgJGVtYWlsc0luZm8pOyAkdG9FbWFpbHNEYXRhID0gYXJyYXkoKTsgJGkgPSAxOyBmb3JlYWNoICgkdG9GaWVsZERhdGEgYXMgJHZhbHVlKSB7ICR0b0VtYWlsSW5mb1siXDE2NFwxNTciIC4gJGkrK10gPSBhcnJheSgkdmFsdWUpOyB9ICRhdHRhY2htZW50cyA9ICR0aGlzLT5nZXRBdHRhY2htZW50RGV0YWlscygpOyAkc3RhdHVzID0gZmFsc2U7ICRtZXJnZWREZXNjcmlwdGlvbiA9IGdldE1lcmdlZERlc2NyaXB0aW9uKCR0aGlzLT5nZXQoIlx4NjRcMTQ1XDE2M1x4NjNcMTYyXDE1MVx4NzBceDc0XDE1MVx4NmZcMTU2IiksICRjdXJyZW50VXNlck1vZGVsLT5nZXRJZCgpLCAiXDEyNVwxNjNcMTQ1XDE2MlwxNjMiKTsgJG1lcmdlZFN1YmplY3QgPSBnZXRNZXJnZWREZXNjcmlwdGlvbigkdGhpcy0+Z2V0KCJceDczXDE2NVx4NjJceDZhXHg2NVwxNDNceDc0IiksICRjdXJyZW50VXNlck1vZGVsLT5nZXRJZCgpLCAiXHg1NVwxNjNcMTQ1XDE2MlwxNjMiKTsgJGRiID0gUGVhckRhdGFiYXNlOjpnZXRJbnN0YW5jZSgpOyAkY3VycmVudFVzZXJNb2RlbCA9IFVzZXJzX1JlY29yZF9Nb2RlbDo6Z2V0Q3VycmVudFVzZXJNb2RlbCgpOyAkdGFibGVOYW1lID0gIlx4NjNcMTY0XDEzN1wxNTVcMTY1XHg2Y1wxNjRcMTUxXHg3MFwxNTRceDY1XDEzN1x4NzNceDZkXDE2NFx4NzAiOyAkZmllbGROYW1lID0gYXJyYXkoIlx4MmEiKTsgJHdoZXJlID0gYXJyYXkoIlwxNjVcMTYzXDE0NVwxNjJcMTUxXDE0NCIgPT4gJGN1cnJlbnRVc2VyTW9kZWwtPmdldCgiXHg2OVwxNDQiKSk7ICRnZXRVc2VySW5mbyA9IFNldHRpbmdzX0NUTXVsdGlwbGVTTVRQX1JlY29yZF9Nb2RlbDo6Z2V0U2VsZWN0ZWRNdWx0aXBsZVNNVFBEYXRhKCR0YWJsZU5hbWUsICRmaWVsZE5hbWUsICR3aGVyZSwgJG9yZGVyRmllbGRzID0gTlVMTCwgJHNvcnRPcmRlciA9IE5VTEwpOyAkc2VydmVySG9zdCA9ICRkYi0+cXVlcnlfcmVzdWx0KCRnZXRVc2VySW5mbywgMCwgIlx4NzNceDY1XHg3MlwxNjZceDY1XHg3MiIpOyAkc2VydmVyVXNlcm5hbWUgPSAkZGItPnF1ZXJ5X3Jlc3VsdCgkZ2V0VXNlckluZm8sIDAsICJcMTYzXHg2NVx4NzJcMTY2XDE0NVx4NzJceDVmXHg3NVwxNjNcMTQ1XHg3MlwxNTZcMTQxXHg2ZFx4NjUiKTsgJHNlcnZlclBhc3N3b3JkID0gJGRiLT5xdWVyeV9yZXN1bHQoJGdldFVzZXJJbmZvLCAwLCAiXDE2M1x4NjVcMTYyXDE2NlwxNDVcMTYyXDEzN1x4NzBcMTQxXHg3M1x4NzNceDc3XDE1N1x4NzJceDY0Iik7IGlmICgkc2VydmVySG9zdCA9PSAnJyAmJiAkc2VydmVyVXNlcm5hbWUgPT0gJycgJiYgJHNlcnZlclBhc3N3b3JkID09ICcnKSB7ICR0YWJsZU5hbWUgPSAiXDE0M1x4NzRcMTM3XHg2ZFwxNjVceDZjXDE2NFwxNTFceDcwXHg2Y1wxNDVcMTM3XHg3M1x4NmRceDc0XHg3MCI7ICRmaWVsZE5hbWUgPSBhcnJheSgiXDUyIik7ICR3aGVyZSA9IGFycmF5KCJceDc1XDE2M1wxNDVceDcyXDE1MVwxNDQiID0+IDEpOyAkZ2V0VXNlckluZm8gPSBTZXR0aW5nc19DVE11bHRpcGxlU01UUF9SZWNvcmRfTW9kZWw6OmdldFNlbGVjdGVkTXVsdGlwbGVTTVRQRGF0YSgkdGFibGVOYW1lLCAkZmllbGROYW1lLCAkd2hlcmUsICRvcmRlckZpZWxkcyA9IE5VTEwsICRzb3J0T3JkZXIgPSBOVUxMKTsgJHNlcnZlckhvc3QgPSAkZGItPnF1ZXJ5X3Jlc3VsdCgkZ2V0VXNlckluZm8sIDAsICJceDczXHg2NVwxNjJcMTY2XHg2NVwxNjIiKTsgJHNlcnZlclVzZXJuYW1lID0gJGRiLT5xdWVyeV9yZXN1bHQoJGdldFVzZXJJbmZvLCAwLCAiXHg3M1wxNDVcMTYyXHg3NlwxNDVcMTYyXDEzN1wxNjVceDczXDE0NVwxNjJceDZlXHg2MVwxNTVceDY1Iik7ICRzZXJ2ZXJQYXNzd29yZCA9ICRkYi0+cXVlcnlfcmVzdWx0KCRnZXRVc2VySW5mbywgMCwgIlx4NzNceDY1XHg3MlwxNjZcMTQ1XHg3Mlx4NWZceDcwXHg2MVx4NzNcMTYzXDE2N1wxNTdcMTYyXHg2NCIpOyBpZiAoJHNlcnZlckhvc3QgPT0gJycgJiYgJHNlcnZlclVzZXJuYW1lID09ICcnICYmICRzZXJ2ZXJQYXNzd29yZCA9PSAnJykgeyAkdGFibGVOYW1lID0gIlx4NzZceDc0XHg2OVx4NjdceDY1XDE2Mlx4NWZcMTYzXHg3OVx4NzNcMTY0XHg2NVwxNTVcMTYzIjsgJGZpZWxkTmFtZSA9IGFycmF5KCJceDJhIik7ICR3aGVyZSA9IGFycmF5KCJceDczXHg2NVwxNjJcMTY2XDE0NVx4NzJcMTM3XHg3NFx4NzlceDcwXHg2NSIgPT4gIlx4MjdceDY1XDE1NVx4NjFceDY5XHg2Y1w0NyIpOyAkZ2V0VXNlckluZm8gPSBTZXR0aW5nc19DVE11bHRpcGxlU01UUF9SZWNvcmRfTW9kZWw6OmdldFNlbGVjdGVkTXVsdGlwbGVTTVRQRGF0YSgkdGFibGVOYW1lLCAkZmllbGROYW1lLCAkd2hlcmUsICRvcmRlckZpZWxkcyA9IE5VTEwsICRzb3J0T3JkZXIgPSBOVUxMKTsgJHNlcnZlckhvc3QgPSAkZGItPnF1ZXJ5X3Jlc3VsdCgkZ2V0VXNlckluZm8sIDAsICJceDczXDE0NVx4NzJcMTY2XHg2NVx4NzIiKTsgJHNlcnZlclVzZXJuYW1lID0gJGRiLT5xdWVyeV9yZXN1bHQoJGdldFVzZXJJbmZvLCAwLCAiXDE2M1x4NjVceDcyXHg3NlwxNDVceDcyXDEzN1x4NzVceDczXHg2NVx4NzJcMTU2XDE0MVwxNTVceDY1Iik7ICRzZXJ2ZXJwYXNzd29yZCA9ICRkYi0+cXVlcnlfcmVzdWx0KCRnZXRVc2VySW5mbywgMCwgIlx4NzNceDY1XDE2MlwxNjZcMTQ1XDE2Mlx4NWZcMTYwXHg2MVwxNjNceDczXDE2N1x4NmZcMTYyXDE0NCIpOyAkc2VydmVyUGFzc3dvcmQgPSBWdGlnZXJfRnVuY3Rpb25zOjpmcm9tUHJvdGVjdGVkVGV4dCgkc2VydmVycGFzc3dvcmQpOyB9IH0gZm9yZWFjaCAoJHRvRW1haWxJbmZvIGFzICRpZCA9PiAkZW1haWxzKSB7ICRtYWlsZXItPnJlaW5pdGlhbGl6ZSgpOyAkbWFpbGVyLT5Db25maWdTZW5kZXJJbmZvKCRmcm9tRW1haWwsICR1c2VyTmFtZSwgJHJlcGx5VG8pOyAkb2xkX21vZF9zdHJpbmdzID0gdmdsb2JhbCgiXHg2ZFx4NmZcMTQ0XDEzN1wxNjNcMTY0XHg3Mlx4NjlceDZlXDE0N1wxNjMiKTsgJGRlc2NyaXB0aW9uID0gJHRoaXMtPmdldCgiXDE0NFwxNDVcMTYzXDE0M1wxNjJcMTUxXHg3MFwxNjRceDY5XDE1N1x4NmUiKTsgJHN1YmplY3QgPSAkdGhpcy0+Z2V0KCJcMTYzXDE2NVx4NjJceDZhXHg2NVwxNDNceDc0Iik7ICRwYXJlbnRNb2R1bGUgPSAkdGhpcy0+Z2V0RW50aXR5VHlwZSgkaWQpOyBpZiAoJHBhcmVudE1vZHVsZSkgeyAkY3VycmVudExhbmd1YWdlID0gVnRpZ2VyX0xhbmd1YWdlX0hhbmRsZXI6OmdldExhbmd1YWdlKCk7ICRtb2R1bGVMYW5ndWFnZVN0cmluZ3MgPSBWdGlnZXJfTGFuZ3VhZ2VfSGFuZGxlcjo6Z2V0TW9kdWxlU3RyaW5nc0Zyb21GaWxlKCRjdXJyZW50TGFuZ3VhZ2UsICRwYXJlbnRNb2R1bGUpOyB2Z2xvYmFsKCJcMTU1XDE1N1x4NjRceDVmXHg3M1wxNjRceDcyXDE1MVwxNTZceDY3XHg3MyIsICRtb2R1bGVMYW5ndWFnZVN0cmluZ3NbIlwxNTRcMTQxXDE1NlwxNDdcMTY1XDE0MVx4NjdcMTQ1XDEyM1wxNjRcMTYyXHg2OVx4NmVceDY3XHg3MyJdKTsgaWYgKCRwYXJlbnRNb2R1bGUgIT0gIlx4NTVceDczXHg2NVwxNjJceDczIikgeyAkZGVzY3JpcHRpb24gPSBnZXRNZXJnZWREZXNjcmlwdGlvbigkbWVyZ2VkRGVzY3JpcHRpb24sICRpZCwgJHBhcmVudE1vZHVsZSk7ICRzdWJqZWN0ID0gZ2V0TWVyZ2VkRGVzY3JpcHRpb24oJG1lcmdlZFN1YmplY3QsICRpZCwgJHBhcmVudE1vZHVsZSk7IH0gZWxzZSB7ICRkZXNjcmlwdGlvbiA9IGdldE1lcmdlZERlc2NyaXB0aW9uKCRkZXNjcmlwdGlvbiwgJGlkLCAiXDEyNVx4NzNceDY1XHg3Mlx4NzMiKTsgJHN1YmplY3QgPSBnZXRNZXJnZWREZXNjcmlwdGlvbigkbWVyZ2VkU3ViamVjdCwgJGlkLCAiXHg1NVx4NzNceDY1XHg3MlwxNjMiKTsgdmdsb2JhbCgiXHg2ZFwxNTdceDY0XDEzN1x4NzNceDc0XHg3MlwxNTFceDZlXDE0N1x4NzMiLCAkb2xkX21vZF9zdHJpbmdzKTsgfSB9IGlmIChzdHJwb3MoJGRlc2NyaXB0aW9uLCAiXDQ0XDE1NFx4NmZceDY3XDE1N1w0NCIpKSB7ICRkZXNjcmlwdGlvbiA9IHN0cl9yZXBsYWNlKCJceDI0XDE1NFwxNTdceDY3XDE1N1x4MjQiLCAiXHgzY1wxNTFcMTU1XHg2N1w0MFwxNjNceDcyXDE0M1x4M2RcNDdcMTQzXDE1MVwxNDRceDNhXDE1NFwxNTdceDY3XHg2Zlw0N1w0MFx4MmZcNzYiLCAkZGVzY3JpcHRpb24pOyAkbG9nbyA9IHRydWU7IH0gaWYgKHZ0bGliX2lzTW9kdWxlQWN0aXZlKCJcMTA1XHg2ZFx4NjFceDY5XDE1NFx4NTRceDcyXHg2MVx4NjNcMTUzXHg2OVx4NmVcMTQ3IikpIHsgJGVtYWlsaWQgPSAkdGhpcy0+Z2V0SWQoKTsgaWYgKCRlbWFpbGlkICE9ICcnICYmICRpZCAhPSAnJykgeyAkZGIgPSBQZWFyRGF0YWJhc2U6OmdldEluc3RhbmNlKCk7ICRkYi0+cHF1ZXJ5KCJcMTExXHg0ZVx4NTNcMTA1XDEyMlwxMjRcNDBcMTExXDExNlx4NTRcMTE3XDQwXHg3Nlx4NzRceDY5XHg2N1wxNDVceDcyXDEzN1wxNDVceDZkXHg2MVwxNTFcMTU0XHg3MFx4NjFceDcyXHg2NVwxNTZcMTY0XDE2Mlx4NjVceDZjXDUwXHg2NVwxNTVceDYxXDE1MVx4NmNceDY5XDE0NFw1NFx4MjBcMTYwXHg2MVx4NzJceDY1XHg2ZVx4NzRcMTUxXHg2NFx4MjlcNDBceDU2XHg0MVwxMTRcMTI1XHg0NVwxMjNcNTBcNzdceDJjXDQwXHgzZlx4MjkiLCBhcnJheSgkZW1haWxpZCwgJGlkKSk7IH0gfSBmb3JlYWNoICgkZW1haWxzIGFzICRlbWFpbCkgeyBpZiAodnRsaWJfaXNNb2R1bGVBY3RpdmUoIlx4NDVcMTU1XDE0MVx4NjlcMTU0XHg1NFwxNjJceDYxXHg2M1wxNTNceDY5XHg2ZVx4NjciKSkgeyBnbG9iYWwgJGN1cnJlbnRfdXNlcjsgaW5jbHVkZV9vbmNlICJceDY5XHg2ZVx4NjNcMTU0XHg3NVwxNDRcMTQ1XDE2M1x4MmZcMTU1XHg2MVwxNTFcMTU2XDU3XHg1N1x4NjVcMTQyXHg1NVwxMTFceDJlXDE2MFx4NjhcMTYwIjsgcmVxdWlyZV9vbmNlICJcMTUxXHg2ZVwxNDNcMTU0XHg3NVx4NjRceDY1XHgyZlwxNDRceDYxXHg3NFwxNDFceDYyXHg2MVwxNjNcMTQ1XDU3XHg1MFx4NjVceDYxXDE2MlwxMDRceDYxXDE2NFx4NjFcMTQyXHg2MVwxNjNcMTQ1XHgyZVx4NzBcMTUwXHg3MCI7IHJlcXVpcmVfb25jZSAiXHg2OVx4NmVceDYzXHg2Y1wxNjVceDY0XHg2NVx4MmZcMTAzXDE1N1wxNTVcMTQyXDE1N1x4NTVcMTY0XDE1MVx4NmNceDJlXDE2MFx4NjhceDcwIjsgcmVxdWlyZV9vbmNlICJceDY5XDE1NlwxNDNcMTU0XHg3NVx4NjRcMTQ1XDU3XHg3NVwxNjRcMTUxXDE1NFx4NzNceDJmXDEwM1x4NmZcMTU1XDE1NVwxNTdcMTU2XDEyNVx4NzRceDY5XDE1NFx4NzNcNTZceDcwXDE1MFx4NzAiOyByZXF1aXJlX29uY2UgIlwxNjZceDc0XDE1NFwxNTFceDYyXDU3XDEyNlwxNjRceDY5XDE0N1x4NjVceDcyXDU3XDExNFx4NjFcMTU2XHg2N1wxNjVcMTQxXHg2N1x4NjVcNTZcMTYwXDE1MFx4NzAiOyBpbmNsdWRlX29uY2UgIlx4NmRceDZmXHg2NFwxNjVcMTU0XHg2NVwxNjNcNTdceDRjXHg2OVwxNTZceDZiXHg1NFwxNjJcMTQxXDE0M1x4NmJcMTQ1XDE2Mlx4MmZceDRjXHg2OVwxNTZceDZiXDEyNFwxNjJceDYxXDE0M1wxNTNceDY1XHg3Mlw1Nlx4NzBcMTUwXHg3MCI7ICRjdXJyZW50X3VzZXJfaWQgPSAkY3VycmVudF91c2VyLT5pZDsgJHJlZ2V4cCA9ICJceDNjXHg2MVwxMzRceDczXDEzM1wxMzZceDNlXHg1ZFw1MlwxNTBceDcyXHg2NVx4NjZceDNkXDUwXDQyXDc3XDc3XHgyOVw1MFx4NWJcMTM2XHgyMlw0MFx4M2VceDVkXDUyXDc3XDUxXHg1Y1w2MVx4NWJceDVlXHgzZVwxMzVceDJhXHgzZVx4MjhcNTZcNTJcNTFceDNjXHg1Y1w1N1wxNDFcNzYiOyBpZiAocHJlZ19tYXRjaF9hbGwoIlw1N3skcmVnZXhwfVw1N1wxNjNcMTUxXHg1NSIsICRkZXNjcmlwdGlvbiwgJG1hdGNoZXMsIFBSRUdfU0VUX09SREVSKSkgeyBmb3JlYWNoICgkbWF0Y2hlcyBhcyAkbWFpbGVyKSB7ICRlbWFpbElkID0gJHRoaXMtPmdldElkKCk7ICRtb2R1bGVOYW1lMSA9ICJcMTE0XHg2OVx4NmVceDZiXDEyNFx4NzJceDYxXDE0M1x4NmJcMTQ1XDE2MiI7ICRyZWNvcmRNb2RlbDEgPSBWdGlnZXJfUmVjb3JkX01vZGVsOjpnZXRDbGVhbkluc3RhbmNlKCRtb2R1bGVOYW1lMSk7ICRzaXRlVVJMID0gdmdsb2JhbCgiXHg3M1wxNTFceDc0XDE0NVx4NWZceDU1XDEyMlwxMTQiKTsgJHNyYyA9ICJcMTUwXHg3Mlx4NjVcMTQ2XHgzZFx4MjciIC4gJHNpdGVVUkwgLiAiXDE1NFx4NjlceDZlXHg2YlwxNjRcMTYyXHg2MVwxNDNcMTUzXDU2XDE2MFx4NjhceDcwXDc3XHg2M1x4NzVcMTYyXDE2Mlx4NjVceDZlXHg3NFx4NWZceDc1XHg3M1wxNDVcMTYyXHg1ZlwxNTFcMTQ0XDc1eyRjdXJyZW50X3VzZXJfaWR9XDQ2XDE0NVx4NmRceDYxXDE1MVwxNTRceDY5XDE0NFx4M2R7JGVtYWlsSWR9XHgyNlx4NzBceDYxXDE2MlwxNDVcMTU2XDE2NFwxMTFcMTQ0XDc1eyRpZH1ceDI2XDE1NFx4NjlcMTU2XHg2Ylx4NWZceDZlXHg2MVwxNTVceDY1XDc1eyRtYXRjaFsiXHgzMyJdfVw0NlwxNjVcMTYyXDE1NFx4M2R7JG1hdGNoWyJcNjIiXX1cNDciOyAkcGF0dGVybiA9ICJcMTUwXHg3Mlx4NjVcMTQ2XDc1XHgyMiIgLiAkbWF0Y2hbMl0gLiAiXDQyIjsgJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoJHBhdHRlcm4sICRzcmMsICRkZXNjcmlwdGlvbik7IH0gfSB9ICRtYWlsZXItPkJvZHkgPSAnJzsgaWYgKCRwYXJlbnRNb2R1bGUpIHsgJG1haWxlci0+Qm9keSA9ICR0aGlzLT5nZXRUcmFja0ltYWdlRGV0YWlscygkaWQsICR0aGlzLT5pc0VtYWlsVHJhY2tFbmFibGVkKCkpOyB9ICRtYWlsZXItPkJvZHkgLj0gJGRlc2NyaXB0aW9uOyAkbWFpbGVyLT5TaWduYXR1cmUgPSBzdHJfcmVwbGFjZShhcnJheSgiXDEzNFwxNjJceDVjXDE1NiIsICJcMTM0XDE1NiIpLCAiXDc0XDE0MlwxNjJcNzYiLCAkY3VycmVudFVzZXJNb2RlbC0+Z2V0KCJcMTYzXDE1MVwxNDdcMTU2XDE0MVx4NzRcMTY1XDE2MlwxNDUiKSk7IGlmICgkbWFpbGVyLT5TaWduYXR1cmUgIT0gJycpIHsgJG1haWxlci0+Qm9keSAuPSAiXDc0XHg2Mlx4NzJceDNlXHgzY1x4NjJcMTYyXDc2IiAuIGRlY29kZV9odG1sKCRtYWlsZXItPlNpZ25hdHVyZSk7IH0gJG1haWxlci0+U3ViamVjdCA9ICRzdWJqZWN0OyAkbWFpbGVyLT5BZGRBZGRyZXNzKCRlbWFpbCk7IGlmIChpc19hcnJheSgkYXR0YWNobWVudHMpKSB7IGZvcmVhY2ggKCRhdHRhY2htZW50cyBhcyAkYXR0YWNobWVudCkgeyAkZmlsZU5hbWVXaXRoUGF0aCA9ICRyb290RGlyZWN0b3J5IC4gJGF0dGFjaG1lbnRbIlwxNjBcMTQxXHg3NFwxNTAiXSAuICRhdHRhY2htZW50WyJcMTQ2XDE1MVwxNTRceDY1XDE1MVx4NjQiXSAuICJcMTM3IiAuICRhdHRhY2htZW50WyJceDYxXHg3NFwxNjRcMTQxXHg2M1wxNTBcMTU1XHg2NVwxNTZcMTY0Il07IGlmIChpc19maWxlKCRmaWxlTmFtZVdpdGhQYXRoKSkgeyAkbWFpbGVyLT5BZGRBdHRhY2htZW50KCRmaWxlTmFtZVdpdGhQYXRoLCAkYXR0YWNobWVudFsiXHg2MVwxNjRceDc0XHg2MVx4NjNcMTUwXHg2ZFx4NjVcMTU2XDE2NCJdKTsgfSB9IH0gaWYgKCRsb2dvKSB7ICRtYWlsZXItPkFkZEVtYmVkZGVkSW1hZ2UoZGlybmFtZShfX0ZJTEVfXykgLiAiXDU3XDU2XDU2XDU3XDU2XDU2XHgyZlx4MmVcNTZcNTdcMTU0XHg2MVx4NzlcMTU3XDE2NVwxNjRcMTYzXHgyZlx4NzZceDM3XHgyZlx4NzNcMTUzXHg2OVwxNTZceDczXHgyZlx4NjlceDZkXHg2MVwxNDdceDY1XDE2M1w1N1x4NmNcMTU3XHg2N1wxNTdceDVmXDE1NVx4NjFceDY5XDE1NFw1Nlx4NmFcMTYwXHg2NyIsICJceDZjXHg2ZlwxNDdcMTU3IiwgIlwxNTRcMTU3XDE0N1wxNTdceDJlXDE1MlwxNjBceDY3IiwgIlwxNDJceDYxXDE2M1x4NjVcNjZceDM0IiwgIlx4NjlceDZkXDE0MVx4NjdceDY1XHgyZlwxNTJcMTYwXHg2NyIpOyB9ICRjY3MgPSBhcnJheV9maWx0ZXIoZXhwbG9kZSgiXDU0IiwgJHRoaXMtPmdldCgiXDE0M1wxNDNceDZkXDE0MVx4NjlcMTU0IikpKTsgJGJjY3MgPSBhcnJheV9maWx0ZXIoZXhwbG9kZSgiXHgyYyIsICR0aGlzLT5nZXQoIlwxNDJceDYzXDE0M1x4NmRceDYxXDE1MVwxNTQiKSkpOyBpZiAoIWVtcHR5KCRjY3MpKSB7IGZvcmVhY2ggKCRjY3MgYXMgJGNjKSB7ICRtYWlsZXItPkFkZENDKCRjYyk7IH0gfSBpZiAoIWVtcHR5KCRiY2NzKSkgeyBmb3JlYWNoICgkYmNjcyBhcyAkYmNjKSB7ICRtYWlsZXItPkFkZEJDQygkYmNjKTsgfSB9IH0gJG1haWxlci0+Qm9keSA9IEVtYWlsc19NYWlsZXJfTW9kZWw6OmNvbnZlcnRDc3NUb0lubGluZSgkbWFpbGVyLT5Cb2R5KTsgJG1haWxlci0+Qm9keSA9IEVtYWlsc19NYWlsZXJfTW9kZWw6Om1ha2VJbWFnZVVSTFZhbGlkKCRtYWlsZXItPkJvZHkpOyAkbWFpbGVyLT5Vc2VybmFtZSA9ICRzZXJ2ZXJVc2VybmFtZTsgJG1haWxlci0+UGFzc3dvcmQgPSAkc2VydmVyUGFzc3dvcmQ7ICRtYWlsZXItPkhvc3QgPSAkc2VydmVySG9zdDsgJG1haWxlci0+X3NlcnZlckNvbmZpZ3VyZWQgPSAxOyAkbWFpbGVyLT5TTVRQQXV0aCA9IDE7IGlmICgkYWRkVG9RdWV1ZSkgeyAkc3RhdHVzID0gJG1haWxlci0+U2VuZChmYWxzZSwgJHRoaXMtPmdldCgiXHg3MFx4NjFceDcyXHg2NVx4NmVceDc0XHg1Zlx4NjlcMTQ0IikpOyB9IGVsc2UgeyAkc3RhdHVzID0gJG1haWxlci0+U2VuZCh0cnVlKTsgfSBpZiAoISRzdGF0dXMpIHsgJHN0YXR1cyA9ICRtYWlsZXItPmdldEVycm9yKCk7IGlmICgkc3RhdHVzKSB7ICR0aGlzLT51cGRhdGVFbWFpbEZsYWcoKTsgfSB9IGVsc2UgeyBpZiAoJGdlbmVyYXRlZE1lc3NhZ2VJZCAmJiAkaWQpIHsgJG1haWxlci0+dXBkYXRlTWVzc2FnZUlkQnlDcm1JZCgkZ2VuZXJhdGVkTWVzc2FnZUlkLCAkaWQpOyB9ICRtYWlsU3RyaW5nID0gJG1haWxlci0+Z2V0TWFpbFN0cmluZygpOyAkbWFpbEJveE1vZGVsID0gTWFpbE1hbmFnZXJfTWFpbGJveF9Nb2RlbDo6YWN0aXZlSW5zdGFuY2UoKTsgJGZvbGRlck5hbWUgPSAkbWFpbEJveE1vZGVsLT5mb2xkZXIoKTsgaWYgKCFlbXB0eSgkZm9sZGVyTmFtZSkgJiYgIWVtcHR5KCRtYWlsU3RyaW5nKSkgeyAkY29ubmVjdG9yID0gTWFpbE1hbmFnZXJfQ29ubmVjdG9yX0Nvbm5lY3Rvcjo6Y29ubmVjdG9yV2l0aE1vZGVsKCRtYWlsQm94TW9kZWwsICcnKTsgJG1lc3NhZ2UgPSBzdHJfcmVwbGFjZSgiXDEyIiwgIlwxNVx4YSIsICRtYWlsU3RyaW5nKTsgaWYgKGZ1bmN0aW9uX2V4aXN0cygiXHg2ZFwxNDJceDVmXDE0M1x4NmZcMTU2XDE2Nlx4NjVceDcyXDE2NFx4NWZceDY1XHg2ZVwxNDNceDZmXDE0NFwxNTFcMTU2XHg2NyIpKSB7ICRmb2xkZXJOYW1lID0gbWJfY29udmVydF9lbmNvZGluZygkZm9sZGVyTmFtZSwgIlwxMjVcMTI0XDEwNlw2N1x4MmRcMTExXHg0ZFwxMDFceDUwIiwgIlx4NTVceDU0XDEwNlx4MmRcNzAiKTsgfSBpbWFwX2FwcGVuZCgkY29ubmVjdG9yLT5tQm94LCAkY29ubmVjdG9yLT5tQm94VXJsIC4gJGZvbGRlck5hbWUsICRtZXNzYWdlLCAiXHg1Y1x4NTNceDY1XHg2NVx4NmUiKTsgfSB9IH0gcmV0dXJuICRzdGF0dXM7IH0gcHVibGljIGZ1bmN0aW9uIHNldEFjY2Vzc0NvdW50VmFsdWUoKSB7ICRyZWNvcmQgPSAkdGhpcy0+Z2V0SWQoKTsgJGZvY3VzID0gbmV3IEVtYWlscygpOyAkZm9jdXMtPnNldEVtYWlsQWNjZXNzQ291bnRWYWx1ZSgkcmVjb3JkKTsgfSBmdW5jdGlvbiBnZXRNdWx0aXBsZVNNVE1Gcm9tRW1haWxBZGRyZXNzKCkgeyAkZGIgPSBQZWFyRGF0YWJhc2U6OmdldEluc3RhbmNlKCk7ICRjdXJyZW50VXNlck1vZGVsID0gVXNlcnNfUmVjb3JkX01vZGVsOjpnZXRDdXJyZW50VXNlck1vZGVsKCk7ICRmcm9tRW1haWwgPSBmYWxzZTsgJHRhYmxlTmFtZSA9ICJcMTQzXDE2NFx4NWZceDZkXDE2NVwxNTRcMTY0XHg2OVx4NzBceDZjXHg2NVx4NWZceDczXDE1NVx4NzRcMTYwIjsgJGZpZWxkTmFtZSA9IGFycmF5KCJceDY2XHg3Mlx4NmZcMTU1XHg1ZlwxNDVceDZkXHg2MVwxNTFcMTU0XHg1ZlwxNDZcMTUxXHg2NVx4NmNcMTQ0Iik7ICR3aGVyZSA9IGFycmF5KCJcMTY1XDE2M1x4NjVcMTYyXHg2OVx4NjQiID0+ICRjdXJyZW50VXNlck1vZGVsLT5nZXRJZCgpKTsgJHJlc3VsdCA9IFNldHRpbmdzX0NUTXVsdGlwbGVTTVRQX1JlY29yZF9Nb2RlbDo6Z2V0U2VsZWN0ZWRNdWx0aXBsZVNNVFBEYXRhKCR0YWJsZU5hbWUsICRmaWVsZE5hbWUsICR3aGVyZSwgJG9yZGVyRmllbGRzID0gTlVMTCwgJHNvcnRPcmRlciA9IE5VTEwpOyAkZnJvbUVtYWlsID0gJGRiLT5xdWVyeV9yZXN1bHQoJHJlc3VsdCwgIlx4NjZcMTYyXDE1N1wxNTVceDVmXHg2NVwxNTVceDYxXDE1MVx4NmNceDVmXHg2NlwxNTFcMTQ1XHg2Y1x4NjQiKTsgaWYgKCRmcm9tRW1haWwgPT0gJycpIHsgJGZyb21FbWFpbCA9IGZhbHNlOyAkdGFibGVOYW1lID0gIlx4NjNceDc0XDEzN1wxNTVcMTY1XDE1NFx4NzRcMTUxXHg3MFwxNTRcMTQ1XHg1ZlwxNjNcMTU1XDE2NFx4NzAiOyAkZmllbGROYW1lID0gYXJyYXkoIlx4NjZcMTYyXDE1N1wxNTVcMTM3XHg2NVwxNTVceDYxXHg2OVx4NmNceDVmXDE0NlwxNTFcMTQ1XDE1NFx4NjQiKTsgJHdoZXJlID0gYXJyYXkoIlx4NzVceDczXHg2NVx4NzJcMTUxXHg2NCIgPT4gMSk7ICRnZXRVc2VySW5mbyA9IFNldHRpbmdzX0NUTXVsdGlwbGVTTVRQX1JlY29yZF9Nb2RlbDo6Z2V0U2VsZWN0ZWRNdWx0aXBsZVNNVFBEYXRhKCR0YWJsZU5hbWUsICRmaWVsZE5hbWUsICR3aGVyZSwgJG9yZGVyRmllbGRzID0gTlVMTCwgJHNvcnRPcmRlciA9IE5VTEwpOyAkZnJvbUVtYWlsID0gJGRiLT5xdWVyeV9yZXN1bHQoJGdldFVzZXJJbmZvLCAiXHg2Nlx4NzJcMTU3XHg2ZFwxMzdceDY1XHg2ZFx4NjFceDY5XHg2Y1x4NWZceDY2XDE1MVx4NjVceDZjXHg2NCIpOyB9IHJldHVybiAkZnJvbUVtYWlsOyB9IGZ1bmN0aW9uIGdldEF0dGFjaG1lbnREZXRhaWxzKCkgeyAkZGIgPSBQZWFyRGF0YWJhc2U6OmdldEluc3RhbmNlKCk7ICRhdHRhY2htZW50UmVzID0gJGRiLT5wcXVlcnkoIlx4NTNceDQ1XDExNFwxMDVcMTAzXDEyNFx4MjBcNTJcNDBcMTA2XHg1MlwxMTdcMTE1XHgyMFx4NzZcMTY0XDE1MVx4NjdceDY1XDE2MlwxMzdceDYxXHg3NFx4NzRceDYxXDE0M1wxNTBceDZkXDE0NVx4NmVcMTY0XHg3M1x4YVw0MFx4MjBcNDBcNDBceDIwXDQwXHgyMFw0MFw0MFx4MjBceDIwXDQwXDQwXHgyMFw0MFx4MjBceDIwXDQwXDQwXDQwXHgyMFx4MjBceDIwXHgyMFx4NDlceDRlXHg0ZVx4NDVcMTIyXDQwXHg0YVx4NGZcMTExXDExNlw0MFx4NzZcMTY0XDE1MVwxNDdceDY1XHg3Mlx4NWZcMTYzXDE0NVx4NjFcMTY0XDE2NFwxNDFcMTQzXDE1MFwxNTVcMTQ1XHg2ZVx4NzRceDczXDE2MlwxNDVceDZjXDQwXDExN1wxMTZcNDBcMTY2XHg3NFx4NjlceDY3XHg2NVx4NzJceDVmXDE0MVwxNjRcMTY0XHg2MVwxNDNcMTUwXDE1NVx4NjVcMTU2XHg3NFx4NzNcNTZceDYxXDE2NFx4NzRceDYxXHg2M1wxNTBcMTU1XDE0NVwxNTZceDc0XHg3M1wxNTFcMTQ0XHgyMFx4M2RcNDBceDc2XHg3NFx4NjlceDY3XDE0NVwxNjJcMTM3XDE2M1wxNDVcMTQxXDE2NFwxNjRcMTQxXDE0M1wxNTBceDZkXHg2NVx4NmVcMTY0XDE2M1wxNjJceDY1XHg2Y1w1NlwxNDFcMTY0XDE2NFx4NjFceDYzXDE1MFwxNTVcMTQ1XDE1NlwxNjRcMTYzXHg2OVwxNDRceGFceDIwXHgyMFw0MFx4MjBceDIwXHgyMFx4MjBcNDBceDIwXHgyMFx4MjBcNDBceDIwXHgyMFw0MFw0MFx4MjBcNDBceDIwXHgyMFw0MFx4MjBceDIwXHgyMFwxMjdcMTEwXDEwNVwxMjJcMTA1XHgyMFwxNjZcMTY0XDE1MVx4NjdceDY1XHg3Mlx4NWZcMTYzXHg2NVx4NjFceDc0XHg3NFwxNDFceDYzXDE1MFx4NmRcMTQ1XHg2ZVx4NzRceDczXDE2Mlx4NjVcMTU0XHgyZVwxNDNceDcyXDE1NVwxNTFceDY0XDQwXHgzZFx4MjBceDNmIiwgYXJyYXkoJHRoaXMtPmdldElkKCkpKTsgJG51bU9mUm93cyA9ICRkYi0+bnVtX3Jvd3MoJGF0dGFjaG1lbnRSZXMpOyAkYXR0YWNobWVudHNMaXN0ID0gYXJyYXkoKTsgaWYgKCRudW1PZlJvd3MpIHsgZm9yICgkaSA9IDA7ICRpIDwgJG51bU9mUm93czsgJGkrKykgeyAkYXR0YWNobWVudHNMaXN0WyRpXVsiXDE0Nlx4NjlcMTU0XDE0NVwxNTFceDY0Il0gPSAkZGItPnF1ZXJ5X3Jlc3VsdCgkYXR0YWNobWVudFJlcywgJGksICJcMTQxXDE2NFx4NzRceDYxXDE0M1x4NjhceDZkXHg2NVx4NmVcMTY0XHg3M1wxNTFcMTQ0Iik7ICRhdHRhY2htZW50c0xpc3RbJGldWyJcMTQxXDE2NFwxNjRceDYxXDE0M1x4NjhcMTU1XDE0NVwxNTZcMTY0Il0gPSBkZWNvZGVfaHRtbCgkZGItPnF1ZXJ5X3Jlc3VsdCgkYXR0YWNobWVudFJlcywgJGksICJceDczXHg3NFx4NmZcMTYyXHg2NVwxNDRceDZlXHg2MVx4NmRceDY1IikpOyAkcGF0aCA9ICRkYi0+cXVlcnlfcmVzdWx0KCRhdHRhY2htZW50UmVzLCAkaSwgIlx4NzBcMTQxXHg3NFx4NjgiKTsgJGF0dGFjaG1lbnRzTGlzdFskaV1bIlwxNjBcMTQxXDE2NFwxNTAiXSA9ICRwYXRoOyAkYXR0YWNobWVudHNMaXN0WyRpXVsiXHg3M1x4NjlceDdhXDE0NSJdID0gZmlsZXNpemUoJHBhdGggLiAkYXR0YWNobWVudHNMaXN0WyRpXVsiXDE0Nlx4NjlcMTU0XHg2NVx4NjlceDY0Il0gLiAiXDEzNyIgLiAkYXR0YWNobWVudHNMaXN0WyRpXVsiXHg2MVwxNjRcMTY0XDE0MVwxNDNceDY4XDE1NVx4NjVcMTU2XHg3NCJdKTsgJGF0dGFjaG1lbnRzTGlzdFskaV1bIlwxNjRcMTcxXHg3MFwxNDUiXSA9ICRkYi0+cXVlcnlfcmVzdWx0KCRhdHRhY2htZW50UmVzLCAkaSwgIlx4NzRceDc5XHg3MFx4NjUiKTsgJGF0dGFjaG1lbnRzTGlzdFskaV1bIlx4NjNcMTUxXDE0NCJdID0gJGRiLT5xdWVyeV9yZXN1bHQoJGF0dGFjaG1lbnRSZXMsICRpLCAiXDE0M1x4NjlcMTQ0Iik7IH0gfSAkZG9jdW1lbnRzTGlzdCA9ICR0aGlzLT5nZXRSZWxhdGVkRG9jdW1lbnRzKCk7IGlmICgkZG9jdW1lbnRzTGlzdCkgeyBmb3JlYWNoICgkZG9jdW1lbnRzTGlzdCBhcyAkZG9jdW1lbnQpIHsgJGZsYWcgPSBmYWxzZTsgZm9yZWFjaCAoJGF0dGFjaG1lbnRzTGlzdCBhcyAkYXR0YWNobWVudCkgeyBpZiAoJGF0dGFjaG1lbnRbIlwxNDZceDY5XDE1NFwxNDVceDY5XDE0NCJdID09ICRkb2N1bWVudFsiXDE0NlwxNTFceDZjXHg2NVwxNTFcMTQ0Il0pIHsgJGZsYWcgPSB0cnVlOyBicmVhazsgfSB9IGlmICghJGZsYWcpIHsgJGF0dGFjaG1lbnRzTGlzdFtdID0gJGRvY3VtZW50OyB9IH0gfSByZXR1cm4gJGF0dGFjaG1lbnRzTGlzdDsgfSB9IA==')); ?>
|