Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
eval(base64_decode('CiBjbGFzcyBTZXR0aW5nc19MYXlvdXRFZGl0b3JfSW5kZXhfVmlldyBleHRlbmRzIFNldH..
Decoded Output download
class Settings_LayoutEditor_Index_View extends Settings_Vtiger_Index_View { function __construct() { parent::__construct(); $this->exposeMethod("showFieldLayout"); $this->exposeMethod("showRelatedListLayout"); $this->exposeMethod("showFieldEdit"); $this->exposeMethod("showDuplicationHandling"); $this->exposeMethod("showAddRelation"); $this->exposeMethod("addRelation"); } public function process(Vtiger_Request $request) { $mode = $request->getMode(); switch ($mode) { case "showRelatedListLayout": $selectedTab = "relatedListTab"; break; case "showDuplicationHandling": $selectedTab = "duplicationTab"; break; case "showAddRelation": $selectedTab = "relatedListTab"; break; case "addRelation": $selectedTab = "relatedListTab"; break; default: $selectedTab = "detailViewTab"; if (!$mode) { $mode = "showFieldLayout"; } break; } $sourceModule = $request->get("sourceModule"); $supportedModulesList = Settings_LayoutEditor_Module_Model::getSupportedModules(); $supportedModulesList = array_flip($supportedModulesList); ksort($supportedModulesList); $viewer = $this->getViewer($request); $viewer->assign("MODE", $mode); $viewer->assign("SELECTED_TAB", $selectedTab); $viewer->assign("SUPPORTED_MODULES", $supportedModulesList); $viewer->assign("REQUEST_INSTANCE", $request); if ($sourceModule) { $viewer->assign("SELECTED_MODULE_NAME", $sourceModule); } if ($this->isMethodExposed($mode)) { $this->invokeExposedMethod($mode, $request); } else { $this->showFieldLayout($request); } } public function showFieldLayout(Vtiger_Request $request) { $sourceModule = $request->get("sourceModule"); $supportedModulesList = Settings_LayoutEditor_Module_Model::getSupportedModules(); $supportedModulesList = array_flip($supportedModulesList); ksort($supportedModulesList); if (empty($sourceModule)) { $sourceModule = reset($supportedModulesList); } $moduleModel = Settings_LayoutEditor_Module_Model::getInstanceByName($sourceModule); $fieldModels = $moduleModel->getFields(); $blockModels = $moduleModel->getBlocks(); $blockIdFieldMap = array(); $inactiveFields = array(); $headerFieldsCount = 0; $headerFieldsMeta = array(); foreach ($fieldModels as $fieldModel) { $blockIdFieldMap[$fieldModel->getBlockId()][$fieldModel->getName()] = $fieldModel; if (!$fieldModel->isActiveField()) { $inactiveFields[$fieldModel->getBlockId()][$fieldModel->getId()] = vtranslate($fieldModel->get("label"), $sourceModule); } if ($fieldModel->isHeaderField()) { $headerFieldsCount++; } $headerFieldsMeta[$fieldModel->getId()] = $fieldModel->isHeaderField() ? 1 : 0; } foreach ($blockModels as $blockLabel => $blockModel) { $fieldModelList = $blockIdFieldMap[$blockModel->get("id")]; $blockModel->setFields($fieldModelList); } $cleanFieldModel = Settings_LayoutEditor_Field_Model::getCleanInstance(); $cleanFieldModel->setModule($moduleModel); $qualifiedModule = $request->getModule(false); $viewer = $this->getViewer($request); $viewer->assign("CLEAN_FIELD_MODEL", $cleanFieldModel); $viewer->assign("REQUEST_INSTANCE", $request); $viewer->assign("SELECTED_MODULE_NAME", $sourceModule); $viewer->assign("SELECTED_MODULE_MODEL", $moduleModel); $viewer->assign("BLOCKS", $blockModels); $viewer->assign("SUPPORTED_MODULES", $supportedModulesList); $viewer->assign("ADD_SUPPORTED_FIELD_TYPES", $moduleModel->getAddSupportedFieldTypes()); $viewer->assign("FIELD_TYPE_INFO", $moduleModel->getAddFieldTypeInfo()); $viewer->assign("USER_MODEL", Users_Record_Model::getCurrentUserModel()); $viewer->assign("QUALIFIED_MODULE", $qualifiedModule); $viewer->assign("IN_ACTIVE_FIELDS", $inactiveFields); $viewer->assign("HEADER_FIELDS_COUNT", $headerFieldsCount); $viewer->assign("HEADER_FIELDS_META", $headerFieldsMeta); $cleanFieldModel = Settings_LayoutEditor_Field_Model::getCleanInstance(); $cleanFieldModel->setModule($moduleModel); $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule); $this->setModuleInfo($request, $sourceModuleModel, $cleanFieldModel); if ($request->isAjax() && !$request->get("showFullContents")) { $viewer->view("FieldsList.tpl", $qualifiedModule); } else { $viewer->view("Index.tpl", $qualifiedModule); } } public function showRelatedListLayout(Vtiger_Request $request) { $sourceModule = $request->get("sourceModule"); $supportedModulesList = Settings_LayoutEditor_Module_Model::getSupportedModules(); if (empty($sourceModule)) { $moduleInstance = reset($supportedModulesList); $sourceModule = $moduleInstance->getName(); } $moduleModel = Settings_LayoutEditor_Module_Model::getInstanceByName($sourceModule); $relatedModuleModels = $moduleModel->getRelations(); $hiddenRelationTabExists = false; foreach ($relatedModuleModels as $relationModel) { if (!$relationModel->isActive()) { $hiddenRelationTabExists = true; break; } } $relationFields = array(); $referenceFields = $moduleModel->getFieldsByType("reference"); foreach ($referenceFields as $fieldModel) { if ($fieldModel->get("uitype") == "52" || !$fieldModel->isActiveField()) { continue; } $relationType = $moduleModel->getRelationTypeFromRelationField($fieldModel); $fieldModel->set("_relationType", $relationType); $relationFields[$fieldModel->getName()] = $fieldModel; } $qualifiedModule = $request->getModule(false); $viewer = $this->getViewer($request); $viewer->assign("SELECTED_MODULE_NAME", $sourceModule); $viewer->assign("RELATED_MODULES", $relatedModuleModels); $viewer->assign("RELATION_FIELDS", $relationFields); $viewer->assign("HIDDEN_TAB_EXISTS", $hiddenRelationTabExists); $viewer->assign("MODULE_MODEL", $moduleModel); $viewer->assign("QUALIFIED_MODULE", $qualifiedModule); if ($request->isAjax() && !$request->get("showFullContents")) { $viewer->view("RelatedList.tpl", $qualifiedModule); } else { $viewer->view("Index.tpl", $qualifiedModule); } } public function showFieldEdit(Vtiger_Request $request) { $sourceModule = $request->get("sourceModule"); $fieldId = $request->get("fieldid"); $fieldInstance = Settings_LayoutEditor_Field_Model::getInstance($fieldId); $moduleModel = Settings_LayoutEditor_Module_Model::getInstanceByName($sourceModule); $fieldModels = $moduleModel->getFields(); $headerFieldsCount = 0; foreach ($fieldModels as $fieldModel) { if ($fieldModel->isHeaderField()) { $headerFieldsCount++; } } $qualifiedModule = $request->getModule(false); $viewer = $this->getViewer($request); $viewer->assign("FIELD_INFO", $fieldInstance->getFieldInfo()); $viewer->assign("SELECTED_MODULE_NAME", $sourceModule); $viewer->assign("ADD_SUPPORTED_FIELD_TYPES", $moduleModel->getAddSupportedFieldTypes()); $viewer->assign("FIELD_TYPE_INFO", $moduleModel->getAddFieldTypeInfo()); $viewer->assign("FIELD_MODEL", $fieldInstance); $viewer->assign("IS_FIELD_EDIT_MODE", true); $viewer->assign("QUALIFIED_MODULE", $qualifiedModule); $viewer->assign("USER_MODEL", Users_Record_Model::getCurrentUserModel()); $viewer->assign("HEADER_FIELDS_COUNT", $headerFieldsCount); $viewer->assign("IS_NAME_FIELD", in_array($fieldInstance->getName(), $moduleModel->getNameFields())); $cleanFieldModel = Settings_LayoutEditor_Field_Model::getCleanInstance(); $cleanFieldModel->setModule($moduleModel); $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule); $this->setModuleInfo($request, $sourceModuleModel, $cleanFieldModel); $viewer->view("FieldCreate.tpl", $qualifiedModule); } public function showDuplicationHandling(Vtiger_Request $request) { $qualifiedModule = $request->getModule(false); $sourceModuleName = $request->get("sourceModule"); $moduleModel = Vtiger_Module_Model::getInstance($sourceModuleName); $blocks = $moduleModel->getBlocks(); $fields = array(); foreach ($blocks as $blockId => $blockModel) { $blockFields = $blockModel->getFields(); foreach ($blockFields as $key => $fieldModel) { if ($fieldModel->isEditable() && $fieldModel->get("displaytype") != 5 && !in_array($fieldModel->get("uitype"), array(28, 30, 53, 56, 69, 83)) && !in_array($fieldModel->getFieldDataType(), array("text", "multireference"))) { $fields[$blockModel->get("label")][$fieldModel->getName()] = $fieldModel; } } } $viewer = $this->getViewer($request); $viewer->assign("FIELDS", $fields); $viewer->assign("SOURCE_MODULE", $sourceModuleName); $viewer->assign("QUALIFIED_MODULE", $qualifiedModule); $viewer->assign("SOURCE_MODULE_MODEL", $moduleModel); $viewer->assign("ACTIONS", Vtiger_Module_Model::getSyncActionsInDuplicatesCheck()); $viewer->assign("USER_MODEL", Users_Record_Model::getCurrentUserModel()); if ($request->isAjax() && !$request->get("showFullContents")) { $viewer->view("DuplicateHandling.tpl", $qualifiedModule); } else { $viewer->view("Index.tpl", $qualifiedModule); } } public function showAddRelation(Vtiger_Request $request) { $sourceModule = $request->get("sourceModule"); $supportedModulesList = Settings_LayoutEditor_Module_Model::getSupportedModules(); $supportedModulesList = array_flip($supportedModulesList); ksort($supportedModulesList); if (empty($sourceModule)) { $moduleInstance = reset($supportedModulesList); $sourceModule = $moduleInstance->getName(); } $moduleModel = Settings_LayoutEditor_Module_Model::getInstanceByName($sourceModule); $relatedModuleModels = $moduleModel->getRelations(); $hiddenRelationTabExists = false; foreach ($relatedModuleModels as $relationModel) { if (!$relationModel->isActive()) { $hiddenRelationTabExists = true; break; } } $relationFields = array(); $referenceFields = $moduleModel->getFieldsByType("reference"); foreach ($referenceFields as $fieldModel) { if ($fieldModel->get("uitype") == "52" || !$fieldModel->isActiveField()) { continue; } $relationType = $moduleModel->getRelationTypeFromRelationField($fieldModel); $fieldModel->set("_relationType", $relationType); $relationFields[$fieldModel->getName()] = $fieldModel; } $qualifiedModule = $request->getModule(false); $viewer = $this->getViewer($request); $viewer->assign("SELECTED_MODULE_NAME", $sourceModule); $viewer->assign("RELATED_MODULES", $relatedModuleModels); $viewer->assign("SUPPORTED_MODULES", $supportedModulesList); $viewer->assign("RELATION_FIELDS", $relationFields); $viewer->assign("HIDDEN_TAB_EXISTS", $hiddenRelationTabExists); $viewer->assign("MODULE_MODEL", $moduleModel); $viewer->assign("QUALIFIED_MODULE", $qualifiedModule); $viewer->view("RelationAdd.tpl", $qualifiedModule); } public function addRelation(Vtiger_Request $request) { $sourceModule = $request->get("sourceModule"); $relatedModule = $request->get("relatedModule"); $fieldInPrimary = $request->get("fieldInPrimary"); $fieldInRelated = $request->get("fieldInRelated"); $relationType = $request->get("relationType"); $tabInPrimary = $request->get("tabInPrimary"); $tabInRelated = $request->get("tabInRelated"); include_once "vtlib/Vtiger/Menu.php"; include_once "vtlib/Vtiger/Module.php"; global $adb; $fieldInPrimary = "cf_" . preg_replace("/( *)/", '', strtolower($fieldInPrimary)); $fieldInRelated = "cf_" . preg_replace("/( *)/", '', strtolower($fieldInRelated)); $tabidsourceModule = getTabid($sourceModule); $tabidrelatedModule = getTabid($relatedModule); $parent = $adb->pquery("select * from vtiger_blocks where tabid ={$tabidsourceModule} and sequence = 1"); $blocklabel_parent = $adb->query_result($parent, 0, "blocklabel"); $child = $adb->pquery("select * from vtiger_blocks where tabid ={$tabidrelatedModule} and sequence = 1"); $blocklabel_child = $adb->query_result($child, 0, "blocklabel"); if ($relationType == "1:1") { $module = new Vtiger_Module(); $module->name = $sourceModule; $module = $module->getInstance($sourceModule); $block1 = new Vtiger_Block(); $block1->label = $blocklabel_parent; $block1 = $block1->getInstance($block1->label, $module); $field2 = new Vtiger_Field(); $field2->name = $fieldInPrimary; $field2->label = $request->get("fieldInPrimary"); $field2->table = $module->basetable; $field2->column = $fieldInPrimary; $field2->columntype = "VARCHAR(50)"; $field2->uitype = 10; $field2->typeofdata = "V~O"; $block1->addField($field2); $field2->setRelatedModules(array($relatedModule)); $module1 = new Vtiger_Module(); $module1->name = $relatedModule; $module1 = $module1->getInstance($relatedModule); $block2 = new Vtiger_Block(); $block2->label = $blocklabel_child; $block2 = $block2->getInstance($block2->label, $module1); $field3 = new Vtiger_Field(); $field3->name = $fieldInRelated; $field3->label = $request->get("fieldInRelated"); $field3->table = $module1->basetable; $field3->column = $fieldInRelated; $field3->columntype = "VARCHAR(50)"; $field3->uitype = 10; $field3->typeofdata = "V~O"; $block2->addField($field3); $field3->setRelatedModules(array($sourceModule)); } else { if ($relationType == "1:N") { $module1 = new Vtiger_Module(); $module1->name = $relatedModule; $module1 = $module1->getInstance($relatedModule); $block2 = new Vtiger_Block(); $block2->label = $blocklabel_child; $block2 = $block2->getInstance($block2->label, $module1); $field3 = new Vtiger_Field(); $field3->name = $fieldInRelated; $field3->label = $request->get("fieldInRelated"); $field3->table = $module1->basetable; $field3->column = $fieldInRelated; $field3->columntype = "VARCHAR(50)"; $field3->uitype = 10; $field3->typeofdata = "V~O"; $block2->addField($field3); $field3->setRelatedModules(array($sourceModule)); $field = $adb->pquery("select * from vtiger_field where columnname ='{$fieldInPrimary}' order by fieldid desc limit 0,1"); $fieldid = $adb->query_result($field, 0, "fieldid"); $module2 = Vtiger_Module::getInstance($sourceModule); $targatemodule = Vtiger_Module::getInstance($relatedModule); $relationLabel = $tabInPrimary; $function_name = "get_dependents_list"; $module2->setRelatedList($targatemodule, $relationLabel, array("Add", "select"), $function_name, $fieldid); $relationQuery = $adb->pquery("select * from vtiger_relatedlists order by relation_id desc limit 0,1"); $relationId = $adb->query_result($relationQuery, 0, "relation_id"); $tabId = $adb->query_result($relationQuery, 0, "tabid"); if (getTabid($sourceModule) == $tabId) { $adb->pquery("UPDATE vtiger_relatedlists SET relationtype = ? WHERE relation_id = ?", array("1:N", $relationId)); } } else { if ($relationType == "N:1") { $module = new Vtiger_Module(); $module->name = $sourceModule; $module = $module->getInstance($sourceModule); $block1 = new Vtiger_Block(); $block1->label = $blocklabel_parent; $block1 = $block1->getInstance($block1->label, $module); $field2 = new Vtiger_Field(); $field2->name = $fieldInPrimary; $field2->label = $request->get("fieldInPrimary"); $field2->table = $module->basetable; $field2->column = $fieldInPrimary; $field2->columntype = "VARCHAR(50)"; $field2->uitype = 10; $field2->typeofdata = "V~O"; $block1->addField($field2); $field2->setRelatedModules(array($relatedModule)); $field = $adb->pquery("select * from vtiger_field where columnname ='{$fieldInPrimary}' order by fieldid desc limit 0,1"); $fieldid = $adb->query_result($field, 0, "fieldid"); $module2 = Vtiger_Module::getInstance($relatedModule); $targatemodule = Vtiger_Module::getInstance($sourceModule); $relationLabel = $tabInRelated; $function_name = "get_dependents_list"; $module2->setRelatedList($targatemodule, $relationLabel, array("Add", "select"), $function_name, $fieldid); $relationQuery = $adb->pquery("select * from vtiger_relatedlists order by relation_id desc limit 0,1"); $relationId = $adb->query_result($relationQuery, 0, "relation_id"); $tabId = $adb->query_result($relationQuery, 0, "tabid"); if (getTabid($relatedModule) == $tabId) { $adb->pquery("UPDATE vtiger_relatedlists SET relationtype = ? WHERE relation_id = ?", array("1:N", $relationId)); } } else { if ($relationType == "N:N") { $module2 = Vtiger_Module::getInstance($sourceModule); $targatemodule = Vtiger_Module::getInstance($relatedModule); $relationLabel = $tabInPrimary; $function_name = "get_related_list"; $module2->setRelatedList($targatemodule, $relationLabel, array("select"), $function_name); $relationQuery = $adb->pquery("select * from vtiger_relatedlists order by relation_id desc limit 0,1"); $relationId = $adb->query_result($relationQuery, 0, "relation_id"); $tabId = $adb->query_result($relationQuery, 0, "tabid"); if (getTabid($sourceModule) == $tabId) { $adb->pquery("UPDATE vtiger_relatedlists SET relationtype = ? WHERE relation_id = ?", array("N:N", $relationId)); } $module3 = Vtiger_Module::getInstance($relatedModule); $targatemodule1 = Vtiger_Module::getInstance($sourceModule); $relationLabel1 = $tabInRelated; $function_name1 = "get_related_list"; $module3->setRelatedList($targatemodule1, $relationLabel1, array("select"), $function_name1); $relationQuery1 = $adb->pquery("select * from vtiger_relatedlists order by relation_id desc limit 0,1"); $relationId1 = $adb->query_result($relationQuery1, 0, "relation_id"); $tabId1 = $adb->query_result($relationQuery1, 0, "tabid"); if (getTabid($relatedModule) == $tabId1) { $adb->pquery("UPDATE vtiger_relatedlists SET relationtype = ? WHERE relation_id = ?", array("N:N", $relationId1)); } } } } } $response = new Vtiger_Response(); $response->setResult(array("success" => true, "message" => "Relationship added sucessfully")); $response->emit(); } function getHeaderScripts(Vtiger_Request $request) { $headerScriptInstances = parent::getHeaderScripts($request); $jsFileNames = array("~libraries/garand-sticky/jquery.sticky.js", "~/libraries/jquery/bootstrapswitch/js/bootstrap-switch.min.js"); $jsScriptInstances = $this->checkAndConvertJsScripts($jsFileNames); $headerScriptInstances = array_merge($headerScriptInstances, $jsScriptInstances); return $headerScriptInstances; } public function setModuleInfo($request, $moduleModel, $cleanFieldModel = false) { $fieldsInfo = array(); $basicLinks = array(); $viewer = $this->getViewer($request); if (method_exists($moduleModel, "getFields")) { $moduleFields = $moduleModel->getFields(); foreach ($moduleFields as $fieldName => $fieldModel) { $fieldsInfo[$fieldName] = $fieldModel->getFieldInfo(); } if ($cleanFieldModel) { $newfieldsInfo["newfieldinfo"] = $cleanFieldModel->getFieldInfo(); $viewer->assign("NEW_FIELDS_INFO", json_encode($newfieldsInfo)); } $viewer->assign("FIELDS_INFO", json_encode($fieldsInfo)); } if (method_exists($moduleModel, "getModuleBasicLinks")) { $moduleBasicLinks = $moduleModel->getModuleBasicLinks(); foreach ($moduleBasicLinks as $basicLink) { $basicLinks[] = Vtiger_Link_Model::getInstanceFromValues($basicLink); } $viewer->assign("MODULE_BASIC_ACTIONS", $basicLinks); } } public function getHeaderCss(Vtiger_Request $request) { $headerCssInstances = parent::getHeaderCss($request); $cssFileNames = array("~/libraries/jquery/bootstrapswitch/css/bootstrap2/bootstrap-switch.min.css"); $cssInstances = $this->checkAndConvertCssStyles($cssFileNames); $headerCssInstances = array_merge($headerCssInstances, $cssInstances); return $headerCssInstances; } }
Did this file decode correctly?
Original Code
eval(base64_decode('CiBjbGFzcyBTZXR0aW5nc19MYXlvdXRFZGl0b3JfSW5kZXhfVmlldyBleHRlbmRzIFNldHRpbmdzX1Z0aWdlcl9JbmRleF9WaWV3IHsgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7IHBhcmVudDo6X19jb25zdHJ1Y3QoKTsgJHRoaXMtPmV4cG9zZU1ldGhvZCgiXHg3M1x4NjhcMTU3XHg3N1wxMDZceDY5XDE0NVx4NmNcMTQ0XDExNFwxNDFceDc5XHg2Zlx4NzVcMTY0Iik7ICR0aGlzLT5leHBvc2VNZXRob2QoIlx4NzNcMTUwXHg2Zlx4NzdcMTIyXHg2NVx4NmNcMTQxXHg3NFwxNDVceDY0XDExNFx4NjlcMTYzXDE2NFx4NGNcMTQxXHg3OVx4NmZceDc1XDE2NCIpOyAkdGhpcy0+ZXhwb3NlTWV0aG9kKCJcMTYzXHg2OFwxNTdcMTY3XHg0Nlx4NjlcMTQ1XDE1NFwxNDRcMTA1XHg2NFx4NjlceDc0Iik7ICR0aGlzLT5leHBvc2VNZXRob2QoIlwxNjNcMTUwXHg2ZlwxNjdceDQ0XDE2NVwxNjBcMTU0XDE1MVwxNDNceDYxXHg3NFx4NjlcMTU3XHg2ZVwxMTBceDYxXDE1Nlx4NjRceDZjXHg2OVx4NmVcMTQ3Iik7ICR0aGlzLT5leHBvc2VNZXRob2QoIlx4NzNceDY4XHg2ZlwxNjdceDQxXHg2NFx4NjRceDUyXHg2NVwxNTRceDYxXDE2NFwxNTFcMTU3XHg2ZSIpOyAkdGhpcy0+ZXhwb3NlTWV0aG9kKCJceDYxXHg2NFwxNDRceDUyXHg2NVwxNTRceDYxXDE2NFwxNTFcMTU3XHg2ZSIpOyB9IHB1YmxpYyBmdW5jdGlvbiBwcm9jZXNzKFZ0aWdlcl9SZXF1ZXN0ICRyZXF1ZXN0KSB7ICRtb2RlID0gJHJlcXVlc3QtPmdldE1vZGUoKTsgc3dpdGNoICgkbW9kZSkgeyBjYXNlICJcMTYzXDE1MFwxNTdceDc3XHg1MlwxNDVcMTU0XHg2MVwxNjRceDY1XHg2NFx4NGNcMTUxXHg3M1x4NzRcMTE0XDE0MVx4NzlcMTU3XHg3NVwxNjQiOiAkc2VsZWN0ZWRUYWIgPSAiXDE2Mlx4NjVceDZjXHg2MVx4NzRceDY1XHg2NFwxMTRcMTUxXHg3M1wxNjRceDU0XHg2MVx4NjIiOyBicmVhazsgY2FzZSAiXHg3M1x4NjhcMTU3XHg3N1x4NDRcMTY1XHg3MFwxNTRceDY5XDE0M1wxNDFceDc0XDE1MVx4NmZceDZlXDExMFwxNDFcMTU2XDE0NFx4NmNceDY5XDE1Nlx4NjciOiAkc2VsZWN0ZWRUYWIgPSAiXDE0NFwxNjVcMTYwXHg2Y1wxNTFcMTQzXHg2MVwxNjRcMTUxXHg2ZlwxNTZcMTI0XDE0MVx4NjIiOyBicmVhazsgY2FzZSAiXHg3M1x4NjhcMTU3XDE2N1wxMDFcMTQ0XDE0NFx4NTJcMTQ1XHg2Y1x4NjFceDc0XDE1MVwxNTdceDZlIjogJHNlbGVjdGVkVGFiID0gIlwxNjJceDY1XDE1NFwxNDFceDc0XDE0NVwxNDRcMTE0XHg2OVwxNjNceDc0XDEyNFwxNDFcMTQyIjsgYnJlYWs7IGNhc2UgIlwxNDFceDY0XDE0NFwxMjJcMTQ1XDE1NFwxNDFceDc0XDE1MVx4NmZceDZlIjogJHNlbGVjdGVkVGFiID0gIlx4NzJceDY1XHg2Y1wxNDFceDc0XDE0NVwxNDRcMTE0XDE1MVx4NzNcMTY0XHg1NFx4NjFcMTQyIjsgYnJlYWs7IGRlZmF1bHQ6ICRzZWxlY3RlZFRhYiA9ICJceDY0XHg2NVwxNjRceDYxXDE1MVwxNTRcMTI2XHg2OVx4NjVcMTY3XDEyNFx4NjFceDYyIjsgaWYgKCEkbW9kZSkgeyAkbW9kZSA9ICJceDczXDE1MFx4NmZceDc3XHg0Nlx4NjlcMTQ1XHg2Y1x4NjRceDRjXHg2MVx4NzlcMTU3XDE2NVwxNjQiOyB9IGJyZWFrOyB9ICRzb3VyY2VNb2R1bGUgPSAkcmVxdWVzdC0+Z2V0KCJceDczXDE1N1x4NzVcMTYyXHg2M1x4NjVceDRkXHg2ZlwxNDRcMTY1XHg2Y1wxNDUiKTsgJHN1cHBvcnRlZE1vZHVsZXNMaXN0ID0gU2V0dGluZ3NfTGF5b3V0RWRpdG9yX01vZHVsZV9Nb2RlbDo6Z2V0U3VwcG9ydGVkTW9kdWxlcygpOyAkc3VwcG9ydGVkTW9kdWxlc0xpc3QgPSBhcnJheV9mbGlwKCRzdXBwb3J0ZWRNb2R1bGVzTGlzdCk7IGtzb3J0KCRzdXBwb3J0ZWRNb2R1bGVzTGlzdCk7ICR2aWV3ZXIgPSAkdGhpcy0+Z2V0Vmlld2VyKCRyZXF1ZXN0KTsgJHZpZXdlci0+YXNzaWduKCJcMTE1XDExN1x4NDRceDQ1IiwgJG1vZGUpOyAkdmlld2VyLT5hc3NpZ24oIlx4NTNceDQ1XDExNFx4NDVceDQzXHg1NFwxMDVcMTA0XDEzN1x4NTRcMTAxXDEwMiIsICRzZWxlY3RlZFRhYik7ICR2aWV3ZXItPmFzc2lnbigiXHg1M1x4NTVceDUwXHg1MFwxMTdcMTIyXDEyNFwxMDVceDQ0XDEzN1x4NGRceDRmXDEwNFwxMjVceDRjXDEwNVx4NTMiLCAkc3VwcG9ydGVkTW9kdWxlc0xpc3QpOyAkdmlld2VyLT5hc3NpZ24oIlwxMjJceDQ1XHg1MVx4NTVcMTA1XDEyM1wxMjRcMTM3XHg0OVx4NGVceDUzXHg1NFwxMDFcMTE2XDEwM1x4NDUiLCAkcmVxdWVzdCk7IGlmICgkc291cmNlTW9kdWxlKSB7ICR2aWV3ZXItPmFzc2lnbigiXDEyM1wxMDVcMTE0XHg0NVwxMDNcMTI0XHg0NVwxMDRcMTM3XDExNVx4NGZceDQ0XHg1NVx4NGNceDQ1XHg1ZlwxMTZceDQxXDExNVwxMDUiLCAkc291cmNlTW9kdWxlKTsgfSBpZiAoJHRoaXMtPmlzTWV0aG9kRXhwb3NlZCgkbW9kZSkpIHsgJHRoaXMtPmludm9rZUV4cG9zZWRNZXRob2QoJG1vZGUsICRyZXF1ZXN0KTsgfSBlbHNlIHsgJHRoaXMtPnNob3dGaWVsZExheW91dCgkcmVxdWVzdCk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gc2hvd0ZpZWxkTGF5b3V0KFZ0aWdlcl9SZXF1ZXN0ICRyZXF1ZXN0KSB7ICRzb3VyY2VNb2R1bGUgPSAkcmVxdWVzdC0+Z2V0KCJceDczXHg2Zlx4NzVceDcyXDE0M1x4NjVceDRkXDE1N1wxNDRceDc1XHg2Y1wxNDUiKTsgJHN1cHBvcnRlZE1vZHVsZXNMaXN0ID0gU2V0dGluZ3NfTGF5b3V0RWRpdG9yX01vZHVsZV9Nb2RlbDo6Z2V0U3VwcG9ydGVkTW9kdWxlcygpOyAkc3VwcG9ydGVkTW9kdWxlc0xpc3QgPSBhcnJheV9mbGlwKCRzdXBwb3J0ZWRNb2R1bGVzTGlzdCk7IGtzb3J0KCRzdXBwb3J0ZWRNb2R1bGVzTGlzdCk7IGlmIChlbXB0eSgkc291cmNlTW9kdWxlKSkgeyAkc291cmNlTW9kdWxlID0gcmVzZXQoJHN1cHBvcnRlZE1vZHVsZXNMaXN0KTsgfSAkbW9kdWxlTW9kZWwgPSBTZXR0aW5nc19MYXlvdXRFZGl0b3JfTW9kdWxlX01vZGVsOjpnZXRJbnN0YW5jZUJ5TmFtZSgkc291cmNlTW9kdWxlKTsgJGZpZWxkTW9kZWxzID0gJG1vZHVsZU1vZGVsLT5nZXRGaWVsZHMoKTsgJGJsb2NrTW9kZWxzID0gJG1vZHVsZU1vZGVsLT5nZXRCbG9ja3MoKTsgJGJsb2NrSWRGaWVsZE1hcCA9IGFycmF5KCk7ICRpbmFjdGl2ZUZpZWxkcyA9IGFycmF5KCk7ICRoZWFkZXJGaWVsZHNDb3VudCA9IDA7ICRoZWFkZXJGaWVsZHNNZXRhID0gYXJyYXkoKTsgZm9yZWFjaCAoJGZpZWxkTW9kZWxzIGFzICRmaWVsZE1vZGVsKSB7ICRibG9ja0lkRmllbGRNYXBbJGZpZWxkTW9kZWwtPmdldEJsb2NrSWQoKV1bJGZpZWxkTW9kZWwtPmdldE5hbWUoKV0gPSAkZmllbGRNb2RlbDsgaWYgKCEkZmllbGRNb2RlbC0+aXNBY3RpdmVGaWVsZCgpKSB7ICRpbmFjdGl2ZUZpZWxkc1skZmllbGRNb2RlbC0+Z2V0QmxvY2tJZCgpXVskZmllbGRNb2RlbC0+Z2V0SWQoKV0gPSB2dHJhbnNsYXRlKCRmaWVsZE1vZGVsLT5nZXQoIlwxNTRceDYxXHg2MlwxNDVceDZjIiksICRzb3VyY2VNb2R1bGUpOyB9IGlmICgkZmllbGRNb2RlbC0+aXNIZWFkZXJGaWVsZCgpKSB7ICRoZWFkZXJGaWVsZHNDb3VudCsrOyB9ICRoZWFkZXJGaWVsZHNNZXRhWyRmaWVsZE1vZGVsLT5nZXRJZCgpXSA9ICRmaWVsZE1vZGVsLT5pc0hlYWRlckZpZWxkKCkgPyAxIDogMDsgfSBmb3JlYWNoICgkYmxvY2tNb2RlbHMgYXMgJGJsb2NrTGFiZWwgPT4gJGJsb2NrTW9kZWwpIHsgJGZpZWxkTW9kZWxMaXN0ID0gJGJsb2NrSWRGaWVsZE1hcFskYmxvY2tNb2RlbC0+Z2V0KCJceDY5XHg2NCIpXTsgJGJsb2NrTW9kZWwtPnNldEZpZWxkcygkZmllbGRNb2RlbExpc3QpOyB9ICRjbGVhbkZpZWxkTW9kZWwgPSBTZXR0aW5nc19MYXlvdXRFZGl0b3JfRmllbGRfTW9kZWw6OmdldENsZWFuSW5zdGFuY2UoKTsgJGNsZWFuRmllbGRNb2RlbC0+c2V0TW9kdWxlKCRtb2R1bGVNb2RlbCk7ICRxdWFsaWZpZWRNb2R1bGUgPSAkcmVxdWVzdC0+Z2V0TW9kdWxlKGZhbHNlKTsgJHZpZXdlciA9ICR0aGlzLT5nZXRWaWV3ZXIoJHJlcXVlc3QpOyAkdmlld2VyLT5hc3NpZ24oIlwxMDNceDRjXDEwNVx4NDFcMTE2XDEzN1x4NDZcMTExXDEwNVx4NGNcMTA0XDEzN1x4NGRcMTE3XDEwNFx4NDVceDRjIiwgJGNsZWFuRmllbGRNb2RlbCk7ICR2aWV3ZXItPmFzc2lnbigiXDEyMlx4NDVcMTIxXDEyNVwxMDVcMTIzXDEyNFx4NWZcMTExXDExNlwxMjNcMTI0XDEwMVx4NGVceDQzXHg0NSIsICRyZXF1ZXN0KTsgJHZpZXdlci0+YXNzaWduKCJcMTIzXHg0NVwxMTRcMTA1XHg0M1wxMjRceDQ1XHg0NFx4NWZceDRkXHg0Zlx4NDRcMTI1XDExNFx4NDVcMTM3XDExNlwxMDFceDRkXDEwNSIsICRzb3VyY2VNb2R1bGUpOyAkdmlld2VyLT5hc3NpZ24oIlwxMjNceDQ1XDExNFx4NDVcMTAzXHg1NFwxMDVcMTA0XDEzN1x4NGRcMTE3XDEwNFwxMjVcMTE0XDEwNVwxMzdceDRkXHg0ZlwxMDRceDQ1XHg0YyIsICRtb2R1bGVNb2RlbCk7ICR2aWV3ZXItPmFzc2lnbigiXHg0MlwxMTRceDRmXHg0M1x4NGJcMTIzIiwgJGJsb2NrTW9kZWxzKTsgJHZpZXdlci0+YXNzaWduKCJceDUzXDEyNVwxMjBceDUwXDExN1x4NTJcMTI0XHg0NVx4NDRceDVmXDExNVwxMTdceDQ0XDEyNVwxMTRceDQ1XDEyMyIsICRzdXBwb3J0ZWRNb2R1bGVzTGlzdCk7ICR2aWV3ZXItPmFzc2lnbigiXHg0MVwxMDRcMTA0XHg1ZlwxMjNcMTI1XDEyMFx4NTBceDRmXDEyMlwxMjRcMTA1XHg0NFx4NWZcMTA2XHg0OVx4NDVceDRjXDEwNFwxMzdceDU0XDEzMVwxMjBceDQ1XDEyMyIsICRtb2R1bGVNb2RlbC0+Z2V0QWRkU3VwcG9ydGVkRmllbGRUeXBlcygpKTsgJHZpZXdlci0+YXNzaWduKCJcMTA2XDExMVwxMDVcMTE0XDEwNFx4NWZceDU0XDEzMVwxMjBcMTA1XDEzN1wxMTFceDRlXDEwNlwxMTciLCAkbW9kdWxlTW9kZWwtPmdldEFkZEZpZWxkVHlwZUluZm8oKSk7ICR2aWV3ZXItPmFzc2lnbigiXDEyNVx4NTNceDQ1XHg1MlwxMzdceDRkXDExN1wxMDRceDQ1XDExNCIsIFVzZXJzX1JlY29yZF9Nb2RlbDo6Z2V0Q3VycmVudFVzZXJNb2RlbCgpKTsgJHZpZXdlci0+YXNzaWduKCJcMTIxXDEyNVx4NDFcMTE0XDExMVx4NDZcMTExXDEwNVwxMDRceDVmXHg0ZFx4NGZcMTA0XDEyNVx4NGNceDQ1IiwgJHF1YWxpZmllZE1vZHVsZSk7ICR2aWV3ZXItPmFzc2lnbigiXDExMVx4NGVcMTM3XDEwMVx4NDNceDU0XHg0OVx4NTZceDQ1XHg1Zlx4NDZceDQ5XDEwNVx4NGNcMTA0XHg1MyIsICRpbmFjdGl2ZUZpZWxkcyk7ICR2aWV3ZXItPmFzc2lnbigiXHg0OFwxMDVcMTAxXDEwNFwxMDVceDUyXHg1ZlwxMDZcMTExXDEwNVwxMTRceDQ0XHg1M1wxMzdcMTAzXHg0Zlx4NTVcMTE2XDEyNCIsICRoZWFkZXJGaWVsZHNDb3VudCk7ICR2aWV3ZXItPmFzc2lnbigiXHg0OFwxMDVceDQxXDEwNFwxMDVceDUyXDEzN1x4NDZcMTExXDEwNVwxMTRceDQ0XHg1M1x4NWZceDRkXDEwNVwxMjRceDQxIiwgJGhlYWRlckZpZWxkc01ldGEpOyAkY2xlYW5GaWVsZE1vZGVsID0gU2V0dGluZ3NfTGF5b3V0RWRpdG9yX0ZpZWxkX01vZGVsOjpnZXRDbGVhbkluc3RhbmNlKCk7ICRjbGVhbkZpZWxkTW9kZWwtPnNldE1vZHVsZSgkbW9kdWxlTW9kZWwpOyAkc291cmNlTW9kdWxlTW9kZWwgPSBWdGlnZXJfTW9kdWxlX01vZGVsOjpnZXRJbnN0YW5jZSgkc291cmNlTW9kdWxlKTsgJHRoaXMtPnNldE1vZHVsZUluZm8oJHJlcXVlc3QsICRzb3VyY2VNb2R1bGVNb2RlbCwgJGNsZWFuRmllbGRNb2RlbCk7IGlmICgkcmVxdWVzdC0+aXNBamF4KCkgJiYgISRyZXF1ZXN0LT5nZXQoIlx4NzNceDY4XHg2Zlx4NzdceDQ2XHg3NVwxNTRceDZjXDEwM1x4NmZcMTU2XHg3NFx4NjVceDZlXDE2NFx4NzMiKSkgeyAkdmlld2VyLT52aWV3KCJcMTA2XHg2OVwxNDVceDZjXHg2NFwxNjNceDRjXDE1MVx4NzNceDc0XHgyZVx4NzRceDcwXDE1NCIsICRxdWFsaWZpZWRNb2R1bGUpOyB9IGVsc2UgeyAkdmlld2VyLT52aWV3KCJcMTExXDE1NlwxNDRceDY1XDE3MFw1NlwxNjRceDcwXHg2YyIsICRxdWFsaWZpZWRNb2R1bGUpOyB9IH0gcHVibGljIGZ1bmN0aW9uIHNob3dSZWxhdGVkTGlzdExheW91dChWdGlnZXJfUmVxdWVzdCAkcmVxdWVzdCkgeyAkc291cmNlTW9kdWxlID0gJHJlcXVlc3QtPmdldCgiXHg3M1wxNTdceDc1XDE2MlwxNDNceDY1XDExNVx4NmZceDY0XHg3NVx4NmNceDY1Iik7ICRzdXBwb3J0ZWRNb2R1bGVzTGlzdCA9IFNldHRpbmdzX0xheW91dEVkaXRvcl9Nb2R1bGVfTW9kZWw6OmdldFN1cHBvcnRlZE1vZHVsZXMoKTsgaWYgKGVtcHR5KCRzb3VyY2VNb2R1bGUpKSB7ICRtb2R1bGVJbnN0YW5jZSA9IHJlc2V0KCRzdXBwb3J0ZWRNb2R1bGVzTGlzdCk7ICRzb3VyY2VNb2R1bGUgPSAkbW9kdWxlSW5zdGFuY2UtPmdldE5hbWUoKTsgfSAkbW9kdWxlTW9kZWwgPSBTZXR0aW5nc19MYXlvdXRFZGl0b3JfTW9kdWxlX01vZGVsOjpnZXRJbnN0YW5jZUJ5TmFtZSgkc291cmNlTW9kdWxlKTsgJHJlbGF0ZWRNb2R1bGVNb2RlbHMgPSAkbW9kdWxlTW9kZWwtPmdldFJlbGF0aW9ucygpOyAkaGlkZGVuUmVsYXRpb25UYWJFeGlzdHMgPSBmYWxzZTsgZm9yZWFjaCAoJHJlbGF0ZWRNb2R1bGVNb2RlbHMgYXMgJHJlbGF0aW9uTW9kZWwpIHsgaWYgKCEkcmVsYXRpb25Nb2RlbC0+aXNBY3RpdmUoKSkgeyAkaGlkZGVuUmVsYXRpb25UYWJFeGlzdHMgPSB0cnVlOyBicmVhazsgfSB9ICRyZWxhdGlvbkZpZWxkcyA9IGFycmF5KCk7ICRyZWZlcmVuY2VGaWVsZHMgPSAkbW9kdWxlTW9kZWwtPmdldEZpZWxkc0J5VHlwZSgiXHg3Mlx4NjVceDY2XDE0NVwxNjJceDY1XDE1NlwxNDNceDY1Iik7IGZvcmVhY2ggKCRyZWZlcmVuY2VGaWVsZHMgYXMgJGZpZWxkTW9kZWwpIHsgaWYgKCRmaWVsZE1vZGVsLT5nZXQoIlwxNjVcMTUxXDE2NFwxNzFcMTYwXDE0NSIpID09ICJceDM1XHgzMiIgfHwgISRmaWVsZE1vZGVsLT5pc0FjdGl2ZUZpZWxkKCkpIHsgY29udGludWU7IH0gJHJlbGF0aW9uVHlwZSA9ICRtb2R1bGVNb2RlbC0+Z2V0UmVsYXRpb25UeXBlRnJvbVJlbGF0aW9uRmllbGQoJGZpZWxkTW9kZWwpOyAkZmllbGRNb2RlbC0+c2V0KCJceDVmXDE2MlwxNDVceDZjXDE0MVwxNjRcMTUxXHg2ZlwxNTZceDU0XDE3MVwxNjBceDY1IiwgJHJlbGF0aW9uVHlwZSk7ICRyZWxhdGlvbkZpZWxkc1skZmllbGRNb2RlbC0+Z2V0TmFtZSgpXSA9ICRmaWVsZE1vZGVsOyB9ICRxdWFsaWZpZWRNb2R1bGUgPSAkcmVxdWVzdC0+Z2V0TW9kdWxlKGZhbHNlKTsgJHZpZXdlciA9ICR0aGlzLT5nZXRWaWV3ZXIoJHJlcXVlc3QpOyAkdmlld2VyLT5hc3NpZ24oIlwxMjNceDQ1XHg0Y1x4NDVceDQzXHg1NFwxMDVceDQ0XDEzN1x4NGRceDRmXDEwNFx4NTVcMTE0XDEwNVx4NWZceDRlXHg0MVwxMTVceDQ1IiwgJHNvdXJjZU1vZHVsZSk7ICR2aWV3ZXItPmFzc2lnbigiXDEyMlx4NDVcMTE0XHg0MVx4NTRcMTA1XDEwNFx4NWZcMTE1XDExN1wxMDRcMTI1XHg0Y1wxMDVcMTIzIiwgJHJlbGF0ZWRNb2R1bGVNb2RlbHMpOyAkdmlld2VyLT5hc3NpZ24oIlwxMjJcMTA1XHg0Y1x4NDFceDU0XHg0OVwxMTdceDRlXHg1Zlx4NDZcMTExXHg0NVwxMTRcMTA0XDEyMyIsICRyZWxhdGlvbkZpZWxkcyk7ICR2aWV3ZXItPmFzc2lnbigiXDExMFwxMTFcMTA0XHg0NFx4NDVcMTE2XDEzN1wxMjRcMTAxXHg0Mlx4NWZcMTA1XHg1OFx4NDlcMTIzXDEyNFx4NTMiLCAkaGlkZGVuUmVsYXRpb25UYWJFeGlzdHMpOyAkdmlld2VyLT5hc3NpZ24oIlx4NGRcMTE3XHg0NFwxMjVceDRjXDEwNVwxMzdceDRkXDExN1x4NDRceDQ1XHg0YyIsICRtb2R1bGVNb2RlbCk7ICR2aWV3ZXItPmFzc2lnbigiXHg1MVwxMjVceDQxXHg0Y1wxMTFceDQ2XDExMVwxMDVcMTA0XDEzN1wxMTVcMTE3XDEwNFx4NTVcMTE0XDEwNSIsICRxdWFsaWZpZWRNb2R1bGUpOyBpZiAoJHJlcXVlc3QtPmlzQWpheCgpICYmICEkcmVxdWVzdC0+Z2V0KCJcMTYzXHg2OFwxNTdceDc3XHg0Nlx4NzVceDZjXHg2Y1x4NDNcMTU3XHg2ZVwxNjRcMTQ1XDE1Nlx4NzRceDczIikpIHsgJHZpZXdlci0+dmlldygiXDEyMlwxNDVceDZjXHg2MVwxNjRcMTQ1XHg2NFwxMTRceDY5XDE2M1x4NzRcNTZceDc0XHg3MFx4NmMiLCAkcXVhbGlmaWVkTW9kdWxlKTsgfSBlbHNlIHsgJHZpZXdlci0+dmlldygiXDExMVwxNTZcMTQ0XHg2NVwxNzBceDJlXHg3NFx4NzBcMTU0IiwgJHF1YWxpZmllZE1vZHVsZSk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gc2hvd0ZpZWxkRWRpdChWdGlnZXJfUmVxdWVzdCAkcmVxdWVzdCkgeyAkc291cmNlTW9kdWxlID0gJHJlcXVlc3QtPmdldCgiXDE2M1x4NmZcMTY1XDE2MlwxNDNceDY1XDExNVx4NmZceDY0XHg3NVx4NmNceDY1Iik7ICRmaWVsZElkID0gJHJlcXVlc3QtPmdldCgiXHg2Nlx4NjlcMTQ1XHg2Y1x4NjRcMTUxXHg2NCIpOyAkZmllbGRJbnN0YW5jZSA9IFNldHRpbmdzX0xheW91dEVkaXRvcl9GaWVsZF9Nb2RlbDo6Z2V0SW5zdGFuY2UoJGZpZWxkSWQpOyAkbW9kdWxlTW9kZWwgPSBTZXR0aW5nc19MYXlvdXRFZGl0b3JfTW9kdWxlX01vZGVsOjpnZXRJbnN0YW5jZUJ5TmFtZSgkc291cmNlTW9kdWxlKTsgJGZpZWxkTW9kZWxzID0gJG1vZHVsZU1vZGVsLT5nZXRGaWVsZHMoKTsgJGhlYWRlckZpZWxkc0NvdW50ID0gMDsgZm9yZWFjaCAoJGZpZWxkTW9kZWxzIGFzICRmaWVsZE1vZGVsKSB7IGlmICgkZmllbGRNb2RlbC0+aXNIZWFkZXJGaWVsZCgpKSB7ICRoZWFkZXJGaWVsZHNDb3VudCsrOyB9IH0gJHF1YWxpZmllZE1vZHVsZSA9ICRyZXF1ZXN0LT5nZXRNb2R1bGUoZmFsc2UpOyAkdmlld2VyID0gJHRoaXMtPmdldFZpZXdlcigkcmVxdWVzdCk7ICR2aWV3ZXItPmFzc2lnbigiXHg0Nlx4NDlcMTA1XHg0Y1x4NDRcMTM3XHg0OVx4NGVcMTA2XDExNyIsICRmaWVsZEluc3RhbmNlLT5nZXRGaWVsZEluZm8oKSk7ICR2aWV3ZXItPmFzc2lnbigiXHg1M1x4NDVceDRjXHg0NVwxMDNceDU0XDEwNVx4NDRceDVmXHg0ZFx4NGZcMTA0XHg1NVx4NGNceDQ1XDEzN1wxMTZcMTAxXDExNVx4NDUiLCAkc291cmNlTW9kdWxlKTsgJHZpZXdlci0+YXNzaWduKCJcMTAxXHg0NFwxMDRceDVmXHg1M1x4NTVcMTIwXHg1MFwxMTdceDUyXHg1NFwxMDVceDQ0XDEzN1wxMDZceDQ5XHg0NVwxMTRcMTA0XDEzN1x4NTRcMTMxXHg1MFx4NDVceDUzIiwgJG1vZHVsZU1vZGVsLT5nZXRBZGRTdXBwb3J0ZWRGaWVsZFR5cGVzKCkpOyAkdmlld2VyLT5hc3NpZ24oIlx4NDZceDQ5XDEwNVwxMTRcMTA0XHg1ZlwxMjRceDU5XDEyMFx4NDVceDVmXHg0OVwxMTZcMTA2XDExNyIsICRtb2R1bGVNb2RlbC0+Z2V0QWRkRmllbGRUeXBlSW5mbygpKTsgJHZpZXdlci0+YXNzaWduKCJceDQ2XHg0OVx4NDVcMTE0XDEwNFx4NWZcMTE1XDExN1wxMDRceDQ1XHg0YyIsICRmaWVsZEluc3RhbmNlKTsgJHZpZXdlci0+YXNzaWduKCJceDQ5XHg1M1wxMzdceDQ2XHg0OVx4NDVcMTE0XDEwNFwxMzdceDQ1XDEwNFx4NDlceDU0XDEzN1x4NGRcMTE3XDEwNFwxMDUiLCB0cnVlKTsgJHZpZXdlci0+YXNzaWduKCJceDUxXDEyNVwxMDFceDRjXDExMVwxMDZceDQ5XDEwNVx4NDRceDVmXDExNVwxMTdcMTA0XHg1NVx4NGNceDQ1IiwgJHF1YWxpZmllZE1vZHVsZSk7ICR2aWV3ZXItPmFzc2lnbigiXDEyNVx4NTNcMTA1XHg1Mlx4NWZceDRkXHg0ZlwxMDRceDQ1XDExNCIsIFVzZXJzX1JlY29yZF9Nb2RlbDo6Z2V0Q3VycmVudFVzZXJNb2RlbCgpKTsgJHZpZXdlci0+YXNzaWduKCJcMTEwXHg0NVwxMDFcMTA0XDEwNVx4NTJceDVmXDEwNlwxMTFcMTA1XHg0Y1x4NDRcMTIzXDEzN1wxMDNcMTE3XDEyNVx4NGVcMTI0IiwgJGhlYWRlckZpZWxkc0NvdW50KTsgJHZpZXdlci0+YXNzaWduKCJcMTExXDEyM1x4NWZcMTE2XHg0MVwxMTVceDQ1XHg1ZlwxMDZceDQ5XDEwNVx4NGNceDQ0IiwgaW5fYXJyYXkoJGZpZWxkSW5zdGFuY2UtPmdldE5hbWUoKSwgJG1vZHVsZU1vZGVsLT5nZXROYW1lRmllbGRzKCkpKTsgJGNsZWFuRmllbGRNb2RlbCA9IFNldHRpbmdzX0xheW91dEVkaXRvcl9GaWVsZF9Nb2RlbDo6Z2V0Q2xlYW5JbnN0YW5jZSgpOyAkY2xlYW5GaWVsZE1vZGVsLT5zZXRNb2R1bGUoJG1vZHVsZU1vZGVsKTsgJHNvdXJjZU1vZHVsZU1vZGVsID0gVnRpZ2VyX01vZHVsZV9Nb2RlbDo6Z2V0SW5zdGFuY2UoJHNvdXJjZU1vZHVsZSk7ICR0aGlzLT5zZXRNb2R1bGVJbmZvKCRyZXF1ZXN0LCAkc291cmNlTW9kdWxlTW9kZWwsICRjbGVhbkZpZWxkTW9kZWwpOyAkdmlld2VyLT52aWV3KCJcMTA2XHg2OVx4NjVceDZjXHg2NFwxMDNcMTYyXHg2NVx4NjFceDc0XDE0NVx4MmVcMTY0XDE2MFx4NmMiLCAkcXVhbGlmaWVkTW9kdWxlKTsgfSBwdWJsaWMgZnVuY3Rpb24gc2hvd0R1cGxpY2F0aW9uSGFuZGxpbmcoVnRpZ2VyX1JlcXVlc3QgJHJlcXVlc3QpIHsgJHF1YWxpZmllZE1vZHVsZSA9ICRyZXF1ZXN0LT5nZXRNb2R1bGUoZmFsc2UpOyAkc291cmNlTW9kdWxlTmFtZSA9ICRyZXF1ZXN0LT5nZXQoIlx4NzNceDZmXDE2NVx4NzJceDYzXDE0NVwxMTVceDZmXHg2NFwxNjVceDZjXDE0NSIpOyAkbW9kdWxlTW9kZWwgPSBWdGlnZXJfTW9kdWxlX01vZGVsOjpnZXRJbnN0YW5jZSgkc291cmNlTW9kdWxlTmFtZSk7ICRibG9ja3MgPSAkbW9kdWxlTW9kZWwtPmdldEJsb2NrcygpOyAkZmllbGRzID0gYXJyYXkoKTsgZm9yZWFjaCAoJGJsb2NrcyBhcyAkYmxvY2tJZCA9PiAkYmxvY2tNb2RlbCkgeyAkYmxvY2tGaWVsZHMgPSAkYmxvY2tNb2RlbC0+Z2V0RmllbGRzKCk7IGZvcmVhY2ggKCRibG9ja0ZpZWxkcyBhcyAka2V5ID0+ICRmaWVsZE1vZGVsKSB7IGlmICgkZmllbGRNb2RlbC0+aXNFZGl0YWJsZSgpICYmICRmaWVsZE1vZGVsLT5nZXQoIlwxNDRceDY5XHg3M1x4NzBceDZjXDE0MVx4NzlcMTY0XHg3OVwxNjBceDY1IikgIT0gNSAmJiAhaW5fYXJyYXkoJGZpZWxkTW9kZWwtPmdldCgiXDE2NVx4NjlcMTY0XHg3OVx4NzBcMTQ1IiksIGFycmF5KDI4LCAzMCwgNTMsIDU2LCA2OSwgODMpKSAmJiAhaW5fYXJyYXkoJGZpZWxkTW9kZWwtPmdldEZpZWxkRGF0YVR5cGUoKSwgYXJyYXkoIlx4NzRcMTQ1XHg3OFwxNjQiLCAiXHg2ZFwxNjVcMTU0XDE2NFwxNTFcMTYyXDE0NVx4NjZcMTQ1XHg3Mlx4NjVcMTU2XDE0M1wxNDUiKSkpIHsgJGZpZWxkc1skYmxvY2tNb2RlbC0+Z2V0KCJceDZjXDE0MVx4NjJcMTQ1XDE1NCIpXVskZmllbGRNb2RlbC0+Z2V0TmFtZSgpXSA9ICRmaWVsZE1vZGVsOyB9IH0gfSAkdmlld2VyID0gJHRoaXMtPmdldFZpZXdlcigkcmVxdWVzdCk7ICR2aWV3ZXItPmFzc2lnbigiXHg0Nlx4NDlcMTA1XHg0Y1x4NDRceDUzIiwgJGZpZWxkcyk7ICR2aWV3ZXItPmFzc2lnbigiXHg1M1x4NGZceDU1XHg1Mlx4NDNceDQ1XHg1Zlx4NGRcMTE3XDEwNFwxMjVceDRjXHg0NSIsICRzb3VyY2VNb2R1bGVOYW1lKTsgJHZpZXdlci0+YXNzaWduKCJceDUxXDEyNVx4NDFceDRjXHg0OVx4NDZceDQ5XDEwNVwxMDRcMTM3XHg0ZFwxMTdceDQ0XHg1NVx4NGNceDQ1IiwgJHF1YWxpZmllZE1vZHVsZSk7ICR2aWV3ZXItPmFzc2lnbigiXHg1M1wxMTdceDU1XDEyMlx4NDNceDQ1XHg1Zlx4NGRceDRmXDEwNFx4NTVceDRjXDEwNVwxMzdceDRkXDExN1x4NDRcMTA1XDExNCIsICRtb2R1bGVNb2RlbCk7ICR2aWV3ZXItPmFzc2lnbigiXHg0MVwxMDNcMTI0XHg0OVwxMTdceDRlXHg1MyIsIFZ0aWdlcl9Nb2R1bGVfTW9kZWw6OmdldFN5bmNBY3Rpb25zSW5EdXBsaWNhdGVzQ2hlY2soKSk7ICR2aWV3ZXItPmFzc2lnbigiXHg1NVwxMjNcMTA1XDEyMlwxMzdceDRkXHg0Zlx4NDRcMTA1XDExNCIsIFVzZXJzX1JlY29yZF9Nb2RlbDo6Z2V0Q3VycmVudFVzZXJNb2RlbCgpKTsgaWYgKCRyZXF1ZXN0LT5pc0FqYXgoKSAmJiAhJHJlcXVlc3QtPmdldCgiXHg3M1wxNTBceDZmXHg3N1x4NDZcMTY1XDE1NFx4NmNceDQzXHg2Zlx4NmVcMTY0XHg2NVwxNTZcMTY0XDE2MyIpKSB7ICR2aWV3ZXItPnZpZXcoIlwxMDRceDc1XDE2MFwxNTRcMTUxXHg2M1wxNDFcMTY0XHg2NVx4NDhceDYxXDE1NlwxNDRceDZjXHg2OVx4NmVceDY3XHgyZVx4NzRceDcwXHg2YyIsICRxdWFsaWZpZWRNb2R1bGUpOyB9IGVsc2UgeyAkdmlld2VyLT52aWV3KCJcMTExXHg2ZVx4NjRcMTQ1XDE3MFw1NlwxNjRcMTYwXDE1NCIsICRxdWFsaWZpZWRNb2R1bGUpOyB9IH0gcHVibGljIGZ1bmN0aW9uIHNob3dBZGRSZWxhdGlvbihWdGlnZXJfUmVxdWVzdCAkcmVxdWVzdCkgeyAkc291cmNlTW9kdWxlID0gJHJlcXVlc3QtPmdldCgiXHg3M1x4NmZcMTY1XHg3MlwxNDNceDY1XHg0ZFwxNTdceDY0XHg3NVwxNTRceDY1Iik7ICRzdXBwb3J0ZWRNb2R1bGVzTGlzdCA9IFNldHRpbmdzX0xheW91dEVkaXRvcl9Nb2R1bGVfTW9kZWw6OmdldFN1cHBvcnRlZE1vZHVsZXMoKTsgJHN1cHBvcnRlZE1vZHVsZXNMaXN0ID0gYXJyYXlfZmxpcCgkc3VwcG9ydGVkTW9kdWxlc0xpc3QpOyBrc29ydCgkc3VwcG9ydGVkTW9kdWxlc0xpc3QpOyBpZiAoZW1wdHkoJHNvdXJjZU1vZHVsZSkpIHsgJG1vZHVsZUluc3RhbmNlID0gcmVzZXQoJHN1cHBvcnRlZE1vZHVsZXNMaXN0KTsgJHNvdXJjZU1vZHVsZSA9ICRtb2R1bGVJbnN0YW5jZS0+Z2V0TmFtZSgpOyB9ICRtb2R1bGVNb2RlbCA9IFNldHRpbmdzX0xheW91dEVkaXRvcl9Nb2R1bGVfTW9kZWw6OmdldEluc3RhbmNlQnlOYW1lKCRzb3VyY2VNb2R1bGUpOyAkcmVsYXRlZE1vZHVsZU1vZGVscyA9ICRtb2R1bGVNb2RlbC0+Z2V0UmVsYXRpb25zKCk7ICRoaWRkZW5SZWxhdGlvblRhYkV4aXN0cyA9IGZhbHNlOyBmb3JlYWNoICgkcmVsYXRlZE1vZHVsZU1vZGVscyBhcyAkcmVsYXRpb25Nb2RlbCkgeyBpZiAoISRyZWxhdGlvbk1vZGVsLT5pc0FjdGl2ZSgpKSB7ICRoaWRkZW5SZWxhdGlvblRhYkV4aXN0cyA9IHRydWU7IGJyZWFrOyB9IH0gJHJlbGF0aW9uRmllbGRzID0gYXJyYXkoKTsgJHJlZmVyZW5jZUZpZWxkcyA9ICRtb2R1bGVNb2RlbC0+Z2V0RmllbGRzQnlUeXBlKCJcMTYyXHg2NVwxNDZcMTQ1XHg3Mlx4NjVceDZlXHg2M1x4NjUiKTsgZm9yZWFjaCAoJHJlZmVyZW5jZUZpZWxkcyBhcyAkZmllbGRNb2RlbCkgeyBpZiAoJGZpZWxkTW9kZWwtPmdldCgiXHg3NVx4NjlcMTY0XDE3MVwxNjBcMTQ1IikgPT0gIlw2NVw2MiIgfHwgISRmaWVsZE1vZGVsLT5pc0FjdGl2ZUZpZWxkKCkpIHsgY29udGludWU7IH0gJHJlbGF0aW9uVHlwZSA9ICRtb2R1bGVNb2RlbC0+Z2V0UmVsYXRpb25UeXBlRnJvbVJlbGF0aW9uRmllbGQoJGZpZWxkTW9kZWwpOyAkZmllbGRNb2RlbC0+c2V0KCJceDVmXHg3MlwxNDVceDZjXDE0MVwxNjRceDY5XHg2Zlx4NmVcMTI0XDE3MVwxNjBcMTQ1IiwgJHJlbGF0aW9uVHlwZSk7ICRyZWxhdGlvbkZpZWxkc1skZmllbGRNb2RlbC0+Z2V0TmFtZSgpXSA9ICRmaWVsZE1vZGVsOyB9ICRxdWFsaWZpZWRNb2R1bGUgPSAkcmVxdWVzdC0+Z2V0TW9kdWxlKGZhbHNlKTsgJHZpZXdlciA9ICR0aGlzLT5nZXRWaWV3ZXIoJHJlcXVlc3QpOyAkdmlld2VyLT5hc3NpZ24oIlwxMjNcMTA1XHg0Y1x4NDVceDQzXDEyNFx4NDVceDQ0XDEzN1wxMTVceDRmXDEwNFx4NTVcMTE0XHg0NVx4NWZceDRlXDEwMVx4NGRcMTA1IiwgJHNvdXJjZU1vZHVsZSk7ICR2aWV3ZXItPmFzc2lnbigiXDEyMlx4NDVcMTE0XDEwMVx4NTRceDQ1XDEwNFwxMzdcMTE1XDExN1wxMDRceDU1XDExNFx4NDVceDUzIiwgJHJlbGF0ZWRNb2R1bGVNb2RlbHMpOyAkdmlld2VyLT5hc3NpZ24oIlx4NTNceDU1XHg1MFwxMjBcMTE3XHg1Mlx4NTRceDQ1XDEwNFx4NWZceDRkXHg0ZlwxMDRceDU1XDExNFx4NDVceDUzIiwgJHN1cHBvcnRlZE1vZHVsZXNMaXN0KTsgJHZpZXdlci0+YXNzaWduKCJcMTIyXDEwNVwxMTRceDQxXHg1NFx4NDlcMTE3XHg0ZVx4NWZceDQ2XDExMVwxMDVceDRjXDEwNFwxMjMiLCAkcmVsYXRpb25GaWVsZHMpOyAkdmlld2VyLT5hc3NpZ24oIlwxMTBceDQ5XDEwNFwxMDRceDQ1XDExNlx4NWZceDU0XDEwMVx4NDJcMTM3XHg0NVx4NThcMTExXDEyM1x4NTRcMTIzIiwgJGhpZGRlblJlbGF0aW9uVGFiRXhpc3RzKTsgJHZpZXdlci0+YXNzaWduKCJcMTE1XHg0ZlwxMDRcMTI1XDExNFwxMDVceDVmXHg0ZFx4NGZceDQ0XHg0NVwxMTQiLCAkbW9kdWxlTW9kZWwpOyAkdmlld2VyLT5hc3NpZ24oIlwxMjFcMTI1XHg0MVwxMTRcMTExXHg0NlwxMTFcMTA1XDEwNFx4NWZceDRkXHg0Zlx4NDRceDU1XHg0Y1wxMDUiLCAkcXVhbGlmaWVkTW9kdWxlKTsgJHZpZXdlci0+dmlldygiXDEyMlx4NjVceDZjXHg2MVwxNjRceDY5XDE1N1wxNTZcMTAxXHg2NFwxNDRcNTZcMTY0XHg3MFx4NmMiLCAkcXVhbGlmaWVkTW9kdWxlKTsgfSBwdWJsaWMgZnVuY3Rpb24gYWRkUmVsYXRpb24oVnRpZ2VyX1JlcXVlc3QgJHJlcXVlc3QpIHsgJHNvdXJjZU1vZHVsZSA9ICRyZXF1ZXN0LT5nZXQoIlwxNjNceDZmXDE2NVwxNjJceDYzXHg2NVx4NGRceDZmXHg2NFx4NzVceDZjXHg2NSIpOyAkcmVsYXRlZE1vZHVsZSA9ICRyZXF1ZXN0LT5nZXQoIlx4NzJcMTQ1XDE1NFwxNDFceDc0XHg2NVx4NjRcMTE1XHg2ZlwxNDRcMTY1XHg2Y1x4NjUiKTsgJGZpZWxkSW5QcmltYXJ5ID0gJHJlcXVlc3QtPmdldCgiXDE0NlwxNTFcMTQ1XDE1NFx4NjRceDQ5XHg2ZVwxMjBceDcyXDE1MVwxNTVceDYxXDE2Mlx4NzkiKTsgJGZpZWxkSW5SZWxhdGVkID0gJHJlcXVlc3QtPmdldCgiXHg2Nlx4NjlcMTQ1XDE1NFwxNDRcMTExXDE1Nlx4NTJceDY1XDE1NFx4NjFcMTY0XHg2NVwxNDQiKTsgJHJlbGF0aW9uVHlwZSA9ICRyZXF1ZXN0LT5nZXQoIlwxNjJcMTQ1XHg2Y1wxNDFceDc0XHg2OVwxNTdcMTU2XHg1NFx4NzlcMTYwXDE0NSIpOyAkdGFiSW5QcmltYXJ5ID0gJHJlcXVlc3QtPmdldCgiXDE2NFx4NjFcMTQyXDExMVx4NmVcMTIwXHg3MlwxNTFceDZkXDE0MVx4NzJcMTcxIik7ICR0YWJJblJlbGF0ZWQgPSAkcmVxdWVzdC0+Z2V0KCJcMTY0XDE0MVwxNDJcMTExXDE1Nlx4NTJceDY1XHg2Y1x4NjFcMTY0XHg2NVx4NjQiKTsgaW5jbHVkZV9vbmNlICJcMTY2XHg3NFx4NmNceDY5XDE0Mlw1N1x4NTZceDc0XHg2OVwxNDdcMTQ1XHg3Mlx4MmZcMTE1XDE0NVx4NmVceDc1XDU2XHg3MFwxNTBcMTYwIjsgaW5jbHVkZV9vbmNlICJceDc2XDE2NFwxNTRcMTUxXDE0Mlx4MmZceDU2XDE2NFwxNTFceDY3XDE0NVx4NzJceDJmXHg0ZFx4NmZceDY0XDE2NVx4NmNceDY1XDU2XDE2MFwxNTBcMTYwIjsgZ2xvYmFsICRhZGI7ICRmaWVsZEluUHJpbWFyeSA9ICJceDYzXHg2NlwxMzciIC4gcHJlZ19yZXBsYWNlKCJcNTdcNTBcNDBcNTJcNTFceDJmIiwgJycsIHN0cnRvbG93ZXIoJGZpZWxkSW5QcmltYXJ5KSk7ICRmaWVsZEluUmVsYXRlZCA9ICJceDYzXDE0Nlx4NWYiIC4gcHJlZ19yZXBsYWNlKCJcNTdceDI4XDQwXHgyYVx4MjlceDJmIiwgJycsIHN0cnRvbG93ZXIoJGZpZWxkSW5SZWxhdGVkKSk7ICR0YWJpZHNvdXJjZU1vZHVsZSA9IGdldFRhYmlkKCRzb3VyY2VNb2R1bGUpOyAkdGFiaWRyZWxhdGVkTW9kdWxlID0gZ2V0VGFiaWQoJHJlbGF0ZWRNb2R1bGUpOyAkcGFyZW50ID0gJGFkYi0+cHF1ZXJ5KCJceDczXDE0NVx4NmNcMTQ1XDE0M1x4NzRcNDBceDJhXHgyMFx4NjZceDcyXDE1N1wxNTVceDIwXDE2NlwxNjRceDY5XHg2N1wxNDVceDcyXHg1Zlx4NjJceDZjXDE1N1wxNDNceDZiXHg3M1x4MjBceDc3XHg2OFx4NjVceDcyXHg2NVw0MFx4NzRcMTQxXDE0MlwxNTFcMTQ0XHgyMFx4M2R7JHRhYmlkc291cmNlTW9kdWxlfVx4MjBceDYxXHg2ZVx4NjRcNDBceDczXDE0NVwxNjFceDc1XDE0NVwxNTZcMTQzXDE0NVx4MjBceDNkXDQwXDYxIik7ICRibG9ja2xhYmVsX3BhcmVudCA9ICRhZGItPnF1ZXJ5X3Jlc3VsdCgkcGFyZW50LCAwLCAiXHg2MlwxNTRcMTU3XHg2M1wxNTNceDZjXHg2MVx4NjJceDY1XHg2YyIpOyAkY2hpbGQgPSAkYWRiLT5wcXVlcnkoIlx4NzNcMTQ1XDE1NFx4NjVceDYzXHg3NFx4MjBceDJhXDQwXDE0NlwxNjJcMTU3XDE1NVw0MFx4NzZcMTY0XHg2OVx4NjdcMTQ1XHg3MlwxMzdceDYyXHg2Y1x4NmZceDYzXDE1M1wxNjNceDIwXHg3N1wxNTBceDY1XDE2MlwxNDVcNDBcMTY0XDE0MVx4NjJcMTUxXHg2NFw0MFx4M2R7JHRhYmlkcmVsYXRlZE1vZHVsZX1cNDBcMTQxXDE1Nlx4NjRceDIwXDE2M1wxNDVcMTYxXDE2NVwxNDVceDZlXDE0M1x4NjVceDIwXDc1XDQwXHgzMSIpOyAkYmxvY2tsYWJlbF9jaGlsZCA9ICRhZGItPnF1ZXJ5X3Jlc3VsdCgkY2hpbGQsIDAsICJceDYyXDE1NFwxNTdcMTQzXHg2Ylx4NmNcMTQxXHg2MlwxNDVceDZjIik7IGlmICgkcmVsYXRpb25UeXBlID09ICJcNjFceDNhXDYxIikgeyAkbW9kdWxlID0gbmV3IFZ0aWdlcl9Nb2R1bGUoKTsgJG1vZHVsZS0+bmFtZSA9ICRzb3VyY2VNb2R1bGU7ICRtb2R1bGUgPSAkbW9kdWxlLT5nZXRJbnN0YW5jZSgkc291cmNlTW9kdWxlKTsgJGJsb2NrMSA9IG5ldyBWdGlnZXJfQmxvY2soKTsgJGJsb2NrMS0+bGFiZWwgPSAkYmxvY2tsYWJlbF9wYXJlbnQ7ICRibG9jazEgPSAkYmxvY2sxLT5nZXRJbnN0YW5jZSgkYmxvY2sxLT5sYWJlbCwgJG1vZHVsZSk7ICRmaWVsZDIgPSBuZXcgVnRpZ2VyX0ZpZWxkKCk7ICRmaWVsZDItPm5hbWUgPSAkZmllbGRJblByaW1hcnk7ICRmaWVsZDItPmxhYmVsID0gJHJlcXVlc3QtPmdldCgiXHg2Nlx4NjlcMTQ1XHg2Y1x4NjRceDQ5XDE1Nlx4NTBcMTYyXDE1MVwxNTVcMTQxXHg3Mlx4NzkiKTsgJGZpZWxkMi0+dGFibGUgPSAkbW9kdWxlLT5iYXNldGFibGU7ICRmaWVsZDItPmNvbHVtbiA9ICRmaWVsZEluUHJpbWFyeTsgJGZpZWxkMi0+Y29sdW1udHlwZSA9ICJceDU2XHg0MVwxMjJceDQzXHg0OFwxMDFcMTIyXHgyOFx4MzVcNjBcNTEiOyAkZmllbGQyLT51aXR5cGUgPSAxMDsgJGZpZWxkMi0+dHlwZW9mZGF0YSA9ICJceDU2XDE3NlwxMTciOyAkYmxvY2sxLT5hZGRGaWVsZCgkZmllbGQyKTsgJGZpZWxkMi0+c2V0UmVsYXRlZE1vZHVsZXMoYXJyYXkoJHJlbGF0ZWRNb2R1bGUpKTsgJG1vZHVsZTEgPSBuZXcgVnRpZ2VyX01vZHVsZSgpOyAkbW9kdWxlMS0+bmFtZSA9ICRyZWxhdGVkTW9kdWxlOyAkbW9kdWxlMSA9ICRtb2R1bGUxLT5nZXRJbnN0YW5jZSgkcmVsYXRlZE1vZHVsZSk7ICRibG9jazIgPSBuZXcgVnRpZ2VyX0Jsb2NrKCk7ICRibG9jazItPmxhYmVsID0gJGJsb2NrbGFiZWxfY2hpbGQ7ICRibG9jazIgPSAkYmxvY2syLT5nZXRJbnN0YW5jZSgkYmxvY2syLT5sYWJlbCwgJG1vZHVsZTEpOyAkZmllbGQzID0gbmV3IFZ0aWdlcl9GaWVsZCgpOyAkZmllbGQzLT5uYW1lID0gJGZpZWxkSW5SZWxhdGVkOyAkZmllbGQzLT5sYWJlbCA9ICRyZXF1ZXN0LT5nZXQoIlwxNDZceDY5XHg2NVx4NmNceDY0XDExMVx4NmVceDUyXDE0NVwxNTRcMTQxXHg3NFwxNDVcMTQ0Iik7ICRmaWVsZDMtPnRhYmxlID0gJG1vZHVsZTEtPmJhc2V0YWJsZTsgJGZpZWxkMy0+Y29sdW1uID0gJGZpZWxkSW5SZWxhdGVkOyAkZmllbGQzLT5jb2x1bW50eXBlID0gIlwxMjZceDQxXHg1MlwxMDNcMTEwXHg0MVwxMjJceDI4XHgzNVw2MFw1MSI7ICRmaWVsZDMtPnVpdHlwZSA9IDEwOyAkZmllbGQzLT50eXBlb2ZkYXRhID0gIlwxMjZceDdlXHg0ZiI7ICRibG9jazItPmFkZEZpZWxkKCRmaWVsZDMpOyAkZmllbGQzLT5zZXRSZWxhdGVkTW9kdWxlcyhhcnJheSgkc291cmNlTW9kdWxlKSk7IH0gZWxzZSB7IGlmICgkcmVsYXRpb25UeXBlID09ICJceDMxXHgzYVx4NGUiKSB7ICRtb2R1bGUxID0gbmV3IFZ0aWdlcl9Nb2R1bGUoKTsgJG1vZHVsZTEtPm5hbWUgPSAkcmVsYXRlZE1vZHVsZTsgJG1vZHVsZTEgPSAkbW9kdWxlMS0+Z2V0SW5zdGFuY2UoJHJlbGF0ZWRNb2R1bGUpOyAkYmxvY2syID0gbmV3IFZ0aWdlcl9CbG9jaygpOyAkYmxvY2syLT5sYWJlbCA9ICRibG9ja2xhYmVsX2NoaWxkOyAkYmxvY2syID0gJGJsb2NrMi0+Z2V0SW5zdGFuY2UoJGJsb2NrMi0+bGFiZWwsICRtb2R1bGUxKTsgJGZpZWxkMyA9IG5ldyBWdGlnZXJfRmllbGQoKTsgJGZpZWxkMy0+bmFtZSA9ICRmaWVsZEluUmVsYXRlZDsgJGZpZWxkMy0+bGFiZWwgPSAkcmVxdWVzdC0+Z2V0KCJceDY2XHg2OVx4NjVcMTU0XDE0NFwxMTFceDZlXDEyMlwxNDVcMTU0XHg2MVx4NzRceDY1XHg2NCIpOyAkZmllbGQzLT50YWJsZSA9ICRtb2R1bGUxLT5iYXNldGFibGU7ICRmaWVsZDMtPmNvbHVtbiA9ICRmaWVsZEluUmVsYXRlZDsgJGZpZWxkMy0+Y29sdW1udHlwZSA9ICJcMTI2XDEwMVwxMjJcMTAzXDExMFwxMDFceDUyXDUwXDY1XHgzMFw1MSI7ICRmaWVsZDMtPnVpdHlwZSA9IDEwOyAkZmllbGQzLT50eXBlb2ZkYXRhID0gIlx4NTZcMTc2XDExNyI7ICRibG9jazItPmFkZEZpZWxkKCRmaWVsZDMpOyAkZmllbGQzLT5zZXRSZWxhdGVkTW9kdWxlcyhhcnJheSgkc291cmNlTW9kdWxlKSk7ICRmaWVsZCA9ICRhZGItPnBxdWVyeSgiXDE2M1wxNDVceDZjXDE0NVx4NjNceDc0XHgyMFx4MmFceDIwXHg2NlwxNjJceDZmXDE1NVx4MjBcMTY2XHg3NFx4NjlcMTQ3XHg2NVx4NzJcMTM3XDE0Nlx4NjlcMTQ1XDE1NFwxNDRcNDBcMTY3XHg2OFx4NjVcMTYyXHg2NVx4MjBceDYzXDE1N1x4NmNcMTY1XDE1NVx4NmVcMTU2XDE0MVwxNTVcMTQ1XHgyMFw3NVw0N3skZmllbGRJblByaW1hcnl9XHgyN1x4MjBceDZmXHg3MlwxNDRcMTQ1XHg3Mlx4MjBcMTQyXDE3MVx4MjBcMTQ2XHg2OVwxNDVceDZjXHg2NFx4NjlcMTQ0XDQwXHg2NFwxNDVcMTYzXHg2M1x4MjBcMTU0XHg2OVx4NmRcMTUxXHg3NFw0MFw2MFw1NFx4MzEiKTsgJGZpZWxkaWQgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJGZpZWxkLCAwLCAiXHg2Nlx4NjlceDY1XHg2Y1wxNDRceDY5XHg2NCIpOyAkbW9kdWxlMiA9IFZ0aWdlcl9Nb2R1bGU6OmdldEluc3RhbmNlKCRzb3VyY2VNb2R1bGUpOyAkdGFyZ2F0ZW1vZHVsZSA9IFZ0aWdlcl9Nb2R1bGU6OmdldEluc3RhbmNlKCRyZWxhdGVkTW9kdWxlKTsgJHJlbGF0aW9uTGFiZWwgPSAkdGFiSW5QcmltYXJ5OyAkZnVuY3Rpb25fbmFtZSA9ICJceDY3XDE0NVwxNjRceDVmXDE0NFx4NjVceDcwXHg2NVwxNTZceDY0XHg2NVwxNTZceDc0XDE2M1x4NWZceDZjXDE1MVwxNjNcMTY0IjsgJG1vZHVsZTItPnNldFJlbGF0ZWRMaXN0KCR0YXJnYXRlbW9kdWxlLCAkcmVsYXRpb25MYWJlbCwgYXJyYXkoIlwxMDFcMTQ0XDE0NCIsICJceDczXDE0NVx4NmNceDY1XDE0M1wxNjQiKSwgJGZ1bmN0aW9uX25hbWUsICRmaWVsZGlkKTsgJHJlbGF0aW9uUXVlcnkgPSAkYWRiLT5wcXVlcnkoIlwxNjNceDY1XDE1NFwxNDVcMTQzXDE2NFx4MjBcNTJcNDBceDY2XDE2MlwxNTdceDZkXHgyMFwxNjZcMTY0XHg2OVwxNDdcMTQ1XDE2Mlx4NWZceDcyXDE0NVx4NmNceDYxXDE2NFx4NjVcMTQ0XHg2Y1x4NjlcMTYzXDE2NFx4NzNceDIwXDE1N1x4NzJceDY0XHg2NVx4NzJcNDBcMTQyXDE3MVx4MjBcMTYyXHg2NVwxNTRceDYxXDE2NFwxNTFcMTU3XHg2ZVx4NWZceDY5XHg2NFx4MjBcMTQ0XHg2NVwxNjNcMTQzXDQwXDE1NFx4NjlcMTU1XHg2OVwxNjRcNDBceDMwXHgyY1w2MSIpOyAkcmVsYXRpb25JZCA9ICRhZGItPnF1ZXJ5X3Jlc3VsdCgkcmVsYXRpb25RdWVyeSwgMCwgIlx4NzJcMTQ1XDE1NFwxNDFceDc0XDE1MVwxNTdcMTU2XHg1Zlx4NjlceDY0Iik7ICR0YWJJZCA9ICRhZGItPnF1ZXJ5X3Jlc3VsdCgkcmVsYXRpb25RdWVyeSwgMCwgIlx4NzRceDYxXHg2Mlx4NjlceDY0Iik7IGlmIChnZXRUYWJpZCgkc291cmNlTW9kdWxlKSA9PSAkdGFiSWQpIHsgJGFkYi0+cHF1ZXJ5KCJcMTI1XHg1MFx4NDRcMTAxXHg1NFwxMDVceDIwXDE2Nlx4NzRcMTUxXDE0N1wxNDVceDcyXHg1Zlx4NzJcMTQ1XDE1NFx4NjFcMTY0XDE0NVx4NjRceDZjXHg2OVwxNjNcMTY0XDE2M1w0MFwxMjNcMTA1XHg1NFw0MFwxNjJcMTQ1XDE1NFx4NjFceDc0XHg2OVwxNTdceDZlXDE2NFwxNzFceDcwXDE0NVx4MjBcNzVcNDBcNzdceDIwXDEyN1wxMTBcMTA1XHg1MlwxMDVceDIwXDE2Mlx4NjVcMTU0XDE0MVx4NzRcMTUxXDE1N1x4NmVceDVmXHg2OVwxNDRceDIwXHgzZFx4MjBcNzciLCBhcnJheSgiXHgzMVw3MlwxMTYiLCAkcmVsYXRpb25JZCkpOyB9IH0gZWxzZSB7IGlmICgkcmVsYXRpb25UeXBlID09ICJceDRlXHgzYVx4MzEiKSB7ICRtb2R1bGUgPSBuZXcgVnRpZ2VyX01vZHVsZSgpOyAkbW9kdWxlLT5uYW1lID0gJHNvdXJjZU1vZHVsZTsgJG1vZHVsZSA9ICRtb2R1bGUtPmdldEluc3RhbmNlKCRzb3VyY2VNb2R1bGUpOyAkYmxvY2sxID0gbmV3IFZ0aWdlcl9CbG9jaygpOyAkYmxvY2sxLT5sYWJlbCA9ICRibG9ja2xhYmVsX3BhcmVudDsgJGJsb2NrMSA9ICRibG9jazEtPmdldEluc3RhbmNlKCRibG9jazEtPmxhYmVsLCAkbW9kdWxlKTsgJGZpZWxkMiA9IG5ldyBWdGlnZXJfRmllbGQoKTsgJGZpZWxkMi0+bmFtZSA9ICRmaWVsZEluUHJpbWFyeTsgJGZpZWxkMi0+bGFiZWwgPSAkcmVxdWVzdC0+Z2V0KCJceDY2XHg2OVwxNDVcMTU0XHg2NFx4NDlceDZlXHg1MFx4NzJceDY5XHg2ZFwxNDFcMTYyXHg3OSIpOyAkZmllbGQyLT50YWJsZSA9ICRtb2R1bGUtPmJhc2V0YWJsZTsgJGZpZWxkMi0+Y29sdW1uID0gJGZpZWxkSW5QcmltYXJ5OyAkZmllbGQyLT5jb2x1bW50eXBlID0gIlwxMjZcMTAxXDEyMlwxMDNceDQ4XDEwMVwxMjJceDI4XDY1XHgzMFx4MjkiOyAkZmllbGQyLT51aXR5cGUgPSAxMDsgJGZpZWxkMi0+dHlwZW9mZGF0YSA9ICJceDU2XHg3ZVwxMTciOyAkYmxvY2sxLT5hZGRGaWVsZCgkZmllbGQyKTsgJGZpZWxkMi0+c2V0UmVsYXRlZE1vZHVsZXMoYXJyYXkoJHJlbGF0ZWRNb2R1bGUpKTsgJGZpZWxkID0gJGFkYi0+cHF1ZXJ5KCJcMTYzXHg2NVx4NmNcMTQ1XHg2M1wxNjRceDIwXDUyXDQwXHg2Nlx4NzJcMTU3XDE1NVx4MjBceDc2XDE2NFwxNTFceDY3XHg2NVwxNjJcMTM3XDE0NlwxNTFceDY1XHg2Y1wxNDRcNDBcMTY3XDE1MFx4NjVceDcyXDE0NVw0MFx4NjNceDZmXHg2Y1x4NzVceDZkXDE1Nlx4NmVcMTQxXDE1NVwxNDVcNDBceDNkXHgyN3skZmllbGRJblByaW1hcnl9XDQ3XDQwXDE1N1x4NzJceDY0XDE0NVwxNjJceDIwXDE0MlwxNzFcNDBceDY2XHg2OVwxNDVceDZjXDE0NFwxNTFceDY0XDQwXHg2NFx4NjVcMTYzXHg2M1x4MjBceDZjXDE1MVx4NmRceDY5XDE2NFw0MFw2MFw1NFx4MzEiKTsgJGZpZWxkaWQgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJGZpZWxkLCAwLCAiXHg2NlwxNTFcMTQ1XHg2Y1wxNDRcMTUxXDE0NCIpOyAkbW9kdWxlMiA9IFZ0aWdlcl9Nb2R1bGU6OmdldEluc3RhbmNlKCRyZWxhdGVkTW9kdWxlKTsgJHRhcmdhdGVtb2R1bGUgPSBWdGlnZXJfTW9kdWxlOjpnZXRJbnN0YW5jZSgkc291cmNlTW9kdWxlKTsgJHJlbGF0aW9uTGFiZWwgPSAkdGFiSW5SZWxhdGVkOyAkZnVuY3Rpb25fbmFtZSA9ICJcMTQ3XDE0NVwxNjRceDVmXDE0NFx4NjVceDcwXDE0NVwxNTZceDY0XDE0NVwxNTZcMTY0XDE2M1wxMzdcMTU0XHg2OVx4NzNcMTY0IjsgJG1vZHVsZTItPnNldFJlbGF0ZWRMaXN0KCR0YXJnYXRlbW9kdWxlLCAkcmVsYXRpb25MYWJlbCwgYXJyYXkoIlwxMDFcMTQ0XHg2NCIsICJceDczXHg2NVwxNTRcMTQ1XHg2M1x4NzQiKSwgJGZ1bmN0aW9uX25hbWUsICRmaWVsZGlkKTsgJHJlbGF0aW9uUXVlcnkgPSAkYWRiLT5wcXVlcnkoIlx4NzNcMTQ1XHg2Y1x4NjVceDYzXDE2NFw0MFw1Mlx4MjBcMTQ2XDE2MlwxNTdceDZkXHgyMFwxNjZceDc0XHg2OVx4NjdceDY1XDE2Mlx4NWZceDcyXHg2NVwxNTRceDYxXHg3NFwxNDVcMTQ0XDE1NFx4NjlcMTYzXDE2NFwxNjNcNDBcMTU3XDE2MlwxNDRceDY1XDE2Mlx4MjBcMTQyXDE3MVw0MFwxNjJceDY1XDE1NFwxNDFcMTY0XDE1MVwxNTdcMTU2XDEzN1x4NjlceDY0XDQwXDE0NFwxNDVcMTYzXHg2M1w0MFx4NmNceDY5XDE1NVwxNTFcMTY0XDQwXDYwXDU0XHgzMSIpOyAkcmVsYXRpb25JZCA9ICRhZGItPnF1ZXJ5X3Jlc3VsdCgkcmVsYXRpb25RdWVyeSwgMCwgIlwxNjJceDY1XHg2Y1x4NjFceDc0XHg2OVwxNTdceDZlXHg1Zlx4NjlcMTQ0Iik7ICR0YWJJZCA9ICRhZGItPnF1ZXJ5X3Jlc3VsdCgkcmVsYXRpb25RdWVyeSwgMCwgIlx4NzRceDYxXDE0Mlx4NjlcMTQ0Iik7IGlmIChnZXRUYWJpZCgkcmVsYXRlZE1vZHVsZSkgPT0gJHRhYklkKSB7ICRhZGItPnBxdWVyeSgiXDEyNVx4NTBceDQ0XDEwMVwxMjRcMTA1XHgyMFwxNjZceDc0XDE1MVx4NjdceDY1XDE2MlwxMzdceDcyXDE0NVx4NmNcMTQxXHg3NFx4NjVcMTQ0XHg2Y1x4NjlceDczXHg3NFwxNjNcNDBcMTIzXHg0NVx4NTRcNDBcMTYyXDE0NVx4NmNcMTQxXHg3NFx4NjlcMTU3XHg2ZVx4NzRcMTcxXDE2MFwxNDVceDIwXHgzZFw0MFw3N1w0MFx4NTdceDQ4XHg0NVx4NTJceDQ1XHgyMFwxNjJcMTQ1XHg2Y1wxNDFcMTY0XDE1MVx4NmZcMTU2XDEzN1wxNTFceDY0XHgyMFw3NVx4MjBcNzciLCBhcnJheSgiXDYxXHgzYVwxMTYiLCAkcmVsYXRpb25JZCkpOyB9IH0gZWxzZSB7IGlmICgkcmVsYXRpb25UeXBlID09ICJceDRlXHgzYVx4NGUiKSB7ICRtb2R1bGUyID0gVnRpZ2VyX01vZHVsZTo6Z2V0SW5zdGFuY2UoJHNvdXJjZU1vZHVsZSk7ICR0YXJnYXRlbW9kdWxlID0gVnRpZ2VyX01vZHVsZTo6Z2V0SW5zdGFuY2UoJHJlbGF0ZWRNb2R1bGUpOyAkcmVsYXRpb25MYWJlbCA9ICR0YWJJblByaW1hcnk7ICRmdW5jdGlvbl9uYW1lID0gIlwxNDdceDY1XHg3NFx4NWZceDcyXHg2NVwxNTRceDYxXHg3NFwxNDVcMTQ0XHg1ZlwxNTRcMTUxXHg3M1x4NzQiOyAkbW9kdWxlMi0+c2V0UmVsYXRlZExpc3QoJHRhcmdhdGVtb2R1bGUsICRyZWxhdGlvbkxhYmVsLCBhcnJheSgiXHg3M1x4NjVceDZjXDE0NVwxNDNcMTY0IiksICRmdW5jdGlvbl9uYW1lKTsgJHJlbGF0aW9uUXVlcnkgPSAkYWRiLT5wcXVlcnkoIlwxNjNcMTQ1XHg2Y1x4NjVceDYzXHg3NFx4MjBcNTJceDIwXDE0Nlx4NzJcMTU3XDE1NVx4MjBceDc2XHg3NFx4NjlceDY3XHg2NVwxNjJceDVmXDE2MlwxNDVceDZjXDE0MVx4NzRcMTQ1XDE0NFwxNTRceDY5XDE2M1x4NzRcMTYzXHgyMFx4NmZcMTYyXHg2NFwxNDVceDcyXHgyMFx4NjJcMTcxXDQwXHg3MlwxNDVceDZjXDE0MVwxNjRcMTUxXHg2ZlwxNTZceDVmXDE1MVwxNDRceDIwXDE0NFwxNDVcMTYzXDE0M1x4MjBceDZjXHg2OVwxNTVceDY5XHg3NFx4MjBceDMwXDU0XDYxIik7ICRyZWxhdGlvbklkID0gJGFkYi0+cXVlcnlfcmVzdWx0KCRyZWxhdGlvblF1ZXJ5LCAwLCAiXHg3Mlx4NjVceDZjXDE0MVx4NzRcMTUxXHg2ZlwxNTZcMTM3XDE1MVx4NjQiKTsgJHRhYklkID0gJGFkYi0+cXVlcnlfcmVzdWx0KCRyZWxhdGlvblF1ZXJ5LCAwLCAiXDE2NFx4NjFceDYyXHg2OVx4NjQiKTsgaWYgKGdldFRhYmlkKCRzb3VyY2VNb2R1bGUpID09ICR0YWJJZCkgeyAkYWRiLT5wcXVlcnkoIlx4NTVcMTIwXDEwNFx4NDFcMTI0XDEwNVx4MjBceDc2XHg3NFx4NjlceDY3XHg2NVwxNjJceDVmXDE2Mlx4NjVcMTU0XHg2MVx4NzRcMTQ1XDE0NFwxNTRceDY5XDE2M1x4NzRcMTYzXDQwXHg1M1wxMDVceDU0XDQwXDE2Mlx4NjVcMTU0XHg2MVx4NzRcMTUxXHg2Zlx4NmVcMTY0XHg3OVx4NzBcMTQ1XHgyMFx4M2RceDIwXHgzZlw0MFx4NTdcMTEwXDEwNVx4NTJceDQ1XDQwXHg3MlwxNDVceDZjXDE0MVx4NzRceDY5XHg2ZlwxNTZceDVmXHg2OVx4NjRceDIwXHgzZFw0MFx4M2YiLCBhcnJheSgiXHg0ZVx4M2FceDRlIiwgJHJlbGF0aW9uSWQpKTsgfSAkbW9kdWxlMyA9IFZ0aWdlcl9Nb2R1bGU6OmdldEluc3RhbmNlKCRyZWxhdGVkTW9kdWxlKTsgJHRhcmdhdGVtb2R1bGUxID0gVnRpZ2VyX01vZHVsZTo6Z2V0SW5zdGFuY2UoJHNvdXJjZU1vZHVsZSk7ICRyZWxhdGlvbkxhYmVsMSA9ICR0YWJJblJlbGF0ZWQ7ICRmdW5jdGlvbl9uYW1lMSA9ICJceDY3XHg2NVx4NzRcMTM3XDE2MlwxNDVceDZjXDE0MVx4NzRcMTQ1XDE0NFwxMzdcMTU0XDE1MVwxNjNceDc0IjsgJG1vZHVsZTMtPnNldFJlbGF0ZWRMaXN0KCR0YXJnYXRlbW9kdWxlMSwgJHJlbGF0aW9uTGFiZWwxLCBhcnJheSgiXHg3M1x4NjVceDZjXHg2NVwxNDNceDc0IiksICRmdW5jdGlvbl9uYW1lMSk7ICRyZWxhdGlvblF1ZXJ5MSA9ICRhZGItPnBxdWVyeSgiXDE2M1x4NjVceDZjXHg2NVx4NjNceDc0XDQwXDUyXDQwXHg2NlwxNjJcMTU3XDE1NVx4MjBceDc2XDE2NFwxNTFceDY3XDE0NVwxNjJcMTM3XDE2MlwxNDVcMTU0XHg2MVx4NzRceDY1XDE0NFx4NmNceDY5XDE2M1x4NzRcMTYzXDQwXHg2Zlx4NzJceDY0XHg2NVwxNjJcNDBceDYyXDE3MVx4MjBcMTYyXDE0NVx4NmNceDYxXHg3NFx4NjlceDZmXDE1NlwxMzdcMTUxXDE0NFx4MjBcMTQ0XDE0NVwxNjNceDYzXHgyMFx4NmNceDY5XHg2ZFwxNTFceDc0XDQwXHgzMFx4MmNcNjEiKTsgJHJlbGF0aW9uSWQxID0gJGFkYi0+cXVlcnlfcmVzdWx0KCRyZWxhdGlvblF1ZXJ5MSwgMCwgIlx4NzJceDY1XHg2Y1wxNDFceDc0XDE1MVx4NmZceDZlXDEzN1wxNTFcMTQ0Iik7ICR0YWJJZDEgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJHJlbGF0aW9uUXVlcnkxLCAwLCAiXHg3NFx4NjFceDYyXDE1MVwxNDQiKTsgaWYgKGdldFRhYmlkKCRyZWxhdGVkTW9kdWxlKSA9PSAkdGFiSWQxKSB7ICRhZGItPnBxdWVyeSgiXDEyNVwxMjBcMTA0XDEwMVwxMjRceDQ1XHgyMFwxNjZceDc0XDE1MVx4NjdceDY1XHg3Mlx4NWZceDcyXHg2NVwxNTRcMTQxXHg3NFwxNDVcMTQ0XDE1NFx4NjlcMTYzXHg3NFx4NzNceDIwXDEyM1x4NDVceDU0XHgyMFwxNjJcMTQ1XHg2Y1wxNDFceDc0XHg2OVx4NmZceDZlXDE2NFx4NzlceDcwXHg2NVw0MFw3NVw0MFw3N1x4MjBcMTI3XHg0OFwxMDVcMTIyXHg0NVx4MjBceDcyXDE0NVwxNTRceDYxXDE2NFwxNTFceDZmXHg2ZVx4NWZceDY5XHg2NFx4MjBcNzVcNDBcNzciLCBhcnJheSgiXDExNlw3Mlx4NGUiLCAkcmVsYXRpb25JZDEpKTsgfSB9IH0gfSB9ICRyZXNwb25zZSA9IG5ldyBWdGlnZXJfUmVzcG9uc2UoKTsgJHJlc3BvbnNlLT5zZXRSZXN1bHQoYXJyYXkoIlx4NzNceDc1XHg2M1wxNDNcMTQ1XHg3M1wxNjMiID0+IHRydWUsICJcMTU1XHg2NVx4NzNcMTYzXDE0MVwxNDdceDY1IiA9PiAiXDEyMlwxNDVcMTU0XHg2MVwxNjRcMTUxXDE1N1wxNTZceDczXHg2OFwxNTFcMTYwXHgyMFx4NjFceDY0XHg2NFx4NjVceDY0XHgyMFwxNjNceDc1XDE0M1x4NjVcMTYzXHg3M1wxNDZcMTY1XHg2Y1wxNTRceDc5IikpOyAkcmVzcG9uc2UtPmVtaXQoKTsgfSBmdW5jdGlvbiBnZXRIZWFkZXJTY3JpcHRzKFZ0aWdlcl9SZXF1ZXN0ICRyZXF1ZXN0KSB7ICRoZWFkZXJTY3JpcHRJbnN0YW5jZXMgPSBwYXJlbnQ6OmdldEhlYWRlclNjcmlwdHMoJHJlcXVlc3QpOyAkanNGaWxlTmFtZXMgPSBhcnJheSgiXDE3Nlx4NmNcMTUxXHg2Mlx4NzJcMTQxXDE2MlwxNTFcMTQ1XDE2M1w1N1x4NjdceDYxXHg3Mlx4NjFcMTU2XDE0NFw1NVwxNjNceDc0XHg2OVwxNDNceDZiXHg3OVw1N1wxNTJcMTYxXDE2NVwxNDVcMTYyXDE3MVx4MmVceDczXDE2NFx4NjlcMTQzXHg2Ylx4NzlcNTZcMTUyXHg3MyIsICJcMTc2XDU3XHg2Y1wxNTFcMTQyXDE2MlwxNDFcMTYyXDE1MVwxNDVceDczXHgyZlx4NmFceDcxXHg3NVx4NjVcMTYyXDE3MVw1N1wxNDJcMTU3XDE1N1x4NzRceDczXDE2NFx4NzJceDYxXDE2MFx4NzNcMTY3XHg2OVx4NzRcMTQzXHg2OFw1N1x4NmFcMTYzXHgyZlx4NjJcMTU3XDE1N1x4NzRcMTYzXDE2NFx4NzJceDYxXDE2MFw1NVx4NzNceDc3XHg2OVwxNjRcMTQzXDE1MFw1Nlx4NmRceDY5XHg2ZVw1Nlx4NmFcMTYzIik7ICRqc1NjcmlwdEluc3RhbmNlcyA9ICR0aGlzLT5jaGVja0FuZENvbnZlcnRKc1NjcmlwdHMoJGpzRmlsZU5hbWVzKTsgJGhlYWRlclNjcmlwdEluc3RhbmNlcyA9IGFycmF5X21lcmdlKCRoZWFkZXJTY3JpcHRJbnN0YW5jZXMsICRqc1NjcmlwdEluc3RhbmNlcyk7IHJldHVybiAkaGVhZGVyU2NyaXB0SW5zdGFuY2VzOyB9IHB1YmxpYyBmdW5jdGlvbiBzZXRNb2R1bGVJbmZvKCRyZXF1ZXN0LCAkbW9kdWxlTW9kZWwsICRjbGVhbkZpZWxkTW9kZWwgPSBmYWxzZSkgeyAkZmllbGRzSW5mbyA9IGFycmF5KCk7ICRiYXNpY0xpbmtzID0gYXJyYXkoKTsgJHZpZXdlciA9ICR0aGlzLT5nZXRWaWV3ZXIoJHJlcXVlc3QpOyBpZiAobWV0aG9kX2V4aXN0cygkbW9kdWxlTW9kZWwsICJcMTQ3XHg2NVx4NzRceDQ2XHg2OVwxNDVceDZjXDE0NFwxNjMiKSkgeyAkbW9kdWxlRmllbGRzID0gJG1vZHVsZU1vZGVsLT5nZXRGaWVsZHMoKTsgZm9yZWFjaCAoJG1vZHVsZUZpZWxkcyBhcyAkZmllbGROYW1lID0+ICRmaWVsZE1vZGVsKSB7ICRmaWVsZHNJbmZvWyRmaWVsZE5hbWVdID0gJGZpZWxkTW9kZWwtPmdldEZpZWxkSW5mbygpOyB9IGlmICgkY2xlYW5GaWVsZE1vZGVsKSB7ICRuZXdmaWVsZHNJbmZvWyJceDZlXHg2NVwxNjdceDY2XDE1MVx4NjVcMTU0XDE0NFwxNTFceDZlXDE0NlwxNTciXSA9ICRjbGVhbkZpZWxkTW9kZWwtPmdldEZpZWxkSW5mbygpOyAkdmlld2VyLT5hc3NpZ24oIlx4NGVceDQ1XDEyN1x4NWZcMTA2XHg0OVx4NDVceDRjXHg0NFwxMjNcMTM3XDExMVwxMTZcMTA2XDExNyIsIGpzb25fZW5jb2RlKCRuZXdmaWVsZHNJbmZvKSk7IH0gJHZpZXdlci0+YXNzaWduKCJcMTA2XHg0OVx4NDVcMTE0XHg0NFx4NTNcMTM3XDExMVx4NGVceDQ2XDExNyIsIGpzb25fZW5jb2RlKCRmaWVsZHNJbmZvKSk7IH0gaWYgKG1ldGhvZF9leGlzdHMoJG1vZHVsZU1vZGVsLCAiXHg2N1x4NjVceDc0XHg0ZFwxNTdceDY0XHg3NVx4NmNcMTQ1XHg0Mlx4NjFceDczXDE1MVx4NjNceDRjXHg2OVwxNTZceDZiXHg3MyIpKSB7ICRtb2R1bGVCYXNpY0xpbmtzID0gJG1vZHVsZU1vZGVsLT5nZXRNb2R1bGVCYXNpY0xpbmtzKCk7IGZvcmVhY2ggKCRtb2R1bGVCYXNpY0xpbmtzIGFzICRiYXNpY0xpbmspIHsgJGJhc2ljTGlua3NbXSA9IFZ0aWdlcl9MaW5rX01vZGVsOjpnZXRJbnN0YW5jZUZyb21WYWx1ZXMoJGJhc2ljTGluayk7IH0gJHZpZXdlci0+YXNzaWduKCJceDRkXHg0Zlx4NDRceDU1XDExNFx4NDVceDVmXHg0Mlx4NDFceDUzXDExMVx4NDNceDVmXHg0MVwxMDNcMTI0XDExMVwxMTdcMTE2XDEyMyIsICRiYXNpY0xpbmtzKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXJDc3MoVnRpZ2VyX1JlcXVlc3QgJHJlcXVlc3QpIHsgJGhlYWRlckNzc0luc3RhbmNlcyA9IHBhcmVudDo6Z2V0SGVhZGVyQ3NzKCRyZXF1ZXN0KTsgJGNzc0ZpbGVOYW1lcyA9IGFycmF5KCJceDdlXHgyZlx4NmNcMTUxXHg2MlwxNjJcMTQxXDE2Mlx4NjlcMTQ1XHg3M1w1N1wxNTJceDcxXHg3NVx4NjVceDcyXHg3OVw1N1x4NjJceDZmXHg2ZlwxNjRcMTYzXHg3NFwxNjJcMTQxXDE2MFwxNjNcMTY3XHg2OVwxNjRceDYzXHg2OFw1N1wxNDNceDczXHg3M1x4MmZceDYyXDE1N1wxNTdcMTY0XDE2M1x4NzRceDcyXDE0MVx4NzBceDMyXHgyZlx4NjJceDZmXDE1N1x4NzRceDczXHg3NFx4NzJceDYxXDE2MFw1NVx4NzNceDc3XHg2OVx4NzRcMTQzXHg2OFx4MmVceDZkXHg2OVwxNTZcNTZceDYzXHg3M1x4NzMiKTsgJGNzc0luc3RhbmNlcyA9ICR0aGlzLT5jaGVja0FuZENvbnZlcnRDc3NTdHlsZXMoJGNzc0ZpbGVOYW1lcyk7ICRoZWFkZXJDc3NJbnN0YW5jZXMgPSBhcnJheV9tZXJnZSgkaGVhZGVyQ3NzSW5zdGFuY2VzLCAkY3NzSW5zdGFuY2VzKTsgcmV0dXJuICRoZWFkZXJDc3NJbnN0YW5jZXM7IH0gfSA='));
Function Calls
base64_decode | 1 |
Stats
MD5 | cfab30b5a22e232fdb27328c2e96cd94 |
Eval Count | 1 |
Decode Time | 183 ms |